public DataKeyCache(ICacheKeyGenerator cacheKeyGenerator,
                     IDistributedCache distributedCache, ICacheValueConverter cacheValueConverter,
                     IDistributedCacheEntryOptionsFactory distributedCacheEntryOptionsFactory)
 {
     _cacheKeyGenerator   = cacheKeyGenerator;
     _distributedCache    = distributedCache;
     _cacheValueConverter = cacheValueConverter;
     _distributedCacheEntryOptionsFactory = distributedCacheEntryOptionsFactory;
 }
 public KeyManagementServiceCache(
     IKeyManagementService keyManagementService,
     IDistributedCache distributedCache,
     ICacheKeyGenerator cacheKeyGenerator,
     ICacheValueConverter cacheValueConverter)
 {
     _distributedCache     = distributedCache;
     _cacheKeyGenerator    = cacheKeyGenerator;
     _cacheValueConverter  = cacheValueConverter;
     _keyManagementService = keyManagementService;
 }
        public static void UseAwsKeyManagementServiceSerializerWithCache(this IReceiveEndpointConfigurator configurator,
                                                                         IKeyManagementService amazonKeyManagementService,
                                                                         IEncryptionContextBuilder encryptionContextBuilder,
                                                                         string kmsKeyId,
                                                                         IDistributedCache distributedCache,
                                                                         ICacheKeyGenerator cacheKeyGenerator,
                                                                         ICacheValueConverter cacheValueConverter)
        {
            var keyManagementServiceCache =
                new KeyManagementServiceCache(amazonKeyManagementService, distributedCache, cacheKeyGenerator,
                                              cacheValueConverter);

            configurator.UseAwsKeyManagementServiceSerializer(keyManagementServiceCache, encryptionContextBuilder,
                                                              kmsKeyId);
        }
        public static void UseAwsKeyManagementServiceSerializerWithCache(this IReceiveEndpointConfigurator configurator,
                                                                         IKeyManagementService amazonKeyManagementService,
                                                                         IEncryptionContextBuilder encryptionContextBuilder,
                                                                         string kmsKeyId,
                                                                         IDistributedCache distributedCache,
                                                                         ICacheKeyGenerator cacheKeyGenerator,
                                                                         ICacheValueConverter cacheValueConverter,
                                                                         IDistributedCacheEntryOptionsFactory distributedCacheEntryOptionsFactory)
        {
            var dataKeyCache    = new DataKeyCache(cacheKeyGenerator, distributedCache, cacheValueConverter, distributedCacheEntryOptionsFactory);
            var decryptKeyCache = new DecryptKeyCache(cacheKeyGenerator, distributedCache, distributedCacheEntryOptionsFactory);

            configurator.UseAwsKeyManagementServiceSerializerWithCache(amazonKeyManagementService, encryptionContextBuilder,
                                                                       kmsKeyId, dataKeyCache, decryptKeyCache);
        }