Esempio n. 1
0
        public void Password_Should_ReturnValue_When_ConstructorIsCalled()
        {
            // Arrange & Act
            var encrypt = new ASymmetricEncryption(_publicKey);

            // Assert
            Assert.True(encrypt.EncryptedPassword.ToString().Length > 0);
        }
Esempio n. 2
0
        public void Constructor_Should_InitializeProperly_When_RSAPublicKeyIsProvided()
        {
            // Arrange & Act
            var e1 = new ASymmetricEncryption(_publicKey);

            // Assert
            Assert.NotNull(e1);
        }
Esempio n. 3
0
        public void EncryptedPassword_Should_ReturnA256ByteEncryptedPassword()
        {
            // Arrange
            var encrypt = new ASymmetricEncryption(_publicKey);

            // Act
            var encryptedPassword = encrypt.EncryptedPassword;

            // Assert
            Assert.True(encryptedPassword.Bytes.Length == 256);
        }
Esempio n. 4
0
        public void Encrypt_Should_ReturnEncryptedData()
        {
            // Arrange
            var e1 = new ASymmetricEncryption(_publicKey);

            // Act
            var encrypted = e1.Encrypt(_targetData);

            // Assert
            Assert.False(encrypted.IsEmpty);
        }
Esempio n. 5
0
        public void Constructor_Should_InitializeProperly_When_RSAPublicKeyAndPasswordProvided()
        {
            // Arrange
            var password = new EncryptionData("password");

            // Act
            var e1 = new ASymmetricEncryption(_publicKey, password);

            // Assert
            Assert.NotNull(e1);
        }
Esempio n. 6
0
        public void Constructor_Should_ThrowExceptionWhenRSAPublicKeyIsNotProvided()
        {
            // Arrange
            RsaPublicKey key = null;

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() =>
            {
                var e1 = new ASymmetricEncryption(key);
            });
        }
Esempio n. 7
0
        public void Encrypt_Should_ThrowException_When_RSAPrivateKeyIsProvided()
        {
            // Arrange
            var e1 = new ASymmetricEncryption(_privateKey);

            // Act & Assert
            Assert.Throws <InvalidOperationException>(
                () =>
            {
                var encrypted = e1.Encrypt(_targetData);
            });
        }
Esempio n. 8
0
        public void Constructor_Should_ThrowExceptionWhenRSAPublicKeyIsProvidedButNoPassword()
        {
            // Arrange
            var password = new EncryptionData();

            // Act & Assert
            Assert.Throws <ArgumentNullException>(
                () =>
            {
                var e1 = new ASymmetricEncryption(_publicKey, password);
            });
        }
Esempio n. 9
0
        public void Constructor_Should_ThrowArgumentOutOfRangeException_When_PasswordGreaterThan32Characters()
        {
            // Arrange
            var password = new EncryptionData("123456789012345678901234567890123");

            // Act & Assert
            Assert.Throws <ArgumentOutOfRangeException>(
                () =>
            {
                var e1 = new ASymmetricEncryption(_publicKey, password);
            });
        }
Esempio n. 10
0
        public void Decrypt_Should_ThrowException_When_NoEncryptedDataProvided()
        {
            // Arrange
            var e2 = new ASymmetricEncryption(_privateKey);

            var encrypted = new EncryptionData();

            // Act & Assert
            Assert.Throws <ArgumentException>(() =>
            {
                var decrypted = e2.Decrypt(encrypted);
            });
        }
Esempio n. 11
0
        public void Decrypt_Should_ReturnExpectedResult_When_ProvidedCorrectPrivateKey()
        {
            // Arrange
            var e1 = new ASymmetricEncryption(_publicKey);
            var e2 = new ASymmetricEncryption(_privateKey);

            // Act
            var encrypted = e1.Encrypt(_targetData);
            var decrypted = e2.Decrypt(encrypted);

            // Assert
            Assert.True(_targetData.Text == decrypted.Text);
        }
Esempio n. 12
0
        public void Constructor_Should_ThrowExceptionWhenNoRSAPublicKeyIsProvidedButPasswordIs()
        {
            // Arrange
            RsaPublicKey key      = null;
            var          password = new EncryptionData("password");

            // Act & Assert
            Assert.Throws <ArgumentNullException>(
                () =>
            {
                var e1 = new ASymmetricEncryption(key, password);
            });
        }
Esempio n. 13
0
        public void Encrypt_Should_ThrowException_When_NoDataForPayloadProvided()
        {
            // Arrange
            var empty = new EncryptionData();
            var e1    = new ASymmetricEncryption(_privateKey);

            // Act & Assert
            Assert.Throws <ArgumentException>(
                () =>
            {
                var encrypted = e1.Encrypt(empty);
            });
        }
Esempio n. 14
0
        public void Encrypt_Should_ReturnEncryptedData_When_UsingStream()
        {
            // Arrange
            var            e1 = new ASymmetricEncryption(_publicKey);
            EncryptionData encrypted;

            // Act
            using (var sr = new StreamReader($"{_assemblyPath}sample.doc"))
            {
                encrypted = e1.Encrypt(sr.BaseStream);
            }

            // Assert
            Assert.False(encrypted.IsEmpty);
        }
