]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
lib/crypto: curve25519: Add at_least decoration to fixed-size array params
authorEric Biggers <ebiggers@kernel.org>
Sat, 22 Nov 2025 19:42:02 +0000 (11:42 -0800)
committerEric Biggers <ebiggers@kernel.org>
Sun, 23 Nov 2025 20:19:47 +0000 (12:19 -0800)
Add the at_least (i.e. 'static') decoration to the fixed-size array
parameters of the curve25519 library functions.  This causes clang to
warn when a too-small array of known size is passed.

Acked-by: Ard Biesheuvel <ardb@kernel.org>
Acked-by: "Jason A. Donenfeld" <Jason@zx2c4.com>
Link: https://lore.kernel.org/r/20251122194206.31822-3-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
include/crypto/curve25519.h

index db63a5577c004511f0b9a97a569e1e501b89f083..2362b48f874114c7e3722aaf5367045d162525e9 100644 (file)
@@ -13,24 +13,28 @@ enum curve25519_lengths {
        CURVE25519_KEY_SIZE = 32
 };
 
-void curve25519_generic(u8 out[CURVE25519_KEY_SIZE],
-                       const u8 scalar[CURVE25519_KEY_SIZE],
-                       const u8 point[CURVE25519_KEY_SIZE]);
+void curve25519_generic(u8 out[at_least CURVE25519_KEY_SIZE],
+                       const u8 scalar[at_least CURVE25519_KEY_SIZE],
+                       const u8 point[at_least CURVE25519_KEY_SIZE]);
 
-bool __must_check curve25519(u8 mypublic[CURVE25519_KEY_SIZE],
-                            const u8 secret[CURVE25519_KEY_SIZE],
-                            const u8 basepoint[CURVE25519_KEY_SIZE]);
+bool __must_check
+curve25519(u8 mypublic[at_least CURVE25519_KEY_SIZE],
+          const u8 secret[at_least CURVE25519_KEY_SIZE],
+          const u8 basepoint[at_least CURVE25519_KEY_SIZE]);
 
-bool __must_check curve25519_generate_public(u8 pub[CURVE25519_KEY_SIZE],
-                                            const u8 secret[CURVE25519_KEY_SIZE]);
+bool __must_check
+curve25519_generate_public(u8 pub[at_least CURVE25519_KEY_SIZE],
+                          const u8 secret[at_least CURVE25519_KEY_SIZE]);
 
-static inline void curve25519_clamp_secret(u8 secret[CURVE25519_KEY_SIZE])
+static inline void
+curve25519_clamp_secret(u8 secret[at_least CURVE25519_KEY_SIZE])
 {
        secret[0] &= 248;
        secret[31] = (secret[31] & 127) | 64;
 }
 
-static inline void curve25519_generate_secret(u8 secret[CURVE25519_KEY_SIZE])
+static inline void
+curve25519_generate_secret(u8 secret[at_least CURVE25519_KEY_SIZE])
 {
        get_random_bytes_wait(secret, CURVE25519_KEY_SIZE);
        curve25519_clamp_secret(secret);