Esempio n. 1
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. 2
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. 3
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. 4
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. 5
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. 6
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. 7
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. 8
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. 9
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. 10
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. 11
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. 12
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);
            });
        }
Esempio n. 13
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);
        }