Esempio n. 15
0
        public void Encrypt_Should_ThrowException_When_RSAPrivateKeyIsProvided_When_UsingStream()
        {
            // Arrange
            var            e1 = new ASymmetricEncryption(_privateKey);
            EncryptionData encrypted;

            // Act & Assert
            Assert.Throws <InvalidOperationException>(
                () =>
            {
                using (var sr = new StreamReader($"{_assemblyPath}sample.doc"))
                {
                    encrypted = e1.Encrypt(sr.BaseStream);
                }
            });
        }
Esempio n. 16
0
        public void Encrypt_Should_ReturnSamePassword_When_ExplicitPasswordProvidedAndPasswordWithNonUTF8Password()
        {
            // Arrange
            var password          = new EncryptionData("A really long simple password", System.Text.Encoding.ASCII);
            var encrypt           = new ASymmetricEncryption(_publicKey, password);
            var encryptedPassword = new EncryptionData(new byte[256]);

            // Act
            var encryptedBytes = encrypt.Encrypt(_targetData);

            Buffer.BlockCopy(encryptedBytes.Bytes, 0, encryptedPassword.Bytes, 0, 256);

            var decryptedPassword = new RsaEncryption().Decrypt(encryptedPassword, _privateKey);

            // Assert
            Assert.True(decryptedPassword.Text == password.Text);
        }
Esempio n. 17
0
        public void Encrypt_Should_ReturnA32BytePassword()
        {
            // Arrange
            var encrypt           = new ASymmetricEncryption(_publicKey);
            var encryptedPassword = new EncryptionData(new byte[256]);
            var rsa = new RsaEncryption();

            // Act
            var encryptedBytes = encrypt.Encrypt(_targetData);

            Buffer.BlockCopy(encryptedBytes.Bytes, 0, encryptedPassword.Bytes, 0, 256);

            var password = rsa.Decrypt(encryptedPassword, _privateKey);

            // Assert
            Assert.True(password.Bytes.Length == 32);
        }
Esempio n. 18
0
        public void Encrypt_Should_ThrowException_When_StreamIsNotReadable()
        {
            // Arrange
            var fileName = $"{_assemblyPath}{Guid.NewGuid()}";
            var e1       = new ASymmetricEncryption(_privateKey);
            var stream   = new FileStream(fileName, FileMode.CreateNew, FileAccess.Write);

            // Act & Assert
            Assert.Throws <ArgumentException>(
                () =>
            {
                var encrypted = e1.Encrypt(stream);
            });

            stream.Close();
            stream.Dispose();
        }
Esempio n. 19
0
        public void Encrypt_Should_ReturnSamePassword_When_ExplicitPasswordProvidedAndPasswordLenghtLessThan16()
        {
            // Arrange
            var password          = new EncryptionData("password");
            var encrypt           = new ASymmetricEncryption(_publicKey, password);
            var encryptedPassword = new EncryptionData(new byte[256]);

            // Act
            var encryptedBytes = encrypt.Encrypt(_targetData);

            Buffer.BlockCopy(encryptedBytes.Bytes, 0, encryptedPassword.Bytes, 0, 256);

            var decryptedPassword = new RsaEncryption().Decrypt(encryptedPassword, _privateKey);

            // Assert
            Assert.True(decryptedPassword.Text == password.Text);
        }
Esempio n. 20
0
        public void Encrypt_Should_ReturnTheSamePasswordAsEncryptedPassword()
        {
            // Arrange
            var encrypt           = new ASymmetricEncryption(_publicKey);
            var encryptedPassword = new byte[256];
            var payloadPassword   = new byte[256];

            Buffer.BlockCopy(encrypt.EncryptedPassword.Bytes, 0, encryptedPassword, 0, 256);

            // Act
            var encryptedBytes = encrypt.Encrypt(_targetData);

            Buffer.BlockCopy(encryptedBytes.Bytes, 0, payloadPassword, 0, 256);

            // Assert
            Assert.True(payloadPassword.SequenceEqual(encryptedPassword));
        }
Esempio n. 21
0
        public void Decrypt_Should_ReturnExpectedResult_When_ProvidedCorrectPrivateKeyAndUsingStream()
        {
            // Arrange
            var e1 = new ASymmetricEncryption(_publicKey);
            var e2 = new ASymmetricEncryption(_privateKey);

            // Act
            var            encrypted = e1.Encrypt(_targetData);
            EncryptionData decrypted;

            using (var stream = new MemoryStream(encrypted.Bytes))
            {
                decrypted = e2.Decrypt(stream);
            }

            // Assert
            Assert.True(_targetData.Text == decrypted.Text);
        }
Esempio n. 22
0
        public void Decrypt_Should_ThrowException_When_ProvidedWrongPrivateKey()
        {
            // Arrange
            var wrongKey = RsaPrivateKey.LoadFromCertificateFile(
                $"{_assemblyPath}ASymmetricEncryptionWrong.pfx",
                "password");

            var e1 = new ASymmetricEncryption(_publicKey);
            var e2 = new ASymmetricEncryption(wrongKey);

            var encrypted = e1.Encrypt(_targetData);

            // Act & Assert
            Assert.Throws <CryptographicException>(() =>
            {
                var decrypted = e2.Decrypt(encrypted);
            });
        }