mirror-linux/include/crypto
Lukas Wunner f4144b6bb7 crypto: sig - Prepare for algorithms with variable signature size
The callers of crypto_sig_sign() assume that the signature size is
always equivalent to the key size.

This happens to be true for RSA, which is currently the only algorithm
implementing the ->sign() callback.  But it is false e.g. for X9.62
encoded ECDSA signatures because they have variable length.

Prepare for addition of a ->sign() callback to such algorithms by
letting the callback return the signature size (or a negative integer
on error).  When testing the ->sign() callback in test_sig_one(),
use crypto_sig_maxsize() instead of crypto_sig_keysize() to verify that
the test vector's signature does not exceed an algorithm's maximum
signature size.

There has been a relatively recent effort to upstream ECDSA signature
generation support which may benefit from this change:

https://lore.kernel.org/linux-crypto/20220908200036.2034-1-ignat@cloudflare.com/

However the main motivation for this commit is to reduce the number of
crypto_sig_keysize() callers:  This function is about to be changed to
return the size in bits instead of bytes and that will require amending
most callers to divide the return value by 8.

Signed-off-by: Lukas Wunner <lukas@wunner.de>
Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>
Cc: Ignat Korchagin <ignat@cloudflare.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2025-02-09 18:08:12 +08:00
..
internal crypto: skcipher - document skcipher_walk_done() and rename some vars 2025-01-14 11:38:32 +08:00
acompress.h crypto: remove CONFIG_CRYPTO_STATS 2024-04-02 10:49:38 +08:00
aead.h crypto: remove CONFIG_CRYPTO_STATS 2024-04-02 10:49:38 +08:00
aes.h crypto: lib - implement library version of AES in CFB mode 2024-05-09 22:30:51 +03:00
akcipher.h crypto: akcipher - Drop sign/verify operations 2024-10-05 13:22:04 +08:00
algapi.h crypto: remove CONFIG_CRYPTO_STATS 2024-04-02 10:49:38 +08:00
arc4.h
aria.h crypto: Prepare to move crypto_tfm_ctx 2022-12-02 18:12:40 +08:00
authenc.h
b128ops.h cyrpto/b128ops: Remove struct u128 2023-06-05 09:36:35 +02:00
blake2b.h crypto: api - Replace kernel.h with the necessary inclusions 2021-12-17 16:59:48 +11:00
blake2s.h lib/crypto: blake2s: move hmac construction into wireguard 2022-01-18 13:03:55 +01:00
blowfish.h
cast5.h
cast6.h
cast_common.h
chacha.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
chacha20poly1305.h
cryptd.h crypto: api - Replace kernel.h with the necessary inclusions 2021-12-17 16:59:48 +11:00
ctr.h
curve25519.h crypto: lib/curve25519 - Move selftest prototype into header file 2020-11-20 14:45:33 +11:00
des.h
dh.h crypto: dh - split out deserialization code from crypto_dh_decode() 2022-03-03 10:47:50 +12:00
drbg.h crypto: drbg - reseed 'nopr' drbgs periodically from get_random_bytes() 2021-11-26 16:16:50 +11:00
ecc_curve.h crypto: ecc - Add nbits field to ecc_curve structure 2024-04-12 15:07:52 +08:00
ecdh.h crypto: ecc - Add NIST P521 curve parameters 2024-04-12 15:07:52 +08:00
engine.h crypto: engine - Make crypto_engine_exit() return void 2023-10-01 16:28:15 +08:00
gcm.h crypto: lib/aesgcm - Provide minimal library implementation 2022-11-11 18:14:59 +08:00
gf128mul.h crypto: lib/gf128mul - Remove some bbe deadcode 2024-12-21 22:46:24 +08:00
ghash.h
hash.h The usual shower of singleton fixes and minor series all over MM, 2024-05-19 09:21:03 -07:00
hash_info.h crypto: FIPS 202 SHA-3 register in hash info for IMA 2023-10-27 18:04:30 +08:00
hmac.h
if_alg.h net: change proto and proto_ops accept type 2024-05-13 18:19:09 -06:00
kdf_sp800108.h crypto: kdf - add SP800-108 counter key derivation function 2021-11-26 16:25:17 +11:00
kpp.h crypto: remove CONFIG_CRYPTO_STATS 2024-04-02 10:49:38 +08:00
md5.h
nhpoly1305.h
null.h
padlock.h
pcrypt.h crypto: api - Replace kernel.h with the necessary inclusions 2021-12-17 16:59:48 +11:00
pkcs7.h
poly1305.h crypto: poly1305 - fix poly1305_core_setkey() declaration 2021-04-02 18:28:12 +11:00
polyval.h crypto: x86/polyval - Add PCLMULQDQ accelerated implementation of POLYVAL 2022-06-10 16:40:17 +08:00
public_key.h crypto: asymmetric_keys - Remove unused functions 2024-11-02 18:23:24 +08:00
rng.h crypto: remove CONFIG_CRYPTO_STATS 2024-04-02 10:49:38 +08:00
scatterwalk.h crypto: scatterwalk - use kmap_local() not kmap_atomic() 2022-12-30 22:56:27 +08:00
serpent.h
sha1.h crypto: sha - split sha.h into sha1.h and sha2.h 2020-11-20 14:45:33 +11:00
sha1_base.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
sha2.h crypto: lib/sha256 - Remove redundant and unused sha224_update 2023-05-19 16:45:43 +08:00
sha3.h
sha256_base.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
sha512_base.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
sig.h crypto: sig - Prepare for algorithms with variable signature size 2025-02-09 18:08:12 +08:00
skcipher.h The usual shower of singleton fixes and minor series all over MM, 2024-05-19 09:21:03 -07:00
sm3.h crypto: sm3 - make dependent on sm3 library 2022-01-28 16:51:11 +11:00
sm3_base.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
sm4.h crypto: sm4 - export sm4 constant arrays 2022-04-08 16:12:46 +08:00
streebog.h
twofish.h
utils.h move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
xts.h crypto: xts - drop xts_check_key() 2023-01-06 17:15:47 +08:00