Skip to content

Commit d2a68ab

Browse files
author
Eric Biggers
committed
lib/crypto: tests: Migrate ChaCha20Poly1305 self-test to KUnit
Move the ChaCha20Poly1305 test from an ad-hoc self-test to a KUnit test. Keep the same test logic for now, just translated to KUnit. Moving to KUnit has multiple benefits, such as: - Consistency with the rest of the lib/crypto/ tests. - Kernel developers familiar with KUnit, which is used kernel-wide, can quickly understand the test and how to enable and run it. - The test will be automatically run by anyone using lib/crypto/.kunitconfig or KUnit's all_tests.config. - Results are reported using the standard KUnit mechanism. - It eliminates one of the few remaining back-references to crypto/ from lib/crypto/, specifically a reference to CONFIG_CRYPTO_SELFTESTS. Acked-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20260327224229.137532-1-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
1 parent 23e5c30 commit d2a68ab

7 files changed

Lines changed: 760 additions & 762 deletions

File tree

include/crypto/chacha20poly1305.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,4 @@ bool chacha20poly1305_decrypt_sg_inplace(struct scatterlist *src, size_t src_len
4646
const u64 nonce,
4747
const u8 key[at_least CHACHA20POLY1305_KEY_SIZE]);
4848

49-
bool chacha20poly1305_selftest(void);
50-
5149
#endif /* __CHACHA20POLY1305_H */

lib/crypto/.kunitconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ CONFIG_CRYPTO_LIB_ENABLE_ALL_FOR_KUNIT=y
55
CONFIG_CRYPTO_LIB_AES_CBC_MACS_KUNIT_TEST=y
66
CONFIG_CRYPTO_LIB_BLAKE2B_KUNIT_TEST=y
77
CONFIG_CRYPTO_LIB_BLAKE2S_KUNIT_TEST=y
8+
CONFIG_CRYPTO_LIB_CHACHA20POLY1305_KUNIT_TEST=y
89
CONFIG_CRYPTO_LIB_CURVE25519_KUNIT_TEST=y
910
CONFIG_CRYPTO_LIB_GHASH_KUNIT_TEST=y
1011
CONFIG_CRYPTO_LIB_MD5_KUNIT_TEST=y

lib/crypto/Makefile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ endif # CONFIG_CRYPTO_LIB_CHACHA_ARCH
122122

123123
obj-$(CONFIG_CRYPTO_LIB_CHACHA20POLY1305) += libchacha20poly1305.o
124124
libchacha20poly1305-y += chacha20poly1305.o
125-
libchacha20poly1305-$(CONFIG_CRYPTO_SELFTESTS) += chacha20poly1305-selftest.o
126125

127126
################################################################################
128127

lib/crypto/chacha20poly1305.c

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -356,20 +356,6 @@ bool chacha20poly1305_decrypt_sg_inplace(struct scatterlist *src, size_t src_len
356356
}
357357
EXPORT_SYMBOL(chacha20poly1305_decrypt_sg_inplace);
358358

359-
static int __init chacha20poly1305_init(void)
360-
{
361-
if (IS_ENABLED(CONFIG_CRYPTO_SELFTESTS) &&
362-
WARN_ON(!chacha20poly1305_selftest()))
363-
return -ENODEV;
364-
return 0;
365-
}
366-
367-
static void __exit chacha20poly1305_exit(void)
368-
{
369-
}
370-
371-
module_init(chacha20poly1305_init);
372-
module_exit(chacha20poly1305_exit);
373359
MODULE_LICENSE("GPL v2");
374360
MODULE_DESCRIPTION("ChaCha20Poly1305 AEAD construction");
375361
MODULE_AUTHOR("Jason A. Donenfeld <Jason@zx2c4.com>");

lib/crypto/tests/Kconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,15 @@ config CRYPTO_LIB_BLAKE2S_KUNIT_TEST
2727
help
2828
KUnit tests for the BLAKE2s cryptographic hash function.
2929

30+
config CRYPTO_LIB_CHACHA20POLY1305_KUNIT_TEST
31+
tristate "KUnit tests for ChaCha20Poly1305" if !KUNIT_ALL_TESTS
32+
depends on KUNIT && CRYPTO_LIB_CHACHA20POLY1305
33+
default KUNIT_ALL_TESTS
34+
select CRYPTO_LIB_BENCHMARK_VISIBLE
35+
help
36+
KUnit tests for the ChaCha20Poly1305 authenticated encryption
37+
algorithm.
38+
3039
config CRYPTO_LIB_CURVE25519_KUNIT_TEST
3140
tristate "KUnit tests for Curve25519" if !KUNIT_ALL_TESTS
3241
depends on KUNIT && CRYPTO_LIB_CURVE25519
@@ -137,6 +146,7 @@ config CRYPTO_LIB_ENABLE_ALL_FOR_KUNIT
137146
depends on KUNIT
138147
select CRYPTO_LIB_AES_CBC_MACS
139148
select CRYPTO_LIB_BLAKE2B
149+
select CRYPTO_LIB_CHACHA20POLY1305
140150
select CRYPTO_LIB_CURVE25519
141151
select CRYPTO_LIB_GF128HASH
142152
select CRYPTO_LIB_MD5

lib/crypto/tests/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
obj-$(CONFIG_CRYPTO_LIB_AES_CBC_MACS_KUNIT_TEST) += aes_cbc_macs_kunit.o
44
obj-$(CONFIG_CRYPTO_LIB_BLAKE2B_KUNIT_TEST) += blake2b_kunit.o
55
obj-$(CONFIG_CRYPTO_LIB_BLAKE2S_KUNIT_TEST) += blake2s_kunit.o
6+
obj-$(CONFIG_CRYPTO_LIB_CHACHA20POLY1305_KUNIT_TEST) += chacha20poly1305_kunit.o
67
obj-$(CONFIG_CRYPTO_LIB_CURVE25519_KUNIT_TEST) += curve25519_kunit.o
78
obj-$(CONFIG_CRYPTO_LIB_GHASH_KUNIT_TEST) += ghash_kunit.o
89
obj-$(CONFIG_CRYPTO_LIB_MD5_KUNIT_TEST) += md5_kunit.o

0 commit comments

Comments
 (0)