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.

crypto: curve25519 - Remove unused kpp support

Curve25519 has both a library API and a crypto_kpp API. However, the
crypto_kpp API for Curve25519 had no users outside crypto/testmgr.c.
I.e., no non-test code ever passed "curve25519" to crypto_alloc_kpp().

Remove this unused code. We'll instead focus on the Curve25519 library
API (<crypto/curve25519.h>), which is a simpler and easier-to-use API
and is the API that is actually being used.

Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> # m68k
Link: https://lore.kernel.org/r/20250906213523.84915-7-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>

-114
-1
arch/m68k/configs/amiga_defconfig
··· 560 560 CONFIG_CRYPTO_ECDH=m 561 561 CONFIG_CRYPTO_ECDSA=m 562 562 CONFIG_CRYPTO_ECRDSA=m 563 - CONFIG_CRYPTO_CURVE25519=m 564 563 CONFIG_CRYPTO_AES=y 565 564 CONFIG_CRYPTO_AES_TI=m 566 565 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/apollo_defconfig
··· 517 517 CONFIG_CRYPTO_ECDH=m 518 518 CONFIG_CRYPTO_ECDSA=m 519 519 CONFIG_CRYPTO_ECRDSA=m 520 - CONFIG_CRYPTO_CURVE25519=m 521 520 CONFIG_CRYPTO_AES=y 522 521 CONFIG_CRYPTO_AES_TI=m 523 522 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/atari_defconfig
··· 537 537 CONFIG_CRYPTO_ECDH=m 538 538 CONFIG_CRYPTO_ECDSA=m 539 539 CONFIG_CRYPTO_ECRDSA=m 540 - CONFIG_CRYPTO_CURVE25519=m 541 540 CONFIG_CRYPTO_AES=y 542 541 CONFIG_CRYPTO_AES_TI=m 543 542 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/bvme6000_defconfig
··· 509 509 CONFIG_CRYPTO_ECDH=m 510 510 CONFIG_CRYPTO_ECDSA=m 511 511 CONFIG_CRYPTO_ECRDSA=m 512 - CONFIG_CRYPTO_CURVE25519=m 513 512 CONFIG_CRYPTO_AES=y 514 513 CONFIG_CRYPTO_AES_TI=m 515 514 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/hp300_defconfig
··· 519 519 CONFIG_CRYPTO_ECDH=m 520 520 CONFIG_CRYPTO_ECDSA=m 521 521 CONFIG_CRYPTO_ECRDSA=m 522 - CONFIG_CRYPTO_CURVE25519=m 523 522 CONFIG_CRYPTO_AES=y 524 523 CONFIG_CRYPTO_AES_TI=m 525 524 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/mac_defconfig
··· 536 536 CONFIG_CRYPTO_ECDH=m 537 537 CONFIG_CRYPTO_ECDSA=m 538 538 CONFIG_CRYPTO_ECRDSA=m 539 - CONFIG_CRYPTO_CURVE25519=m 540 539 CONFIG_CRYPTO_AES=y 541 540 CONFIG_CRYPTO_AES_TI=m 542 541 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/multi_defconfig
··· 623 623 CONFIG_CRYPTO_ECDH=m 624 624 CONFIG_CRYPTO_ECDSA=m 625 625 CONFIG_CRYPTO_ECRDSA=m 626 - CONFIG_CRYPTO_CURVE25519=m 627 626 CONFIG_CRYPTO_AES=y 628 627 CONFIG_CRYPTO_AES_TI=m 629 628 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/mvme147_defconfig
··· 509 509 CONFIG_CRYPTO_ECDH=m 510 510 CONFIG_CRYPTO_ECDSA=m 511 511 CONFIG_CRYPTO_ECRDSA=m 512 - CONFIG_CRYPTO_CURVE25519=m 513 512 CONFIG_CRYPTO_AES=y 514 513 CONFIG_CRYPTO_AES_TI=m 515 514 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/mvme16x_defconfig
··· 510 510 CONFIG_CRYPTO_ECDH=m 511 511 CONFIG_CRYPTO_ECDSA=m 512 512 CONFIG_CRYPTO_ECRDSA=m 513 - CONFIG_CRYPTO_CURVE25519=m 514 513 CONFIG_CRYPTO_AES=y 515 514 CONFIG_CRYPTO_AES_TI=m 516 515 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/q40_defconfig
··· 526 526 CONFIG_CRYPTO_ECDH=m 527 527 CONFIG_CRYPTO_ECDSA=m 528 528 CONFIG_CRYPTO_ECRDSA=m 529 - CONFIG_CRYPTO_CURVE25519=m 530 529 CONFIG_CRYPTO_AES=y 531 530 CONFIG_CRYPTO_AES_TI=m 532 531 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/sun3_defconfig
··· 507 507 CONFIG_CRYPTO_ECDH=m 508 508 CONFIG_CRYPTO_ECDSA=m 509 509 CONFIG_CRYPTO_ECRDSA=m 510 - CONFIG_CRYPTO_CURVE25519=m 511 510 CONFIG_CRYPTO_AES=y 512 511 CONFIG_CRYPTO_AES_TI=m 513 512 CONFIG_CRYPTO_ANUBIS=m
-1
arch/m68k/configs/sun3x_defconfig
··· 507 507 CONFIG_CRYPTO_ECDH=m 508 508 CONFIG_CRYPTO_ECDSA=m 509 509 CONFIG_CRYPTO_ECRDSA=m 510 - CONFIG_CRYPTO_CURVE25519=m 511 510 CONFIG_CRYPTO_AES=y 512 511 CONFIG_CRYPTO_AES_TI=m 513 512 CONFIG_CRYPTO_ANUBIS=m
-1
arch/s390/configs/debug_defconfig
··· 761 761 CONFIG_CRYPTO_ECDH=m 762 762 CONFIG_CRYPTO_ECDSA=m 763 763 CONFIG_CRYPTO_ECRDSA=m 764 - CONFIG_CRYPTO_CURVE25519=m 765 764 CONFIG_CRYPTO_AES_TI=m 766 765 CONFIG_CRYPTO_ANUBIS=m 767 766 CONFIG_CRYPTO_ARIA=m
-1
arch/s390/configs/defconfig
··· 745 745 CONFIG_CRYPTO_ECDH=m 746 746 CONFIG_CRYPTO_ECDSA=m 747 747 CONFIG_CRYPTO_ECRDSA=m 748 - CONFIG_CRYPTO_CURVE25519=m 749 748 CONFIG_CRYPTO_AES_TI=m 750 749 CONFIG_CRYPTO_ANUBIS=m 751 750 CONFIG_CRYPTO_ARIA=m
-8
crypto/Kconfig
··· 344 344 One of the Russian cryptographic standard algorithms (called GOST 345 345 algorithms). Only signature verification is implemented. 346 346 347 - config CRYPTO_CURVE25519 348 - tristate "Curve25519" 349 - select CRYPTO_KPP 350 - select CRYPTO_LIB_CURVE25519_GENERIC 351 - select CRYPTO_LIB_CURVE25519_INTERNAL 352 - help 353 - Curve25519 elliptic curve (RFC7748) 354 - 355 347 endmenu 356 348 357 349 menu "Block ciphers"
-1
crypto/Makefile
··· 182 182 obj-$(CONFIG_CRYPTO_ZSTD) += zstd.o 183 183 obj-$(CONFIG_CRYPTO_ECC) += ecc.o 184 184 obj-$(CONFIG_CRYPTO_ESSIV) += essiv.o 185 - obj-$(CONFIG_CRYPTO_CURVE25519) += curve25519-generic.o 186 185 187 186 ecdh_generic-y += ecdh.o 188 187 ecdh_generic-y += ecdh_helper.o
-91
crypto/curve25519-generic.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-or-later 2 - 3 - #include <crypto/curve25519.h> 4 - #include <crypto/internal/kpp.h> 5 - #include <crypto/kpp.h> 6 - #include <linux/module.h> 7 - #include <linux/scatterlist.h> 8 - 9 - static int curve25519_set_secret(struct crypto_kpp *tfm, const void *buf, 10 - unsigned int len) 11 - { 12 - u8 *secret = kpp_tfm_ctx(tfm); 13 - 14 - if (!len) 15 - curve25519_generate_secret(secret); 16 - else if (len == CURVE25519_KEY_SIZE && 17 - crypto_memneq(buf, curve25519_null_point, CURVE25519_KEY_SIZE)) 18 - memcpy(secret, buf, CURVE25519_KEY_SIZE); 19 - else 20 - return -EINVAL; 21 - return 0; 22 - } 23 - 24 - static int curve25519_compute_value(struct kpp_request *req) 25 - { 26 - struct crypto_kpp *tfm = crypto_kpp_reqtfm(req); 27 - const u8 *secret = kpp_tfm_ctx(tfm); 28 - u8 public_key[CURVE25519_KEY_SIZE]; 29 - u8 buf[CURVE25519_KEY_SIZE]; 30 - int copied, nbytes; 31 - u8 const *bp; 32 - 33 - if (req->src) { 34 - copied = sg_copy_to_buffer(req->src, 35 - sg_nents_for_len(req->src, 36 - CURVE25519_KEY_SIZE), 37 - public_key, CURVE25519_KEY_SIZE); 38 - if (copied != CURVE25519_KEY_SIZE) 39 - return -EINVAL; 40 - bp = public_key; 41 - } else { 42 - bp = curve25519_base_point; 43 - } 44 - 45 - curve25519_generic(buf, secret, bp); 46 - 47 - /* might want less than we've got */ 48 - nbytes = min_t(size_t, CURVE25519_KEY_SIZE, req->dst_len); 49 - copied = sg_copy_from_buffer(req->dst, sg_nents_for_len(req->dst, 50 - nbytes), 51 - buf, nbytes); 52 - if (copied != nbytes) 53 - return -EINVAL; 54 - return 0; 55 - } 56 - 57 - static unsigned int curve25519_max_size(struct crypto_kpp *tfm) 58 - { 59 - return CURVE25519_KEY_SIZE; 60 - } 61 - 62 - static struct kpp_alg curve25519_alg = { 63 - .base.cra_name = "curve25519", 64 - .base.cra_driver_name = "curve25519-generic", 65 - .base.cra_priority = 100, 66 - .base.cra_module = THIS_MODULE, 67 - .base.cra_ctxsize = CURVE25519_KEY_SIZE, 68 - 69 - .set_secret = curve25519_set_secret, 70 - .generate_public_key = curve25519_compute_value, 71 - .compute_shared_secret = curve25519_compute_value, 72 - .max_size = curve25519_max_size, 73 - }; 74 - 75 - static int __init curve25519_init(void) 76 - { 77 - return crypto_register_kpp(&curve25519_alg); 78 - } 79 - 80 - static void __exit curve25519_exit(void) 81 - { 82 - crypto_unregister_kpp(&curve25519_alg); 83 - } 84 - 85 - module_init(curve25519_init); 86 - module_exit(curve25519_exit); 87 - 88 - MODULE_ALIAS_CRYPTO("curve25519"); 89 - MODULE_ALIAS_CRYPTO("curve25519-generic"); 90 - MODULE_DESCRIPTION("Curve25519 elliptic curve (RFC7748)"); 91 - MODULE_LICENSE("GPL");