public void AlteredKeyCheckValueIsNotValid() { byte[] key = CryptoRandom.NextBytesStatic(32); byte[] kcv = KeyCheckValueValidator.GenerateKeyCheckValue(key); if (key[0] > 120) { key[0]--; } else { key[0]++; } bool exceptionWasThrown = false; try { KeyCheckValueValidator.ValidateKeyCheckValue(key, kcv); } catch (KeyCheckValueValidationException) { exceptionWasThrown = true; } Assert.True(exceptionWasThrown, "Validation of KCV should have failed, but it didn't"); }
private async Task AssertFileEncryption(int fileLength, bool async) { byte[] iv = CryptoRandom.NextBytesStatic(16); byte[] key = CryptoRandom.NextBytesStatic(32); string plainTextFile = WriteToTempFile(fileLength); string encryptedFile = Path.GetRandomFileName(); string decryptedFile = Path.GetRandomFileName(); if (async) { await AesFileEncrytion.EncryptAsync(plainTextFile, encryptedFile, key, iv, true); await AesFileEncrytion.DecryptAsync(encryptedFile, decryptedFile, key, iv, true); } else { AesFileEncrytion.Encrypt(plainTextFile, encryptedFile, key, iv, true); AesFileEncrytion.Decrypt(encryptedFile, decryptedFile, key, iv, true); } try { AssertFileContent(plainTextFile, decryptedFile); } finally { File.Delete(plainTextFile); File.Delete(encryptedFile); File.Delete(decryptedFile); } }
public void MacIs48BytesLong() { byte[] data = CryptoRandom.NextBytesStatic(1227); byte[] key = CryptoRandom.NextBytesStatic(32); using (Stream tempStream = new MemoryStream()) { tempStream.Write(data, 0, data.Length); byte[] mac = MessageAuthenticationCodeValidator.CalculateMessageAuthenticationCode(key, tempStream); Assert.Equal(48, mac.Length); } }
public void UnalteredKeyCheckValueIsValid() { byte[] key = CryptoRandom.NextBytesStatic(32); byte[] kcv = KeyCheckValueValidator.GenerateKeyCheckValue(key); bool exceptionWasThrown = false; try { KeyCheckValueValidator.ValidateKeyCheckValue(key, kcv); } catch (KeyCheckValueValidationException) { exceptionWasThrown = true; } Assert.False(exceptionWasThrown, "Validation of KCV has failed"); }
public void MacCanBeValidated() { byte[] data = CryptoRandom.NextBytesStatic(1227); byte[] key = CryptoRandom.NextBytesStatic(32); using (Stream tempStream = new MemoryStream()) { tempStream.Write(data, 0, data.Length); bool error = false; byte[] mac = MessageAuthenticationCodeValidator.CalculateMessageAuthenticationCode(key, tempStream); try { MessageAuthenticationCodeValidator.ValidateMessageAuthenticationCode(key, mac, tempStream); } catch (DataIntegrityValidationException) { error = true; } Assert.False(error); } }
/// <summary> /// Generates the key check value. /// </summary> /// <param name="key">The key.</param> /// <returns>Byte array, the KCV</returns> public static byte[] GenerateKeyCheckValue(byte[] key) => GenerateKeyCheckValue(key, CryptoRandom.NextBytesStatic(16));
public void KeyCheckValidIs19BytesLong() { byte[] key = CryptoRandom.NextBytesStatic(32); byte[] kcv = KeyCheckValueValidator.GenerateKeyCheckValue(key); Assert.True(kcv.Length == 19, "KCV is not 19 bytes long"); }