コード例 #1
0
 public void KeyNull_ShouldThrow_ArgumentNullException()
 {
     // Arrange
     // Act
     // Assert
     Assert.ThrowsAsync <ArgumentNullException>(async() => await Aes256Encryption.Decrypt(Encoding.UTF8.GetBytes("Top secret"), null, IVDefault));
 }
コード例 #2
0
 public void KeyNot32Bytes_ShouldThrow_ArgumentOutOfRangeException()
 {
     // Arrange
     // Act
     // Assert
     Assert.ThrowsAsync <ArgumentOutOfRangeException>(async() => await Aes256Encryption.Decrypt(Encoding.UTF8.GetBytes("Top secret"), new byte[] { 0x00, 0x01 }, IVDefault));
 }
コード例 #3
0
 public void DataNull_ShouldThrow_ArgumentNullException()
 {
     // Arrange
     // Act
     // Assert
     Assert.ThrowsAsync <ArgumentNullException>(async() => await Aes256Encryption.Decrypt(null, KeyDefault, IVDefault));
 }
コード例 #4
0
            public async Task DataEmpty_ShouldReturn_EmptyArray()
            {
                // Arrange
                // Act
                var data = await Aes256Encryption.Encrypt(new byte[0], KeyDefault, IVDefault);

                // Assert
                data.Should().BeEmpty();
            }
コード例 #5
0
            public async Task Roundtrip_Should_Succeed()
            {
                // Arrange
                var data = Encoding.UTF8.GetBytes("Top secret");

                // Act
                var encrypted = await Aes256Encryption.Encrypt(data, KeyDefault, IVDefault);

                var decrypted = await Aes256Encryption.Decrypt(encrypted, KeyDefault, IVDefault);

                // Assert
                encrypted.SequenceEqual(data).Should().BeFalse();
                decrypted.SequenceEqual(data).Should().BeTrue();
            }
コード例 #6
0
        public void NullSafeSet(IDbCommand cmd, object value, int index, bool[] settable, ISessionImplementor session)
        {
            if (value == null)
            {
                return;
            }

            var encryptedCreditCard = (EncryptedCardNumber)value;

            if (encryptedCreditCard.Number.IsNullOrEmpty())
            {
                NHibernateUtil.String.NullSafeSet(cmd, null, index, session);
                NHibernateUtil.Int32.NullSafeSet(cmd, null, index + 1, session);
            }
            else
            {
                NHibernateUtil.String.NullSafeSet(cmd, Aes256Encryption.Encrypt(encryptedCreditCard.Number), index, session);
                NHibernateUtil.Int32.NullSafeSet(cmd, Aes256Encryption.NewestDecryptionKeyID, index + 1, session);
            }
        }
コード例 #7
0
        public object NullSafeGet(IDataReader dr, string[] names, ISessionImplementor session, object owner)
        {
            if (dr == null)
            {
                return(null);
            }
            var numberColumn          = names[0];
            var decryptionKeyIDColumn = names[1];
            var number = (string)NHibernateUtil.String.NullSafeGet(dr, numberColumn, session, owner);

            if (number.IsNullOrEmpty())
            {
                return(new EncryptedCardNumber());
            }

            var decryptionKeyID = (int)NHibernateUtil.Int32.NullSafeGet(dr, decryptionKeyIDColumn, session, owner);

            return(new EncryptedCardNumber
            {
                Number = Aes256Encryption.DecryptString(number, decryptionKeyID),
                DecryptionKeyID = decryptionKeyID
            });
        }