Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

lib/crypto: tests: Add KUnit tests for NH

Add some simple KUnit tests for the nh() function.

These replace the test coverage which will be lost by removing the
nhpoly1305 crypto_shash.

Note that the NH code also continues to be tested indirectly as well,
via the tests for the "adiantum(xchacha12,aes)" crypto_skcipher.

Link: https://lore.kernel.org/r/20251211011846.8179-3-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>

+390
+8
lib/crypto/tests/Kconfig
··· 47 47 help 48 48 KUnit tests for the ML-DSA digital signature algorithm. 49 49 50 + config CRYPTO_LIB_NH_KUNIT_TEST 51 + tristate "KUnit tests for NH" if !KUNIT_ALL_TESTS 52 + depends on KUNIT 53 + default KUNIT_ALL_TESTS || CRYPTO_SELFTESTS 54 + select CRYPTO_LIB_NH 55 + help 56 + KUnit tests for the NH almost-universal hash function. 57 + 50 58 config CRYPTO_LIB_POLY1305_KUNIT_TEST 51 59 tristate "KUnit tests for Poly1305" if !KUNIT_ALL_TESTS 52 60 depends on KUNIT
+1
lib/crypto/tests/Makefile
··· 5 5 obj-$(CONFIG_CRYPTO_LIB_CURVE25519_KUNIT_TEST) += curve25519_kunit.o 6 6 obj-$(CONFIG_CRYPTO_LIB_MD5_KUNIT_TEST) += md5_kunit.o 7 7 obj-$(CONFIG_CRYPTO_LIB_MLDSA_KUNIT_TEST) += mldsa_kunit.o 8 + obj-$(CONFIG_CRYPTO_LIB_NH_KUNIT_TEST) += nh_kunit.o 8 9 obj-$(CONFIG_CRYPTO_LIB_POLY1305_KUNIT_TEST) += poly1305_kunit.o 9 10 obj-$(CONFIG_CRYPTO_LIB_POLYVAL_KUNIT_TEST) += polyval_kunit.o 10 11 obj-$(CONFIG_CRYPTO_LIB_SHA1_KUNIT_TEST) += sha1_kunit.o
+298
lib/crypto/tests/nh-testvecs.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 + /* This file was generated by: ./scripts/crypto/gen-hash-testvecs.py nh */ 3 + 4 + static const u8 nh_test_key[NH_KEY_BYTES] = { 5 + 0x04, 0x59, 0x66, 0x92, 0x81, 0xd7, 0xe9, 0x25, 6 + 0x68, 0xfa, 0xb0, 0xca, 0x9f, 0xea, 0x98, 0xca, 7 + 0xcd, 0xbf, 0x6d, 0xa5, 0x0c, 0x22, 0xc3, 0x57, 8 + 0xdc, 0x35, 0x05, 0xdd, 0x5b, 0xb0, 0xce, 0xf6, 9 + 0xb2, 0x4c, 0x77, 0x2e, 0xd2, 0x63, 0xf0, 0x17, 10 + 0x60, 0xd8, 0xd3, 0xd9, 0xed, 0x34, 0xb6, 0xed, 11 + 0x6a, 0x11, 0xc0, 0x25, 0xda, 0xba, 0x7e, 0xef, 12 + 0x49, 0x13, 0xf7, 0xd9, 0xfc, 0xb6, 0xfd, 0x58, 13 + 0xe9, 0x5f, 0xc5, 0xc4, 0x69, 0x89, 0xba, 0xa6, 14 + 0x2b, 0x58, 0x8d, 0x36, 0x6c, 0xb9, 0x90, 0x1e, 15 + 0x64, 0xc7, 0x44, 0x84, 0x03, 0x70, 0x30, 0x47, 16 + 0xdd, 0x58, 0xf4, 0x87, 0x61, 0xfd, 0x9c, 0x6b, 17 + 0x51, 0x1b, 0x39, 0x1d, 0x6d, 0x50, 0xae, 0x19, 18 + 0x71, 0x03, 0xc7, 0xa7, 0x42, 0x82, 0x8f, 0xa5, 19 + 0x63, 0x6a, 0xe2, 0x8a, 0xad, 0x4b, 0x40, 0xa7, 20 + 0x3f, 0x8b, 0xe4, 0xae, 0xb2, 0x8a, 0x14, 0x78, 21 + 0x91, 0x07, 0xba, 0x02, 0x08, 0xc1, 0x34, 0xb8, 22 + 0xda, 0x61, 0x67, 0xf6, 0x98, 0x97, 0x1a, 0xcb, 23 + 0x0f, 0x82, 0x80, 0xff, 0x02, 0x54, 0x16, 0x57, 24 + 0x18, 0x35, 0xaf, 0x16, 0x17, 0x68, 0xcc, 0xc7, 25 + 0x52, 0xac, 0x31, 0x39, 0x60, 0xe4, 0xb4, 0xcb, 26 + 0x0e, 0xf9, 0x57, 0xe9, 0x96, 0xff, 0x99, 0xd6, 27 + 0x10, 0x96, 0x09, 0xab, 0x28, 0x92, 0x1b, 0x9f, 28 + 0x10, 0xde, 0x3e, 0x87, 0xb8, 0x9d, 0x2d, 0xa0, 29 + 0x3c, 0x91, 0x85, 0x8c, 0x9e, 0xc0, 0x97, 0x9a, 30 + 0xb4, 0x54, 0x7f, 0x4a, 0x63, 0xc2, 0x75, 0x0f, 31 + 0x0d, 0x2f, 0x62, 0x56, 0x48, 0x0e, 0xb6, 0xc7, 32 + 0xcf, 0x0d, 0x78, 0xca, 0xbd, 0x31, 0x9e, 0x4c, 33 + 0xf7, 0x3f, 0x9e, 0xc2, 0xea, 0x5e, 0x44, 0x6d, 34 + 0x76, 0xf9, 0xc5, 0xe0, 0x29, 0xea, 0x15, 0xbf, 35 + 0xaf, 0xd4, 0x75, 0xc8, 0x89, 0xcf, 0x4f, 0x17, 36 + 0xfd, 0x4a, 0x45, 0xa5, 0x4d, 0x2d, 0x87, 0x11, 37 + 0x2b, 0x3e, 0x64, 0xa2, 0x6b, 0xc5, 0x23, 0x8c, 38 + 0xfa, 0x71, 0x13, 0x72, 0x0e, 0x7c, 0xe1, 0x2c, 39 + 0x9f, 0x0e, 0x29, 0xc9, 0x15, 0xde, 0x4e, 0xd7, 40 + 0x42, 0x1f, 0x8e, 0xe1, 0x91, 0x99, 0x50, 0x38, 41 + 0x7f, 0x15, 0xc0, 0xf6, 0x4b, 0xfd, 0x9d, 0x40, 42 + 0xe9, 0x44, 0x51, 0xca, 0x3b, 0x83, 0x41, 0x9f, 43 + 0x82, 0x64, 0x66, 0x22, 0x12, 0x43, 0x1c, 0x4f, 44 + 0x45, 0x11, 0x3a, 0x46, 0xb1, 0x7c, 0x62, 0x0a, 45 + 0x9d, 0x4c, 0x99, 0x85, 0xb0, 0x10, 0x19, 0xcf, 46 + 0xeb, 0xf9, 0x65, 0xaf, 0xd8, 0x05, 0x9e, 0x61, 47 + 0x03, 0x5f, 0x15, 0x99, 0xa9, 0x05, 0x20, 0xc8, 48 + 0xaf, 0xab, 0x31, 0x9d, 0xd5, 0xdf, 0x24, 0xce, 49 + 0x2b, 0x6d, 0xd7, 0x17, 0xc3, 0x04, 0xff, 0x82, 50 + 0xa7, 0x18, 0x39, 0xe9, 0x0d, 0x0a, 0x5f, 0xb9, 51 + 0xc9, 0x86, 0x1d, 0xf8, 0x02, 0x2d, 0xc3, 0x88, 52 + 0x28, 0x73, 0x5c, 0xac, 0x25, 0xc9, 0xfe, 0xcb, 53 + 0xd2, 0xfd, 0x63, 0x74, 0xac, 0xe1, 0xb8, 0xa2, 54 + 0xc6, 0x2b, 0xb5, 0x40, 0x01, 0x9b, 0xed, 0xee, 55 + 0x7b, 0x63, 0x66, 0x05, 0x45, 0xc2, 0x6c, 0xd8, 56 + 0x58, 0xf1, 0xa1, 0x3d, 0xc8, 0x43, 0x59, 0x4b, 57 + 0x39, 0x87, 0x24, 0x64, 0x92, 0xb0, 0xab, 0x75, 58 + 0xf1, 0xb7, 0xbf, 0x7c, 0xde, 0xc0, 0xaf, 0x4a, 59 + 0xc2, 0x7b, 0xd9, 0x8a, 0x99, 0xcd, 0x83, 0x01, 60 + 0xe6, 0xae, 0xeb, 0x16, 0xe7, 0x54, 0x9c, 0x95, 61 + 0x0a, 0x91, 0x02, 0xaf, 0x9f, 0x79, 0x40, 0x45, 62 + 0xce, 0x47, 0x41, 0x65, 0xca, 0x80, 0x0d, 0x14, 63 + 0x46, 0x58, 0x5d, 0x4d, 0x28, 0x55, 0x70, 0x49, 64 + 0x7c, 0x32, 0x1f, 0x01, 0xaa, 0x05, 0x2f, 0xf1, 65 + 0xeb, 0xa3, 0xe6, 0x1d, 0xf9, 0x43, 0xe0, 0x58, 66 + 0x05, 0x61, 0x22, 0xc3, 0xee, 0xe4, 0x6f, 0x94, 67 + 0xaf, 0x82, 0xda, 0x18, 0x18, 0x63, 0x9c, 0xfa, 68 + 0xc0, 0x04, 0x27, 0xc5, 0x39, 0x5e, 0x7a, 0xa6, 69 + 0x85, 0x46, 0xb7, 0x76, 0xc9, 0x16, 0xf2, 0xf8, 70 + 0x40, 0x8d, 0x4b, 0x5e, 0x72, 0xf3, 0x3e, 0x12, 71 + 0xa4, 0x80, 0x39, 0xb2, 0x92, 0xfe, 0x6e, 0x5b, 72 + 0x5b, 0xad, 0xea, 0x29, 0xbc, 0x66, 0xe6, 0xfe, 73 + 0x80, 0x02, 0x5d, 0x83, 0x37, 0xfc, 0xde, 0x6c, 74 + 0x25, 0x54, 0xa2, 0xff, 0x7d, 0xb6, 0xe1, 0xd6, 75 + 0xcf, 0xdb, 0x60, 0xe3, 0xbe, 0x2f, 0x4e, 0xb4, 76 + 0xf5, 0xb4, 0x51, 0xf7, 0x5a, 0x25, 0xda, 0x40, 77 + 0x84, 0x5e, 0xc0, 0x0a, 0x6b, 0xfa, 0x0c, 0xfb, 78 + 0x5e, 0x3e, 0x12, 0x6c, 0x39, 0x35, 0xc0, 0x28, 79 + 0xd6, 0x1b, 0x3a, 0x72, 0xc3, 0xfe, 0xa5, 0x4c, 80 + 0x35, 0xa2, 0x42, 0xf6, 0x3d, 0xa5, 0xbf, 0xb5, 81 + 0x39, 0xe3, 0xc9, 0xd5, 0x8c, 0x1b, 0xe5, 0xef, 82 + 0x91, 0xd2, 0x80, 0x6f, 0xcc, 0x77, 0x44, 0x50, 83 + 0x62, 0xc7, 0xac, 0x29, 0xcb, 0x72, 0xda, 0x6d, 84 + 0xc5, 0xfe, 0xa7, 0xee, 0x8b, 0xeb, 0xfc, 0xa3, 85 + 0x46, 0x18, 0x5f, 0xaa, 0xc3, 0x65, 0xd0, 0x8f, 86 + 0x67, 0x98, 0xd6, 0xce, 0x5f, 0x84, 0xd4, 0x96, 87 + 0x1b, 0x67, 0xa0, 0xcf, 0xfc, 0x94, 0x55, 0x5e, 88 + 0x4b, 0x51, 0x68, 0xa7, 0x6d, 0x02, 0xf9, 0x53, 89 + 0x54, 0x86, 0x6b, 0x53, 0x39, 0xe0, 0x36, 0x23, 90 + 0x87, 0x1a, 0xfb, 0x53, 0x1a, 0x65, 0xd8, 0x42, 91 + 0xa8, 0x85, 0xfd, 0x2c, 0x7f, 0x6b, 0x7f, 0x67, 92 + 0x70, 0x23, 0x6c, 0xe9, 0x0b, 0xf0, 0x1e, 0x0d, 93 + 0x0b, 0xb4, 0xd4, 0x96, 0x14, 0x95, 0x7e, 0xf3, 94 + 0x9b, 0xdd, 0xd7, 0xc4, 0x24, 0x22, 0xb9, 0x9d, 95 + 0xb3, 0xa6, 0xac, 0x09, 0x7c, 0x00, 0xbf, 0xd0, 96 + 0xdc, 0xfb, 0x9b, 0x7c, 0x8c, 0xbd, 0xd4, 0x1a, 97 + 0x13, 0x2b, 0x82, 0x3d, 0x7c, 0x8c, 0x10, 0x47, 98 + 0x49, 0x6c, 0x53, 0xeb, 0xa7, 0xc2, 0xde, 0xed, 99 + 0xe2, 0x55, 0x93, 0x2c, 0x1a, 0x5a, 0x7d, 0xe1, 100 + 0x37, 0x62, 0xdd, 0x29, 0x1a, 0x72, 0x82, 0xc0, 101 + 0x14, 0x73, 0x5d, 0x0e, 0x9b, 0xcc, 0x54, 0x68, 102 + 0x3a, 0x4d, 0x56, 0x8f, 0xc9, 0x4e, 0xaf, 0x7b, 103 + 0xde, 0x17, 0x9c, 0x5e, 0x83, 0x82, 0x22, 0xe3, 104 + 0x28, 0xdf, 0x1b, 0xb6, 0xdb, 0x17, 0x90, 0x48, 105 + 0xb5, 0x13, 0x4e, 0xd3, 0x97, 0x5e, 0xb3, 0x9c, 106 + 0x16, 0x08, 0xc8, 0x77, 0xb3, 0xcd, 0x94, 0x90, 107 + 0x4f, 0x77, 0xaf, 0x67, 0xdd, 0x80, 0x15, 0x1c, 108 + 0x59, 0xfb, 0x3c, 0xec, 0xf8, 0xb3, 0x67, 0xfb, 109 + 0xa0, 0x94, 0x3c, 0x53, 0x99, 0x49, 0x94, 0x2c, 110 + 0x85, 0x26, 0x92, 0x6d, 0x8d, 0x48, 0xf6, 0x72, 111 + 0xdd, 0xfb, 0xb2, 0x10, 0x51, 0x5b, 0xbe, 0xd5, 112 + 0x70, 0x3d, 0x28, 0x94, 0x98, 0x4f, 0x6e, 0x20, 113 + 0x7b, 0x7d, 0x0f, 0x56, 0xc9, 0x96, 0x5f, 0x60, 114 + 0x2e, 0x2f, 0x9b, 0x38, 0x7f, 0xc7, 0x3c, 0x6b, 115 + 0x2f, 0x2b, 0x8f, 0x1f, 0x07, 0x1c, 0x85, 0x57, 116 + 0x16, 0x2e, 0xc7, 0x74, 0xe5, 0xf2, 0x0d, 0xfe, 117 + 0xef, 0x57, 0xb0, 0xa4, 0x4f, 0x4c, 0x7d, 0x81, 118 + 0xbb, 0xaa, 0xcb, 0xa0, 0xb0, 0x51, 0xcf, 0xc2, 119 + 0xee, 0x90, 0x2e, 0x5e, 0x27, 0xca, 0xd3, 0xe8, 120 + 0xf3, 0x55, 0x02, 0x56, 0x06, 0xa5, 0xad, 0xdf, 121 + 0xa3, 0xa9, 0x06, 0x05, 0x53, 0x74, 0x55, 0xd5, 122 + 0xd2, 0x20, 0x0a, 0x6d, 0x4a, 0xef, 0x16, 0xbf, 123 + 0xc3, 0xb2, 0x75, 0x93, 0xd8, 0x6e, 0x0f, 0xd2, 124 + 0xae, 0x3b, 0xc0, 0x00, 0x22, 0x6f, 0xb5, 0x0a, 125 + 0x41, 0xfc, 0xf9, 0x41, 0xfc, 0x16, 0x4f, 0xa6, 126 + 0x1c, 0x18, 0x41, 0x67, 0x73, 0xa8, 0x79, 0xa9, 127 + 0x54, 0x18, 0x4e, 0x88, 0x44, 0x0f, 0xa1, 0x5b, 128 + 0xf0, 0x68, 0xea, 0x3c, 0x62, 0x59, 0x8d, 0xc7, 129 + 0x6f, 0xd7, 0x72, 0x20, 0x74, 0x39, 0xd4, 0x3a, 130 + 0x41, 0x1b, 0x58, 0x57, 0x54, 0x85, 0x60, 0xca, 131 + 0x49, 0x4b, 0xa1, 0x04, 0x91, 0xb6, 0xf2, 0xcd, 132 + 0x62, 0x63, 0x67, 0xd1, 0xee, 0x6b, 0x9e, 0x5d, 133 + 0xd6, 0xc4, 0x58, 0x6b, 0xe1, 0xe6, 0x4a, 0xdb, 134 + 0xe8, 0xb1, 0x35, 0x03, 0x15, 0x8d, 0x34, 0x69, 135 + 0x4c, 0xd2, 0x54, 0xce, 0xe8, 0x6a, 0x69, 0x6f, 136 + 0xaa, 0xb5, 0x1f, 0x86, 0xed, 0xac, 0x4f, 0x16, 137 + 0x1e, 0x48, 0x93, 0xe8, 0x6c, 0x24, 0x1c, 0xd0, 138 + 0xbb, 0x61, 0xc2, 0x34, 0xdd, 0xc9, 0x5c, 0xce, 139 + }; 140 + 141 + static const u8 nh_test_msg[NH_MESSAGE_BYTES] = { 142 + 0x99, 0x57, 0x61, 0x41, 0xad, 0x08, 0x7e, 0x17, 143 + 0xd4, 0xef, 0x0b, 0x23, 0xff, 0x0b, 0x96, 0x0a, 144 + 0x6c, 0x98, 0xac, 0x78, 0x5e, 0xb6, 0xb2, 0x67, 145 + 0x0f, 0x48, 0xf4, 0xa1, 0xe5, 0x1e, 0xfe, 0x83, 146 + 0xe4, 0x56, 0x2a, 0x03, 0x64, 0xff, 0x7a, 0xf3, 147 + 0x03, 0xfe, 0xa7, 0x86, 0xdc, 0x35, 0x79, 0x13, 148 + 0xf8, 0xe1, 0x59, 0x19, 0x04, 0x43, 0x24, 0x82, 149 + 0x44, 0x82, 0x41, 0x2b, 0xc7, 0xcf, 0xf5, 0xa4, 150 + 0xdc, 0xca, 0xf5, 0x34, 0xc4, 0x23, 0x3c, 0x1f, 151 + 0xa8, 0x84, 0x1f, 0x2a, 0xcd, 0xae, 0x9d, 0x5e, 152 + 0x05, 0xe2, 0xfb, 0x0c, 0x68, 0x81, 0x90, 0x11, 153 + 0x44, 0xf6, 0xdd, 0x5b, 0x51, 0xd3, 0xe0, 0xab, 154 + 0x29, 0x3a, 0xa9, 0x9c, 0xf6, 0x7e, 0x2d, 0xe3, 155 + 0x6c, 0x09, 0x59, 0xd7, 0xfa, 0x7f, 0x6a, 0x33, 156 + 0x3b, 0x23, 0x7b, 0x1b, 0xb2, 0x79, 0x5f, 0x5c, 157 + 0xb6, 0x2d, 0xb0, 0xf8, 0xab, 0x33, 0x28, 0xe0, 158 + 0x72, 0x2e, 0x2f, 0x03, 0x22, 0x16, 0xb4, 0x87, 159 + 0xf7, 0x14, 0x3f, 0x55, 0x8a, 0xb0, 0x47, 0xdb, 160 + 0x42, 0x2d, 0xc0, 0x0c, 0x0a, 0x33, 0xf8, 0xab, 161 + 0x44, 0xae, 0xa3, 0xc9, 0xfc, 0xf6, 0x34, 0x8c, 162 + 0x60, 0x30, 0x6d, 0x31, 0x70, 0xf3, 0x39, 0x53, 163 + 0xf1, 0x2d, 0xb9, 0x6c, 0xa6, 0x48, 0x9c, 0x9c, 164 + 0xc2, 0x88, 0xb3, 0xa9, 0x98, 0xb6, 0xc3, 0x47, 165 + 0x94, 0x02, 0x9d, 0x98, 0x6e, 0x25, 0x6c, 0xf5, 166 + 0x9b, 0xc6, 0x4d, 0xee, 0x07, 0x1e, 0x25, 0x8f, 167 + 0x01, 0xde, 0xad, 0xe5, 0x77, 0x4f, 0xd1, 0xc0, 168 + 0x62, 0xbb, 0x3a, 0xb9, 0x83, 0x0b, 0x29, 0x76, 169 + 0x4f, 0xb1, 0x86, 0x2c, 0x27, 0xc7, 0x38, 0x65, 170 + 0xcb, 0x78, 0xb7, 0x02, 0x10, 0x9e, 0xde, 0x83, 171 + 0xd1, 0xac, 0x05, 0x86, 0x23, 0xce, 0x4f, 0x8d, 172 + 0xcc, 0x4e, 0x3f, 0x04, 0xf4, 0x39, 0x91, 0x81, 173 + 0x1c, 0x42, 0x47, 0x4d, 0x50, 0xe5, 0x01, 0x22, 174 + 0x98, 0xcf, 0x91, 0x36, 0xb3, 0x7c, 0xcf, 0x78, 175 + 0x07, 0x22, 0xa9, 0x18, 0xd2, 0xcd, 0x7d, 0x4d, 176 + 0xa6, 0xcb, 0xaa, 0x52, 0x13, 0x49, 0x64, 0xb0, 177 + 0xa5, 0x3d, 0xc7, 0xc3, 0x10, 0x87, 0x2e, 0x76, 178 + 0xa9, 0x52, 0xc5, 0x50, 0x18, 0xc0, 0x5d, 0xb4, 179 + 0x4c, 0xc6, 0x7f, 0x64, 0xae, 0x53, 0xc3, 0x46, 180 + 0x99, 0xb7, 0x61, 0x6b, 0x08, 0x43, 0x08, 0x4c, 181 + 0x90, 0x2c, 0xee, 0x56, 0x91, 0xb4, 0x28, 0xa8, 182 + 0xa8, 0x8b, 0x3b, 0x1a, 0x67, 0x71, 0xf2, 0x81, 183 + 0x48, 0x20, 0x71, 0x30, 0xdd, 0x69, 0x8a, 0xc2, 184 + 0x4c, 0x9d, 0x4e, 0x17, 0xfb, 0x2e, 0xe7, 0x9b, 185 + 0x86, 0x94, 0xa5, 0xce, 0xf9, 0x74, 0x56, 0xff, 186 + 0x3b, 0xff, 0xd9, 0x5a, 0xc8, 0x98, 0xf5, 0x25, 187 + 0xa2, 0xb9, 0x66, 0x46, 0x89, 0x17, 0x39, 0x08, 188 + 0x69, 0x03, 0x59, 0x1e, 0x13, 0x12, 0x68, 0xe7, 189 + 0x2f, 0x00, 0xd3, 0xf3, 0x71, 0xd1, 0x20, 0xc5, 190 + 0x0b, 0x38, 0x89, 0xda, 0x62, 0x3c, 0xce, 0xea, 191 + 0x04, 0x19, 0x47, 0x6d, 0xd8, 0x64, 0x38, 0x60, 192 + 0x96, 0x71, 0x68, 0x48, 0x79, 0xf8, 0xf4, 0x76, 193 + 0x33, 0xf6, 0x60, 0x8d, 0x21, 0xd0, 0xee, 0x41, 194 + 0xc0, 0xbe, 0x33, 0x61, 0x5e, 0x66, 0xe6, 0x16, 195 + 0x14, 0xc7, 0xfb, 0x6c, 0xf3, 0x58, 0xef, 0x12, 196 + 0x7c, 0x70, 0x65, 0x5d, 0x55, 0xe8, 0xf2, 0x92, 197 + 0x3a, 0xfe, 0x34, 0x64, 0x31, 0x7c, 0x29, 0xbb, 198 + 0x01, 0x18, 0xbd, 0xb6, 0xe4, 0x1e, 0xa4, 0xf3, 199 + 0x7b, 0x4c, 0x6a, 0x0d, 0x01, 0xfc, 0xc7, 0x66, 200 + 0xc3, 0x88, 0x37, 0x25, 0xcf, 0xe9, 0xca, 0x82, 201 + 0xeb, 0xa1, 0x38, 0x40, 0xc9, 0xdb, 0x38, 0x7b, 202 + 0x78, 0xcf, 0x11, 0xa3, 0x1c, 0x6b, 0x70, 0xc8, 203 + 0xe1, 0x2f, 0x7c, 0x17, 0x2c, 0x58, 0x28, 0xa4, 204 + 0x13, 0x40, 0xc7, 0x69, 0x0f, 0x04, 0xe5, 0x8e, 205 + 0xf0, 0x67, 0x53, 0xea, 0x10, 0xf5, 0x83, 0xc9, 206 + 0xcb, 0x6b, 0x16, 0xef, 0x2e, 0x55, 0xb3, 0xdd, 207 + 0xed, 0xf9, 0x1a, 0x52, 0x9a, 0x73, 0x78, 0x14, 208 + 0x14, 0x21, 0xfc, 0xef, 0x3c, 0x40, 0xa9, 0xfe, 209 + 0xef, 0xd7, 0x6e, 0x28, 0x2f, 0xd3, 0x73, 0xed, 210 + 0xa3, 0x73, 0xb5, 0x62, 0x41, 0xe6, 0xd4, 0x79, 211 + 0x49, 0x31, 0x2b, 0x86, 0x74, 0x56, 0x21, 0xfe, 212 + 0x6d, 0xb2, 0xbe, 0x81, 0x80, 0xa6, 0x81, 0x19, 213 + 0x90, 0x79, 0x6f, 0xc4, 0x4e, 0x7d, 0x6f, 0x2f, 214 + 0xa8, 0x6f, 0xd5, 0xc4, 0x7e, 0x23, 0x3b, 0xe6, 215 + 0x9b, 0x60, 0x97, 0x7b, 0xe2, 0x08, 0x8a, 0xaa, 216 + 0xc7, 0x7c, 0xf6, 0xe5, 0x01, 0x3e, 0xd2, 0x29, 217 + 0x7d, 0xd7, 0x40, 0x84, 0x95, 0xfa, 0xdf, 0xd8, 218 + 0x81, 0xe9, 0x5e, 0xdd, 0x0d, 0x17, 0x51, 0x6b, 219 + 0x8c, 0x0e, 0x47, 0xf9, 0x0c, 0x92, 0x1b, 0x60, 220 + 0xca, 0x06, 0x8a, 0xe5, 0xe8, 0x0f, 0x06, 0x75, 221 + 0x5d, 0x76, 0xc9, 0x32, 0x2c, 0x52, 0x2c, 0x2e, 222 + 0xd8, 0x66, 0x38, 0x75, 0x16, 0xc7, 0x7d, 0x51, 223 + 0xc4, 0xc2, 0x22, 0xc8, 0x19, 0xfc, 0x3d, 0x69, 224 + 0x1e, 0xd9, 0x64, 0x47, 0x5d, 0x21, 0x84, 0x46, 225 + 0xd7, 0xe1, 0xf0, 0x95, 0x3a, 0x8f, 0xbd, 0x7a, 226 + 0x53, 0x71, 0x4c, 0x54, 0xc1, 0x3e, 0x27, 0xde, 227 + 0xeb, 0x04, 0x11, 0xb0, 0x33, 0x4d, 0x57, 0x0b, 228 + 0x6b, 0x7d, 0x6c, 0xd5, 0x87, 0x7e, 0xb4, 0xe2, 229 + 0x94, 0x9e, 0x9f, 0x74, 0xe8, 0xb7, 0xfa, 0x05, 230 + 0x9b, 0x8f, 0x81, 0x43, 0x35, 0x82, 0xb8, 0x5b, 231 + 0xa8, 0x5e, 0xfa, 0x7a, 0x80, 0x8d, 0xd2, 0x90, 232 + 0x58, 0x79, 0x89, 0x56, 0x90, 0x2b, 0xff, 0x92, 233 + 0x3c, 0x35, 0xbe, 0x99, 0x5f, 0xd2, 0x4b, 0x15, 234 + 0x58, 0x4b, 0xbf, 0x08, 0x9b, 0x9b, 0x97, 0x10, 235 + 0xa4, 0x55, 0xc7, 0xec, 0x29, 0xc5, 0x14, 0x3e, 236 + 0x8f, 0x56, 0xa3, 0x92, 0x9e, 0x33, 0xcc, 0x9e, 237 + 0x77, 0x2f, 0x33, 0xcb, 0xc4, 0xe9, 0x19, 0xf4, 238 + 0x32, 0x2b, 0xef, 0x6c, 0x1c, 0x92, 0x2c, 0x45, 239 + 0x88, 0x74, 0x5f, 0xcf, 0x56, 0xfd, 0x87, 0x5f, 240 + 0xb6, 0x9b, 0xa2, 0x51, 0xda, 0x9b, 0x83, 0x4f, 241 + 0xec, 0x14, 0xe8, 0xd2, 0x42, 0x03, 0xcb, 0xe8, 242 + 0xd0, 0xb7, 0xf8, 0x38, 0xde, 0x6f, 0xdf, 0x43, 243 + 0xfa, 0x41, 0xab, 0xec, 0x2e, 0x3c, 0x93, 0x39, 244 + 0x76, 0xd1, 0x6f, 0x5b, 0x6c, 0x6e, 0x8d, 0xeb, 245 + 0x45, 0x6b, 0xc5, 0x76, 0x00, 0x29, 0xca, 0x3b, 246 + 0xdb, 0x78, 0xc2, 0x32, 0x09, 0x39, 0x19, 0x50, 247 + 0xa2, 0x44, 0x92, 0x09, 0xdb, 0x8b, 0x9e, 0x16, 248 + 0x76, 0x7f, 0xf1, 0x78, 0x7b, 0xb2, 0x51, 0xbc, 249 + 0x28, 0xbd, 0xb0, 0x7f, 0x25, 0x63, 0x7d, 0x34, 250 + 0xfb, 0xf6, 0x36, 0x24, 0xc7, 0xf9, 0x41, 0xb6, 251 + 0x2a, 0x06, 0xfc, 0xf0, 0x83, 0xf2, 0x12, 0x3d, 252 + 0x60, 0x2e, 0x10, 0x70, 0x31, 0x6f, 0x37, 0x08, 253 + 0x3e, 0x91, 0x93, 0xb5, 0xda, 0xb8, 0x4c, 0x1b, 254 + 0xd8, 0xb8, 0x3b, 0xd5, 0x3e, 0xb6, 0xc0, 0xbb, 255 + 0x38, 0x0f, 0xd2, 0x68, 0x4f, 0x78, 0x56, 0xf6, 256 + 0xda, 0x65, 0xb4, 0x0b, 0xb4, 0xaf, 0xa8, 0x19, 257 + 0x2f, 0x70, 0x55, 0xe0, 0x47, 0x31, 0x9f, 0x37, 258 + 0x1a, 0x47, 0xb9, 0x0c, 0x97, 0x79, 0xfc, 0xa9, 259 + 0x76, 0xe6, 0xfa, 0x38, 0x67, 0x25, 0xd3, 0x89, 260 + 0x8d, 0xad, 0xc6, 0x11, 0x2d, 0x77, 0x0b, 0x35, 261 + 0xa2, 0xe2, 0xdf, 0xc8, 0x94, 0xd5, 0xdf, 0xd2, 262 + 0x69, 0x2a, 0x99, 0x93, 0xfa, 0x4a, 0x5f, 0xc7, 263 + 0x8a, 0x14, 0x5f, 0x2a, 0xf3, 0x02, 0xf0, 0x3e, 264 + 0x21, 0x8e, 0x2e, 0x4b, 0xc4, 0xd2, 0xc8, 0xa6, 265 + 0x41, 0x6e, 0x17, 0x36, 0xe9, 0xad, 0x73, 0x33, 266 + 0x6c, 0xea, 0xc2, 0x31, 0x8f, 0x30, 0x51, 0x5c, 267 + 0x1c, 0x20, 0xe6, 0x05, 0x1a, 0x17, 0x15, 0x5d, 268 + 0x3e, 0x8f, 0xd2, 0x7f, 0xa1, 0xc5, 0x47, 0xb3, 269 + 0xb2, 0x9c, 0xe8, 0xf0, 0x6d, 0xc1, 0xc3, 0xa2, 270 + }; 271 + 272 + static const u8 nh_test_val16[NH_HASH_BYTES] = { 273 + 0x30, 0x77, 0x55, 0x7c, 0x45, 0xd8, 0xce, 0xf7, 274 + 0x2a, 0xb5, 0x14, 0x8c, 0x35, 0x7e, 0xaa, 0x00, 275 + 0x50, 0xbc, 0x50, 0x7c, 0xd3, 0x20, 0x7c, 0x9c, 276 + 0xb4, 0xf1, 0x91, 0x26, 0x81, 0x03, 0xa5, 0x68, 277 + }; 278 + 279 + static const u8 nh_test_val96[NH_HASH_BYTES] = { 280 + 0xd2, 0x19, 0xca, 0xa5, 0x6c, 0x0c, 0xdf, 0x2f, 281 + 0x69, 0xfa, 0x75, 0xc1, 0x63, 0xdb, 0xfa, 0x4d, 282 + 0x45, 0x2b, 0xb8, 0xdb, 0xac, 0xee, 0x61, 0xc6, 283 + 0x7a, 0x83, 0xb6, 0x0f, 0x32, 0x82, 0xe4, 0xd0, 284 + }; 285 + 286 + static const u8 nh_test_val256[NH_HASH_BYTES] = { 287 + 0x33, 0x8f, 0xb4, 0x96, 0xf1, 0xb6, 0xf1, 0xb5, 288 + 0x05, 0x19, 0xbb, 0x6b, 0xda, 0xd9, 0x95, 0x75, 289 + 0x96, 0x3f, 0x8b, 0x42, 0xb6, 0xcd, 0xb7, 0xb7, 290 + 0xe7, 0x97, 0xb5, 0xa9, 0x0b, 0xd7, 0xdd, 0x33, 291 + }; 292 + 293 + static const u8 nh_test_val1024[NH_HASH_BYTES] = { 294 + 0x32, 0x3d, 0x51, 0xe1, 0x77, 0xb6, 0xac, 0x06, 295 + 0x84, 0x67, 0xb7, 0xf2, 0x24, 0xe7, 0xec, 0xfd, 296 + 0x96, 0x64, 0xff, 0x55, 0xc7, 0x1b, 0xf9, 0xdc, 297 + 0xa3, 0xc7, 0x32, 0x06, 0x79, 0xcf, 0xca, 0xb6, 298 + };
+43
lib/crypto/tests/nh_kunit.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-or-later 2 + /* 3 + * Copyright 2025 Google LLC 4 + */ 5 + #include <crypto/nh.h> 6 + #include <kunit/test.h> 7 + #include "nh-testvecs.h" 8 + 9 + static void test_nh(struct kunit *test) 10 + { 11 + u32 *key = kunit_kmalloc(test, NH_KEY_BYTES, GFP_KERNEL); 12 + __le64 hash[NH_NUM_PASSES]; 13 + 14 + KUNIT_ASSERT_NOT_NULL(test, key); 15 + memcpy(key, nh_test_key, NH_KEY_BYTES); 16 + le32_to_cpu_array(key, NH_KEY_WORDS); 17 + 18 + nh(key, nh_test_msg, 16, hash); 19 + KUNIT_ASSERT_MEMEQ(test, hash, nh_test_val16, NH_HASH_BYTES); 20 + 21 + nh(key, nh_test_msg, 96, hash); 22 + KUNIT_ASSERT_MEMEQ(test, hash, nh_test_val96, NH_HASH_BYTES); 23 + 24 + nh(key, nh_test_msg, 256, hash); 25 + KUNIT_ASSERT_MEMEQ(test, hash, nh_test_val256, NH_HASH_BYTES); 26 + 27 + nh(key, nh_test_msg, 1024, hash); 28 + KUNIT_ASSERT_MEMEQ(test, hash, nh_test_val1024, NH_HASH_BYTES); 29 + } 30 + 31 + static struct kunit_case nh_test_cases[] = { 32 + KUNIT_CASE(test_nh), 33 + {}, 34 + }; 35 + 36 + static struct kunit_suite nh_test_suite = { 37 + .name = "nh", 38 + .test_cases = nh_test_cases, 39 + }; 40 + kunit_test_suite(nh_test_suite); 41 + 42 + MODULE_DESCRIPTION("KUnit tests for NH"); 43 + MODULE_LICENSE("GPL");
+40
scripts/crypto/gen-hash-testvecs.py
··· 184 184 f'{alg}_keyed_testvec_consolidated[{alg_digest_size_const(alg)}]', 185 185 compute_hash(alg, hashes)) 186 186 187 + def nh_extract_int(bytestr, pos, length): 188 + assert pos % 8 == 0 and length % 8 == 0 189 + return int.from_bytes(bytestr[pos//8 : pos//8 + length//8], byteorder='little') 190 + 191 + # The NH "almost-universal hash function" used in Adiantum. This is a 192 + # straightforward translation of the pseudocode from Section 6.3 of the Adiantum 193 + # paper (https://eprint.iacr.org/2018/720.pdf), except the outer loop is omitted 194 + # because we assume len(msg) <= 1024. (The kernel's nh() function is only 195 + # expected to handle up to 1024 bytes; it's just called repeatedly as needed.) 196 + def nh(key, msg): 197 + (w, s, r, u) = (32, 2, 4, 8192) 198 + l = 8 * len(msg) 199 + assert l <= u 200 + assert l % (2*s*w) == 0 201 + h = bytes() 202 + for i in range(0, 2*s*w*r, 2*s*w): 203 + p = 0 204 + for j in range(0, l, 2*s*w): 205 + for k in range(0, w*s, w): 206 + a0 = nh_extract_int(key, i + j + k, w) 207 + a1 = nh_extract_int(key, i + j + k + s*w, w) 208 + b0 = nh_extract_int(msg, j + k, w) 209 + b1 = nh_extract_int(msg, j + k + s*w, w) 210 + p += ((a0 + b0) % 2**w) * ((a1 + b1) % 2**w) 211 + h += (p % 2**64).to_bytes(8, byteorder='little') 212 + return h 213 + 214 + def gen_nh_testvecs(): 215 + NH_KEY_BYTES = 1072 216 + NH_MESSAGE_BYTES = 1024 217 + key = rand_bytes(NH_KEY_BYTES) 218 + msg = rand_bytes(NH_MESSAGE_BYTES) 219 + print_static_u8_array_definition('nh_test_key[NH_KEY_BYTES]', key) 220 + print_static_u8_array_definition('nh_test_msg[NH_MESSAGE_BYTES]', msg) 221 + for length in [16, 96, 256, 1024]: 222 + print_static_u8_array_definition(f'nh_test_val{length}[NH_HASH_BYTES]', 223 + nh(key, msg[:length])) 224 + 187 225 def gen_additional_poly1305_testvecs(): 188 226 key = b'\xff' * POLY1305_KEY_SIZE 189 227 data = b'' ··· 255 217 if alg.startswith('blake2'): 256 218 gen_unkeyed_testvecs(alg) 257 219 gen_additional_blake2_testvecs(alg) 220 + elif alg == 'nh': 221 + gen_nh_testvecs() 258 222 elif alg == 'poly1305': 259 223 gen_unkeyed_testvecs(alg) 260 224 gen_additional_poly1305_testvecs()