public void ShouldGetNullValue()
        {
            var identifier = new DecryptIdentifier(Guid.NewGuid().ToByteArray(), new Dictionary <string, string>());

            var cacheKey = Guid.NewGuid().ToString();

            _cacheKeyGenerator.Setup(x =>
                                     x.Generate(identifier))
            .Returns(cacheKey);

            _distributedCache.Setup(x => x.Get(cacheKey))
            .Returns <byte[]>(null);

            var dataKeyCache = new DecryptKeyCache(_cacheKeyGenerator.Object, _distributedCache.Object, _distributedCacheEntryOptionsFactory.Object);

            var result = dataKeyCache.Get(identifier);

            result.ShouldBeNull();
        }
        public void ShouldSetValue()
        {
            var identifier = new DecryptIdentifier(Guid.NewGuid().ToByteArray(), new Dictionary <string, string>());

            var cacheKey = Guid.NewGuid().ToString();

            _cacheKeyGenerator.Setup(x =>
                                     x.Generate(identifier))
            .Returns(cacheKey);

            var cacheValue = new byte[] { 1, 2, 3 };

            var entryOptions = new DistributedCacheEntryOptions();

            _distributedCacheEntryOptionsFactory.Setup(x => x.Create(CacheItemType.Decrypt))
            .Returns(entryOptions);

            var dataKeyCache = new DecryptKeyCache(_cacheKeyGenerator.Object, _distributedCache.Object, _distributedCacheEntryOptionsFactory.Object);

            dataKeyCache.Set(identifier, cacheValue);

            _distributedCache.Verify(x => x.Set(cacheKey, cacheValue, entryOptions));
        }
 public string Generate(DecryptIdentifier identifier)
 {
     return(Convert.ToBase64String(identifier.CiphertextBlob) + BuildContextKeyString(identifier.EncryptionContext));
 }