From: Aleksander Jan Bajkowski Date: Wed, 28 Jan 2026 00:00:59 +0000 (+0100) Subject: kernel: backport crypto selftests for some ciphersuites X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F21970%2Fhead;p=thirdparty%2Fopenwrt.git kernel: backport crypto selftests for some ciphersuites FIPS 140-3 recommends that all crypto implementations should be tested before first use. Testmanager performs initial tests based on existing test vectors. Not all algorithms have defined test vectors, so to improve this situation, this commit backports recently added test vectors for three cipher suites: * authenc(hmac(md5),cbc(des3_ede)), * authenc(hmac(sha224),cbc(aes)), * authenc(hmac(sha384),cbc(aes)). These vectors were calculated using a software implementation and then double-checked on Mediatek MT7981 (safexcel) and NXP P2020 (talitos). Both platforms passed self-tests. Signed-off-by: Aleksander Jan Bajkowski Link: https://github.com/openwrt/openwrt/pull/21970 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/generic/backport-6.12/910-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/910-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch new file mode 100644 index 00000000000..49576779e1b --- /dev/null +++ b/target/linux/generic/backport-6.12/910-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -0,0 +1,354 @@ +From 030218dedee2628ea3f035d71431e1b7c4191cfb Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Sat, 31 Jan 2026 18:38:47 +0100 +Subject: [PATCH] crypto: testmgr - Add test vectors for + authenc(hmac(sha384),cbc(aes)) + +Test vectors were generated starting from existing CBC(AES) test vectors +(RFC3602, NIST SP800-38A) and adding HMAC(SHA384) computed with Python +script. Then, the results were double-checked on Mediatek MT7981 (safexcel) +and NXP P2020 (talitos). Both platforms pass self-tests. + +Signed-off-by: Aleksander Jan Bajkowski +Signed-off-by: Herbert Xu +--- + crypto/testmgr.c | 7 ++ + crypto/testmgr.h | 311 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 318 insertions(+) + +--- a/crypto/testmgr.c ++++ b/crypto/testmgr.c +@@ -4453,6 +4453,13 @@ static const struct alg_test_desc alg_te + .test = alg_test_null, + .fips_allowed = 1, + }, { ++ .alg = "authenc(hmac(sha384),cbc(aes))", ++ .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", ++ .test = alg_test_aead, ++ .suite = { ++ .aead = __VECS(hmac_sha384_aes_cbc_tv_temp) ++ } ++ }, { + .alg = "authenc(hmac(sha384),cbc(des))", + .test = alg_test_aead, + .suite = { +--- a/crypto/testmgr.h ++++ b/crypto/testmgr.h +@@ -17773,6 +17773,317 @@ static const struct aead_testvec hmac_sh + }, + }; + ++static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { ++ { /* RFC 3602 Case 1 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x06\xa9\x21\x40\x36\xb8\xa1\x5b" ++ "\x51\x2e\x03\xd5\x34\x12\x00\x06", ++ .klen = 8 + 48 + 16, ++ .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30" ++ "\xb4\x22\xda\x80\x2c\x9f\xac\x41", ++ .assoc = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30" ++ "\xb4\x22\xda\x80\x2c\x9f\xac\x41", ++ .alen = 16, ++ .ptext = "Single block msg", ++ .plen = 16, ++ .ctext = "\xe3\x53\x77\x9c\x10\x79\xae\xb8" ++ "\x27\x08\x94\x2d\xbe\x77\x18\x1a" ++ "\x79\x1c\xf1\x22\x95\x80\xe0\x60" ++ "\x7f\xf9\x92\x60\x83\xbd\x60\x9c" ++ "\xf6\x62\x8b\xa9\x7d\x56\xe2\xaf" ++ "\x80\x43\xbc\x41\x4a\x63\x0b\xa0" ++ "\x16\x25\xe2\xfe\x0a\x96\xf6\xa5" ++ "\x6c\x0b\xc2\x53\xb4\x27\xd9\x42", ++ .clen = 16 + 48, ++ }, { /* RFC 3602 Case 2 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x20\x21\x22\x23\x24\x25\x26\x27" ++ "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" ++ "\x30\x31\x32\x33\x34\x35\x36\x37" ++ "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" ++ "\x40\x41\x42\x43\x44\x45\x46\x47" ++ "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" ++ "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0" ++ "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a", ++ .klen = 8 + 48 + 16, ++ .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28" ++ "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58", ++ .assoc = "\x56\x2e\x17\x99\x6d\x09\x3d\x28" ++ "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58", ++ .alen = 16, ++ .ptext = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" ++ "\x10\x11\x12\x13\x14\x15\x16\x17" ++ "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", ++ .plen = 32, ++ .ctext = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a" ++ "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a" ++ "\x75\x86\x60\x2d\x25\x3c\xff\xf9" ++ "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1" ++ "\x4e\x5b\xa8\x65\x51\xc6\x58\xaf" ++ "\x31\x57\x50\x3d\x01\xa1\xa4\x3f" ++ "\x42\xd1\xd7\x31\x76\x8d\xf8\xc8" ++ "\xe4\xd2\x7e\xc5\x23\xe7\xc6\x2e" ++ "\x2d\xfd\x9d\xc1\xac\x50\x1e\xcf" ++ "\xa0\x10\xeb\x1a\x9c\xb7\xe1\xca", ++ .clen = 32 + 48, ++ }, { /* RFC 3602 Case 3 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd\xee\xff\x11\x22" ++ "\x33\x44\x55\x66\x77\x88\x99\xaa" ++ "\xbb\xcc\xdd\xee\xff\x11\x22\x33" ++ "\x6c\x3e\xa0\x47\x76\x30\xce\x21" ++ "\xa2\xce\x33\x4a\xa7\x46\xc2\xcd", ++ .klen = 8 + 48 + 16, ++ .iv = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb" ++ "\xd9\xcd\x27\xd8\x25\x68\x2c\x81", ++ .assoc = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb" ++ "\xd9\xcd\x27\xd8\x25\x68\x2c\x81", ++ .alen = 16, ++ .ptext = "This is a 48-byte message (exactly 3 AES blocks)", ++ .plen = 48, ++ .ctext = "\xd0\xa0\x2b\x38\x36\x45\x17\x53" ++ "\xd4\x93\x66\x5d\x33\xf0\xe8\x86" ++ "\x2d\xea\x54\xcd\xb2\x93\xab\xc7" ++ "\x50\x69\x39\x27\x67\x72\xf8\xd5" ++ "\x02\x1c\x19\x21\x6b\xad\x52\x5c" ++ "\x85\x79\x69\x5d\x83\xba\x26\x84" ++ "\xa1\x52\xe7\xda\xf7\x05\xb6\xca" ++ "\xad\x0f\x51\xed\x5a\xd3\x0f\xdf" ++ "\xde\xeb\x3f\x31\xed\x3a\x43\x93" ++ "\x3b\xb7\xca\xc8\x1b\xe7\x3b\x61" ++ "\x6a\x05\xfd\x2d\x6a\x5c\xb1\x0d" ++ "\x6e\x7a\xeb\x1c\x84\xec\xdb\xde", ++ .clen = 48 + 48, ++ }, { /* RFC 3602 Case 4 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd\xee\xff\x11\x22" ++ "\x33\x44\x55\x66\x77\x88\x99\xaa" ++ "\xbb\xcc\xdd\xee\xff\x11\x22\x33" ++ "\x56\xe4\x7a\x38\xc5\x59\x89\x74" ++ "\xbc\x46\x90\x3d\xba\x29\x03\x49", ++ .klen = 8 + 48 + 16, ++ .iv = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c" ++ "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9", ++ .assoc = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c" ++ "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9", ++ .alen = 16, ++ .ptext = "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7" ++ "\xa8\xa9\xaa\xab\xac\xad\xae\xaf" ++ "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7" ++ "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf" ++ "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7" ++ "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf" ++ "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7" ++ "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf", ++ .plen = 64, ++ .ctext = "\xc3\x0e\x32\xff\xed\xc0\x77\x4e" ++ "\x6a\xff\x6a\xf0\x86\x9f\x71\xaa" ++ "\x0f\x3a\xf0\x7a\x9a\x31\xa9\xc6" ++ "\x84\xdb\x20\x7e\xb0\xef\x8e\x4e" ++ "\x35\x90\x7a\xa6\x32\xc3\xff\xdf" ++ "\x86\x8b\xb7\xb2\x9d\x3d\x46\xad" ++ "\x83\xce\x9f\x9a\x10\x2e\xe9\x9d" ++ "\x49\xa5\x3e\x87\xf4\xc3\xda\x55" ++ "\x85\x7b\x91\xe0\x29\xeb\xd3\x59" ++ "\x7c\xe3\x67\x14\xbe\x71\x2a\xd2" ++ "\x8a\x1a\xd2\x35\x78\x6b\x69\xba" ++ "\x64\xa5\x04\x00\x19\xc3\x4c\xae" ++ "\x71\xff\x76\x9f\xbb\xc3\x29\x22" ++ "\xc2\xc6\x51\xf1\xe6\x29\x5e\xa5", ++ .clen = 64 + 48, ++ }, { /* RFC 3602 Case 5 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd\xee\xff\x11\x22" ++ "\x33\x44\x55\x66\x77\x88\x99\xaa" ++ "\xbb\xcc\xdd\xee\xff\x11\x22\x33" ++ "\x90\xd3\x82\xb4\x10\xee\xba\x7a" ++ "\xd9\x38\xc4\x6c\xec\x1a\x82\xbf", ++ .klen = 8 + 48 + 16, ++ .iv = "\xe9\x6e\x8c\x08\xab\x46\x57\x63" ++ "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93", ++ .assoc = "\x00\x00\x43\x21\x00\x00\x00\x01" ++ "\xe9\x6e\x8c\x08\xab\x46\x57\x63" ++ "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93", ++ .alen = 24, ++ .ptext = "\x08\x00\x0e\xbd\xa7\x0a\x00\x00" ++ "\x8e\x9c\x08\x3d\xb9\x5b\x07\x00" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" ++ "\x10\x11\x12\x13\x14\x15\x16\x17" ++ "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" ++ "\x20\x21\x22\x23\x24\x25\x26\x27" ++ "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" ++ "\x30\x31\x32\x33\x34\x35\x36\x37" ++ "\x01\x02\x03\x04\x05\x06\x07\x08" ++ "\x09\x0a\x0b\x0c\x0d\x0e\x0e\x01", ++ .plen = 80, ++ .ctext = "\xf6\x63\xc2\x5d\x32\x5c\x18\xc6" ++ "\xa9\x45\x3e\x19\x4e\x12\x08\x49" ++ "\xa4\x87\x0b\x66\xcc\x6b\x99\x65" ++ "\x33\x00\x13\xb4\x89\x8d\xc8\x56" ++ "\xa4\x69\x9e\x52\x3a\x55\xdb\x08" ++ "\x0b\x59\xec\x3a\x8e\x4b\x7e\x52" ++ "\x77\x5b\x07\xd1\xdb\x34\xed\x9c" ++ "\x53\x8a\xb5\x0c\x55\x1b\x87\x4a" ++ "\xa2\x69\xad\xd0\x47\xad\x2d\x59" ++ "\x13\xac\x19\xb7\xcf\xba\xd4\xa6" ++ "\x57\x5f\xb4\xd7\x74\x6f\x18\x97" ++ "\xb7\xde\xfc\xf3\x4e\x0d\x29\x4d" ++ "\xa0\xff\x39\x9e\x2d\xbf\x27\xac" ++ "\x54\xb9\x8a\x3e\xab\x3b\xac\xd3" ++ "\x36\x43\x74\xfc\xc2\x64\x81\x8a" ++ "\x2c\x15\x72\xdf\x3f\x9d\x5b\xa4", ++ .clen = 80 + 48, ++ }, { /* NIST SP800-38A F.2.3 CBC-AES192.Encrypt */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x18" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd\xee\xff\x11\x22" ++ "\x33\x44\x55\x66\x77\x88\x99\xaa" ++ "\xbb\xcc\xdd\xee\xff\x11\x22\x33" ++ "\x8e\x73\xb0\xf7\xda\x0e\x64\x52" ++ "\xc8\x10\xf3\x2b\x80\x90\x79\xe5" ++ "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b", ++ .klen = 8 + 48 + 24, ++ .iv = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", ++ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", ++ .alen = 16, ++ .ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" ++ "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" ++ "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" ++ "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" ++ "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" ++ "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" ++ "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" ++ "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", ++ .plen = 64, ++ .ctext = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d" ++ "\x71\x78\x18\x3a\x9f\xa0\x71\xe8" ++ "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4" ++ "\xe5\xe7\x38\x76\x3f\x69\x14\x5a" ++ "\x57\x1b\x24\x20\x12\xfb\x7a\xe0" ++ "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0" ++ "\x08\xb0\xe2\x79\x88\x59\x88\x81" ++ "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd" ++ "\x29\x9b\x42\x47\x0b\xbf\xf3\x54" ++ "\x54\x95\xb0\x89\xd5\xa0\xc3\x78" ++ "\x60\x6c\x18\x39\x6d\xc9\xfb\x2a" ++ "\x34\x1c\xed\x95\x10\x1e\x43\x0a" ++ "\x72\xce\x26\xbc\x74\xd9\x6f\xa2" ++ "\xf1\xd9\xd0\xb1\xdf\x3d\x93\x14", ++ .clen = 64 + 48, ++ }, { /* NIST SP800-38A F.2.5 CBC-AES256.Encrypt */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x20" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd\xee\xff\x11\x22" ++ "\x33\x44\x55\x66\x77\x88\x99\xaa" ++ "\xbb\xcc\xdd\xee\xff\x11\x22\x33" ++ "\x60\x3d\xeb\x10\x15\xca\x71\xbe" ++ "\x2b\x73\xae\xf0\x85\x7d\x77\x81" ++ "\x1f\x35\x2c\x07\x3b\x61\x08\xd7" ++ "\x2d\x98\x10\xa3\x09\x14\xdf\xf4", ++ .klen = 8 + 48 + 32, ++ .iv = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", ++ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", ++ .alen = 16, ++ .ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" ++ "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" ++ "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" ++ "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" ++ "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" ++ "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" ++ "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" ++ "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", ++ .plen = 64, ++ .ctext = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba" ++ "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6" ++ "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d" ++ "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d" ++ "\x39\xf2\x33\x69\xa9\xd9\xba\xcf" ++ "\xa5\x30\xe2\x63\x04\x23\x14\x61" ++ "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc" ++ "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b" ++ "\x9f\x50\xce\x64\xd9\xa3\xc9\x7a" ++ "\x15\x3a\x3d\x46\x9a\x90\xf3\x06" ++ "\x22\xad\xc5\x24\x77\x50\xb8\xfe" ++ "\xbe\x37\x16\x86\x34\x5f\xaf\x97" ++ "\x00\x9d\x86\xc8\x32\x4f\x72\x2f" ++ "\x48\x97\xad\xb6\xb9\x77\x33\xbc", ++ .clen = 64 + 48, ++ }, ++}; ++ + static const struct aead_testvec hmac_sha512_aes_cbc_tv_temp[] = { + { /* RFC 3602 Case 1 */ + #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/backport-6.12/911-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/911-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch new file mode 100644 index 00000000000..8649c1e5574 --- /dev/null +++ b/target/linux/generic/backport-6.12/911-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -0,0 +1,328 @@ +From a22d48cbe55814061d46db2f87090ba5e36aaf7f Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Sat, 31 Jan 2026 18:43:03 +0100 +Subject: [PATCH] crypto: testmgr - Add test vectors for + authenc(hmac(sha224),cbc(aes)) + +Test vectors were generated starting from existing CBC(AES) test vectors +(RFC3602, NIST SP800-38A) and adding HMAC(SHA224) computed with Python +script. Then, the results were double-checked on Mediatek MT7981 (safexcel) +and NXP P2020 (talitos). Both platforms pass self-tests. + +Signed-off-by: Aleksander Jan Bajkowski +Signed-off-by: Herbert Xu +--- + crypto/testmgr.c | 7 ++ + crypto/testmgr.h | 285 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 292 insertions(+) + +--- a/crypto/testmgr.c ++++ b/crypto/testmgr.c +@@ -4414,6 +4414,13 @@ static const struct alg_test_desc alg_te + .test = alg_test_null, + .fips_allowed = 1, + }, { ++ .alg = "authenc(hmac(sha224),cbc(aes))", ++ .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", ++ .test = alg_test_aead, ++ .suite = { ++ .aead = __VECS(hmac_sha224_aes_cbc_tv_temp) ++ } ++ }, { + .alg = "authenc(hmac(sha224),cbc(des))", + .test = alg_test_aead, + .suite = { +--- a/crypto/testmgr.h ++++ b/crypto/testmgr.h +@@ -17490,6 +17490,291 @@ static const struct aead_testvec hmac_sh + }, + }; + ++static const struct aead_testvec hmac_sha224_aes_cbc_tv_temp[] = { ++ { /* RFC 3602 Case 1 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00" ++ "\x06\xa9\x21\x40\x36\xb8\xa1\x5b" ++ "\x51\x2e\x03\xd5\x34\x12\x00\x06", ++ .klen = 8 + 28 + 16, ++ .iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30" ++ "\xb4\x22\xda\x80\x2c\x9f\xac\x41", ++ .assoc = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30" ++ "\xb4\x22\xda\x80\x2c\x9f\xac\x41", ++ .alen = 16, ++ .ptext = "Single block msg", ++ .plen = 16, ++ .ctext = "\xe3\x53\x77\x9c\x10\x79\xae\xb8" ++ "\x27\x08\x94\x2d\xbe\x77\x18\x1a" ++ "\x17\xe8\x00\x76\x70\x71\xd1\x72" ++ "\xf8\xd0\x91\x51\x67\xf9\xdf\xd6" ++ "\x0d\x56\x1a\xb3\x52\x19\x85\xae" ++ "\x46\x74\xb6\x98", ++ .clen = 16 + 28, ++ }, { /* RFC 3602 Case 2 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x20\x21\x22\x23\x24\x25\x26\x27" ++ "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" ++ "\x30\x31\x32\x33\x34\x35\x36\x37" ++ "\x38\x39\x3a\x3b" ++ "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0" ++ "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a", ++ .klen = 8 + 28 + 16, ++ .iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28" ++ "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58", ++ .assoc = "\x56\x2e\x17\x99\x6d\x09\x3d\x28" ++ "\xdd\xb3\xba\x69\x5a\x2e\x6f\x58", ++ .alen = 16, ++ .ptext = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" ++ "\x10\x11\x12\x13\x14\x15\x16\x17" ++ "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f", ++ .plen = 32, ++ .ctext = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a" ++ "\x3a\x86\x30\x28\xb5\xe1\xdc\x0a" ++ "\x75\x86\x60\x2d\x25\x3c\xff\xf9" ++ "\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1" ++ "\xa1\x11\xfa\xbb\x1e\x04\x7e\xe7" ++ "\x4c\x5f\x65\xbf\x68\x8d\x33\x9d" ++ "\xbc\x74\x9b\xf3\x15\xf3\x8f\x8d" ++ "\xe8\xaf\x33\xe0", ++ ++ .clen = 32 + 28, ++ }, { /* RFC 3602 Case 3 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd" ++ "\x6c\x3e\xa0\x47\x76\x30\xce\x21" ++ "\xa2\xce\x33\x4a\xa7\x46\xc2\xcd", ++ .klen = 8 + 28 + 16, ++ .iv = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb" ++ "\xd9\xcd\x27\xd8\x25\x68\x2c\x81", ++ .assoc = "\xc7\x82\xdc\x4c\x09\x8c\x66\xcb" ++ "\xd9\xcd\x27\xd8\x25\x68\x2c\x81", ++ .alen = 16, ++ .ptext = "This is a 48-byte message (exactly 3 AES blocks)", ++ .plen = 48, ++ .ctext = "\xd0\xa0\x2b\x38\x36\x45\x17\x53" ++ "\xd4\x93\x66\x5d\x33\xf0\xe8\x86" ++ "\x2d\xea\x54\xcd\xb2\x93\xab\xc7" ++ "\x50\x69\x39\x27\x67\x72\xf8\xd5" ++ "\x02\x1c\x19\x21\x6b\xad\x52\x5c" ++ "\x85\x79\x69\x5d\x83\xba\x26\x84" ++ "\x60\xb3\xca\x0e\xc1\xfe\xf2\x27" ++ "\x5a\x41\xe4\x99\xa8\x19\x56\xf1" ++ "\x44\x98\x27\x9f\x99\xb0\x4a\xad" ++ "\x4d\xc1\x1e\x88", ++ .clen = 48 + 28, ++ }, { /* RFC 3602 Case 4 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd" ++ "\x56\xe4\x7a\x38\xc5\x59\x89\x74" ++ "\xbc\x46\x90\x3d\xba\x29\x03\x49", ++ .klen = 8 + 28 + 16, ++ .iv = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c" ++ "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9", ++ .assoc = "\x8c\xe8\x2e\xef\xbe\xa0\xda\x3c" ++ "\x44\x69\x9e\xd7\xdb\x51\xb7\xd9", ++ .alen = 16, ++ .ptext = "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7" ++ "\xa8\xa9\xaa\xab\xac\xad\xae\xaf" ++ "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7" ++ "\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf" ++ "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7" ++ "\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf" ++ "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7" ++ "\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf", ++ .plen = 64, ++ .ctext = "\xc3\x0e\x32\xff\xed\xc0\x77\x4e" ++ "\x6a\xff\x6a\xf0\x86\x9f\x71\xaa" ++ "\x0f\x3a\xf0\x7a\x9a\x31\xa9\xc6" ++ "\x84\xdb\x20\x7e\xb0\xef\x8e\x4e" ++ "\x35\x90\x7a\xa6\x32\xc3\xff\xdf" ++ "\x86\x8b\xb7\xb2\x9d\x3d\x46\xad" ++ "\x83\xce\x9f\x9a\x10\x2e\xe9\x9d" ++ "\x49\xa5\x3e\x87\xf4\xc3\xda\x55" ++ "\xbb\xe9\x38\xf8\xb9\xbf\xcb\x7b" ++ "\xa8\x22\x91\xea\x1e\xaf\x13\xba" ++ "\x24\x18\x64\x9c\xcb\xb4\xa9\x16" ++ "\x4b\x83\x9c\xec", ++ .clen = 64 + 28, ++ }, { /* RFC 3602 Case 5 */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x10" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd" ++ "\x90\xd3\x82\xb4\x10\xee\xba\x7a" ++ "\xd9\x38\xc4\x6c\xec\x1a\x82\xbf", ++ .klen = 8 + 28 + 16, ++ .iv = "\xe9\x6e\x8c\x08\xab\x46\x57\x63" ++ "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93", ++ .assoc = "\x00\x00\x43\x21\x00\x00\x00\x01" ++ "\xe9\x6e\x8c\x08\xab\x46\x57\x63" ++ "\xfd\x09\x8d\x45\xdd\x3f\xf8\x93", ++ .alen = 24, ++ .ptext = "\x08\x00\x0e\xbd\xa7\x0a\x00\x00" ++ "\x8e\x9c\x08\x3d\xb9\x5b\x07\x00" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" ++ "\x10\x11\x12\x13\x14\x15\x16\x17" ++ "\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" ++ "\x20\x21\x22\x23\x24\x25\x26\x27" ++ "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" ++ "\x30\x31\x32\x33\x34\x35\x36\x37" ++ "\x01\x02\x03\x04\x05\x06\x07\x08" ++ "\x09\x0a\x0b\x0c\x0d\x0e\x0e\x01", ++ .plen = 80, ++ .ctext = "\xf6\x63\xc2\x5d\x32\x5c\x18\xc6" ++ "\xa9\x45\x3e\x19\x4e\x12\x08\x49" ++ "\xa4\x87\x0b\x66\xcc\x6b\x99\x65" ++ "\x33\x00\x13\xb4\x89\x8d\xc8\x56" ++ "\xa4\x69\x9e\x52\x3a\x55\xdb\x08" ++ "\x0b\x59\xec\x3a\x8e\x4b\x7e\x52" ++ "\x77\x5b\x07\xd1\xdb\x34\xed\x9c" ++ "\x53\x8a\xb5\x0c\x55\x1b\x87\x4a" ++ "\xa2\x69\xad\xd0\x47\xad\x2d\x59" ++ "\x13\xac\x19\xb7\xcf\xba\xd4\xa6" ++ "\x04\x5e\x83\x45\xc5\x6a\x5b\xe2" ++ "\x5e\xd8\x59\x06\xbd\xc7\xd2\x9b" ++ "\x0b\x65\x1f\x31\xc7\xe6\x9c\x39" ++ "\xa3\x66\xdb\xb8", ++ .clen = 80 + 28, ++ }, { /* NIST SP800-38A F.2.3 CBC-AES192.Encrypt */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x18" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd" ++ "\x8e\x73\xb0\xf7\xda\x0e\x64\x52" ++ "\xc8\x10\xf3\x2b\x80\x90\x79\xe5" ++ "\x62\xf8\xea\xd2\x52\x2c\x6b\x7b", ++ .klen = 8 + 28 + 24, ++ .iv = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", ++ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", ++ .alen = 16, ++ .ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" ++ "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" ++ "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" ++ "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" ++ "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" ++ "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" ++ "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" ++ "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", ++ .plen = 64, ++ .ctext = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d" ++ "\x71\x78\x18\x3a\x9f\xa0\x71\xe8" ++ "\xb4\xd9\xad\xa9\xad\x7d\xed\xf4" ++ "\xe5\xe7\x38\x76\x3f\x69\x14\x5a" ++ "\x57\x1b\x24\x20\x12\xfb\x7a\xe0" ++ "\x7f\xa9\xba\xac\x3d\xf1\x02\xe0" ++ "\x08\xb0\xe2\x79\x88\x59\x88\x81" ++ "\xd9\x20\xa9\xe6\x4f\x56\x15\xcd" ++ "\x67\x35\xcd\x86\x94\x51\x3b\x3a" ++ "\xaa\x07\xb1\xed\x18\x55\x62\x01" ++ "\x95\xb2\x53\xb5\x20\x78\x16\xd7" ++ "\xb8\x49\x7f\x96", ++ ++ .clen = 64 + 28, ++ }, { /* NIST SP800-38A F.2.5 CBC-AES256.Encrypt */ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x20" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\x22\x33\x44\x55\x66\x77\x88\x99" ++ "\xaa\xbb\xcc\xdd" ++ "\x60\x3d\xeb\x10\x15\xca\x71\xbe" ++ "\x2b\x73\xae\xf0\x85\x7d\x77\x81" ++ "\x1f\x35\x2c\x07\x3b\x61\x08\xd7" ++ "\x2d\x98\x10\xa3\x09\x14\xdf\xf4", ++ .klen = 8 + 28 + 32, ++ .iv = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", ++ .assoc = "\x00\x01\x02\x03\x04\x05\x06\x07" ++ "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", ++ .alen = 16, ++ .ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96" ++ "\xe9\x3d\x7e\x11\x73\x93\x17\x2a" ++ "\xae\x2d\x8a\x57\x1e\x03\xac\x9c" ++ "\x9e\xb7\x6f\xac\x45\xaf\x8e\x51" ++ "\x30\xc8\x1c\x46\xa3\x5c\xe4\x11" ++ "\xe5\xfb\xc1\x19\x1a\x0a\x52\xef" ++ "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17" ++ "\xad\x2b\x41\x7b\xe6\x6c\x37\x10", ++ .plen = 64, ++ .ctext = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba" ++ "\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6" ++ "\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d" ++ "\x67\x9f\x77\x7b\xc6\x70\x2c\x7d" ++ "\x39\xf2\x33\x69\xa9\xd9\xba\xcf" ++ "\xa5\x30\xe2\x63\x04\x23\x14\x61" ++ "\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc" ++ "\xda\x6c\x19\x07\x8c\x6a\x9d\x1b" ++ "\xe0\xe2\x3d\x3f\x55\x24\x2c\x4d" ++ "\xb9\x13\x2a\xc0\x07\xbb\x3b\xda" ++ "\xfd\xa4\x51\x32\x3f\x44\xb1\x13" ++ "\x98\xf9\xbc\xb9", ++ .clen = 64 + 28, ++ }, ++}; ++ + static const struct aead_testvec hmac_sha256_aes_cbc_tv_temp[] = { + { /* RFC 3602 Case 1 */ + #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/backport-6.12/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch b/target/linux/generic/backport-6.12/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch new file mode 100644 index 00000000000..0e36006d3d4 --- /dev/null +++ b/target/linux/generic/backport-6.12/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -0,0 +1,102 @@ +From dc8f3d9ae804e8bb47dd49b051fe8b303db3b95c Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Sun, 1 Feb 2026 12:27:08 +0100 +Subject: [PATCH] crypto: testmgr - Add test vectors for + authenc(hmac(md5),cbc(des3_ede)) + +Test vector was generated using a software implementation and then double +checked using a hardware implementation on NXP P2020 (talitos). The +encryption part is identical to authenc(hmac(sha1),cbc(des3_ede)), +only HMAC is different. + +Signed-off-by: Aleksander Jan Bajkowski +Signed-off-by: Herbert Xu +--- + crypto/testmgr.c | 7 ++++++ + crypto/testmgr.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 66 insertions(+) + +--- a/crypto/testmgr.c ++++ b/crypto/testmgr.c +@@ -4375,6 +4375,13 @@ static const struct alg_test_desc alg_te + .cprng = __VECS(ansi_cprng_aes_tv_template) + } + }, { ++ .alg = "authenc(hmac(md5),cbc(des3_ede))", ++ .generic_driver = "authenc(hmac-md5-lib,cbc(des3_ede-generic))", ++ .test = alg_test_aead, ++ .suite = { ++ .aead = __VECS(hmac_md5_des3_ede_cbc_tv_temp) ++ } ++ }, { + .alg = "authenc(hmac(md5),ecb(cipher_null))", + .test = alg_test_aead, + .suite = { +--- a/crypto/testmgr.h ++++ b/crypto/testmgr.h +@@ -19021,6 +19021,65 @@ static const struct aead_testvec hmac_sh + }, + }; + ++static const struct aead_testvec hmac_md5_des3_ede_cbc_tv_temp[] = { ++ { /*Generated with cryptopp*/ ++#ifdef __LITTLE_ENDIAN ++ .key = "\x08\x00" /* rta length */ ++ "\x01\x00" /* rta type */ ++#else ++ .key = "\x00\x08" /* rta length */ ++ "\x00\x01" /* rta type */ ++#endif ++ "\x00\x00\x00\x18" /* enc key length */ ++ "\x11\x22\x33\x44\x55\x66\x77\x88" ++ "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" ++ "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24" ++ "\x44\x4D\x99\x5A\x12\xD6\x40\xC0" ++ "\xEA\xC2\x84\xE8\x14\x95\xDB\xE8", ++ .klen = 8 + 16 + 24, ++ .iv = "\x7D\x33\x88\x93\x0F\x93\xB2\x42", ++ .assoc = "\x00\x00\x43\x21\x00\x00\x00\x01" ++ "\x7D\x33\x88\x93\x0F\x93\xB2\x42", ++ .alen = 16, ++ .ptext = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e" ++ "\x53\x20\x63\x65\x65\x72\x73\x74" ++ "\x54\x20\x6f\x6f\x4d\x20\x6e\x61" ++ "\x20\x79\x65\x53\x72\x63\x74\x65" ++ "\x20\x73\x6f\x54\x20\x6f\x61\x4d" ++ "\x79\x6e\x53\x20\x63\x65\x65\x72" ++ "\x73\x74\x54\x20\x6f\x6f\x4d\x20" ++ "\x6e\x61\x20\x79\x65\x53\x72\x63" ++ "\x74\x65\x20\x73\x6f\x54\x20\x6f" ++ "\x61\x4d\x79\x6e\x53\x20\x63\x65" ++ "\x65\x72\x73\x74\x54\x20\x6f\x6f" ++ "\x4d\x20\x6e\x61\x20\x79\x65\x53" ++ "\x72\x63\x74\x65\x20\x73\x6f\x54" ++ "\x20\x6f\x61\x4d\x79\x6e\x53\x20" ++ "\x63\x65\x65\x72\x73\x74\x54\x20" ++ "\x6f\x6f\x4d\x20\x6e\x61\x0a\x79", ++ .plen = 128, ++ .ctext = "\x0e\x2d\xb6\x97\x3c\x56\x33\xf4" ++ "\x67\x17\x21\xc7\x6e\x8a\xd5\x49" ++ "\x74\xb3\x49\x05\xc5\x1c\xd0\xed" ++ "\x12\x56\x5c\x53\x96\xb6\x00\x7d" ++ "\x90\x48\xfc\xf5\x8d\x29\x39\xcc" ++ "\x8a\xd5\x35\x18\x36\x23\x4e\xd7" ++ "\x76\xd1\xda\x0c\x94\x67\xbb\x04" ++ "\x8b\xf2\x03\x6c\xa8\xcf\xb6\xea" ++ "\x22\x64\x47\xaa\x8f\x75\x13\xbf" ++ "\x9f\xc2\xc3\xf0\xc9\x56\xc5\x7a" ++ "\x71\x63\x2e\x89\x7b\x1e\x12\xca" ++ "\xe2\x5f\xaf\xd8\xa4\xf8\xc9\x7a" ++ "\xd6\xf9\x21\x31\x62\x44\x45\xa6" ++ "\xd6\xbc\x5a\xd3\x2d\x54\x43\xcc" ++ "\x9d\xde\xa5\x70\xe9\x42\x45\x8a" ++ "\x6b\xfa\xb1\x91\x13\xb0\xd9\x19" ++ "\x99\x09\xfb\x05\x35\xc8\xcc\x38" ++ "\xc3\x1e\x5e\xe1\xe6\x96\x84\xc8", ++ .clen = 128 + 16, ++ }, ++}; ++ + static const struct aead_testvec hmac_sha1_des3_ede_cbc_tv_temp[] = { + { /*Generated with cryptopp*/ + #ifdef __LITTLE_ENDIAN