public void ReturnsTheSameObjectFromEachCallToTheGetMethod()
            {
                var state = new SerializationState();

                var foo1 = state.Get(() => new Foo(2));
                var foo2 = state.Get(() => new Foo(2));
                var foo3 = state.Get(() => new Foo(2));

                Assert.That(foo1, Is.SameAs(foo2));
                Assert.That(foo2, Is.SameAs(foo3));
            }
            public void ReturnsTheSameObjectFromEachCallToTheGetMethod()
            {
                var state = new SerializationState();

                var foo1 = state.Get(() => new Foo(2));
                var foo2 = state.Get(() => new Foo(2));
                var foo3 = state.Get(() => new Foo(2));

                Assert.That(foo1, Is.SameAs(foo2));
                Assert.That(foo2, Is.SameAs(foo3));
            }
        /// <summary>
        /// Decrypts the specified cipher text.
        /// </summary>
        /// <param name="cipherText">The cipher text.</param>
        /// <param name="credentialName">
        /// The name of the credential to use for this encryption operation,
        /// or null to use the default credential.
        /// </param>
        /// <param name="serializationState">
        /// An object that holds an arbitrary value that is passed to one or more decrypt
        /// operations within a single serialization operation.
        /// </param>
        /// <returns>The decrypted text.</returns>
        public string Decrypt(string cipherText, string credentialName, SerializationState serializationState)
        {
            var decryptor = serializationState.Get(() => _crypto.GetDecryptor(credentialName?.ToString()));
            var plainText = decryptor.Decrypt(cipherText);

            return(plainText);
        }
        /// <summary>
        /// Encrypts the specified plain text.
        /// </summary>
        /// <param name="plainText">The plain text.</param>
        /// <param name="credentialName">
        /// The name of the credential to use for this encryption operation,
        /// or null to use the default credential.
        /// </param>
        /// <param name="serializationState">
        /// An object that holds an arbitrary value that is passed to one or more encrypt
        /// operations within a single serialization operation.
        /// </param>
        /// <returns>The encrypted text.</returns>
        public string Encrypt(string plainText, string credentialName, SerializationState serializationState)
        {
            var encryptor  = serializationState.Get(() => _crypto.GetEncryptor(credentialName?.ToString()));
            var cipherText = encryptor.Encrypt(plainText);

            return(cipherText);
        }
            public void ReturnsTheObjectFromTheGetMethod()
            {
                var state = new SerializationState();

                var foo = state.Get(() => new Foo(1));

                Assert.That(foo.Bar, Is.EqualTo(1));
            }
            public void ReturnsTheObjectFromTheGetMethod()
            {
                var state = new SerializationState();

                var foo = state.Get(() => new Foo(1));

                Assert.That(foo.Bar, Is.EqualTo(1));
            }
Ejemplo n.º 7
0
                public string Decrypt(string cipherText, object encryptKey, SerializationState serializationState)
                {
                    LastSerializationState = serializationState;

                    var counts = serializationState.Get(() => new Counts());

                    counts.DecryptInvocationCount++;

                    return(Encoding.UTF8.GetString(Convert.FromBase64String(cipherText)));
                }
Ejemplo n.º 8
0
                public string Encrypt(string plainText, object encryptKey, SerializationState serializationState)
                {
                    LastSerializationState = serializationState;

                    var counts = serializationState.Get(() => new Counts());

                    counts.EncryptInvocationCount++;

                    return(Convert.ToBase64String(Encoding.UTF8.GetBytes(plainText)));
                }
