public static void DecryptIntrinsics(EncryptionTestVector tv) { Span <byte> key1 = tv.Key.AsSpan(0, 0x10); Span <byte> key2 = tv.Key.AsSpan(0x10, 0x10); Common.CipherTestCore(tv.CipherText, tv.PlainText, Aes.CreateXtsDecryptor(key1, key2, tv.Iv)); }
//[Theory, MemberData(nameof(EncryptTestVectors_Individual))] public static void Encrypt_Individual(EncryptionTestVector tv) { Span <byte> key1 = tv.Key.AsSpan(0, 0x10); Span <byte> key2 = tv.Key.AsSpan(0x10, 0x10); Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateXtsEncryptor(key1, key2, tv.Iv, true)); }
//[Theory, MemberData(nameof(EncryptMultiTestVectors_Individual))] public static void EncryptMulti_Individual(EncryptionTestVector tv) { Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateEcbEncryptor(tv.Key, true)); }
//[AesIntrinsicsRequiredTheory, MemberData(nameof(DecryptMultiTestVectors_Individual))] public static void DecryptMultiIntrinsics_Individual(EncryptionTestVector tv) { Common.CipherTestCore(tv.CipherText, tv.PlainText, Aes.CreateEcbDecryptor(tv.Key)); }
public static void EncryptIntrinsics(EncryptionTestVector tv) { Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateEcbEncryptor(tv.Key)); }
public static void Decrypt(EncryptionTestVector tv) { Common.CipherTestCore(tv.CipherText, tv.PlainText, Aes.CreateEcbDecryptor(tv.Key, true)); }
public IEnumerable <EncryptionTestVector> GetEncryptionTestVectors() { string line; bool isEncryptType = false; var testVector = new EncryptionTestVector(); bool canOutputVector = false; while ((line = Reader.ReadLine()?.Trim()) != null) { if (line.Length == 0) { if (canOutputVector) { testVector.Encrypt = isEncryptType; yield return(testVector); testVector = new EncryptionTestVector(); canOutputVector = false; } continue; } if (line[0] == '#') { continue; } if (line[0] == '[') { if (line == "[ENCRYPT]") { isEncryptType = true; } if (line == "[DECRYPT]") { isEncryptType = false; } continue; } string[] kvp = line.Split(new[] { " = " }, StringSplitOptions.None); if (kvp.Length != 2) { throw new InvalidDataException(); } canOutputVector = true; switch (kvp[0].ToUpperInvariant()) { case "COUNT": testVector.Count = int.Parse(kvp[1]); break; case "DATAUNITLEN": testVector.DataUnitLength = int.Parse(kvp[1]); break; case "KEY": testVector.Key = kvp[1].ToBytes(); break; case "IV": case "I": testVector.Iv = kvp[1].ToBytes(); break; case "PLAINTEXT": case "PT": testVector.PlainText = kvp[1].ToBytes(); break; case "CIPHERTEXT": case "CT": testVector.CipherText = kvp[1].ToBytes(); break; } } }
public static void TransformIntrinsics(EncryptionTestVector tv) { Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateCtrEncryptor(tv.Key, tv.Iv)); }
//[Theory, MemberData(nameof(DecryptTestVectors_Individual))] public static void Decrypt_Individual(EncryptionTestVector tv) { Common.CipherTestCore(tv.CipherText, tv.PlainText, Aes.CreateCbcDecryptor(tv.Key, tv.Iv, true)); }
//[AesIntrinsicsRequiredTheory, MemberData(nameof(EncryptTestVectors_Individual))] public static void EncryptIntrinsics_Individual(EncryptionTestVector tv) { Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateCbcEncryptor(tv.Key, tv.Iv)); }
public static void DecryptMultiIntrinsics(EncryptionTestVector tv) { Common.CipherTestCore(tv.CipherText, tv.PlainText, Aes.CreateCbcDecryptor(tv.Key, tv.Iv)); }
public static void EncryptMulti(EncryptionTestVector tv) { Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateCbcEncryptor(tv.Key, tv.Iv, true)); }