diff --git a/TestVectors/kalyna.txt b/TestVectors/kalyna.txt index 6829c7a0..92157d49 100644 --- a/TestVectors/kalyna.txt +++ b/TestVectors/kalyna.txt @@ -45,7 +45,6 @@ Comment: Kalyna 128-bit key, 128-bit block Key: 000102030405060708090A0B0C0D0E0F IV: 101112131415161718191A1B1C1D1E1F BlockSize: 16 -BlockPaddingScheme: 0 # NoPadding Plaintext: 202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F Ciphertext: A73625D7BE994E85469A9FAABCEDAAB6DBC5F65DD77BB35E06BD7D1D8EAFC8624D6CB31CE189C82B8979F2936DE9BF14 Test: Encrypt @@ -60,12 +59,11 @@ Plaintext: 303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515 Ciphertext: 13EA15843AD14C50BC03ECEF1F43E398E4217752D3EB046AC393DACC5CA1D6FA0EB9FCEB229362B4F1565527EE3D8433 Test: Encrypt Name: Kalyna/CBC -Source: DSTU 7624:2014, Section B.6.5 (p.151) +Source: DSTU 7624:2014, Section B.6.5 (p.150) Comment: Kalyna 256-bit key, 256-bit block Key: 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F IV: 202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F BlockSize: 32 -BlockPaddingScheme: 0 # NoPadding Plaintext: 404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F \ 606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F \ 808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F @@ -80,7 +78,6 @@ Key: 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F \ 202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F IV: 404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F BlockSize: 32 -BlockPaddingScheme: 0 # NoPadding Plaintext: 606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F \ 808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F \ A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF @@ -96,7 +93,6 @@ Key: 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F \ IV: 404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F \ 606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F BlockSize: 64 -BlockPaddingScheme: 0 # NoPadding Plaintext: 808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F \ A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF \ C0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF \ @@ -105,4 +101,4 @@ Ciphertext: D4739B829EF901B24C1162AE4FDEF897EDA41FAC7F5770CDC90E1D1CDF124E8D \ 7831E06B4498A4B6F6EC815DF2461DC99BB0449B0F09FCAA2C84090534BCC932 \ 9626FD74EF8F0A0BCB5765184629C3CBF53B0FB134F6D0421174B1C4E884D1CD \ 1069A7AD19752DCEBF655842E79B7858BDE01390A760D85E88925BFE38B0FA57 -Test: Encrypt \ No newline at end of file +Test: Encrypt diff --git a/datatest.cpp b/datatest.cpp index 97be8d20..296ef16d 100644 --- a/datatest.cpp +++ b/datatest.cpp @@ -488,6 +488,14 @@ void TestSymmetricCipher(TestData &v, const NameValuePairs &overrideParameters) std::cout << "\n"; SignalTestFailure(); } + + // If BlockSize or BlockPaddingScheme was set for a test, then it becomes latched + // in testDataPairs. The old value is used in subsequent tests, and it could cause a + // self test failure in the next test. The behavior surfaced under Kalyna, where the + // official test vectors use NO_PADDING for all tests excpet one. For BlockSize or + // BlockPaddingScheme, unlatch them now. Also note we only unlatch from testDataPairs. + // If overrideParameters are specified, then the caller is responsible. + v.erase("BlockSize"); v.erase("BlockPaddingScheme"); } else {