forked from mirrors/linux
		
	crypto: lib/curve25519 - re-add selftests
Somehow these were dropped when Zinc was being integrated, which is problematic, because testing the library interface for Curve25519 is important.. This commit simply adds them back and wires them in in the same way that the blake2s selftests are wired in. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
		
							parent
							
								
									c782937e92
								
							
						
					
					
						commit
						aa127963f1
					
				
					 3 changed files with 1339 additions and 0 deletions
				
			
		|  | @ -36,4 +36,5 @@ libsha256-y					:= sha256.o | ||||||
| ifneq ($(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS),y) | ifneq ($(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS),y) | ||||||
| libblake2s-y					+= blake2s-selftest.o | libblake2s-y					+= blake2s-selftest.o | ||||||
| libchacha20poly1305-y				+= chacha20poly1305-selftest.o | libchacha20poly1305-y				+= chacha20poly1305-selftest.o | ||||||
|  | libcurve25519-y					+= curve25519-selftest.o | ||||||
| endif | endif | ||||||
|  |  | ||||||
							
								
								
									
										1321
									
								
								lib/crypto/curve25519-selftest.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1321
									
								
								lib/crypto/curve25519-selftest.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -13,6 +13,8 @@ | ||||||
| #include <linux/module.h> | #include <linux/module.h> | ||||||
| #include <linux/init.h> | #include <linux/init.h> | ||||||
| 
 | 
 | ||||||
|  | bool curve25519_selftest(void); | ||||||
|  | 
 | ||||||
| const u8 curve25519_null_point[CURVE25519_KEY_SIZE] __aligned(32) = { 0 }; | const u8 curve25519_null_point[CURVE25519_KEY_SIZE] __aligned(32) = { 0 }; | ||||||
| const u8 curve25519_base_point[CURVE25519_KEY_SIZE] __aligned(32) = { 9 }; | const u8 curve25519_base_point[CURVE25519_KEY_SIZE] __aligned(32) = { 9 }; | ||||||
| 
 | 
 | ||||||
|  | @ -20,6 +22,21 @@ EXPORT_SYMBOL(curve25519_null_point); | ||||||
| EXPORT_SYMBOL(curve25519_base_point); | EXPORT_SYMBOL(curve25519_base_point); | ||||||
| EXPORT_SYMBOL(curve25519_generic); | EXPORT_SYMBOL(curve25519_generic); | ||||||
| 
 | 
 | ||||||
|  | static int __init mod_init(void) | ||||||
|  | { | ||||||
|  | 	if (!IS_ENABLED(CONFIG_CRYPTO_MANAGER_DISABLE_TESTS) && | ||||||
|  | 	    WARN_ON(!curve25519_selftest())) | ||||||
|  | 		return -ENODEV; | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static void __exit mod_exit(void) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module_init(mod_init); | ||||||
|  | module_exit(mod_exit); | ||||||
|  | 
 | ||||||
| MODULE_LICENSE("GPL v2"); | MODULE_LICENSE("GPL v2"); | ||||||
| MODULE_DESCRIPTION("Curve25519 scalar multiplication"); | MODULE_DESCRIPTION("Curve25519 scalar multiplication"); | ||||||
| MODULE_AUTHOR("Jason A. Donenfeld <Jason@zx2c4.com>"); | MODULE_AUTHOR("Jason A. Donenfeld <Jason@zx2c4.com>"); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Jason A. Donenfeld
						Jason A. Donenfeld