Exemple #1
0
        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));
        }
Exemple #2
0
        //[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));
        }
Exemple #3
0
 //[Theory, MemberData(nameof(EncryptMultiTestVectors_Individual))]
 public static void EncryptMulti_Individual(EncryptionTestVector tv)
 {
     Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateEcbEncryptor(tv.Key, true));
 }
Exemple #4
0
 //[AesIntrinsicsRequiredTheory, MemberData(nameof(DecryptMultiTestVectors_Individual))]
 public static void DecryptMultiIntrinsics_Individual(EncryptionTestVector tv)
 {
     Common.CipherTestCore(tv.CipherText, tv.PlainText, Aes.CreateEcbDecryptor(tv.Key));
 }
Exemple #5
0
 public static void EncryptIntrinsics(EncryptionTestVector tv)
 {
     Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateEcbEncryptor(tv.Key));
 }
Exemple #6
0
 public static void Decrypt(EncryptionTestVector tv)
 {
     Common.CipherTestCore(tv.CipherText, tv.PlainText, Aes.CreateEcbDecryptor(tv.Key, true));
 }
Exemple #7
0
        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;
                }
            }
        }
Exemple #8
0
 public static void TransformIntrinsics(EncryptionTestVector tv)
 {
     Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateCtrEncryptor(tv.Key, tv.Iv));
 }
Exemple #9
0
 //[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));
 }
Exemple #10
0
 //[AesIntrinsicsRequiredTheory, MemberData(nameof(EncryptTestVectors_Individual))]
 public static void EncryptIntrinsics_Individual(EncryptionTestVector tv)
 {
     Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateCbcEncryptor(tv.Key, tv.Iv));
 }
Exemple #11
0
 public static void DecryptMultiIntrinsics(EncryptionTestVector tv)
 {
     Common.CipherTestCore(tv.CipherText, tv.PlainText, Aes.CreateCbcDecryptor(tv.Key, tv.Iv));
 }
Exemple #12
0
 public static void EncryptMulti(EncryptionTestVector tv)
 {
     Common.CipherTestCore(tv.PlainText, tv.CipherText, Aes.CreateCbcEncryptor(tv.Key, tv.Iv, true));
 }