From: Aleksander Jan Bajkowski Date: Wed, 28 Jan 2026 00:00:59 +0000 (+0100) Subject: kernel: backport crypto selftests X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F23012%2Fhead;p=thirdparty%2Fopenwrt.git kernel: backport crypto selftests 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 some cipher suites. 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/23012 Signed-off-by: Hauke Mehrtens --- diff --git a/target/linux/generic/backport-6.12/910-v6.19-crypto-testmgr-Add-missing-DES-weak-and-semi-weak-ke.patch b/target/linux/generic/backport-6.12/910-v6.19-crypto-testmgr-Add-missing-DES-weak-and-semi-weak-ke.patch new file mode 100644 index 00000000000..3a516b26a4f --- /dev/null +++ b/target/linux/generic/backport-6.12/910-v6.19-crypto-testmgr-Add-missing-DES-weak-and-semi-weak-ke.patch @@ -0,0 +1,155 @@ +From c637f3e4a59d710ffd80da1c11d2ebed162d8ff0 Mon Sep 17 00:00:00 2001 +From: Thorsten Blum +Date: Mon, 17 Nov 2025 12:44:26 +0100 +Subject: [PATCH] crypto: testmgr - Add missing DES weak and semi-weak key + tests + +Ever since commit da7f033ddc9f ("crypto: cryptomgr - Add test +infrastructure"), the DES test suite has tested only one of the four +weak keys and none of the twelve semi-weak keys. + +DES has four weak keys and twelve semi-weak keys, and the kernel's DES +implementation correctly detects and rejects all of these keys when the +CRYPTO_TFM_REQ_FORBID_WEAK_KEYS flag is set. However, only a single weak +key was being tested. Add tests for all 16 weak and semi-weak keys. + +While DES is deprecated, it is still used in some legacy protocols, and +weak/semi-weak key detection should be tested accordingly. + +Tested on arm64 with cryptographic self-tests. + +Signed-off-by: Thorsten Blum +Signed-off-by: Herbert Xu +--- + crypto/testmgr.h | 120 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 120 insertions(+) + +--- a/crypto/testmgr.h ++++ b/crypto/testmgr.h +@@ -10330,6 +10330,126 @@ static const struct cipher_testvec des_t + .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", + .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", + .len = 8, ++ }, { /* Weak key */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xe0\xe0\xe0\xe0\xf1\xf1\xf1\xf1", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Weak key */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Weak key */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 1a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x01\xfe\x01\xfe\x01\xfe\x01\xfe", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 1b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xfe\x01\xfe\x01\xfe\x01\xfe\x01", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 2a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x1f\xe0\x1f\xe0\x0e\xf1\x0e\xf1", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 2b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xe0\x1f\xe0\x1f\xf1\x0e\xf1\x0e", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 3a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x01\xe0\x01\xe0\x01\xf1\x01\xf1", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 3b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xe0\x01\xe0\x01\xf1\x01\xf1\x01", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 4a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x1f\xfe\x1f\xfe\x0e\xfe\x0e\xfe", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 4b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xfe\x1f\xfe\x1f\xfe\x0e\xfe\x0e", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 5a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x01\x1f\x01\x1f\x01\x0e\x01\x0e", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 5b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x1f\x01\x1f\x01\x0e\x01\x0e\x01", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 6a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xe0\xfe\xe0\xfe\xf1\xfe\xf1\xfe", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 6b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xfe\xe0\xfe\xe0\xfe\xf1\xfe\xf1", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, + }, { /* Two blocks -- for testing encryption across pages */ + .key = "\x01\x23\x45\x67\x89\xab\xcd\xef", + .klen = 8, 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 index 8649c1e5574..f430335f2db 100644 --- 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 @@ -1,11 +1,11 @@ -From a22d48cbe55814061d46db2f87090ba5e36aaf7f Mon Sep 17 00:00:00 2001 +From 030218dedee2628ea3f035d71431e1b7c4191cfb Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Sat, 31 Jan 2026 18:43:03 +0100 +Date: Sat, 31 Jan 2026 18:38:47 +0100 Subject: [PATCH] crypto: testmgr - Add test vectors for - authenc(hmac(sha224),cbc(aes)) + authenc(hmac(sha384),cbc(aes)) Test vectors were generated starting from existing CBC(AES) test vectors -(RFC3602, NIST SP800-38A) and adding HMAC(SHA224) computed with Python +(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. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 7 ++ - crypto/testmgr.h | 285 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 292 insertions(+) + crypto/testmgr.h | 311 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 318 insertions(+) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4414,6 +4414,13 @@ static const struct alg_test_desc alg_te +@@ -4453,6 +4453,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))", ++ .alg = "authenc(hmac(sha384),cbc(aes))", ++ .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", + .test = alg_test_aead, + .suite = { -+ .aead = __VECS(hmac_sha224_aes_cbc_tv_temp) ++ .aead = __VECS(hmac_sha384_aes_cbc_tv_temp) + } + }, { - .alg = "authenc(hmac(sha224),cbc(des))", + .alg = "authenc(hmac(sha384),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 +@@ -17893,6 +17893,317 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha224_aes_cbc_tv_temp[] = { ++static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { + { /* RFC 3602 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -51,24 +51,28 @@ Signed-off-by: Herbert Xu + "\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\x00\x00\x00\x00" + "\x06\xa9\x21\x40\x36\xb8\xa1\x5b" + "\x51\x2e\x03\xd5\x34\x12\x00\x06", -+ .klen = 8 + 28 + 16, ++ .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, ++ .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, ++ "\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 */ @@ -81,15 +85,17 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 16, ++ .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, ++ .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" @@ -99,12 +105,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -117,15 +124,17 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 16, ++ .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, ++ .alen = 16, + .ptext = "This is a 48-byte message (exactly 3 AES blocks)", + .plen = 48, + .ctext = "\xd0\xa0\x2b\x38\x36\x45\x17\x53" @@ -134,11 +143,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -151,15 +162,17 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 16, ++ .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, ++ .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" @@ -177,11 +190,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -194,10 +209,12 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 16, ++ .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" @@ -225,11 +242,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -242,11 +261,13 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 24, ++ .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" @@ -269,12 +290,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -287,12 +309,14 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 32, ++ .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" @@ -315,14 +339,16 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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_sha256_aes_cbc_tv_temp[] = { + 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/910-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch similarity index 71% rename from target/linux/generic/backport-6.12/910-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch rename to target/linux/generic/backport-6.12/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index 49576779e1b..0bc0961c020 100644 --- 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/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 030218dedee2628ea3f035d71431e1b7c4191cfb Mon Sep 17 00:00:00 2001 +From a22d48cbe55814061d46db2f87090ba5e36aaf7f Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Sat, 31 Jan 2026 18:38:47 +0100 +Date: Sat, 31 Jan 2026 18:43:03 +0100 Subject: [PATCH] crypto: testmgr - Add test vectors for - authenc(hmac(sha384),cbc(aes)) + authenc(hmac(sha224),cbc(aes)) Test vectors were generated starting from existing CBC(AES) test vectors -(RFC3602, NIST SP800-38A) and adding HMAC(SHA384) computed with Python +(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. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 7 ++ - crypto/testmgr.h | 311 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 318 insertions(+) + crypto/testmgr.h | 285 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 292 insertions(+) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4453,6 +4453,13 @@ static const struct alg_test_desc alg_te +@@ -4414,6 +4414,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))", ++ .alg = "authenc(hmac(sha224),cbc(aes))", ++ .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", + .test = alg_test_aead, + .suite = { -+ .aead = __VECS(hmac_sha384_aes_cbc_tv_temp) ++ .aead = __VECS(hmac_sha224_aes_cbc_tv_temp) + } + }, { - .alg = "authenc(hmac(sha384),cbc(des))", + .alg = "authenc(hmac(sha224),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 +@@ -17610,6 +17610,291 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { ++static const struct aead_testvec hmac_sha224_aes_cbc_tv_temp[] = { + { /* RFC 3602 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -51,28 +51,24 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x00\x00\x00\x00" + "\x06\xa9\x21\x40\x36\xb8\xa1\x5b" + "\x51\x2e\x03\xd5\x34\x12\x00\x06", -+ .klen = 8 + 48 + 16, ++ .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, ++ .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, ++ "\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 */ @@ -85,17 +81,15 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x38\x39\x3a\x3b" + "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0" + "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a", -+ .klen = 8 + 48 + 16, ++ .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, ++ .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" @@ -105,13 +99,12 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -124,17 +117,15 @@ Signed-off-by: Herbert Xu + "\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" ++ "\xaa\xbb\xcc\xdd" + "\x6c\x3e\xa0\x47\x76\x30\xce\x21" + "\xa2\xce\x33\x4a\xa7\x46\xc2\xcd", -+ .klen = 8 + 48 + 16, ++ .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, ++ .alen = 16, + .ptext = "This is a 48-byte message (exactly 3 AES blocks)", + .plen = 48, + .ctext = "\xd0\xa0\x2b\x38\x36\x45\x17\x53" @@ -143,13 +134,11 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -162,17 +151,15 @@ Signed-off-by: Herbert Xu + "\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" ++ "\xaa\xbb\xcc\xdd" + "\x56\xe4\x7a\x38\xc5\x59\x89\x74" + "\xbc\x46\x90\x3d\xba\x29\x03\x49", -+ .klen = 8 + 48 + 16, ++ .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, ++ .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" @@ -190,13 +177,11 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -209,12 +194,10 @@ Signed-off-by: Herbert Xu + "\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" ++ "\xaa\xbb\xcc\xdd" + "\x90\xd3\x82\xb4\x10\xee\xba\x7a" + "\xd9\x38\xc4\x6c\xec\x1a\x82\xbf", -+ .klen = 8 + 48 + 16, ++ .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" @@ -242,13 +225,11 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -261,13 +242,11 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 48 + 24, ++ .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" @@ -290,13 +269,12 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -309,14 +287,12 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 48 + 32, ++ .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" @@ -339,16 +315,14 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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_sha512_aes_cbc_tv_temp[] = { + 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/913-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch similarity index 98% rename from target/linux/generic/backport-6.12/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch rename to target/linux/generic/backport-6.12/913-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch index 0e36006d3d4..267ec6dd4c3 100644 --- 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/913-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -34,7 +34,7 @@ Signed-off-by: Herbert Xu .suite = { --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -19021,6 +19021,65 @@ static const struct aead_testvec hmac_sh +@@ -19141,6 +19141,65 @@ static const struct aead_testvec hmac_sh }, }; diff --git a/target/linux/generic/backport-6.12/913-v7.0-crypto-testmgr-allow-authenc-sha224-rfc3686-variant-.patch b/target/linux/generic/backport-6.12/914-v7.0-crypto-testmgr-allow-authenc-sha224-rfc3686-variant-.patch similarity index 100% rename from target/linux/generic/backport-6.12/913-v7.0-crypto-testmgr-allow-authenc-sha224-rfc3686-variant-.patch rename to target/linux/generic/backport-6.12/914-v7.0-crypto-testmgr-allow-authenc-sha224-rfc3686-variant-.patch diff --git a/target/linux/generic/backport-6.12/914-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch b/target/linux/generic/backport-6.12/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch similarity index 98% rename from target/linux/generic/backport-6.12/914-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch rename to target/linux/generic/backport-6.12/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch index 0c037504d08..36858695d6b 100644 --- a/target/linux/generic/backport-6.12/914-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch +++ b/target/linux/generic/backport-6.12/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -33,7 +33,7 @@ Signed-off-by: Herbert Xu .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -18708,6 +18708,63 @@ static const struct aead_testvec hmac_sh +@@ -18828,6 +18828,63 @@ static const struct aead_testvec hmac_sh }, }; diff --git a/target/linux/generic/backport-6.12/916-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/916-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index 6999c919516..c5c5db687bb 100644 --- a/target/linux/generic/backport-6.12/916-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.12/916-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 3f4d32aff1d4e06501f909b1e5037ec8caa76d01 Mon Sep 17 00:00:00 2001 +From b45b4314d3e55be70b597baa1f0ab9283e68003b Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:21 +0100 -Subject: [PATCH 2/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha224),rfc3686(ctr(aes))) +Date: Thu, 5 Mar 2026 21:08:20 +0100 +Subject: [PATCH 1/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha1),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA224) computed with software implementation. +vectors and adding HMAC(SHA1) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 6 +- - crypto/testmgr.h | 235 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 240 insertions(+), 1 deletion(-) + crypto/testmgr.h | 221 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 226 insertions(+), 1 deletion(-) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4452,8 +4452,12 @@ static const struct alg_test_desc alg_te +@@ -4425,8 +4425,12 @@ static const struct alg_test_desc alg_te } }, { - .alg = "authenc(hmac(sha224),rfc3686(ctr(aes)))", + .alg = "authenc(hmac(sha1),rfc3686(ctr(aes)))", - .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha224-lib,rfc3686(ctr(aes-lib)))", ++ .generic_driver = "authenc(hmac-sha1-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha224_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_sha1_aes_ctr_rfc3686_tv_temp) + } }, { - .alg = "authenc(hmac(sha256),cbc(aes))", - .test = alg_test_aead, + .alg = "authenc(hmac(sha224),cbc(aes))", + .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -17996,6 +17996,241 @@ static const struct aead_testvec hmac_sh +@@ -17564,6 +17564,227 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha224_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_sha1_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -50,12 +50,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* 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" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 28 + 20, ++ .klen = 8 + 20 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -63,11 +62,10 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\x36\xb4\x3b\x9c\x62\xed\xcf\x77" -+ "\xdc\x19\x27\x3f\x92\x80\x52\xce" -+ "\x8f\xad\x01\x0b\x79\xda\x04\x83" -+ "\xcb\x45\x1a\x52", -+ .clen = 16 + 28, ++ "\x70\xdc\x6b\x62\x43\xa1\x2f\x08" ++ "\xf1\xec\x93\x7d\x69\xb2\x8e\x1f" ++ "\x0a\x97\x39\x86", ++ .clen = 16 + 20, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -79,12 +77,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* 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" ++ "\x30\x31\x32\x33" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 28 + 20, ++ .klen = 8 + 20 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -97,11 +94,10 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\x7f\xe4\x8f\xa7\x06\x71\xe9\xe5" -+ "\x16\x79\xef\xf9\x7e\x5c\x93\x4d" -+ "\xa0\xf8\x3b\x3a\xaa\x1c\xc0\xd9" -+ "\x6b\x48\x49\x01", -+ .clen = 32 + 28, ++ "\x6b\x7b\x4d\x39\x36\x1c\x12\x5f" ++ "\x72\xd2\x88\xb2\x26\xa6\xa6\xb5" ++ "\x1d\x3a\x49\xa6", ++ .clen = 32 + 20, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -113,12 +109,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* 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" ++ "\x22\x33\x44\x55" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 28 + 20, ++ .klen = 8 + 20 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -133,11 +128,10 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\xb0\x19\x45\xee\xa7\x31\xd9\xd0" -+ "\x74\x6b\xb8\xb1\x67\x61\x2f\x8c" -+ "\x68\xde\xe3\xc9\x3b\x0c\x72\xda" -+ "\x48\xba\x1b\x51", -+ .clen = 36 + 28, ++ "\x2c\x86\xa0\x90\x8e\xc1\x02\x1d" ++ "\x51\xdc\xd6\x21\xc7\x30\xcc\x32" ++ "\x38\x55\x47\x64", ++ .clen = 36 + 20, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -149,13 +143,12 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x1c" /* 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" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 28 + 28, ++ .klen = 8 + 20 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -163,11 +156,10 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\xfd\xf5\x35\x26\x50\x3d\xdf\x80" -+ "\x6e\xbe\xba\x8d\x56\xf3\x03\xb7" -+ "\x27\xb8\x13\xe8\x72\x8f\xc9\x52" -+ "\x4a\xb7\xc3\x3a", -+ .clen = 16 + 28, ++ "\xe9\x4e\x49\xf0\x6b\x8d\x58\x2b" ++ "\x26\x7f\xf3\xab\xeb\x2f\x74\x2f" ++ "\x45\x43\x64\xc1", ++ .clen = 16 + 20, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -179,13 +171,12 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x1c" /* 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" ++ "\x30\x31\x32\x33" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 28 + 28, ++ .klen = 8 + 20 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -198,11 +189,10 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\x72\x89\xa8\x04\xa5\xac\x8f\x29" -+ "\xe6\xb8\x58\xe8\xcf\x6a\x91\x89" -+ "\xd3\x66\x3b\xdc\xce\x43\x23\xb7" -+ "\x6a\xdd\x9d\xbd", -+ .clen = 32 + 28, ++ "\xab\xc4\xfa\x6d\x20\xe1\xce\x72" ++ "\x0e\x92\x4e\x97\xaa\x4d\x30\x84" ++ "\xb6\xd8\x4d\x3b", ++ .clen = 32 + 20, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -214,14 +204,13 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x24" /* 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" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 28 + 36, ++ .klen = 8 + 20 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -229,11 +218,10 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\xfe\xdf\x6f\x62\x8a\x79\xb5\x34" -+ "\xd0\x6f\x32\xaf\x31\x50\x5b\x1f" -+ "\xe0\x6d\x0b\xbc\x02\x25\xee\x74" -+ "\x7a\xdf\x97\x3c", -+ .clen = 16 + 28, ++ "\x3d\x6c\x23\x27\xda\x0e\x7f\x29" ++ "\xfd\x8d\x3c\x1b\xf7\x7a\x63\xd9" ++ "\x7e\x0f\xe9\xf6", ++ .clen = 16 + 20, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -245,14 +233,13 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x24" /* 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" ++ "\x30\x31\x32\x33" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 28 + 36, ++ .klen = 8 + 20 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -265,14 +252,13 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\x19\x1e\x9c\x2c\x6d\x4e\x21\xda" -+ "\x6c\x4d\x88\x90\xf8\x5f\xa5\x9d" -+ "\xb4\xd4\x40\xad\xfa\x67\x3f\x0e" -+ "\x11\x12\xd6\x10", -+ .clen = 32 + 28, ++ "\xe7\xee\x22\xa4\xdd\xbf\x5d\x44" ++ "\x3b\x43\x1c\x69\x55\x11\xd5\xad" ++ "\x14\x5f\x44\xa6", ++ .clen = 32 + 20, + }, +}; + - static const struct aead_testvec hmac_sha256_aes_cbc_tv_temp[] = { - { /* RFC 3602 Case 1 */ + static const struct aead_testvec hmac_sha1_ecb_cipher_null_tv_temp[] = { + { /* Input data from RFC 2410 Case 1 */ #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/backport-6.12/917-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/917-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index bd09c4cedf7..1b10427f025 100644 --- a/target/linux/generic/backport-6.12/917-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.12/917-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 65af3a0bff7264ab84f9e1f2099c658601ca1b66 Mon Sep 17 00:00:00 2001 +From d46c27c01f132082095342b5abf4e83e250b70b8 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:22 +0100 -Subject: [PATCH 3/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha256),rfc3686(ctr(aes))) +Date: Thu, 5 Mar 2026 21:08:21 +0100 +Subject: [PATCH 2/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha224),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA256) computed with software implementation. +vectors and adding HMAC(SHA224) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. @@ -18,27 +18,27 @@ Signed-off-by: Herbert Xu --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4483,8 +4483,12 @@ static const struct alg_test_desc alg_te - .fips_allowed = 1, +@@ -4452,8 +4452,12 @@ static const struct alg_test_desc alg_te + } }, { - .alg = "authenc(hmac(sha256),rfc3686(ctr(aes)))", + .alg = "authenc(hmac(sha224),rfc3686(ctr(aes)))", - .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha256-lib,rfc3686(ctr(aes-lib)))", ++ .generic_driver = "authenc(hmac-sha224-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha256_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_sha224_aes_ctr_rfc3686_tv_temp) + } }, { - .alg = "authenc(hmac(sha384),cbc(aes))", - .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", + .alg = "authenc(hmac(sha256),cbc(aes))", + .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -18514,6 +18514,241 @@ static const struct aead_testvec hmac_sh +@@ -18116,6 +18116,241 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha256_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_sha224_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -51,11 +51,11 @@ Signed-off-by: Herbert Xu + "\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" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 32 + 20, ++ .klen = 8 + 28 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -63,11 +63,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\x9b\xa2\x34\x62\xe5\xb3\xe8\x2d" -+ "\x6d\xdb\x93\x64\xa5\x08\x2e\x77" -+ "\x72\x1f\x21\x94\xc7\xbe\x14\xa6" -+ "\xcd\xea\x96\xa1\x29\x8f\x30\xc3", -+ .clen = 16 + 32, ++ "\x36\xb4\x3b\x9c\x62\xed\xcf\x77" ++ "\xdc\x19\x27\x3f\x92\x80\x52\xce" ++ "\x8f\xad\x01\x0b\x79\xda\x04\x83" ++ "\xcb\x45\x1a\x52", ++ .clen = 16 + 28, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -80,11 +80,11 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x38\x39\x3a\x3b" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 32 + 20, ++ .klen = 8 + 28 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -97,11 +97,11 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\x22\xf7\x95\xa8\xbb\xcd\x19\xf4" -+ "\x58\x16\x54\x28\x2b\xf4\x52\xe7" -+ "\x5c\x6c\xe1\x44\x0b\xd5\x10\x6e" -+ "\xe1\xf7\x04\xc4\x2c\xab\x93\xdd", -+ .clen = 32 + 32, ++ "\x7f\xe4\x8f\xa7\x06\x71\xe9\xe5" ++ "\x16\x79\xef\xf9\x7e\x5c\x93\x4d" ++ "\xa0\xf8\x3b\x3a\xaa\x1c\xc0\xd9" ++ "\x6b\x48\x49\x01", ++ .clen = 32 + 28, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -114,11 +114,11 @@ Signed-off-by: Herbert Xu + "\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" ++ "\xaa\xbb\xcc\xdd" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 32 + 20, ++ .klen = 8 + 28 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -133,11 +133,11 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\x1d\x05\x5f\x77\x3b\x4f\x5c\x21" -+ "\x29\xea\xf1\xa8\x71\x49\x7b\x0b" -+ "\x66\x0d\xff\x18\x81\x63\xfc\xc3" -+ "\x91\xb6\x38\xc8\xcd\x2d\x39\x83", -+ .clen = 36 + 32, ++ "\xb0\x19\x45\xee\xa7\x31\xd9\xd0" ++ "\x74\x6b\xb8\xb1\x67\x61\x2f\x8c" ++ "\x68\xde\xe3\xc9\x3b\x0c\x72\xda" ++ "\x48\xba\x1b\x51", ++ .clen = 36 + 28, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -150,12 +150,12 @@ Signed-off-by: Herbert Xu + "\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" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 32 + 28, ++ .klen = 8 + 28 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -163,11 +163,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\x8d\x03\x77\xb2\x1c\xc9\xe0\xac" -+ "\xde\x69\xbe\x8a\xef\x5b\x13\x74" -+ "\x1d\x39\xbc\xdc\x95\xa4\xbf\xc3" -+ "\xd5\xc6\xd1\xda\xda\x3b\xca\x78", -+ .clen = 16 + 32, ++ "\xfd\xf5\x35\x26\x50\x3d\xdf\x80" ++ "\x6e\xbe\xba\x8d\x56\xf3\x03\xb7" ++ "\x27\xb8\x13\xe8\x72\x8f\xc9\x52" ++ "\x4a\xb7\xc3\x3a", ++ .clen = 16 + 28, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -180,12 +180,12 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x38\x39\x3a\x3b" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 32 + 28, ++ .klen = 8 + 28 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -198,11 +198,11 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\x34\x06\x2b\x3d\xf1\xa8\x3d\xf1" -+ "\xa6\x5e\x5c\x1a\xdb\x0c\xb5\x1e" -+ "\x8f\xdb\xf4\xca\x7d\x09\x5e\x81" -+ "\xdb\x32\x07\x4a\x1d\x1c\x6d\x83", -+ .clen = 32 + 32, ++ "\x72\x89\xa8\x04\xa5\xac\x8f\x29" ++ "\xe6\xb8\x58\xe8\xcf\x6a\x91\x89" ++ "\xd3\x66\x3b\xdc\xce\x43\x23\xb7" ++ "\x6a\xdd\x9d\xbd", ++ .clen = 32 + 28, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -215,13 +215,13 @@ Signed-off-by: Herbert Xu + "\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" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 32 + 36, ++ .klen = 8 + 28 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -229,11 +229,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\xc3\xb4\x5f\xb0\xbf\xf5\x1b\xff" -+ "\x7c\xf1\x79\x00\x63\x50\xdd\x77" -+ "\xc0\x4a\xba\xcd\xdc\x47\x05\x2a" -+ "\x5d\x85\x2d\x83\x44\xca\x79\x2c", -+ .clen = 16 + 32, ++ "\xfe\xdf\x6f\x62\x8a\x79\xb5\x34" ++ "\xd0\x6f\x32\xaf\x31\x50\x5b\x1f" ++ "\xe0\x6d\x0b\xbc\x02\x25\xee\x74" ++ "\x7a\xdf\x97\x3c", ++ .clen = 16 + 28, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -246,13 +246,13 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x38\x39\x3a\x3b" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 32 + 36, ++ .klen = 8 + 28 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -265,14 +265,14 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\xc8\x59\x5d\xe1\xba\xac\x13\x82" -+ "\xfd\x21\x7c\x8c\x23\x31\x04\x02" -+ "\x9e\x69\x5b\x57\xa8\x13\xe7\x21" -+ "\x60\x0c\x24\xc2\x80\x4a\x93\x6e", -+ .clen = 32 + 32, ++ "\x19\x1e\x9c\x2c\x6d\x4e\x21\xda" ++ "\x6c\x4d\x88\x90\xf8\x5f\xa5\x9d" ++ "\xb4\xd4\x40\xad\xfa\x67\x3f\x0e" ++ "\x11\x12\xd6\x10", ++ .clen = 32 + 28, + }, +}; + - static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { + 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/918-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/918-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index 5283fcc028c..a08e410c7bd 100644 --- a/target/linux/generic/backport-6.12/918-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.12/918-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 07cbbf6f38e6a91a7fecab3d6f86485425748d3e Mon Sep 17 00:00:00 2001 +From 5ac6b904c70ff163fd2f9e152056300ce5ed6c26 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:23 +0100 -Subject: [PATCH 4/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha384),rfc3686(ctr(aes))) +Date: Thu, 5 Mar 2026 21:08:22 +0100 +Subject: [PATCH 3/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha256),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA384) computed with software implementation. +vectors and adding HMAC(SHA256) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 6 +- - crypto/testmgr.h | 263 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 268 insertions(+), 1 deletion(-) + crypto/testmgr.h | 235 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 240 insertions(+), 1 deletion(-) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4514,8 +4514,12 @@ static const struct alg_test_desc alg_te +@@ -4483,8 +4483,12 @@ static const struct alg_test_desc alg_te .fips_allowed = 1, }, { - .alg = "authenc(hmac(sha384),rfc3686(ctr(aes)))", + .alg = "authenc(hmac(sha256),rfc3686(ctr(aes)))", - .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha384-lib,rfc3686(ctr(aes-lib)))", ++ .generic_driver = "authenc(hmac-sha256-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha384_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_sha256_aes_ctr_rfc3686_tv_temp) + } }, { - .alg = "authenc(hmac(sha512),cbc(aes))", - .fips_allowed = 1, + .alg = "authenc(hmac(sha384),cbc(aes))", + .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -19060,6 +19060,269 @@ static const struct aead_testvec hmac_sh +@@ -18634,6 +18634,241 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha384_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_sha256_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -52,12 +52,10 @@ Signed-off-by: Herbert Xu + "\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" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 48 + 20, ++ .klen = 8 + 32 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -65,13 +63,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\x45\x51\x59\x72\x16\xd3\xc6\x15" -+ "\x25\x1e\xe8\x92\x2e\x47\x52\xcc" -+ "\x91\x9c\x24\xef\x11\xb2\x53\x00" -+ "\x10\x20\x43\x06\xe2\x35\x88\x9e" -+ "\x18\x32\x5a\x79\x7d\x73\x7e\x89" -+ "\xfe\xa1\xda\xa4\x86\xc4\x2a\x04", -+ .clen = 16 + 48, ++ "\x9b\xa2\x34\x62\xe5\xb3\xe8\x2d" ++ "\x6d\xdb\x93\x64\xa5\x08\x2e\x77" ++ "\x72\x1f\x21\x94\xc7\xbe\x14\xa6" ++ "\xcd\xea\x96\xa1\x29\x8f\x30\xc3", ++ .clen = 16 + 32, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -85,12 +81,10 @@ Signed-off-by: Herbert Xu + "\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" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 48 + 20, ++ .klen = 8 + 32 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -103,13 +97,11 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\x83\x65\x32\x1e\x6b\x60\xe6\x4a" -+ "\xe2\xab\x52\x2b\xa6\x70\x3a\xfa" -+ "\xd2\xec\x83\xe4\x31\x0c\x28\x40" -+ "\x9b\x5e\x18\xa4\xdc\x48\xb8\x56" -+ "\x33\xab\x7f\x2b\xaf\xe4\x3a\xe3" -+ "\x8a\x61\xf6\x22\xb4\x6b\xfe\x7d", -+ .clen = 32 + 48, ++ "\x22\xf7\x95\xa8\xbb\xcd\x19\xf4" ++ "\x58\x16\x54\x28\x2b\xf4\x52\xe7" ++ "\x5c\x6c\xe1\x44\x0b\xd5\x10\x6e" ++ "\xe1\xf7\x04\xc4\x2c\xab\x93\xdd", ++ .clen = 32 + 32, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -123,12 +115,10 @@ Signed-off-by: Herbert Xu + "\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" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 48 + 20, ++ .klen = 8 + 32 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -143,13 +133,11 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\x4a\xaa\xad\x3b\x3b\xb6\x9a\xba" -+ "\xa1\x7b\xc6\xce\x96\xc3\xff\x67" -+ "\xf3\x0c\x33\x57\xf0\x51\x24\x08" -+ "\xed\x4f\x6a\x9c\x22\x42\xbd\x18" -+ "\x97\x74\x68\x36\x00\xf1\x69\x3a" -+ "\x18\x77\x40\xf0\x56\xba\xba\xe0", -+ .clen = 36 + 48, ++ "\x1d\x05\x5f\x77\x3b\x4f\x5c\x21" ++ "\x29\xea\xf1\xa8\x71\x49\x7b\x0b" ++ "\x66\x0d\xff\x18\x81\x63\xfc\xc3" ++ "\x91\xb6\x38\xc8\xcd\x2d\x39\x83", ++ .clen = 36 + 32, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -163,13 +151,11 @@ Signed-off-by: Herbert Xu + "\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" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 48 + 28, ++ .klen = 8 + 32 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -177,13 +163,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\x36\xd6\xc7\x55\xac\xb6\x0b\x14" -+ "\x95\x71\xf9\x86\x30\xe3\x96\xc3" -+ "\x76\x85\x6d\xa5\x06\xed\x6f\x34" -+ "\xcc\x1f\xcc\x2d\x88\x06\xb0\x1d" -+ "\xbe\xd9\xa2\xd3\x64\xf1\x33\x03" -+ "\x13\x50\x8f\xae\x61\x2d\x82\xb8", -+ .clen = 16 + 48, ++ "\x8d\x03\x77\xb2\x1c\xc9\xe0\xac" ++ "\xde\x69\xbe\x8a\xef\x5b\x13\x74" ++ "\x1d\x39\xbc\xdc\x95\xa4\xbf\xc3" ++ "\xd5\xc6\xd1\xda\xda\x3b\xca\x78", ++ .clen = 16 + 32, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -197,13 +181,11 @@ Signed-off-by: Herbert Xu + "\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" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 48 + 28, ++ .klen = 8 + 32 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -216,13 +198,11 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\x80\x12\x67\x22\xf2\x4d\x9b\xbf" -+ "\xdc\x38\xd3\xaa\x12\xc0\x58\x1a" -+ "\x9a\x62\x6e\x42\x3d\x44\x63\xdd" -+ "\xee\x7e\xe3\xa3\xdf\x2a\x65\x05" -+ "\xd0\xc1\xd2\x54\x55\x35\x5c\xc7" -+ "\xb0\xb5\xb1\x36\xe0\x0b\xaf\x72", -+ .clen = 32 + 48, ++ "\x34\x06\x2b\x3d\xf1\xa8\x3d\xf1" ++ "\xa6\x5e\x5c\x1a\xdb\x0c\xb5\x1e" ++ "\x8f\xdb\xf4\xca\x7d\x09\x5e\x81" ++ "\xdb\x32\x07\x4a\x1d\x1c\x6d\x83", ++ .clen = 32 + 32, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -236,14 +216,12 @@ Signed-off-by: Herbert Xu + "\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" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 48 + 36, ++ .klen = 8 + 32 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -251,13 +229,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\xb1\x7b\xb1\xec\xca\x94\x55\xc4" -+ "\x3f\x2b\xb1\x70\x04\x91\xf5\x9d" -+ "\x1a\xc0\xe1\x2a\x93\x5f\x96\x2a" -+ "\x12\x85\x38\x36\xe1\xb2\xe9\xf0" -+ "\xf2\x6e\x5d\x81\xcc\x49\x07\x9c" -+ "\x5b\x88\xc8\xcc\xc4\x21\x4f\x32", -+ .clen = 16 + 48, ++ "\xc3\xb4\x5f\xb0\xbf\xf5\x1b\xff" ++ "\x7c\xf1\x79\x00\x63\x50\xdd\x77" ++ "\xc0\x4a\xba\xcd\xdc\x47\x05\x2a" ++ "\x5d\x85\x2d\x83\x44\xca\x79\x2c", ++ .clen = 16 + 32, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -271,14 +247,12 @@ Signed-off-by: Herbert Xu + "\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" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 48 + 36, ++ .klen = 8 + 32 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -291,16 +265,14 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\xd6\x96\xbb\x12\x39\xc4\x4d\xe2" -+ "\x4c\x02\xe7\x1f\xdc\xb2\xb1\x57" -+ "\x38\x0d\xdd\x13\xb3\x89\x57\x9e" -+ "\x1f\xb5\x48\x32\xc4\xd3\x9d\x1f" -+ "\x68\xab\x8d\xc6\xa8\x05\x3a\xc2" -+ "\x87\xaf\x23\xb3\xe4\x1b\xde\xb3", -+ .clen = 32 + 48, ++ "\xc8\x59\x5d\xe1\xba\xac\x13\x82" ++ "\xfd\x21\x7c\x8c\x23\x31\x04\x02" ++ "\x9e\x69\x5b\x57\xa8\x13\xe7\x21" ++ "\x60\x0c\x24\xc2\x80\x4a\x93\x6e", ++ .clen = 32 + 32, + }, +}; + - static const struct aead_testvec hmac_sha512_aes_cbc_tv_temp[] = { + static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { { /* RFC 3602 Case 1 */ #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/backport-6.12/919-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/919-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index 87949eb412f..47251ec8741 100644 --- a/target/linux/generic/backport-6.12/919-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.12/919-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 07f1bc80c478c7198065d3896ed3685428314a9c Mon Sep 17 00:00:00 2001 +From 2f0814271715f974ae1fc6247c9918906c83e24b Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:24 +0100 -Subject: [PATCH 5/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha512),rfc3686(ctr(aes))) +Date: Thu, 5 Mar 2026 21:08:23 +0100 +Subject: [PATCH 4/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha384),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA512) computed with software implementation. +vectors and adding HMAC(SHA384) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 6 +- - crypto/testmgr.h | 291 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 296 insertions(+), 1 deletion(-) + crypto/testmgr.h | 263 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 268 insertions(+), 1 deletion(-) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4545,8 +4545,12 @@ static const struct alg_test_desc alg_te +@@ -4514,8 +4514,12 @@ static const struct alg_test_desc alg_te .fips_allowed = 1, }, { - .alg = "authenc(hmac(sha512),rfc3686(ctr(aes)))", + .alg = "authenc(hmac(sha384),rfc3686(ctr(aes)))", - .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha512-lib,rfc3686(ctr(aes-lib)))", ++ .generic_driver = "authenc(hmac-sha384-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha512_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_sha384_aes_ctr_rfc3686_tv_temp) + } }, { - .alg = "blake2b-160", - .test = alg_test_hash, + .alg = "authenc(hmac(sha512),cbc(aes))", + .fips_allowed = 1, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -19719,6 +19719,297 @@ static const struct aead_testvec hmac_md +@@ -19180,6 +19180,269 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha512_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_sha384_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -54,12 +54,10 @@ Signed-off-by: Herbert Xu + "\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" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 64 + 20, ++ .klen = 8 + 48 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -67,15 +65,13 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\xa4\x45\x3a\x44\x9c\xe5\x1c\xd9" -+ "\x10\x43\x51\x2e\x76\x5e\xf8\x9d" -+ "\x03\x12\x1a\x31\x00\x33\x10\xb4" -+ "\x94\x4b\x70\x84\x6c\xda\xb1\x46" -+ "\x24\xb6\x3b\x2a\xec\xd5\x67\xb8" -+ "\x65\xa2\xbd\xac\x18\xe2\xf8\x55" -+ "\xc6\x91\xb0\x92\x84\x2d\x74\x44" -+ "\xa7\xee\xc3\x44\xa0\x07\x0e\x62", -+ .clen = 16 + 64, ++ "\x45\x51\x59\x72\x16\xd3\xc6\x15" ++ "\x25\x1e\xe8\x92\x2e\x47\x52\xcc" ++ "\x91\x9c\x24\xef\x11\xb2\x53\x00" ++ "\x10\x20\x43\x06\xe2\x35\x88\x9e" ++ "\x18\x32\x5a\x79\x7d\x73\x7e\x89" ++ "\xfe\xa1\xda\xa4\x86\xc4\x2a\x04", ++ .clen = 16 + 48, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -91,12 +87,10 @@ Signed-off-by: Herbert Xu + "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" + "\x40\x41\x42\x43\x44\x45\x46\x47" + "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" -+ "\x50\x51\x52\x53\x54\x55\x56\x57" -+ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 64 + 20, ++ .klen = 8 + 48 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -109,15 +103,13 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\xec\x67\x0d\xb3\xbd\x98\x13\x01" -+ "\x2b\x04\x9b\xe6\x06\x67\x3c\x76" -+ "\xcd\x41\xb7\xcc\x70\x6c\x7f\xc8" -+ "\x67\xbd\x22\x39\xb2\xaa\xe8\x88" -+ "\xe0\x4f\x81\x52\xdf\xc9\xc3\xd6" -+ "\x44\xf4\x66\x33\x87\x64\x61\x02" -+ "\x02\xa2\x64\x15\x2b\xe9\x0b\x3d" -+ "\x4c\xea\xa1\xa5\xa7\xc9\xd3\x1b", -+ .clen = 32 + 64, ++ "\x83\x65\x32\x1e\x6b\x60\xe6\x4a" ++ "\xe2\xab\x52\x2b\xa6\x70\x3a\xfa" ++ "\xd2\xec\x83\xe4\x31\x0c\x28\x40" ++ "\x9b\x5e\x18\xa4\xdc\x48\xb8\x56" ++ "\x33\xab\x7f\x2b\xaf\xe4\x3a\xe3" ++ "\x8a\x61\xf6\x22\xb4\x6b\xfe\x7d", ++ .clen = 32 + 48, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -133,12 +125,10 @@ Signed-off-by: Herbert Xu + "\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\x44" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 64 + 20, ++ .klen = 8 + 48 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -153,15 +143,13 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\x6f\x90\xb6\xa3\x35\x43\x59\xff" -+ "\x1e\x32\xd6\xfe\xfa\x33\xf9\xf0" -+ "\x31\x2f\x03\x2d\x88\x1d\xab\xbf" -+ "\x0e\x19\x16\xd9\xf3\x98\x3e\xdd" -+ "\x0c\xec\xfe\xe8\x89\x13\x91\x15" -+ "\xf6\x61\x65\x5c\x1b\x7d\xde\xc0" -+ "\xe4\xba\x6d\x27\xe2\x89\x23\x24" -+ "\x15\x82\x37\x3d\x48\xd3\xc9\x32", -+ .clen = 36 + 64, ++ "\x4a\xaa\xad\x3b\x3b\xb6\x9a\xba" ++ "\xa1\x7b\xc6\xce\x96\xc3\xff\x67" ++ "\xf3\x0c\x33\x57\xf0\x51\x24\x08" ++ "\xed\x4f\x6a\x9c\x22\x42\xbd\x18" ++ "\x97\x74\x68\x36\x00\xf1\x69\x3a" ++ "\x18\x77\x40\xf0\x56\xba\xba\xe0", ++ .clen = 36 + 48, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -177,13 +165,11 @@ Signed-off-by: Herbert Xu + "\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" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 64 + 28, ++ .klen = 8 + 48 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -191,15 +177,13 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\x25\xea\xdc\xad\x52\xb8\x0f\x70" -+ "\xe7\x39\x83\x80\x10\x3f\x18\xc4" -+ "\xf8\x59\x14\x25\x5f\xba\x20\x87" -+ "\x0b\x04\x5e\xf7\xde\x41\x39\xff" -+ "\xa2\xee\x84\x3f\x9d\x38\xfd\x17" -+ "\xc0\x66\x5e\x74\x39\xe3\xd3\xd7" -+ "\x3d\xbc\xe3\x99\x2f\xe7\xef\x37" -+ "\x61\x03\xf3\x9e\x01\xaf\xba\x9d", -+ .clen = 16 + 64, ++ "\x36\xd6\xc7\x55\xac\xb6\x0b\x14" ++ "\x95\x71\xf9\x86\x30\xe3\x96\xc3" ++ "\x76\x85\x6d\xa5\x06\xed\x6f\x34" ++ "\xcc\x1f\xcc\x2d\x88\x06\xb0\x1d" ++ "\xbe\xd9\xa2\xd3\x64\xf1\x33\x03" ++ "\x13\x50\x8f\xae\x61\x2d\x82\xb8", ++ .clen = 16 + 48, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -215,13 +199,11 @@ Signed-off-by: Herbert Xu + "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" + "\x40\x41\x42\x43\x44\x45\x46\x47" + "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" -+ "\x50\x51\x52\x53\x54\x55\x56\x57" -+ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 64 + 28, ++ .klen = 8 + 48 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -234,15 +216,13 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\x51\xa3\xe6\x1d\x23\x7d\xd1\x18" -+ "\x55\x9c\x1c\x92\x2b\xc2\xcd\xfe" -+ "\x8a\xa8\xa5\x96\x65\x2e\x9d\xdb" -+ "\x06\xd2\x1c\x57\x2b\x76\xb5\x9c" -+ "\xd4\x3e\x8b\x61\x54\x2d\x08\xe5" -+ "\xb2\xf8\x88\x20\x0c\xad\xe8\x85" -+ "\x61\x8e\x5c\xa4\x96\x2c\xe2\x7d" -+ "\x4f\xb6\x1d\xb2\x8c\xd7\xe3\x38", -+ .clen = 32 + 64, ++ "\x80\x12\x67\x22\xf2\x4d\x9b\xbf" ++ "\xdc\x38\xd3\xaa\x12\xc0\x58\x1a" ++ "\x9a\x62\x6e\x42\x3d\x44\x63\xdd" ++ "\xee\x7e\xe3\xa3\xdf\x2a\x65\x05" ++ "\xd0\xc1\xd2\x54\x55\x35\x5c\xc7" ++ "\xb0\xb5\xb1\x36\xe0\x0b\xaf\x72", ++ .clen = 32 + 48, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -258,14 +238,12 @@ Signed-off-by: Herbert Xu + "\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" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 64 + 36, ++ .klen = 8 + 48 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -273,15 +251,13 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\x6b\x68\x0b\x99\x9a\x4d\xc8\xb9" -+ "\x35\xea\xcd\x56\x3f\x40\xa2\xb6" -+ "\x68\xda\x59\xd8\xa0\x89\xcd\x52" -+ "\xb1\x6e\xed\xc1\x42\x10\xa5\x0f" -+ "\x88\x0b\x80\xce\xc4\x67\xf0\x45" -+ "\x5d\xb2\x9e\xde\x1c\x79\x52\x0d" -+ "\xff\x75\x36\xd5\x0f\x52\x8e\xe5" -+ "\x31\x85\xcf\x1d\x31\xf8\x62\x67", -+ .clen = 16 + 64, ++ "\xb1\x7b\xb1\xec\xca\x94\x55\xc4" ++ "\x3f\x2b\xb1\x70\x04\x91\xf5\x9d" ++ "\x1a\xc0\xe1\x2a\x93\x5f\x96\x2a" ++ "\x12\x85\x38\x36\xe1\xb2\xe9\xf0" ++ "\xf2\x6e\x5d\x81\xcc\x49\x07\x9c" ++ "\x5b\x88\xc8\xcc\xc4\x21\x4f\x32", ++ .clen = 16 + 48, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -297,14 +273,12 @@ Signed-off-by: Herbert Xu + "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" + "\x40\x41\x42\x43\x44\x45\x46\x47" + "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" -+ "\x50\x51\x52\x53\x54\x55\x56\x57" -+ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 64 + 36, ++ .klen = 8 + 48 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -317,18 +291,16 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\x9a\xac\x38\xbd\xf3\xcf\xd5\xd0" -+ "\x09\x07\xa6\xe1\x7f\xd6\x79\x98" -+ "\x4e\x90\x0e\xc0\x3d\xa0\xf2\x12" -+ "\x52\x79\x9c\x17\xff\xb9\xb8\xe3" -+ "\x2f\x31\xcb\xbd\x63\x70\x72\x7b" -+ "\x4e\x1e\xd1\xde\xb5\x6b\x7d\x54" -+ "\x68\x56\xdd\xe5\x53\xee\x29\xd2" -+ "\x85\xa1\x73\x61\x00\xa9\x26\x8f", -+ .clen = 32 + 64, ++ "\xd6\x96\xbb\x12\x39\xc4\x4d\xe2" ++ "\x4c\x02\xe7\x1f\xdc\xb2\xb1\x57" ++ "\x38\x0d\xdd\x13\xb3\x89\x57\x9e" ++ "\x1f\xb5\x48\x32\xc4\xd3\x9d\x1f" ++ "\x68\xab\x8d\xc6\xa8\x05\x3a\xc2" ++ "\x87\xaf\x23\xb3\xe4\x1b\xde\xb3", ++ .clen = 32 + 48, + }, +}; + - static const struct aead_testvec hmac_sha1_des_cbc_tv_temp[] = { - { /*Generated with cryptopp*/ + 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/920-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/920-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch new file mode 100644 index 00000000000..108da3781f5 --- /dev/null +++ b/target/linux/generic/backport-6.12/920-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -0,0 +1,334 @@ +From 82fc2b17fa5b9b12d34770afcc8e3c4288735429 Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Thu, 5 Mar 2026 21:08:24 +0100 +Subject: [PATCH 5/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha512),rfc3686(ctr(aes))) + +Test vectors were generated starting from existing RFC3686(CTR(AES)) test +vectors and adding HMAC(SHA512) computed with software implementation. +Then, the results were double-checked on Mediatek MT7986 (safexcel). +Platform pass self-tests. + +Signed-off-by: Aleksander Jan Bajkowski +Signed-off-by: Herbert Xu +--- + crypto/testmgr.c | 6 +- + crypto/testmgr.h | 291 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 296 insertions(+), 1 deletion(-) + +--- a/crypto/testmgr.c ++++ b/crypto/testmgr.c +@@ -4545,8 +4545,12 @@ static const struct alg_test_desc alg_te + .fips_allowed = 1, + }, { + .alg = "authenc(hmac(sha512),rfc3686(ctr(aes)))", +- .test = alg_test_null, ++ .generic_driver = "authenc(hmac-sha512-lib,rfc3686(ctr(aes-lib)))", ++ .test = alg_test_aead, + .fips_allowed = 1, ++ .suite = { ++ .aead = __VECS(hmac_sha512_aes_ctr_rfc3686_tv_temp) ++ } + }, { + .alg = "blake2b-160", + .test = alg_test_hash, +--- a/crypto/testmgr.h ++++ b/crypto/testmgr.h +@@ -19839,6 +19839,297 @@ static const struct aead_testvec hmac_md + }, + }; + ++static const struct aead_testvec hmac_sha512_aes_ctr_rfc3686_tv_temp[] = { ++ { /* RFC 3686 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\x14" /* 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" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\xae\x68\x52\xf8\x12\x10\x67\xcc" ++ "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" ++ "\x00\x00\x00\x30", ++ .klen = 8 + 64 + 20, ++ .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", ++ .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", ++ .alen = 8, ++ .ptext = "Single block msg", ++ .plen = 16, ++ .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" ++ "\x2d\x61\x75\xa3\x26\x13\x11\xb8" ++ "\xa4\x45\x3a\x44\x9c\xe5\x1c\xd9" ++ "\x10\x43\x51\x2e\x76\x5e\xf8\x9d" ++ "\x03\x12\x1a\x31\x00\x33\x10\xb4" ++ "\x94\x4b\x70\x84\x6c\xda\xb1\x46" ++ "\x24\xb6\x3b\x2a\xec\xd5\x67\xb8" ++ "\x65\xa2\xbd\xac\x18\xe2\xf8\x55" ++ "\xc6\x91\xb0\x92\x84\x2d\x74\x44" ++ "\xa7\xee\xc3\x44\xa0\x07\x0e\x62", ++ .clen = 16 + 64, ++ }, { /* RFC 3686 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\x14" /* 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" ++ "\x50\x51\x52\x53\x54\x55\x56\x57" ++ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" ++ "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" ++ "\x43\xd6\xce\x1f\x32\x53\x91\x63" ++ "\x00\x6c\xb6\xdb", ++ .klen = 8 + 64 + 20, ++ .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", ++ .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", ++ .alen = 8, ++ .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 = "\x51\x04\xa1\x06\x16\x8a\x72\xd9" ++ "\x79\x0d\x41\xee\x8e\xda\xd3\x88" ++ "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" ++ "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" ++ "\xec\x67\x0d\xb3\xbd\x98\x13\x01" ++ "\x2b\x04\x9b\xe6\x06\x67\x3c\x76" ++ "\xcd\x41\xb7\xcc\x70\x6c\x7f\xc8" ++ "\x67\xbd\x22\x39\xb2\xaa\xe8\x88" ++ "\xe0\x4f\x81\x52\xdf\xc9\xc3\xd6" ++ "\x44\xf4\x66\x33\x87\x64\x61\x02" ++ "\x02\xa2\x64\x15\x2b\xe9\x0b\x3d" ++ "\x4c\xea\xa1\xa5\xa7\xc9\xd3\x1b", ++ .clen = 32 + 64, ++ }, { /* RFC 3686 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\x14" /* 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" ++ "\x44\x55\x66\x77\x88\x99\xaa\xbb" ++ "\xcc\xdd\xee\xff\x11\x22\x33\x44" ++ "\x76\x91\xbe\x03\x5e\x50\x20\xa8" ++ "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" ++ "\x00\xe0\x01\x7b", ++ .klen = 8 + 64 + 20, ++ .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", ++ .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", ++ .alen = 8, ++ .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" ++ "\x20\x21\x22\x23", ++ .plen = 36, ++ .ctext = "\xc1\xcf\x48\xa8\x9f\x2f\xfd\xd9" ++ "\xcf\x46\x52\xe9\xef\xdb\x72\xd7" ++ "\x45\x40\xa4\x2b\xde\x6d\x78\x36" ++ "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" ++ "\x25\xb2\x07\x2f" ++ "\x6f\x90\xb6\xa3\x35\x43\x59\xff" ++ "\x1e\x32\xd6\xfe\xfa\x33\xf9\xf0" ++ "\x31\x2f\x03\x2d\x88\x1d\xab\xbf" ++ "\x0e\x19\x16\xd9\xf3\x98\x3e\xdd" ++ "\x0c\xec\xfe\xe8\x89\x13\x91\x15" ++ "\xf6\x61\x65\x5c\x1b\x7d\xde\xc0" ++ "\xe4\xba\x6d\x27\xe2\x89\x23\x24" ++ "\x15\x82\x37\x3d\x48\xd3\xc9\x32", ++ .clen = 36 + 64, ++ }, { /* RFC 3686 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\x1c" /* 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" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" ++ "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" ++ "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" ++ "\x00\x00\x00\x48", ++ .klen = 8 + 64 + 28, ++ .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", ++ .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", ++ .alen = 8, ++ .ptext = "Single block msg", ++ .plen = 16, ++ .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" ++ "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" ++ "\x25\xea\xdc\xad\x52\xb8\x0f\x70" ++ "\xe7\x39\x83\x80\x10\x3f\x18\xc4" ++ "\xf8\x59\x14\x25\x5f\xba\x20\x87" ++ "\x0b\x04\x5e\xf7\xde\x41\x39\xff" ++ "\xa2\xee\x84\x3f\x9d\x38\xfd\x17" ++ "\xc0\x66\x5e\x74\x39\xe3\xd3\xd7" ++ "\x3d\xbc\xe3\x99\x2f\xe7\xef\x37" ++ "\x61\x03\xf3\x9e\x01\xaf\xba\x9d", ++ .clen = 16 + 64, ++ }, { /* RFC 3686 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\x1c" /* 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" ++ "\x50\x51\x52\x53\x54\x55\x56\x57" ++ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" ++ "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" ++ "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" ++ "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" ++ "\x00\x96\xb0\x3b", ++ .klen = 8 + 64 + 28, ++ .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", ++ .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", ++ .alen = 8, ++ .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 = "\x45\x32\x43\xfc\x60\x9b\x23\x32" ++ "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" ++ "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" ++ "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" ++ "\x51\xa3\xe6\x1d\x23\x7d\xd1\x18" ++ "\x55\x9c\x1c\x92\x2b\xc2\xcd\xfe" ++ "\x8a\xa8\xa5\x96\x65\x2e\x9d\xdb" ++ "\x06\xd2\x1c\x57\x2b\x76\xb5\x9c" ++ "\xd4\x3e\x8b\x61\x54\x2d\x08\xe5" ++ "\xb2\xf8\x88\x20\x0c\xad\xe8\x85" ++ "\x61\x8e\x5c\xa4\x96\x2c\xe2\x7d" ++ "\x4f\xb6\x1d\xb2\x8c\xd7\xe3\x38", ++ .clen = 32 + 64, ++ }, { /* RFC 3686 Case 7 */ ++#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\x24" /* 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" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" ++ "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" ++ "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" ++ "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" ++ "\x00\x00\x00\x60", ++ .klen = 8 + 64 + 36, ++ .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", ++ .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", ++ .alen = 8, ++ .ptext = "Single block msg", ++ .plen = 16, ++ .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" ++ "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" ++ "\x6b\x68\x0b\x99\x9a\x4d\xc8\xb9" ++ "\x35\xea\xcd\x56\x3f\x40\xa2\xb6" ++ "\x68\xda\x59\xd8\xa0\x89\xcd\x52" ++ "\xb1\x6e\xed\xc1\x42\x10\xa5\x0f" ++ "\x88\x0b\x80\xce\xc4\x67\xf0\x45" ++ "\x5d\xb2\x9e\xde\x1c\x79\x52\x0d" ++ "\xff\x75\x36\xd5\x0f\x52\x8e\xe5" ++ "\x31\x85\xcf\x1d\x31\xf8\x62\x67", ++ .clen = 16 + 64, ++ }, { /* RFC 3686 Case 8 */ ++#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\x24" /* 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" ++ "\x50\x51\x52\x53\x54\x55\x56\x57" ++ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" ++ "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" ++ "\x07\x96\x36\x58\x79\xef\xf8\x86" ++ "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" ++ "\x4b\x50\x59\x0c\x87\xa2\x38\x84" ++ "\x00\xfa\xac\x24", ++ .klen = 8 + 64 + 36, ++ .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", ++ .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", ++ .alen = 8, ++ .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 = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c" ++ "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" ++ "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" ++ "\x55\x30\x83\x1d\x93\x44\xaf\x1c" ++ "\x9a\xac\x38\xbd\xf3\xcf\xd5\xd0" ++ "\x09\x07\xa6\xe1\x7f\xd6\x79\x98" ++ "\x4e\x90\x0e\xc0\x3d\xa0\xf2\x12" ++ "\x52\x79\x9c\x17\xff\xb9\xb8\xe3" ++ "\x2f\x31\xcb\xbd\x63\x70\x72\x7b" ++ "\x4e\x1e\xd1\xde\xb5\x6b\x7d\x54" ++ "\x68\x56\xdd\xe5\x53\xee\x29\xd2" ++ "\x85\xa1\x73\x61\x00\xa9\x26\x8f", ++ .clen = 32 + 64, ++ }, ++}; ++ + static const struct aead_testvec hmac_sha1_des_cbc_tv_temp[] = { + { /*Generated with cryptopp*/ + #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/backport-6.12/921-v7.1-crypto-tesmgr-allow-authenc-hmac-sha224-sha384-cbc-a.patch b/target/linux/generic/backport-6.12/921-v7.1-crypto-tesmgr-allow-authenc-hmac-sha224-sha384-cbc-a.patch new file mode 100644 index 00000000000..0a76d1932ff --- /dev/null +++ b/target/linux/generic/backport-6.12/921-v7.1-crypto-tesmgr-allow-authenc-hmac-sha224-sha384-cbc-a.patch @@ -0,0 +1,33 @@ +From 0441ee8d35ad6998da5043c65c4124904e8daee2 Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Fri, 6 Feb 2026 20:26:59 +0100 +Subject: [PATCH] crypto: tesmgr - allow authenc(hmac(sha224/sha384),cbc(aes)) + in fips mode + +The remaining combinations of AES-CBC and SHA* have already been marked +as allowed. This commit does the same for SHA224 and SHA384. + +Signed-off-by: Aleksander Jan Bajkowski +Signed-off-by: Herbert Xu +--- + crypto/testmgr.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/crypto/testmgr.c ++++ b/crypto/testmgr.c +@@ -4435,6 +4435,7 @@ static const struct alg_test_desc alg_te + .alg = "authenc(hmac(sha224),cbc(aes))", + .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", + .test = alg_test_aead, ++ .fips_allowed = 1, + .suite = { + .aead = __VECS(hmac_sha224_aes_cbc_tv_temp) + } +@@ -4493,6 +4494,7 @@ static const struct alg_test_desc alg_te + .alg = "authenc(hmac(sha384),cbc(aes))", + .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", + .test = alg_test_aead, ++ .fips_allowed = 1, + .suite = { + .aead = __VECS(hmac_sha384_aes_cbc_tv_temp) + } diff --git a/target/linux/generic/backport-6.18/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.12/922-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch similarity index 74% rename from target/linux/generic/backport-6.18/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch rename to target/linux/generic/backport-6.12/922-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch index 85eee07bde8..2eed4f3d21d 100644 --- a/target/linux/generic/backport-6.18/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.12/922-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -1,44 +1,44 @@ -From 2a2468bf33d3fac5192429207a439d23e615173a Mon Sep 17 00:00:00 2001 +From d0c0a414cc1893b195b9523ecdfbeee00b98fd0d Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:20 +0100 -Subject: [PATCH 1/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha1),rfc3686(ctr(aes))) +Date: Thu, 19 Mar 2026 18:11:21 +0100 +Subject: [PATCH] crypto: testmgr - Add test vectors for + authenc(hmac(md5),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA1) computed with software implementation. +vectors and adding HMAC(MD5) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- - crypto/testmgr.c | 6 +- - crypto/testmgr.h | 221 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 226 insertions(+), 1 deletion(-) + crypto/testmgr.c | 7 ++ + crypto/testmgr.h | 207 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 214 insertions(+) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4232,8 +4232,12 @@ static const struct alg_test_desc alg_te +@@ -4395,6 +4395,13 @@ static const struct alg_test_desc alg_te + .aead = __VECS(hmac_md5_ecb_cipher_null_tv_template) } }, { - .alg = "authenc(hmac(sha1),rfc3686(ctr(aes)))", -- .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha1-lib,rfc3686(ctr(aes-lib)))", ++ .alg = "authenc(hmac(md5),rfc3686(ctr(aes)))", ++ .generic_driver = "authenc(hmac-md5-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, - .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha1_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_md5_aes_ctr_rfc3686_tv_temp) + } - }, { - .alg = "authenc(hmac(sha224),cbc(aes))", - .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", ++ }, { + .alg = "authenc(hmac(sha1),cbc(aes))", + .test = alg_test_aead, + .fips_allowed = 1, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -16137,6 +16137,227 @@ static const struct aead_testvec hmac_sh +@@ -20443,6 +20443,213 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha1_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_md5_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -50,11 +50,10 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* enc key length */ + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00" -+ "\x00\x00\x00\x00" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 20 + 20, ++ .klen = 8 + 16 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -62,10 +61,9 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\x70\xdc\x6b\x62\x43\xa1\x2f\x08" -+ "\xf1\xec\x93\x7d\x69\xb2\x8e\x1f" -+ "\x0a\x97\x39\x86", -+ .clen = 16 + 20, ++ "\xdd\x5f\xea\x13\x2a\xf2\xb0\xf1" ++ "\x91\x79\x46\x40\x62\x6c\x87\x5b", ++ .clen = 16 + 16, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -77,11 +75,10 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* enc key length */ + "\x20\x21\x22\x23\x24\x25\x26\x27" + "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" -+ "\x30\x31\x32\x33" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 20 + 20, ++ .klen = 8 + 16 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -94,10 +91,9 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\x6b\x7b\x4d\x39\x36\x1c\x12\x5f" -+ "\x72\xd2\x88\xb2\x26\xa6\xa6\xb5" -+ "\x1d\x3a\x49\xa6", -+ .clen = 32 + 20, ++ "\x03\x39\x23\xcd\x22\x5f\x1b\x8b" ++ "\x93\x70\xbc\x45\xf3\xba\xde\x2e", ++ .clen = 32 + 16, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -109,11 +105,10 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* enc key length */ + "\x11\x22\x33\x44\x55\x66\x77\x88" + "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" -+ "\x22\x33\x44\x55" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 20 + 20, ++ .klen = 8 + 16 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -128,10 +123,9 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\x2c\x86\xa0\x90\x8e\xc1\x02\x1d" -+ "\x51\xdc\xd6\x21\xc7\x30\xcc\x32" -+ "\x38\x55\x47\x64", -+ .clen = 36 + 20, ++ "\xb4\x40\x0c\x7b\x4c\x55\x8a\x4b" ++ "\x04\xf7\x48\x9e\x0f\x9a\xae\x73", ++ .clen = 36 + 16, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -143,12 +137,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x1c" /* enc key length */ + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00" -+ "\x00\x00\x00\x00" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 20 + 28, ++ .klen = 8 + 16 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -156,10 +149,9 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\xe9\x4e\x49\xf0\x6b\x8d\x58\x2b" -+ "\x26\x7f\xf3\xab\xeb\x2f\x74\x2f" -+ "\x45\x43\x64\xc1", -+ .clen = 16 + 20, ++ "\xc4\x5d\xa1\x16\x6c\x2d\xa5\x43" ++ "\x60\x7b\x58\x98\x11\x9b\x50\x06", ++ .clen = 16 + 16, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -171,12 +163,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x1c" /* enc key length */ + "\x20\x21\x22\x23\x24\x25\x26\x27" + "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" -+ "\x30\x31\x32\x33" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 20 + 28, ++ .klen = 8 + 16 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -189,10 +180,9 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\xab\xc4\xfa\x6d\x20\xe1\xce\x72" -+ "\x0e\x92\x4e\x97\xaa\x4d\x30\x84" -+ "\xb6\xd8\x4d\x3b", -+ .clen = 32 + 20, ++ "\xc5\xec\x47\x33\xae\x05\x28\x49" ++ "\xd5\x2b\x08\xad\x10\x98\x24\x01", ++ .clen = 32 + 16, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -204,13 +194,12 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x24" /* enc key length */ + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00" -+ "\x00\x00\x00\x00" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 20 + 36, ++ .klen = 8 + 16 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -218,10 +207,9 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\x3d\x6c\x23\x27\xda\x0e\x7f\x29" -+ "\xfd\x8d\x3c\x1b\xf7\x7a\x63\xd9" -+ "\x7e\x0f\xe9\xf6", -+ .clen = 16 + 20, ++ "\xc6\x26\xb2\x27\x0d\x21\xd4\x40" ++ "\x6c\x4f\x53\xea\x19\x75\xda\x8e", ++ .clen = 16 + 16, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -233,13 +221,12 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x24" /* enc key length */ + "\x20\x21\x22\x23\x24\x25\x26\x27" + "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" -+ "\x30\x31\x32\x33" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 20 + 36, ++ .klen = 8 + 16 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -252,13 +239,12 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\xe7\xee\x22\xa4\xdd\xbf\x5d\x44" -+ "\x3b\x43\x1c\x69\x55\x11\xd5\xad" -+ "\x14\x5f\x44\xa6", -+ .clen = 32 + 20, ++ "\x8c\x4d\x2a\x8d\x23\x47\x59\x6f" ++ "\x1e\x74\x62\x39\xed\x14\x50\x6c", ++ .clen = 32 + 16, + }, +}; + - static const struct aead_testvec hmac_sha1_ecb_cipher_null_tv_temp[] = { - { /* Input data from RFC 2410 Case 1 */ + static const struct aead_testvec hmac_md5_des3_ede_cbc_tv_temp[] = { + { /*Generated with cryptopp*/ #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/pending-6.12/910-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch b/target/linux/generic/backport-6.12/923-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch similarity index 97% rename from target/linux/generic/pending-6.12/910-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch rename to target/linux/generic/backport-6.12/923-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch index 2d33d2ad59d..2050ded1d08 100644 --- a/target/linux/generic/pending-6.12/910-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch +++ b/target/linux/generic/backport-6.12/923-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -1,6 +1,6 @@ -From dd227f442774a570ffccdfbc9536fec3b4666305 Mon Sep 17 00:00:00 2001 +From c8aadd63ab58ee75713ab487730563e7a160cc35 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Sat, 31 Jan 2026 12:35:30 +0100 +Date: Tue, 3 Mar 2026 19:48:44 +0100 Subject: [PATCH] crypto: testmgr - Add test vectors for authenc(hmac(md5),cbc(aes)) @@ -10,6 +10,7 @@ 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 | 255 +++++++++++++++++++++++++++++++++++++++++++++++ @@ -22,7 +23,7 @@ Signed-off-by: Aleksander Jan Bajkowski } }, { + .alg = "authenc(hmac(md5),cbc(aes))", -+ .generic_driver = "authenc(hmac-md5-lib,cbc(aes-generic))", ++ .generic_driver = "authenc(hmac-md5-lib,cbc(aes-lib))", + .test = alg_test_aead, + .suite = { + .aead = __VECS(hmac_md5_aes_cbc_tv_temp) @@ -33,7 +34,7 @@ Signed-off-by: Aleksander Jan Bajkowski .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -17133,6 +17133,261 @@ static const struct cipher_testvec aes_c +@@ -17253,6 +17253,261 @@ static const struct cipher_testvec aes_c }, }; diff --git a/target/linux/generic/backport-6.18/910-v6.19-crypto-testmgr-Add-missing-DES-weak-and-semi-weak-ke.patch b/target/linux/generic/backport-6.18/910-v6.19-crypto-testmgr-Add-missing-DES-weak-and-semi-weak-ke.patch new file mode 100644 index 00000000000..c31680fc420 --- /dev/null +++ b/target/linux/generic/backport-6.18/910-v6.19-crypto-testmgr-Add-missing-DES-weak-and-semi-weak-ke.patch @@ -0,0 +1,155 @@ +From c637f3e4a59d710ffd80da1c11d2ebed162d8ff0 Mon Sep 17 00:00:00 2001 +From: Thorsten Blum +Date: Mon, 17 Nov 2025 12:44:26 +0100 +Subject: [PATCH] crypto: testmgr - Add missing DES weak and semi-weak key + tests + +Ever since commit da7f033ddc9f ("crypto: cryptomgr - Add test +infrastructure"), the DES test suite has tested only one of the four +weak keys and none of the twelve semi-weak keys. + +DES has four weak keys and twelve semi-weak keys, and the kernel's DES +implementation correctly detects and rejects all of these keys when the +CRYPTO_TFM_REQ_FORBID_WEAK_KEYS flag is set. However, only a single weak +key was being tested. Add tests for all 16 weak and semi-weak keys. + +While DES is deprecated, it is still used in some legacy protocols, and +weak/semi-weak key detection should be tested accordingly. + +Tested on arm64 with cryptographic self-tests. + +Signed-off-by: Thorsten Blum +Signed-off-by: Herbert Xu +--- + crypto/testmgr.h | 120 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 120 insertions(+) + +--- a/crypto/testmgr.h ++++ b/crypto/testmgr.h +@@ -9023,6 +9023,126 @@ static const struct cipher_testvec des_t + .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", + .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", + .len = 8, ++ }, { /* Weak key */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xe0\xe0\xe0\xe0\xf1\xf1\xf1\xf1", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Weak key */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Weak key */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 1a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x01\xfe\x01\xfe\x01\xfe\x01\xfe", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 1b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xfe\x01\xfe\x01\xfe\x01\xfe\x01", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 2a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x1f\xe0\x1f\xe0\x0e\xf1\x0e\xf1", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 2b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xe0\x1f\xe0\x1f\xf1\x0e\xf1\x0e", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 3a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x01\xe0\x01\xe0\x01\xf1\x01\xf1", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 3b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xe0\x01\xe0\x01\xf1\x01\xf1\x01", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 4a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x1f\xfe\x1f\xfe\x0e\xfe\x0e\xfe", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 4b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xfe\x1f\xfe\x1f\xfe\x0e\xfe\x0e", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 5a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x01\x1f\x01\x1f\x01\x0e\x01\x0e", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 5b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\x1f\x01\x1f\x01\x0e\x01\x0e\x01", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 6a */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xe0\xfe\xe0\xfe\xf1\xfe\xf1\xfe", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, ++ }, { /* Semi-weak key pair 6b */ ++ .setkey_error = -EINVAL, ++ .wk = 1, ++ .key = "\xfe\xe0\xfe\xe0\xfe\xf1\xfe\xf1", ++ .klen = 8, ++ .ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7", ++ .ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d", ++ .len = 8, + }, { /* Two blocks -- for testing encryption across pages */ + .key = "\x01\x23\x45\x67\x89\xab\xcd\xef", + .klen = 8, diff --git a/target/linux/generic/backport-6.18/911-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.18/911-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index b34cf0322f7..4983aea1a98 100644 --- a/target/linux/generic/backport-6.18/911-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.18/911-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From a22d48cbe55814061d46db2f87090ba5e36aaf7f Mon Sep 17 00:00:00 2001 +From 030218dedee2628ea3f035d71431e1b7c4191cfb Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Sat, 31 Jan 2026 18:43:03 +0100 +Date: Sat, 31 Jan 2026 18:38:47 +0100 Subject: [PATCH] crypto: testmgr - Add test vectors for - authenc(hmac(sha224),cbc(aes)) + authenc(hmac(sha384),cbc(aes)) Test vectors were generated starting from existing CBC(AES) test vectors -(RFC3602, NIST SP800-38A) and adding HMAC(SHA224) computed with Python +(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. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 7 ++ - crypto/testmgr.h | 285 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 292 insertions(+) + crypto/testmgr.h | 311 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 318 insertions(+) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4221,6 +4221,13 @@ static const struct alg_test_desc alg_te +@@ -4272,6 +4272,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))", ++ .alg = "authenc(hmac(sha384),cbc(aes))", ++ .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", + .test = alg_test_aead, + .suite = { -+ .aead = __VECS(hmac_sha224_aes_cbc_tv_temp) ++ .aead = __VECS(hmac_sha384_aes_cbc_tv_temp) + } + }, { - .alg = "authenc(hmac(sha224),cbc(des))", - .generic_driver = "authenc(hmac-sha224-lib,cbc(des-generic))", + .alg = "authenc(hmac(sha384),cbc(des))", + .generic_driver = "authenc(hmac-sha384-lib,cbc(des-generic))", .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -16183,6 +16183,291 @@ static const struct aead_testvec hmac_sh +@@ -16586,6 +16586,317 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha224_aes_cbc_tv_temp[] = { ++static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { + { /* RFC 3602 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -51,24 +51,28 @@ Signed-off-by: Herbert Xu + "\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\x00\x00\x00\x00" + "\x06\xa9\x21\x40\x36\xb8\xa1\x5b" + "\x51\x2e\x03\xd5\x34\x12\x00\x06", -+ .klen = 8 + 28 + 16, ++ .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, ++ .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, ++ "\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 */ @@ -81,15 +85,17 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 16, ++ .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, ++ .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" @@ -99,12 +105,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -117,15 +124,17 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 16, ++ .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, ++ .alen = 16, + .ptext = "This is a 48-byte message (exactly 3 AES blocks)", + .plen = 48, + .ctext = "\xd0\xa0\x2b\x38\x36\x45\x17\x53" @@ -134,11 +143,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -151,15 +162,17 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 16, ++ .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, ++ .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" @@ -177,11 +190,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -194,10 +209,12 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 16, ++ .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" @@ -225,11 +242,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -242,11 +261,13 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 24, ++ .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" @@ -269,12 +290,13 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -287,12 +309,14 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 28 + 32, ++ .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" @@ -315,14 +339,16 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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_sha256_aes_cbc_tv_temp[] = { + 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.18/910-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.18/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch similarity index 71% rename from target/linux/generic/backport-6.18/910-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch rename to target/linux/generic/backport-6.18/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index 5ccb2c90139..d1bc0b20474 100644 --- a/target/linux/generic/backport-6.18/910-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.18/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 030218dedee2628ea3f035d71431e1b7c4191cfb Mon Sep 17 00:00:00 2001 +From a22d48cbe55814061d46db2f87090ba5e36aaf7f Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Sat, 31 Jan 2026 18:38:47 +0100 +Date: Sat, 31 Jan 2026 18:43:03 +0100 Subject: [PATCH] crypto: testmgr - Add test vectors for - authenc(hmac(sha384),cbc(aes)) + authenc(hmac(sha224),cbc(aes)) Test vectors were generated starting from existing CBC(AES) test vectors -(RFC3602, NIST SP800-38A) and adding HMAC(SHA384) computed with Python +(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. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 7 ++ - crypto/testmgr.h | 311 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 318 insertions(+) + crypto/testmgr.h | 285 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 292 insertions(+) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4272,6 +4272,13 @@ static const struct alg_test_desc alg_te +@@ -4221,6 +4221,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))", ++ .alg = "authenc(hmac(sha224),cbc(aes))", ++ .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", + .test = alg_test_aead, + .suite = { -+ .aead = __VECS(hmac_sha384_aes_cbc_tv_temp) ++ .aead = __VECS(hmac_sha224_aes_cbc_tv_temp) + } + }, { - .alg = "authenc(hmac(sha384),cbc(des))", - .generic_driver = "authenc(hmac-sha384-lib,cbc(des-generic))", + .alg = "authenc(hmac(sha224),cbc(des))", + .generic_driver = "authenc(hmac-sha224-lib,cbc(des-generic))", .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -16466,6 +16466,317 @@ static const struct aead_testvec hmac_sh +@@ -16303,6 +16303,291 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { ++static const struct aead_testvec hmac_sha224_aes_cbc_tv_temp[] = { + { /* RFC 3602 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -51,28 +51,24 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x00\x00\x00\x00" + "\x06\xa9\x21\x40\x36\xb8\xa1\x5b" + "\x51\x2e\x03\xd5\x34\x12\x00\x06", -+ .klen = 8 + 48 + 16, ++ .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, ++ .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, ++ "\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 */ @@ -85,17 +81,15 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x38\x39\x3a\x3b" + "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0" + "\x61\x1b\xbb\x3e\x20\x25\xa4\x5a", -+ .klen = 8 + 48 + 16, ++ .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, ++ .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" @@ -105,13 +99,12 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -124,17 +117,15 @@ Signed-off-by: Herbert Xu + "\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" ++ "\xaa\xbb\xcc\xdd" + "\x6c\x3e\xa0\x47\x76\x30\xce\x21" + "\xa2\xce\x33\x4a\xa7\x46\xc2\xcd", -+ .klen = 8 + 48 + 16, ++ .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, ++ .alen = 16, + .ptext = "This is a 48-byte message (exactly 3 AES blocks)", + .plen = 48, + .ctext = "\xd0\xa0\x2b\x38\x36\x45\x17\x53" @@ -143,13 +134,11 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -162,17 +151,15 @@ Signed-off-by: Herbert Xu + "\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" ++ "\xaa\xbb\xcc\xdd" + "\x56\xe4\x7a\x38\xc5\x59\x89\x74" + "\xbc\x46\x90\x3d\xba\x29\x03\x49", -+ .klen = 8 + 48 + 16, ++ .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, ++ .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" @@ -190,13 +177,11 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -209,12 +194,10 @@ Signed-off-by: Herbert Xu + "\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" ++ "\xaa\xbb\xcc\xdd" + "\x90\xd3\x82\xb4\x10\xee\xba\x7a" + "\xd9\x38\xc4\x6c\xec\x1a\x82\xbf", -+ .klen = 8 + 48 + 16, ++ .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" @@ -242,13 +225,11 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -261,13 +242,11 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 48 + 24, ++ .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" @@ -290,13 +269,12 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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 */ @@ -309,14 +287,12 @@ Signed-off-by: Herbert Xu + "\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" ++ "\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 + 48 + 32, ++ .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" @@ -339,16 +315,14 @@ Signed-off-by: Herbert Xu + "\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, ++ "\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_sha512_aes_cbc_tv_temp[] = { + 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.18/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch b/target/linux/generic/backport-6.18/913-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch similarity index 98% rename from target/linux/generic/backport-6.18/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch rename to target/linux/generic/backport-6.18/913-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch index f867b19af51..21079706e30 100644 --- a/target/linux/generic/backport-6.18/912-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch +++ b/target/linux/generic/backport-6.18/913-v7.0-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -34,7 +34,7 @@ Signed-off-by: Herbert Xu .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -17714,6 +17714,65 @@ static const struct aead_testvec hmac_sh +@@ -17834,6 +17834,65 @@ static const struct aead_testvec hmac_sh }, }; diff --git a/target/linux/generic/backport-6.18/913-v7.0-crypto-testmgr-allow-authenc-sha224-rfc3686-variant-.patch b/target/linux/generic/backport-6.18/914-v7.0-crypto-testmgr-allow-authenc-sha224-rfc3686-variant-.patch similarity index 100% rename from target/linux/generic/backport-6.18/913-v7.0-crypto-testmgr-allow-authenc-sha224-rfc3686-variant-.patch rename to target/linux/generic/backport-6.18/914-v7.0-crypto-testmgr-allow-authenc-sha224-rfc3686-variant-.patch diff --git a/target/linux/generic/backport-6.18/914-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch b/target/linux/generic/backport-6.18/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch similarity index 98% rename from target/linux/generic/backport-6.18/914-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch rename to target/linux/generic/backport-6.18/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch index cad39889f40..0407ef4280c 100644 --- a/target/linux/generic/backport-6.18/914-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch +++ b/target/linux/generic/backport-6.18/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -33,7 +33,7 @@ Signed-off-by: Herbert Xu .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -17401,6 +17401,63 @@ static const struct aead_testvec hmac_sh +@@ -17521,6 +17521,63 @@ static const struct aead_testvec hmac_sh }, }; diff --git a/target/linux/generic/backport-6.18/916-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.18/916-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index 888d4b5f0a4..e775b83603e 100644 --- a/target/linux/generic/backport-6.18/916-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.18/916-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 3f4d32aff1d4e06501f909b1e5037ec8caa76d01 Mon Sep 17 00:00:00 2001 +From b45b4314d3e55be70b597baa1f0ab9283e68003b Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:21 +0100 -Subject: [PATCH 2/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha224),rfc3686(ctr(aes))) +Date: Thu, 5 Mar 2026 21:08:20 +0100 +Subject: [PATCH 1/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha1),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA224) computed with software implementation. +vectors and adding HMAC(SHA1) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 6 +- - crypto/testmgr.h | 235 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 240 insertions(+), 1 deletion(-) + crypto/testmgr.h | 221 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 226 insertions(+), 1 deletion(-) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4261,8 +4261,12 @@ static const struct alg_test_desc alg_te +@@ -4232,8 +4232,12 @@ static const struct alg_test_desc alg_te } }, { - .alg = "authenc(hmac(sha224),rfc3686(ctr(aes)))", + .alg = "authenc(hmac(sha1),rfc3686(ctr(aes)))", - .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha224-lib,rfc3686(ctr(aes-lib)))", ++ .generic_driver = "authenc(hmac-sha1-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha224_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_sha1_aes_ctr_rfc3686_tv_temp) + } }, { - .alg = "authenc(hmac(sha256),cbc(aes))", - .generic_driver = "authenc(hmac-sha256-lib,cbc(aes-generic))", + .alg = "authenc(hmac(sha224),cbc(aes))", + .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -16689,6 +16689,241 @@ static const struct aead_testvec hmac_sh +@@ -16257,6 +16257,227 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha224_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_sha1_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -50,12 +50,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* 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" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 28 + 20, ++ .klen = 8 + 20 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -63,11 +62,10 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\x36\xb4\x3b\x9c\x62\xed\xcf\x77" -+ "\xdc\x19\x27\x3f\x92\x80\x52\xce" -+ "\x8f\xad\x01\x0b\x79\xda\x04\x83" -+ "\xcb\x45\x1a\x52", -+ .clen = 16 + 28, ++ "\x70\xdc\x6b\x62\x43\xa1\x2f\x08" ++ "\xf1\xec\x93\x7d\x69\xb2\x8e\x1f" ++ "\x0a\x97\x39\x86", ++ .clen = 16 + 20, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -79,12 +77,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* 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" ++ "\x30\x31\x32\x33" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 28 + 20, ++ .klen = 8 + 20 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -97,11 +94,10 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\x7f\xe4\x8f\xa7\x06\x71\xe9\xe5" -+ "\x16\x79\xef\xf9\x7e\x5c\x93\x4d" -+ "\xa0\xf8\x3b\x3a\xaa\x1c\xc0\xd9" -+ "\x6b\x48\x49\x01", -+ .clen = 32 + 28, ++ "\x6b\x7b\x4d\x39\x36\x1c\x12\x5f" ++ "\x72\xd2\x88\xb2\x26\xa6\xa6\xb5" ++ "\x1d\x3a\x49\xa6", ++ .clen = 32 + 20, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -113,12 +109,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* 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" ++ "\x22\x33\x44\x55" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 28 + 20, ++ .klen = 8 + 20 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -133,11 +128,10 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\xb0\x19\x45\xee\xa7\x31\xd9\xd0" -+ "\x74\x6b\xb8\xb1\x67\x61\x2f\x8c" -+ "\x68\xde\xe3\xc9\x3b\x0c\x72\xda" -+ "\x48\xba\x1b\x51", -+ .clen = 36 + 28, ++ "\x2c\x86\xa0\x90\x8e\xc1\x02\x1d" ++ "\x51\xdc\xd6\x21\xc7\x30\xcc\x32" ++ "\x38\x55\x47\x64", ++ .clen = 36 + 20, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -149,13 +143,12 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x1c" /* 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" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 28 + 28, ++ .klen = 8 + 20 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -163,11 +156,10 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\xfd\xf5\x35\x26\x50\x3d\xdf\x80" -+ "\x6e\xbe\xba\x8d\x56\xf3\x03\xb7" -+ "\x27\xb8\x13\xe8\x72\x8f\xc9\x52" -+ "\x4a\xb7\xc3\x3a", -+ .clen = 16 + 28, ++ "\xe9\x4e\x49\xf0\x6b\x8d\x58\x2b" ++ "\x26\x7f\xf3\xab\xeb\x2f\x74\x2f" ++ "\x45\x43\x64\xc1", ++ .clen = 16 + 20, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -179,13 +171,12 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x1c" /* 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" ++ "\x30\x31\x32\x33" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 28 + 28, ++ .klen = 8 + 20 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -198,11 +189,10 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\x72\x89\xa8\x04\xa5\xac\x8f\x29" -+ "\xe6\xb8\x58\xe8\xcf\x6a\x91\x89" -+ "\xd3\x66\x3b\xdc\xce\x43\x23\xb7" -+ "\x6a\xdd\x9d\xbd", -+ .clen = 32 + 28, ++ "\xab\xc4\xfa\x6d\x20\xe1\xce\x72" ++ "\x0e\x92\x4e\x97\xaa\x4d\x30\x84" ++ "\xb6\xd8\x4d\x3b", ++ .clen = 32 + 20, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -214,14 +204,13 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x24" /* 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" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 28 + 36, ++ .klen = 8 + 20 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -229,11 +218,10 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\xfe\xdf\x6f\x62\x8a\x79\xb5\x34" -+ "\xd0\x6f\x32\xaf\x31\x50\x5b\x1f" -+ "\xe0\x6d\x0b\xbc\x02\x25\xee\x74" -+ "\x7a\xdf\x97\x3c", -+ .clen = 16 + 28, ++ "\x3d\x6c\x23\x27\xda\x0e\x7f\x29" ++ "\xfd\x8d\x3c\x1b\xf7\x7a\x63\xd9" ++ "\x7e\x0f\xe9\xf6", ++ .clen = 16 + 20, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -245,14 +233,13 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x24" /* 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" ++ "\x30\x31\x32\x33" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 28 + 36, ++ .klen = 8 + 20 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -265,14 +252,13 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\x19\x1e\x9c\x2c\x6d\x4e\x21\xda" -+ "\x6c\x4d\x88\x90\xf8\x5f\xa5\x9d" -+ "\xb4\xd4\x40\xad\xfa\x67\x3f\x0e" -+ "\x11\x12\xd6\x10", -+ .clen = 32 + 28, ++ "\xe7\xee\x22\xa4\xdd\xbf\x5d\x44" ++ "\x3b\x43\x1c\x69\x55\x11\xd5\xad" ++ "\x14\x5f\x44\xa6", ++ .clen = 32 + 20, + }, +}; + - static const struct aead_testvec hmac_sha256_aes_cbc_tv_temp[] = { - { /* RFC 3602 Case 1 */ + static const struct aead_testvec hmac_sha1_ecb_cipher_null_tv_temp[] = { + { /* Input data from RFC 2410 Case 1 */ #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/backport-6.18/917-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.18/917-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index db7ccb96610..c6b2a88dedd 100644 --- a/target/linux/generic/backport-6.18/917-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.18/917-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 65af3a0bff7264ab84f9e1f2099c658601ca1b66 Mon Sep 17 00:00:00 2001 +From d46c27c01f132082095342b5abf4e83e250b70b8 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:22 +0100 -Subject: [PATCH 3/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha256),rfc3686(ctr(aes))) +Date: Thu, 5 Mar 2026 21:08:21 +0100 +Subject: [PATCH 2/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha224),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA256) computed with software implementation. +vectors and adding HMAC(SHA224) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. @@ -18,27 +18,27 @@ Signed-off-by: Herbert Xu --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4302,8 +4302,12 @@ static const struct alg_test_desc alg_te +@@ -4261,8 +4261,12 @@ static const struct alg_test_desc alg_te } }, { - .alg = "authenc(hmac(sha256),rfc3686(ctr(aes)))", + .alg = "authenc(hmac(sha224),rfc3686(ctr(aes)))", - .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha256-lib,rfc3686(ctr(aes-lib)))", ++ .generic_driver = "authenc(hmac-sha224-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha256_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_sha224_aes_ctr_rfc3686_tv_temp) + } }, { - .alg = "authenc(hmac(sha384),cbc(aes))", - .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", + .alg = "authenc(hmac(sha256),cbc(aes))", + .generic_driver = "authenc(hmac-sha256-lib,cbc(aes-generic))", --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -17207,6 +17207,241 @@ static const struct aead_testvec hmac_sh +@@ -16809,6 +16809,241 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha256_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_sha224_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -51,11 +51,11 @@ Signed-off-by: Herbert Xu + "\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" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 32 + 20, ++ .klen = 8 + 28 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -63,11 +63,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\x9b\xa2\x34\x62\xe5\xb3\xe8\x2d" -+ "\x6d\xdb\x93\x64\xa5\x08\x2e\x77" -+ "\x72\x1f\x21\x94\xc7\xbe\x14\xa6" -+ "\xcd\xea\x96\xa1\x29\x8f\x30\xc3", -+ .clen = 16 + 32, ++ "\x36\xb4\x3b\x9c\x62\xed\xcf\x77" ++ "\xdc\x19\x27\x3f\x92\x80\x52\xce" ++ "\x8f\xad\x01\x0b\x79\xda\x04\x83" ++ "\xcb\x45\x1a\x52", ++ .clen = 16 + 28, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -80,11 +80,11 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x38\x39\x3a\x3b" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 32 + 20, ++ .klen = 8 + 28 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -97,11 +97,11 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\x22\xf7\x95\xa8\xbb\xcd\x19\xf4" -+ "\x58\x16\x54\x28\x2b\xf4\x52\xe7" -+ "\x5c\x6c\xe1\x44\x0b\xd5\x10\x6e" -+ "\xe1\xf7\x04\xc4\x2c\xab\x93\xdd", -+ .clen = 32 + 32, ++ "\x7f\xe4\x8f\xa7\x06\x71\xe9\xe5" ++ "\x16\x79\xef\xf9\x7e\x5c\x93\x4d" ++ "\xa0\xf8\x3b\x3a\xaa\x1c\xc0\xd9" ++ "\x6b\x48\x49\x01", ++ .clen = 32 + 28, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -114,11 +114,11 @@ Signed-off-by: Herbert Xu + "\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" ++ "\xaa\xbb\xcc\xdd" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 32 + 20, ++ .klen = 8 + 28 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -133,11 +133,11 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\x1d\x05\x5f\x77\x3b\x4f\x5c\x21" -+ "\x29\xea\xf1\xa8\x71\x49\x7b\x0b" -+ "\x66\x0d\xff\x18\x81\x63\xfc\xc3" -+ "\x91\xb6\x38\xc8\xcd\x2d\x39\x83", -+ .clen = 36 + 32, ++ "\xb0\x19\x45\xee\xa7\x31\xd9\xd0" ++ "\x74\x6b\xb8\xb1\x67\x61\x2f\x8c" ++ "\x68\xde\xe3\xc9\x3b\x0c\x72\xda" ++ "\x48\xba\x1b\x51", ++ .clen = 36 + 28, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -150,12 +150,12 @@ Signed-off-by: Herbert Xu + "\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" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 32 + 28, ++ .klen = 8 + 28 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -163,11 +163,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\x8d\x03\x77\xb2\x1c\xc9\xe0\xac" -+ "\xde\x69\xbe\x8a\xef\x5b\x13\x74" -+ "\x1d\x39\xbc\xdc\x95\xa4\xbf\xc3" -+ "\xd5\xc6\xd1\xda\xda\x3b\xca\x78", -+ .clen = 16 + 32, ++ "\xfd\xf5\x35\x26\x50\x3d\xdf\x80" ++ "\x6e\xbe\xba\x8d\x56\xf3\x03\xb7" ++ "\x27\xb8\x13\xe8\x72\x8f\xc9\x52" ++ "\x4a\xb7\xc3\x3a", ++ .clen = 16 + 28, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -180,12 +180,12 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x38\x39\x3a\x3b" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 32 + 28, ++ .klen = 8 + 28 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -198,11 +198,11 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\x34\x06\x2b\x3d\xf1\xa8\x3d\xf1" -+ "\xa6\x5e\x5c\x1a\xdb\x0c\xb5\x1e" -+ "\x8f\xdb\xf4\xca\x7d\x09\x5e\x81" -+ "\xdb\x32\x07\x4a\x1d\x1c\x6d\x83", -+ .clen = 32 + 32, ++ "\x72\x89\xa8\x04\xa5\xac\x8f\x29" ++ "\xe6\xb8\x58\xe8\xcf\x6a\x91\x89" ++ "\xd3\x66\x3b\xdc\xce\x43\x23\xb7" ++ "\x6a\xdd\x9d\xbd", ++ .clen = 32 + 28, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -215,13 +215,13 @@ Signed-off-by: Herbert Xu + "\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" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 32 + 36, ++ .klen = 8 + 28 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -229,11 +229,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\xc3\xb4\x5f\xb0\xbf\xf5\x1b\xff" -+ "\x7c\xf1\x79\x00\x63\x50\xdd\x77" -+ "\xc0\x4a\xba\xcd\xdc\x47\x05\x2a" -+ "\x5d\x85\x2d\x83\x44\xca\x79\x2c", -+ .clen = 16 + 32, ++ "\xfe\xdf\x6f\x62\x8a\x79\xb5\x34" ++ "\xd0\x6f\x32\xaf\x31\x50\x5b\x1f" ++ "\xe0\x6d\x0b\xbc\x02\x25\xee\x74" ++ "\x7a\xdf\x97\x3c", ++ .clen = 16 + 28, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -246,13 +246,13 @@ Signed-off-by: Herbert Xu + "\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" ++ "\x38\x39\x3a\x3b" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 32 + 36, ++ .klen = 8 + 28 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -265,14 +265,14 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\xc8\x59\x5d\xe1\xba\xac\x13\x82" -+ "\xfd\x21\x7c\x8c\x23\x31\x04\x02" -+ "\x9e\x69\x5b\x57\xa8\x13\xe7\x21" -+ "\x60\x0c\x24\xc2\x80\x4a\x93\x6e", -+ .clen = 32 + 32, ++ "\x19\x1e\x9c\x2c\x6d\x4e\x21\xda" ++ "\x6c\x4d\x88\x90\xf8\x5f\xa5\x9d" ++ "\xb4\xd4\x40\xad\xfa\x67\x3f\x0e" ++ "\x11\x12\xd6\x10", ++ .clen = 32 + 28, + }, +}; + - static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { + 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.18/918-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.18/918-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index d0ced9c61a9..2a6321f7d3f 100644 --- a/target/linux/generic/backport-6.18/918-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.18/918-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 07cbbf6f38e6a91a7fecab3d6f86485425748d3e Mon Sep 17 00:00:00 2001 +From 5ac6b904c70ff163fd2f9e152056300ce5ed6c26 Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:23 +0100 -Subject: [PATCH 4/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha384),rfc3686(ctr(aes))) +Date: Thu, 5 Mar 2026 21:08:22 +0100 +Subject: [PATCH 3/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha256),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA384) computed with software implementation. +vectors and adding HMAC(SHA256) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 6 +- - crypto/testmgr.h | 263 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 268 insertions(+), 1 deletion(-) + crypto/testmgr.h | 235 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 240 insertions(+), 1 deletion(-) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4342,8 +4342,12 @@ static const struct alg_test_desc alg_te +@@ -4302,8 +4302,12 @@ static const struct alg_test_desc alg_te } }, { - .alg = "authenc(hmac(sha384),rfc3686(ctr(aes)))", + .alg = "authenc(hmac(sha256),rfc3686(ctr(aes)))", - .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha384-lib,rfc3686(ctr(aes-lib)))", ++ .generic_driver = "authenc(hmac-sha256-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha384_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_sha256_aes_ctr_rfc3686_tv_temp) + } }, { - .alg = "authenc(hmac(sha512),cbc(aes))", - .generic_driver = "authenc(hmac-sha512-lib,cbc(aes-generic))", + .alg = "authenc(hmac(sha384),cbc(aes))", + .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -17753,6 +17753,269 @@ static const struct aead_testvec hmac_sh +@@ -17327,6 +17327,241 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha384_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_sha256_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -52,12 +52,10 @@ Signed-off-by: Herbert Xu + "\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" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 48 + 20, ++ .klen = 8 + 32 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -65,13 +63,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\x45\x51\x59\x72\x16\xd3\xc6\x15" -+ "\x25\x1e\xe8\x92\x2e\x47\x52\xcc" -+ "\x91\x9c\x24\xef\x11\xb2\x53\x00" -+ "\x10\x20\x43\x06\xe2\x35\x88\x9e" -+ "\x18\x32\x5a\x79\x7d\x73\x7e\x89" -+ "\xfe\xa1\xda\xa4\x86\xc4\x2a\x04", -+ .clen = 16 + 48, ++ "\x9b\xa2\x34\x62\xe5\xb3\xe8\x2d" ++ "\x6d\xdb\x93\x64\xa5\x08\x2e\x77" ++ "\x72\x1f\x21\x94\xc7\xbe\x14\xa6" ++ "\xcd\xea\x96\xa1\x29\x8f\x30\xc3", ++ .clen = 16 + 32, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -85,12 +81,10 @@ Signed-off-by: Herbert Xu + "\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" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 48 + 20, ++ .klen = 8 + 32 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -103,13 +97,11 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\x83\x65\x32\x1e\x6b\x60\xe6\x4a" -+ "\xe2\xab\x52\x2b\xa6\x70\x3a\xfa" -+ "\xd2\xec\x83\xe4\x31\x0c\x28\x40" -+ "\x9b\x5e\x18\xa4\xdc\x48\xb8\x56" -+ "\x33\xab\x7f\x2b\xaf\xe4\x3a\xe3" -+ "\x8a\x61\xf6\x22\xb4\x6b\xfe\x7d", -+ .clen = 32 + 48, ++ "\x22\xf7\x95\xa8\xbb\xcd\x19\xf4" ++ "\x58\x16\x54\x28\x2b\xf4\x52\xe7" ++ "\x5c\x6c\xe1\x44\x0b\xd5\x10\x6e" ++ "\xe1\xf7\x04\xc4\x2c\xab\x93\xdd", ++ .clen = 32 + 32, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -123,12 +115,10 @@ Signed-off-by: Herbert Xu + "\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" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 48 + 20, ++ .klen = 8 + 32 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -143,13 +133,11 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\x4a\xaa\xad\x3b\x3b\xb6\x9a\xba" -+ "\xa1\x7b\xc6\xce\x96\xc3\xff\x67" -+ "\xf3\x0c\x33\x57\xf0\x51\x24\x08" -+ "\xed\x4f\x6a\x9c\x22\x42\xbd\x18" -+ "\x97\x74\x68\x36\x00\xf1\x69\x3a" -+ "\x18\x77\x40\xf0\x56\xba\xba\xe0", -+ .clen = 36 + 48, ++ "\x1d\x05\x5f\x77\x3b\x4f\x5c\x21" ++ "\x29\xea\xf1\xa8\x71\x49\x7b\x0b" ++ "\x66\x0d\xff\x18\x81\x63\xfc\xc3" ++ "\x91\xb6\x38\xc8\xcd\x2d\x39\x83", ++ .clen = 36 + 32, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -163,13 +151,11 @@ Signed-off-by: Herbert Xu + "\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" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 48 + 28, ++ .klen = 8 + 32 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -177,13 +163,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\x36\xd6\xc7\x55\xac\xb6\x0b\x14" -+ "\x95\x71\xf9\x86\x30\xe3\x96\xc3" -+ "\x76\x85\x6d\xa5\x06\xed\x6f\x34" -+ "\xcc\x1f\xcc\x2d\x88\x06\xb0\x1d" -+ "\xbe\xd9\xa2\xd3\x64\xf1\x33\x03" -+ "\x13\x50\x8f\xae\x61\x2d\x82\xb8", -+ .clen = 16 + 48, ++ "\x8d\x03\x77\xb2\x1c\xc9\xe0\xac" ++ "\xde\x69\xbe\x8a\xef\x5b\x13\x74" ++ "\x1d\x39\xbc\xdc\x95\xa4\xbf\xc3" ++ "\xd5\xc6\xd1\xda\xda\x3b\xca\x78", ++ .clen = 16 + 32, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -197,13 +181,11 @@ Signed-off-by: Herbert Xu + "\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" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 48 + 28, ++ .klen = 8 + 32 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -216,13 +198,11 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\x80\x12\x67\x22\xf2\x4d\x9b\xbf" -+ "\xdc\x38\xd3\xaa\x12\xc0\x58\x1a" -+ "\x9a\x62\x6e\x42\x3d\x44\x63\xdd" -+ "\xee\x7e\xe3\xa3\xdf\x2a\x65\x05" -+ "\xd0\xc1\xd2\x54\x55\x35\x5c\xc7" -+ "\xb0\xb5\xb1\x36\xe0\x0b\xaf\x72", -+ .clen = 32 + 48, ++ "\x34\x06\x2b\x3d\xf1\xa8\x3d\xf1" ++ "\xa6\x5e\x5c\x1a\xdb\x0c\xb5\x1e" ++ "\x8f\xdb\xf4\xca\x7d\x09\x5e\x81" ++ "\xdb\x32\x07\x4a\x1d\x1c\x6d\x83", ++ .clen = 32 + 32, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -236,14 +216,12 @@ Signed-off-by: Herbert Xu + "\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" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 48 + 36, ++ .klen = 8 + 32 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -251,13 +229,11 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\xb1\x7b\xb1\xec\xca\x94\x55\xc4" -+ "\x3f\x2b\xb1\x70\x04\x91\xf5\x9d" -+ "\x1a\xc0\xe1\x2a\x93\x5f\x96\x2a" -+ "\x12\x85\x38\x36\xe1\xb2\xe9\xf0" -+ "\xf2\x6e\x5d\x81\xcc\x49\x07\x9c" -+ "\x5b\x88\xc8\xcc\xc4\x21\x4f\x32", -+ .clen = 16 + 48, ++ "\xc3\xb4\x5f\xb0\xbf\xf5\x1b\xff" ++ "\x7c\xf1\x79\x00\x63\x50\xdd\x77" ++ "\xc0\x4a\xba\xcd\xdc\x47\x05\x2a" ++ "\x5d\x85\x2d\x83\x44\xca\x79\x2c", ++ .clen = 16 + 32, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -271,14 +247,12 @@ Signed-off-by: Herbert Xu + "\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" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 48 + 36, ++ .klen = 8 + 32 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -291,16 +265,14 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\xd6\x96\xbb\x12\x39\xc4\x4d\xe2" -+ "\x4c\x02\xe7\x1f\xdc\xb2\xb1\x57" -+ "\x38\x0d\xdd\x13\xb3\x89\x57\x9e" -+ "\x1f\xb5\x48\x32\xc4\xd3\x9d\x1f" -+ "\x68\xab\x8d\xc6\xa8\x05\x3a\xc2" -+ "\x87\xaf\x23\xb3\xe4\x1b\xde\xb3", -+ .clen = 32 + 48, ++ "\xc8\x59\x5d\xe1\xba\xac\x13\x82" ++ "\xfd\x21\x7c\x8c\x23\x31\x04\x02" ++ "\x9e\x69\x5b\x57\xa8\x13\xe7\x21" ++ "\x60\x0c\x24\xc2\x80\x4a\x93\x6e", ++ .clen = 32 + 32, + }, +}; + - static const struct aead_testvec hmac_sha512_aes_cbc_tv_temp[] = { + static const struct aead_testvec hmac_sha384_aes_cbc_tv_temp[] = { { /* RFC 3602 Case 1 */ #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/backport-6.18/919-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.18/919-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch index c5e7513b1ea..11a0c34eee2 100644 --- a/target/linux/generic/backport-6.18/919-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.18/919-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -1,11 +1,11 @@ -From 07f1bc80c478c7198065d3896ed3685428314a9c Mon Sep 17 00:00:00 2001 +From 2f0814271715f974ae1fc6247c9918906c83e24b Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:24 +0100 -Subject: [PATCH 5/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha512),rfc3686(ctr(aes))) +Date: Thu, 5 Mar 2026 21:08:23 +0100 +Subject: [PATCH 4/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha384),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA512) computed with software implementation. +vectors and adding HMAC(SHA384) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. @@ -13,32 +13,32 @@ Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- crypto/testmgr.c | 6 +- - crypto/testmgr.h | 291 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 296 insertions(+), 1 deletion(-) + crypto/testmgr.h | 263 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 268 insertions(+), 1 deletion(-) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4376,8 +4376,12 @@ static const struct alg_test_desc alg_te - .fips_allowed = 1, +@@ -4342,8 +4342,12 @@ static const struct alg_test_desc alg_te + } }, { - .alg = "authenc(hmac(sha512),rfc3686(ctr(aes)))", + .alg = "authenc(hmac(sha384),rfc3686(ctr(aes)))", - .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha512-lib,rfc3686(ctr(aes-lib)))", ++ .generic_driver = "authenc(hmac-sha384-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha512_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_sha384_aes_ctr_rfc3686_tv_temp) + } }, { - .alg = "blake2b-160", - .test = alg_test_hash, + .alg = "authenc(hmac(sha512),cbc(aes))", + .generic_driver = "authenc(hmac-sha512-lib,cbc(aes-generic))", --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -18412,6 +18412,297 @@ static const struct aead_testvec hmac_md +@@ -17873,6 +17873,269 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha512_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_sha384_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -54,12 +54,10 @@ Signed-off-by: Herbert Xu + "\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" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 64 + 20, ++ .klen = 8 + 48 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -67,15 +65,13 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\xa4\x45\x3a\x44\x9c\xe5\x1c\xd9" -+ "\x10\x43\x51\x2e\x76\x5e\xf8\x9d" -+ "\x03\x12\x1a\x31\x00\x33\x10\xb4" -+ "\x94\x4b\x70\x84\x6c\xda\xb1\x46" -+ "\x24\xb6\x3b\x2a\xec\xd5\x67\xb8" -+ "\x65\xa2\xbd\xac\x18\xe2\xf8\x55" -+ "\xc6\x91\xb0\x92\x84\x2d\x74\x44" -+ "\xa7\xee\xc3\x44\xa0\x07\x0e\x62", -+ .clen = 16 + 64, ++ "\x45\x51\x59\x72\x16\xd3\xc6\x15" ++ "\x25\x1e\xe8\x92\x2e\x47\x52\xcc" ++ "\x91\x9c\x24\xef\x11\xb2\x53\x00" ++ "\x10\x20\x43\x06\xe2\x35\x88\x9e" ++ "\x18\x32\x5a\x79\x7d\x73\x7e\x89" ++ "\xfe\xa1\xda\xa4\x86\xc4\x2a\x04", ++ .clen = 16 + 48, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -91,12 +87,10 @@ Signed-off-by: Herbert Xu + "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" + "\x40\x41\x42\x43\x44\x45\x46\x47" + "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" -+ "\x50\x51\x52\x53\x54\x55\x56\x57" -+ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 64 + 20, ++ .klen = 8 + 48 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -109,15 +103,13 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\xec\x67\x0d\xb3\xbd\x98\x13\x01" -+ "\x2b\x04\x9b\xe6\x06\x67\x3c\x76" -+ "\xcd\x41\xb7\xcc\x70\x6c\x7f\xc8" -+ "\x67\xbd\x22\x39\xb2\xaa\xe8\x88" -+ "\xe0\x4f\x81\x52\xdf\xc9\xc3\xd6" -+ "\x44\xf4\x66\x33\x87\x64\x61\x02" -+ "\x02\xa2\x64\x15\x2b\xe9\x0b\x3d" -+ "\x4c\xea\xa1\xa5\xa7\xc9\xd3\x1b", -+ .clen = 32 + 64, ++ "\x83\x65\x32\x1e\x6b\x60\xe6\x4a" ++ "\xe2\xab\x52\x2b\xa6\x70\x3a\xfa" ++ "\xd2\xec\x83\xe4\x31\x0c\x28\x40" ++ "\x9b\x5e\x18\xa4\xdc\x48\xb8\x56" ++ "\x33\xab\x7f\x2b\xaf\xe4\x3a\xe3" ++ "\x8a\x61\xf6\x22\xb4\x6b\xfe\x7d", ++ .clen = 32 + 48, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -133,12 +125,10 @@ Signed-off-by: Herbert Xu + "\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\x44" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 64 + 20, ++ .klen = 8 + 48 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -153,15 +143,13 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\x6f\x90\xb6\xa3\x35\x43\x59\xff" -+ "\x1e\x32\xd6\xfe\xfa\x33\xf9\xf0" -+ "\x31\x2f\x03\x2d\x88\x1d\xab\xbf" -+ "\x0e\x19\x16\xd9\xf3\x98\x3e\xdd" -+ "\x0c\xec\xfe\xe8\x89\x13\x91\x15" -+ "\xf6\x61\x65\x5c\x1b\x7d\xde\xc0" -+ "\xe4\xba\x6d\x27\xe2\x89\x23\x24" -+ "\x15\x82\x37\x3d\x48\xd3\xc9\x32", -+ .clen = 36 + 64, ++ "\x4a\xaa\xad\x3b\x3b\xb6\x9a\xba" ++ "\xa1\x7b\xc6\xce\x96\xc3\xff\x67" ++ "\xf3\x0c\x33\x57\xf0\x51\x24\x08" ++ "\xed\x4f\x6a\x9c\x22\x42\xbd\x18" ++ "\x97\x74\x68\x36\x00\xf1\x69\x3a" ++ "\x18\x77\x40\xf0\x56\xba\xba\xe0", ++ .clen = 36 + 48, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -177,13 +165,11 @@ Signed-off-by: Herbert Xu + "\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" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 64 + 28, ++ .klen = 8 + 48 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -191,15 +177,13 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\x25\xea\xdc\xad\x52\xb8\x0f\x70" -+ "\xe7\x39\x83\x80\x10\x3f\x18\xc4" -+ "\xf8\x59\x14\x25\x5f\xba\x20\x87" -+ "\x0b\x04\x5e\xf7\xde\x41\x39\xff" -+ "\xa2\xee\x84\x3f\x9d\x38\xfd\x17" -+ "\xc0\x66\x5e\x74\x39\xe3\xd3\xd7" -+ "\x3d\xbc\xe3\x99\x2f\xe7\xef\x37" -+ "\x61\x03\xf3\x9e\x01\xaf\xba\x9d", -+ .clen = 16 + 64, ++ "\x36\xd6\xc7\x55\xac\xb6\x0b\x14" ++ "\x95\x71\xf9\x86\x30\xe3\x96\xc3" ++ "\x76\x85\x6d\xa5\x06\xed\x6f\x34" ++ "\xcc\x1f\xcc\x2d\x88\x06\xb0\x1d" ++ "\xbe\xd9\xa2\xd3\x64\xf1\x33\x03" ++ "\x13\x50\x8f\xae\x61\x2d\x82\xb8", ++ .clen = 16 + 48, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -215,13 +199,11 @@ Signed-off-by: Herbert Xu + "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" + "\x40\x41\x42\x43\x44\x45\x46\x47" + "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" -+ "\x50\x51\x52\x53\x54\x55\x56\x57" -+ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 64 + 28, ++ .klen = 8 + 48 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -234,15 +216,13 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\x51\xa3\xe6\x1d\x23\x7d\xd1\x18" -+ "\x55\x9c\x1c\x92\x2b\xc2\xcd\xfe" -+ "\x8a\xa8\xa5\x96\x65\x2e\x9d\xdb" -+ "\x06\xd2\x1c\x57\x2b\x76\xb5\x9c" -+ "\xd4\x3e\x8b\x61\x54\x2d\x08\xe5" -+ "\xb2\xf8\x88\x20\x0c\xad\xe8\x85" -+ "\x61\x8e\x5c\xa4\x96\x2c\xe2\x7d" -+ "\x4f\xb6\x1d\xb2\x8c\xd7\xe3\x38", -+ .clen = 32 + 64, ++ "\x80\x12\x67\x22\xf2\x4d\x9b\xbf" ++ "\xdc\x38\xd3\xaa\x12\xc0\x58\x1a" ++ "\x9a\x62\x6e\x42\x3d\x44\x63\xdd" ++ "\xee\x7e\xe3\xa3\xdf\x2a\x65\x05" ++ "\xd0\xc1\xd2\x54\x55\x35\x5c\xc7" ++ "\xb0\xb5\xb1\x36\xe0\x0b\xaf\x72", ++ .clen = 32 + 48, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -258,14 +238,12 @@ Signed-off-by: Herbert Xu + "\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" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 64 + 36, ++ .klen = 8 + 48 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -273,15 +251,13 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\x6b\x68\x0b\x99\x9a\x4d\xc8\xb9" -+ "\x35\xea\xcd\x56\x3f\x40\xa2\xb6" -+ "\x68\xda\x59\xd8\xa0\x89\xcd\x52" -+ "\xb1\x6e\xed\xc1\x42\x10\xa5\x0f" -+ "\x88\x0b\x80\xce\xc4\x67\xf0\x45" -+ "\x5d\xb2\x9e\xde\x1c\x79\x52\x0d" -+ "\xff\x75\x36\xd5\x0f\x52\x8e\xe5" -+ "\x31\x85\xcf\x1d\x31\xf8\x62\x67", -+ .clen = 16 + 64, ++ "\xb1\x7b\xb1\xec\xca\x94\x55\xc4" ++ "\x3f\x2b\xb1\x70\x04\x91\xf5\x9d" ++ "\x1a\xc0\xe1\x2a\x93\x5f\x96\x2a" ++ "\x12\x85\x38\x36\xe1\xb2\xe9\xf0" ++ "\xf2\x6e\x5d\x81\xcc\x49\x07\x9c" ++ "\x5b\x88\xc8\xcc\xc4\x21\x4f\x32", ++ .clen = 16 + 48, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -297,14 +273,12 @@ Signed-off-by: Herbert Xu + "\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f" + "\x40\x41\x42\x43\x44\x45\x46\x47" + "\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f" -+ "\x50\x51\x52\x53\x54\x55\x56\x57" -+ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 64 + 36, ++ .klen = 8 + 48 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -317,18 +291,16 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\x9a\xac\x38\xbd\xf3\xcf\xd5\xd0" -+ "\x09\x07\xa6\xe1\x7f\xd6\x79\x98" -+ "\x4e\x90\x0e\xc0\x3d\xa0\xf2\x12" -+ "\x52\x79\x9c\x17\xff\xb9\xb8\xe3" -+ "\x2f\x31\xcb\xbd\x63\x70\x72\x7b" -+ "\x4e\x1e\xd1\xde\xb5\x6b\x7d\x54" -+ "\x68\x56\xdd\xe5\x53\xee\x29\xd2" -+ "\x85\xa1\x73\x61\x00\xa9\x26\x8f", -+ .clen = 32 + 64, ++ "\xd6\x96\xbb\x12\x39\xc4\x4d\xe2" ++ "\x4c\x02\xe7\x1f\xdc\xb2\xb1\x57" ++ "\x38\x0d\xdd\x13\xb3\x89\x57\x9e" ++ "\x1f\xb5\x48\x32\xc4\xd3\x9d\x1f" ++ "\x68\xab\x8d\xc6\xa8\x05\x3a\xc2" ++ "\x87\xaf\x23\xb3\xe4\x1b\xde\xb3", ++ .clen = 32 + 48, + }, +}; + - static const struct aead_testvec hmac_sha1_des_cbc_tv_temp[] = { - { /*Generated with cryptopp*/ + 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.18/920-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.18/920-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch new file mode 100644 index 00000000000..42f6b10eec6 --- /dev/null +++ b/target/linux/generic/backport-6.18/920-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch @@ -0,0 +1,334 @@ +From 82fc2b17fa5b9b12d34770afcc8e3c4288735429 Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Thu, 5 Mar 2026 21:08:24 +0100 +Subject: [PATCH 5/5] crypto: testmgr - Add test vectors for + authenc(hmac(sha512),rfc3686(ctr(aes))) + +Test vectors were generated starting from existing RFC3686(CTR(AES)) test +vectors and adding HMAC(SHA512) computed with software implementation. +Then, the results were double-checked on Mediatek MT7986 (safexcel). +Platform pass self-tests. + +Signed-off-by: Aleksander Jan Bajkowski +Signed-off-by: Herbert Xu +--- + crypto/testmgr.c | 6 +- + crypto/testmgr.h | 291 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 296 insertions(+), 1 deletion(-) + +--- a/crypto/testmgr.c ++++ b/crypto/testmgr.c +@@ -4376,8 +4376,12 @@ static const struct alg_test_desc alg_te + .fips_allowed = 1, + }, { + .alg = "authenc(hmac(sha512),rfc3686(ctr(aes)))", +- .test = alg_test_null, ++ .generic_driver = "authenc(hmac-sha512-lib,rfc3686(ctr(aes-lib)))", ++ .test = alg_test_aead, + .fips_allowed = 1, ++ .suite = { ++ .aead = __VECS(hmac_sha512_aes_ctr_rfc3686_tv_temp) ++ } + }, { + .alg = "blake2b-160", + .test = alg_test_hash, +--- a/crypto/testmgr.h ++++ b/crypto/testmgr.h +@@ -18532,6 +18532,297 @@ static const struct aead_testvec hmac_md + }, + }; + ++static const struct aead_testvec hmac_sha512_aes_ctr_rfc3686_tv_temp[] = { ++ { /* RFC 3686 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\x14" /* 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" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\xae\x68\x52\xf8\x12\x10\x67\xcc" ++ "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" ++ "\x00\x00\x00\x30", ++ .klen = 8 + 64 + 20, ++ .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", ++ .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", ++ .alen = 8, ++ .ptext = "Single block msg", ++ .plen = 16, ++ .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" ++ "\x2d\x61\x75\xa3\x26\x13\x11\xb8" ++ "\xa4\x45\x3a\x44\x9c\xe5\x1c\xd9" ++ "\x10\x43\x51\x2e\x76\x5e\xf8\x9d" ++ "\x03\x12\x1a\x31\x00\x33\x10\xb4" ++ "\x94\x4b\x70\x84\x6c\xda\xb1\x46" ++ "\x24\xb6\x3b\x2a\xec\xd5\x67\xb8" ++ "\x65\xa2\xbd\xac\x18\xe2\xf8\x55" ++ "\xc6\x91\xb0\x92\x84\x2d\x74\x44" ++ "\xa7\xee\xc3\x44\xa0\x07\x0e\x62", ++ .clen = 16 + 64, ++ }, { /* RFC 3686 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\x14" /* 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" ++ "\x50\x51\x52\x53\x54\x55\x56\x57" ++ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" ++ "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" ++ "\x43\xd6\xce\x1f\x32\x53\x91\x63" ++ "\x00\x6c\xb6\xdb", ++ .klen = 8 + 64 + 20, ++ .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", ++ .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", ++ .alen = 8, ++ .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 = "\x51\x04\xa1\x06\x16\x8a\x72\xd9" ++ "\x79\x0d\x41\xee\x8e\xda\xd3\x88" ++ "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" ++ "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" ++ "\xec\x67\x0d\xb3\xbd\x98\x13\x01" ++ "\x2b\x04\x9b\xe6\x06\x67\x3c\x76" ++ "\xcd\x41\xb7\xcc\x70\x6c\x7f\xc8" ++ "\x67\xbd\x22\x39\xb2\xaa\xe8\x88" ++ "\xe0\x4f\x81\x52\xdf\xc9\xc3\xd6" ++ "\x44\xf4\x66\x33\x87\x64\x61\x02" ++ "\x02\xa2\x64\x15\x2b\xe9\x0b\x3d" ++ "\x4c\xea\xa1\xa5\xa7\xc9\xd3\x1b", ++ .clen = 32 + 64, ++ }, { /* RFC 3686 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\x14" /* 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" ++ "\x44\x55\x66\x77\x88\x99\xaa\xbb" ++ "\xcc\xdd\xee\xff\x11\x22\x33\x44" ++ "\x76\x91\xbe\x03\x5e\x50\x20\xa8" ++ "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" ++ "\x00\xe0\x01\x7b", ++ .klen = 8 + 64 + 20, ++ .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", ++ .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", ++ .alen = 8, ++ .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" ++ "\x20\x21\x22\x23", ++ .plen = 36, ++ .ctext = "\xc1\xcf\x48\xa8\x9f\x2f\xfd\xd9" ++ "\xcf\x46\x52\xe9\xef\xdb\x72\xd7" ++ "\x45\x40\xa4\x2b\xde\x6d\x78\x36" ++ "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" ++ "\x25\xb2\x07\x2f" ++ "\x6f\x90\xb6\xa3\x35\x43\x59\xff" ++ "\x1e\x32\xd6\xfe\xfa\x33\xf9\xf0" ++ "\x31\x2f\x03\x2d\x88\x1d\xab\xbf" ++ "\x0e\x19\x16\xd9\xf3\x98\x3e\xdd" ++ "\x0c\xec\xfe\xe8\x89\x13\x91\x15" ++ "\xf6\x61\x65\x5c\x1b\x7d\xde\xc0" ++ "\xe4\xba\x6d\x27\xe2\x89\x23\x24" ++ "\x15\x82\x37\x3d\x48\xd3\xc9\x32", ++ .clen = 36 + 64, ++ }, { /* RFC 3686 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\x1c" /* 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" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" ++ "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" ++ "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" ++ "\x00\x00\x00\x48", ++ .klen = 8 + 64 + 28, ++ .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", ++ .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", ++ .alen = 8, ++ .ptext = "Single block msg", ++ .plen = 16, ++ .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" ++ "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" ++ "\x25\xea\xdc\xad\x52\xb8\x0f\x70" ++ "\xe7\x39\x83\x80\x10\x3f\x18\xc4" ++ "\xf8\x59\x14\x25\x5f\xba\x20\x87" ++ "\x0b\x04\x5e\xf7\xde\x41\x39\xff" ++ "\xa2\xee\x84\x3f\x9d\x38\xfd\x17" ++ "\xc0\x66\x5e\x74\x39\xe3\xd3\xd7" ++ "\x3d\xbc\xe3\x99\x2f\xe7\xef\x37" ++ "\x61\x03\xf3\x9e\x01\xaf\xba\x9d", ++ .clen = 16 + 64, ++ }, { /* RFC 3686 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\x1c" /* 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" ++ "\x50\x51\x52\x53\x54\x55\x56\x57" ++ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" ++ "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" ++ "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" ++ "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" ++ "\x00\x96\xb0\x3b", ++ .klen = 8 + 64 + 28, ++ .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", ++ .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", ++ .alen = 8, ++ .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 = "\x45\x32\x43\xfc\x60\x9b\x23\x32" ++ "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" ++ "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" ++ "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" ++ "\x51\xa3\xe6\x1d\x23\x7d\xd1\x18" ++ "\x55\x9c\x1c\x92\x2b\xc2\xcd\xfe" ++ "\x8a\xa8\xa5\x96\x65\x2e\x9d\xdb" ++ "\x06\xd2\x1c\x57\x2b\x76\xb5\x9c" ++ "\xd4\x3e\x8b\x61\x54\x2d\x08\xe5" ++ "\xb2\xf8\x88\x20\x0c\xad\xe8\x85" ++ "\x61\x8e\x5c\xa4\x96\x2c\xe2\x7d" ++ "\x4f\xb6\x1d\xb2\x8c\xd7\xe3\x38", ++ .clen = 32 + 64, ++ }, { /* RFC 3686 Case 7 */ ++#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\x24" /* 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" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x00\x00\x00\x00\x00\x00\x00\x00" ++ "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" ++ "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" ++ "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" ++ "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" ++ "\x00\x00\x00\x60", ++ .klen = 8 + 64 + 36, ++ .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", ++ .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", ++ .alen = 8, ++ .ptext = "Single block msg", ++ .plen = 16, ++ .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" ++ "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" ++ "\x6b\x68\x0b\x99\x9a\x4d\xc8\xb9" ++ "\x35\xea\xcd\x56\x3f\x40\xa2\xb6" ++ "\x68\xda\x59\xd8\xa0\x89\xcd\x52" ++ "\xb1\x6e\xed\xc1\x42\x10\xa5\x0f" ++ "\x88\x0b\x80\xce\xc4\x67\xf0\x45" ++ "\x5d\xb2\x9e\xde\x1c\x79\x52\x0d" ++ "\xff\x75\x36\xd5\x0f\x52\x8e\xe5" ++ "\x31\x85\xcf\x1d\x31\xf8\x62\x67", ++ .clen = 16 + 64, ++ }, { /* RFC 3686 Case 8 */ ++#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\x24" /* 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" ++ "\x50\x51\x52\x53\x54\x55\x56\x57" ++ "\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f" ++ "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" ++ "\x07\x96\x36\x58\x79\xef\xf8\x86" ++ "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" ++ "\x4b\x50\x59\x0c\x87\xa2\x38\x84" ++ "\x00\xfa\xac\x24", ++ .klen = 8 + 64 + 36, ++ .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", ++ .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", ++ .alen = 8, ++ .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 = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c" ++ "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" ++ "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" ++ "\x55\x30\x83\x1d\x93\x44\xaf\x1c" ++ "\x9a\xac\x38\xbd\xf3\xcf\xd5\xd0" ++ "\x09\x07\xa6\xe1\x7f\xd6\x79\x98" ++ "\x4e\x90\x0e\xc0\x3d\xa0\xf2\x12" ++ "\x52\x79\x9c\x17\xff\xb9\xb8\xe3" ++ "\x2f\x31\xcb\xbd\x63\x70\x72\x7b" ++ "\x4e\x1e\xd1\xde\xb5\x6b\x7d\x54" ++ "\x68\x56\xdd\xe5\x53\xee\x29\xd2" ++ "\x85\xa1\x73\x61\x00\xa9\x26\x8f", ++ .clen = 32 + 64, ++ }, ++}; ++ + static const struct aead_testvec hmac_sha1_des_cbc_tv_temp[] = { + { /*Generated with cryptopp*/ + #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/backport-6.18/921-v7.1-crypto-tesmgr-allow-authenc-hmac-sha224-sha384-cbc-a.patch b/target/linux/generic/backport-6.18/921-v7.1-crypto-tesmgr-allow-authenc-hmac-sha224-sha384-cbc-a.patch new file mode 100644 index 00000000000..ddaa285d5d6 --- /dev/null +++ b/target/linux/generic/backport-6.18/921-v7.1-crypto-tesmgr-allow-authenc-hmac-sha224-sha384-cbc-a.patch @@ -0,0 +1,33 @@ +From 0441ee8d35ad6998da5043c65c4124904e8daee2 Mon Sep 17 00:00:00 2001 +From: Aleksander Jan Bajkowski +Date: Fri, 6 Feb 2026 20:26:59 +0100 +Subject: [PATCH] crypto: tesmgr - allow authenc(hmac(sha224/sha384),cbc(aes)) + in fips mode + +The remaining combinations of AES-CBC and SHA* have already been marked +as allowed. This commit does the same for SHA224 and SHA384. + +Signed-off-by: Aleksander Jan Bajkowski +Signed-off-by: Herbert Xu +--- + crypto/testmgr.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/crypto/testmgr.c ++++ b/crypto/testmgr.c +@@ -4242,6 +4242,7 @@ static const struct alg_test_desc alg_te + .alg = "authenc(hmac(sha224),cbc(aes))", + .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", + .test = alg_test_aead, ++ .fips_allowed = 1, + .suite = { + .aead = __VECS(hmac_sha224_aes_cbc_tv_temp) + } +@@ -4312,6 +4313,7 @@ static const struct alg_test_desc alg_te + .alg = "authenc(hmac(sha384),cbc(aes))", + .generic_driver = "authenc(hmac-sha384-lib,cbc(aes-generic))", + .test = alg_test_aead, ++ .fips_allowed = 1, + .suite = { + .aead = __VECS(hmac_sha384_aes_cbc_tv_temp) + } diff --git a/target/linux/generic/backport-6.12/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch b/target/linux/generic/backport-6.18/922-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch similarity index 74% rename from target/linux/generic/backport-6.12/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch rename to target/linux/generic/backport-6.18/922-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch index c6018305d47..6fb705a5fb9 100644 --- a/target/linux/generic/backport-6.12/915-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-sha.patch +++ b/target/linux/generic/backport-6.18/922-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -1,44 +1,44 @@ -From 2a2468bf33d3fac5192429207a439d23e615173a Mon Sep 17 00:00:00 2001 +From d0c0a414cc1893b195b9523ecdfbeee00b98fd0d Mon Sep 17 00:00:00 2001 From: Aleksander Jan Bajkowski -Date: Thu, 5 Mar 2026 21:08:20 +0100 -Subject: [PATCH 1/5] crypto: testmgr - Add test vectors for - authenc(hmac(sha1),rfc3686(ctr(aes))) +Date: Thu, 19 Mar 2026 18:11:21 +0100 +Subject: [PATCH] crypto: testmgr - Add test vectors for + authenc(hmac(md5),rfc3686(ctr(aes))) Test vectors were generated starting from existing RFC3686(CTR(AES)) test -vectors and adding HMAC(SHA1) computed with software implementation. +vectors and adding HMAC(MD5) computed with software implementation. Then, the results were double-checked on Mediatek MT7986 (safexcel). Platform pass self-tests. Signed-off-by: Aleksander Jan Bajkowski Signed-off-by: Herbert Xu --- - crypto/testmgr.c | 6 +- - crypto/testmgr.h | 221 +++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 226 insertions(+), 1 deletion(-) + crypto/testmgr.c | 7 ++ + crypto/testmgr.h | 207 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 214 insertions(+) --- a/crypto/testmgr.c +++ b/crypto/testmgr.c -@@ -4425,8 +4425,12 @@ static const struct alg_test_desc alg_te +@@ -4198,6 +4198,13 @@ static const struct alg_test_desc alg_te + .aead = __VECS(hmac_md5_ecb_cipher_null_tv_template) } }, { - .alg = "authenc(hmac(sha1),rfc3686(ctr(aes)))", -- .test = alg_test_null, -+ .generic_driver = "authenc(hmac-sha1-lib,rfc3686(ctr(aes-lib)))", ++ .alg = "authenc(hmac(md5),rfc3686(ctr(aes)))", ++ .generic_driver = "authenc(hmac-md5-lib,rfc3686(ctr(aes-lib)))", + .test = alg_test_aead, - .fips_allowed = 1, + .suite = { -+ .aead = __VECS(hmac_sha1_aes_ctr_rfc3686_tv_temp) ++ .aead = __VECS(hmac_md5_aes_ctr_rfc3686_tv_temp) + } - }, { - .alg = "authenc(hmac(sha224),cbc(aes))", - .generic_driver = "authenc(hmac-sha224-lib,cbc(aes-generic))", ++ }, { + .alg = "authenc(hmac(sha1),cbc(aes))", + .generic_driver = "authenc(hmac-sha1-lib,cbc(aes-generic))", + .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -17444,6 +17444,227 @@ static const struct aead_testvec hmac_sh +@@ -19136,6 +19136,213 @@ static const struct aead_testvec hmac_sh }, }; -+static const struct aead_testvec hmac_sha1_aes_ctr_rfc3686_tv_temp[] = { ++static const struct aead_testvec hmac_md5_aes_ctr_rfc3686_tv_temp[] = { + { /* RFC 3686 Case 1 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -50,11 +50,10 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* enc key length */ + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00" -+ "\x00\x00\x00\x00" + "\xae\x68\x52\xf8\x12\x10\x67\xcc" + "\x4b\xf7\xa5\x76\x55\x77\xf3\x9e" + "\x00\x00\x00\x30", -+ .klen = 8 + 20 + 20, ++ .klen = 8 + 16 + 20, + .iv = "\x00\x00\x00\x00\x00\x00\x00\x00", + .assoc = "\x00\x00\x00\x00\x00\x00\x00\x00", + .alen = 8, @@ -62,10 +61,9 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79" + "\x2d\x61\x75\xa3\x26\x13\x11\xb8" -+ "\x70\xdc\x6b\x62\x43\xa1\x2f\x08" -+ "\xf1\xec\x93\x7d\x69\xb2\x8e\x1f" -+ "\x0a\x97\x39\x86", -+ .clen = 16 + 20, ++ "\xdd\x5f\xea\x13\x2a\xf2\xb0\xf1" ++ "\x91\x79\x46\x40\x62\x6c\x87\x5b", ++ .clen = 16 + 16, + }, { /* RFC 3686 Case 2 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -77,11 +75,10 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* enc key length */ + "\x20\x21\x22\x23\x24\x25\x26\x27" + "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" -+ "\x30\x31\x32\x33" + "\x7e\x24\x06\x78\x17\xfa\xe0\xd7" + "\x43\xd6\xce\x1f\x32\x53\x91\x63" + "\x00\x6c\xb6\xdb", -+ .klen = 8 + 20 + 20, ++ .klen = 8 + 16 + 20, + .iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .assoc = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b", + .alen = 8, @@ -94,10 +91,9 @@ Signed-off-by: Herbert Xu + "\x79\x0d\x41\xee\x8e\xda\xd3\x88" + "\xeb\x2e\x1e\xfc\x46\xda\x57\xc8" + "\xfc\xe6\x30\xdf\x91\x41\xbe\x28" -+ "\x6b\x7b\x4d\x39\x36\x1c\x12\x5f" -+ "\x72\xd2\x88\xb2\x26\xa6\xa6\xb5" -+ "\x1d\x3a\x49\xa6", -+ .clen = 32 + 20, ++ "\x03\x39\x23\xcd\x22\x5f\x1b\x8b" ++ "\x93\x70\xbc\x45\xf3\xba\xde\x2e", ++ .clen = 32 + 16, + }, { /* RFC 3686 Case 3 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -109,11 +105,10 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x14" /* enc key length */ + "\x11\x22\x33\x44\x55\x66\x77\x88" + "\x99\xaa\xbb\xcc\xdd\xee\xff\x11" -+ "\x22\x33\x44\x55" + "\x76\x91\xbe\x03\x5e\x50\x20\xa8" + "\xac\x6e\x61\x85\x29\xf9\xa0\xdc" + "\x00\xe0\x01\x7b", -+ .klen = 8 + 20 + 20, ++ .klen = 8 + 16 + 20, + .iv = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .assoc = "\x27\x77\x7f\x3f\x4a\x17\x86\xf0", + .alen = 8, @@ -128,10 +123,9 @@ Signed-off-by: Herbert Xu + "\x45\x40\xa4\x2b\xde\x6d\x78\x36" + "\xd5\x9a\x5c\xea\xae\xf3\x10\x53" + "\x25\xb2\x07\x2f" -+ "\x2c\x86\xa0\x90\x8e\xc1\x02\x1d" -+ "\x51\xdc\xd6\x21\xc7\x30\xcc\x32" -+ "\x38\x55\x47\x64", -+ .clen = 36 + 20, ++ "\xb4\x40\x0c\x7b\x4c\x55\x8a\x4b" ++ "\x04\xf7\x48\x9e\x0f\x9a\xae\x73", ++ .clen = 36 + 16, + }, { /* RFC 3686 Case 4 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -143,12 +137,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x1c" /* enc key length */ + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00" -+ "\x00\x00\x00\x00" + "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79" + "\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed" + "\x86\x3d\x06\xcc\xfd\xb7\x85\x15" + "\x00\x00\x00\x48", -+ .klen = 8 + 20 + 28, ++ .klen = 8 + 16 + 28, + .iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .assoc = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb", + .alen = 8, @@ -156,10 +149,9 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8" + "\x4e\x79\x35\xa0\x03\xcb\xe9\x28" -+ "\xe9\x4e\x49\xf0\x6b\x8d\x58\x2b" -+ "\x26\x7f\xf3\xab\xeb\x2f\x74\x2f" -+ "\x45\x43\x64\xc1", -+ .clen = 16 + 20, ++ "\xc4\x5d\xa1\x16\x6c\x2d\xa5\x43" ++ "\x60\x7b\x58\x98\x11\x9b\x50\x06", ++ .clen = 16 + 16, + }, { /* RFC 3686 Case 5 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -171,12 +163,11 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x1c" /* enc key length */ + "\x20\x21\x22\x23\x24\x25\x26\x27" + "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" -+ "\x30\x31\x32\x33" + "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c" + "\x19\xe7\x34\x08\x19\xe0\xf6\x9c" + "\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a" + "\x00\x96\xb0\x3b", -+ .klen = 8 + 20 + 28, ++ .klen = 8 + 16 + 28, + .iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .assoc = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d", + .alen = 8, @@ -189,10 +180,9 @@ Signed-off-by: Herbert Xu + "\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f" + "\x84\x90\x70\x1c\x5a\xd4\xa7\x9c" + "\xfc\x1f\xe0\xff\x42\xf4\xfb\x00" -+ "\xab\xc4\xfa\x6d\x20\xe1\xce\x72" -+ "\x0e\x92\x4e\x97\xaa\x4d\x30\x84" -+ "\xb6\xd8\x4d\x3b", -+ .clen = 32 + 20, ++ "\xc5\xec\x47\x33\xae\x05\x28\x49" ++ "\xd5\x2b\x08\xad\x10\x98\x24\x01", ++ .clen = 32 + 16, + }, { /* RFC 3686 Case 7 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -204,13 +194,12 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x24" /* enc key length */ + "\x00\x00\x00\x00\x00\x00\x00\x00" + "\x00\x00\x00\x00\x00\x00\x00\x00" -+ "\x00\x00\x00\x00" + "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f" + "\x4c\x8a\x05\x42\xc8\x69\x6f\x6c" + "\x6a\x81\xaf\x1e\xec\x96\xb4\xd3" + "\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04" + "\x00\x00\x00\x60", -+ .klen = 8 + 20 + 36, ++ .klen = 8 + 16 + 36, + .iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .assoc = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2", + .alen = 8, @@ -218,10 +207,9 @@ Signed-off-by: Herbert Xu + .plen = 16, + .ctext = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7" + "\x56\x08\x63\xdc\x71\xe3\xe0\xc0" -+ "\x3d\x6c\x23\x27\xda\x0e\x7f\x29" -+ "\xfd\x8d\x3c\x1b\xf7\x7a\x63\xd9" -+ "\x7e\x0f\xe9\xf6", -+ .clen = 16 + 20, ++ "\xc6\x26\xb2\x27\x0d\x21\xd4\x40" ++ "\x6c\x4f\x53\xea\x19\x75\xda\x8e", ++ .clen = 16 + 16, + }, { /* RFC 3686 Case 8 */ +#ifdef __LITTLE_ENDIAN + .key = "\x08\x00" /* rta length */ @@ -233,13 +221,12 @@ Signed-off-by: Herbert Xu + "\x00\x00\x00\x24" /* enc key length */ + "\x20\x21\x22\x23\x24\x25\x26\x27" + "\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f" -+ "\x30\x31\x32\x33" + "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb" + "\x07\x96\x36\x58\x79\xef\xf8\x86" + "\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74" + "\x4b\x50\x59\x0c\x87\xa2\x38\x84" + "\x00\xfa\xac\x24", -+ .klen = 8 + 20 + 36, ++ .klen = 8 + 16 + 36, + .iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .assoc = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75", + .alen = 8, @@ -252,13 +239,12 @@ Signed-off-by: Herbert Xu + "\x49\xee\x00\x0b\x80\x4e\xb2\xa9" + "\xb8\x30\x6b\x50\x8f\x83\x9d\x6a" + "\x55\x30\x83\x1d\x93\x44\xaf\x1c" -+ "\xe7\xee\x22\xa4\xdd\xbf\x5d\x44" -+ "\x3b\x43\x1c\x69\x55\x11\xd5\xad" -+ "\x14\x5f\x44\xa6", -+ .clen = 32 + 20, ++ "\x8c\x4d\x2a\x8d\x23\x47\x59\x6f" ++ "\x1e\x74\x62\x39\xed\x14\x50\x6c", ++ .clen = 32 + 16, + }, +}; + - static const struct aead_testvec hmac_sha1_ecb_cipher_null_tv_temp[] = { - { /* Input data from RFC 2410 Case 1 */ + static const struct aead_testvec hmac_md5_des3_ede_cbc_tv_temp[] = { + { /*Generated with cryptopp*/ #ifdef __LITTLE_ENDIAN diff --git a/target/linux/generic/pending-6.18/910-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch b/target/linux/generic/backport-6.18/923-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch similarity index 99% rename from target/linux/generic/pending-6.18/910-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch rename to target/linux/generic/backport-6.18/923-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch index c79f93a5a85..ac27fb31739 100644 --- a/target/linux/generic/pending-6.18/910-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch +++ b/target/linux/generic/backport-6.18/923-v7.1-crypto-testmgr-Add-test-vectors-for-authenc-hmac-md5.patch @@ -33,7 +33,7 @@ Signed-off-by: Aleksander Jan Bajkowski .test = alg_test_aead, --- a/crypto/testmgr.h +++ b/crypto/testmgr.h -@@ -15826,6 +15826,261 @@ static const struct cipher_testvec aes_c +@@ -15946,6 +15946,261 @@ static const struct cipher_testvec aes_c }, };