public void TestAesHmac() { byte[] hmac = AesStatic.GenerateKey(); byte[] key = AesStatic.GenerateKey(); byte[] iv = AesStatic.GenerateIV(); Random random = new Random(); byte[] plaintext = new byte[69854]; random.NextBytes(plaintext); PacketBuffer ciphertext = PacketBuffer.CreateDynamic(); AesStatic.EncryptWithHmac(plaintext, ciphertext, false, hmac, key); ciphertext.Position = 0; byte[] result = AesStatic.DecryptWithHmac(ciphertext, -1, hmac, key); CollectionAssert.AreEqual(plaintext, result); }
public void TestAes() { byte[] key = AesStatic.GenerateKey(); Assert.IsNotNull(key); byte[] iv = AesStatic.GenerateIV(); Assert.IsNotNull(iv); Random random = new Random(); byte[] plaintext = new byte[45674]; random.NextBytes(plaintext); byte[] ciphertext = AesStatic.Encrypt(plaintext, key, iv); Assert.IsNotNull(ciphertext); Assert.AreEqual(ciphertext.Length, Util.GetTotalSize(plaintext.Length, 16)); byte[] decrypted = AesStatic.Decrypt(ciphertext, key, iv); Assert.IsNotNull(decrypted); CollectionAssert.AreEqual(plaintext, decrypted); }
private FileMeta(ContentAlgorithm algorithm, byte[] hmacKey, byte[] aesKey, byte[] fileKey) { Algorithm = algorithm; AesKey = aesKey; HmacKey = hmacKey; FileKey = fileKey; if (Algorithm == ContentAlgorithm.Aes256CbcHmacSha256) { if (AesKey == null) { AesKey = AesStatic.GenerateKey(); } else if (AesKey.Length != 32) { throw new ArgumentOutOfRangeException(nameof(aesKey)); } if (hmacKey == null) { HmacKey = AesStatic.GenerateKey(); } else if (HmacKey.Length != 32) { throw new ArgumentOutOfRangeException(nameof(hmacKey)); } if (fileKey == null) { FileKey = AesStatic.GenerateKey(); } else if (FileKey.Length != 32) { throw new ArgumentOutOfRangeException(nameof(fileKey)); } FileEncryption = ContentAlgorithm.Aes256Cbc; // The file needs no HMAC as we have an SHA256 } }
private void btnAesGenerate_Click(object sender, EventArgs e) => tbAesKey.Text = Util.ToHexString(AesStatic.GenerateKey());