Ejemplo n.º 9
0
        /// <summary>
        /// Encrypts the specified plain text.
        /// </summary>
        /// <param name="plainText">The plain text.</param>
        /// <param name="encryptKey">
        /// An object to used to look up invokation-specific encryption parameters.
        /// </param>
        /// <param name="serializationState">
        /// An object that holds an arbitrary value that is passed to one or more encrypt
        /// operations within a single serialization operation.
        /// </param>
        /// <returns></returns>
        public string Encrypt(string plainText, object encryptKey, SerializationState serializationState)
        {
            var encryptor =
                serializationState == null
                    ? _crypto.GetEncryptor(encryptKey)
                    : serializationState.Get(() => _crypto.GetEncryptor(encryptKey));

            var cipherText = encryptor.Encrypt(plainText);

            return(cipherText);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Decrypts the specified cipher text.
        /// </summary>
        /// <param name="cipherText">The cipher text.</param>
        /// <param name="encryptKey">
        /// An object to used to look up invokation-specific encryption parameters.
        /// </param>
        /// <param name="serializationState">
        /// An object that holds an arbitrary value that is passed to one or more decrypt
        /// operations within a single serialization operation.
        /// </param>
        /// <returns>The decrypted text.</returns>
        public string Decrypt(string cipherText, object encryptKey, SerializationState serializationState)
        {
            var decryptor =
                serializationState == null
                    ? _crypto.GetDecryptor(encryptKey)
                    : serializationState.Get(() => _crypto.GetDecryptor(encryptKey));

            var plainText = decryptor.Decrypt(cipherText);

            return(plainText);
        }
                public string Decrypt(string cipherText, object encryptKey, SerializationState serializationState)
                {
                    if (serializationState == null)
                    {
                        throw new ArgumentNullException(nameof(serializationState));
                    }
                    LastSerializationState = serializationState;

                    var counts = serializationState.Get(() => new Counts());

                    counts.DecryptInvocationCount++;

                    return(Encoding.UTF8.GetString(Convert.FromBase64String(cipherText)));
                }
                public string Encrypt(string plainText, object encryptKey, SerializationState serializationState)
                {
                    if (serializationState == null)
                    {
                        throw new ArgumentNullException(nameof(serializationState));
                    }
                    LastSerializationState = serializationState;

                    var counts = serializationState.Get(() => new Counts());

                    counts.EncryptInvocationCount++;

                    return(Convert.ToBase64String(Encoding.UTF8.GetBytes(plainText)));
                }
        public void GetDecryptorIsNotCalledWhenSerializationStateIsNotEmpty()
        {
            var mockCrypto    = new Mock <ICrypto>();
            var mockDecryptor = new Mock <IDecryptor>();

            mockCrypto.Setup(c => c.GetDecryptor(It.IsAny <string>())).Returns(() => mockDecryptor.Object);

            var encryptionMechanism = new CryptoEncryptionMechanism(mockCrypto.Object);

            const string credentialName     = "foobar";
            var          serializationState = new SerializationState();

            serializationState.Get(() => mockDecryptor.Object);

            encryptionMechanism.Decrypt("foo", credentialName, serializationState);

            mockCrypto.Verify(c => c.GetDecryptor(It.Is <string>(obj => obj == credentialName)), Times.Never());
        }
        public void TheCachedEncryptorReturnsTheReturnValue()
        {
            var mockCrypto    = new Mock <ICrypto>();
            var mockEncryptor = new Mock <IEncryptor>();

            mockCrypto.Setup(c => c.GetEncryptor(It.IsAny <string>())).Returns(() => mockEncryptor.Object);
            mockEncryptor.Setup(e => e.Encrypt(It.IsAny <string>())).Returns("bar");

            var encryptionMechanism = new CryptoEncryptionMechanism(mockCrypto.Object);

            var credentialName     = "foobar";
            var serializationState = new SerializationState();

            serializationState.Get(() => mockEncryptor.Object);

            var encrypted = encryptionMechanism.Encrypt("foo", credentialName, serializationState);

            Assert.AreEqual(encrypted, "bar");
        }
Ejemplo n.º 15
0
        public void TheCachedEncryptorReturnsTheReturnValue()
        {
            var mockCrypto    = new Mock <ICrypto>();
            var mockEncryptor = new Mock <IEncryptor>();

            mockCrypto.Setup(c => c.GetEncryptor(It.IsAny <string>())).Returns(() => mockEncryptor.Object);
            mockEncryptor.Setup(e => e.Encrypt(It.IsAny <string>())).Returns("bar");

            var encryptionMechanism = new CryptoEncryptionMechanism(mockCrypto.Object);

            var credentialName     = "foobar";
            var serializationState = new SerializationState();

            // Force the mock encryptor to be cached in the serialization state.
            serializationState.Get(() => mockEncryptor.Object);

            var encrypted = encryptionMechanism.Encrypt("foo", credentialName, serializationState);

            encrypted.Should().Be("bar");
        }
                public string Decrypt(string cipherText, object encryptKey, SerializationState serializationState)
                {
                    LastSerializationState = serializationState;

                    var counts = serializationState.Get(() => new Counts());

                    counts.DecryptInvocationCount++;

                    return Encoding.UTF8.GetString(Convert.FromBase64String(cipherText));
                }
            public void ThrowsAnExceptionIfGetValueIsNull()
            {
                var state = new SerializationState();

                Assert.That(() => state.Get <Foo>(null), Throws.InstanceOf <ArgumentNullException>());
            }
            public void ThrowsAnExceptionIfGetValueReturnsNull()
            {
                var state = new SerializationState();

                Assert.That(() => state.Get <Foo>(() => null), Throws.ArgumentException);
            }
                public string Encrypt(string plainText, object encryptKey, SerializationState serializationState)
                {
                    LastSerializationState = serializationState;

                    var counts = serializationState.Get(() => new Counts());

                    counts.EncryptInvocationCount++;

                    return Convert.ToBase64String(Encoding.UTF8.GetBytes(plainText));
                }
            public void ThrowsAnExceptionIfGetValueIsNull()
            {
                var state = new SerializationState();

                Assert.That(() => state.Get<Foo>(null), Throws.InstanceOf<ArgumentNullException>());
            }
            public void ThrowsAnExceptionIfGetValueReturnsNull()
            {
                var state = new SerializationState();

                Assert.That(() => state.Get<Foo>(() => null), Throws.ArgumentException);
            }