mirror of https://github.com/torvalds/linux.git
lib/crypto: curve25519: Move a couple functions out-of-line
Move curve25519() and curve25519_generate_public() from curve25519.h to curve25519.c. There's no good reason for them to be inline. Link: https://lore.kernel.org/r/20250906213523.84915-10-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
This commit is contained in:
parent
643d79e531
commit
8c06b330e8
|
|
@ -6,7 +6,6 @@
|
|||
#ifndef CURVE25519_H
|
||||
#define CURVE25519_H
|
||||
|
||||
#include <crypto/algapi.h> // For crypto_memneq.
|
||||
#include <linux/types.h>
|
||||
#include <linux/random.h>
|
||||
|
||||
|
|
@ -28,33 +27,12 @@ void curve25519_arch(u8 out[CURVE25519_KEY_SIZE],
|
|||
void curve25519_base_arch(u8 pub[CURVE25519_KEY_SIZE],
|
||||
const u8 secret[CURVE25519_KEY_SIZE]);
|
||||
|
||||
static inline
|
||||
bool __must_check curve25519(u8 mypublic[CURVE25519_KEY_SIZE],
|
||||
const u8 secret[CURVE25519_KEY_SIZE],
|
||||
const u8 basepoint[CURVE25519_KEY_SIZE])
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519))
|
||||
curve25519_arch(mypublic, secret, basepoint);
|
||||
else
|
||||
curve25519_generic(mypublic, secret, basepoint);
|
||||
return crypto_memneq(mypublic, curve25519_null_point,
|
||||
CURVE25519_KEY_SIZE);
|
||||
}
|
||||
const u8 basepoint[CURVE25519_KEY_SIZE]);
|
||||
|
||||
static inline bool
|
||||
__must_check curve25519_generate_public(u8 pub[CURVE25519_KEY_SIZE],
|
||||
const u8 secret[CURVE25519_KEY_SIZE])
|
||||
{
|
||||
if (unlikely(!crypto_memneq(secret, curve25519_null_point,
|
||||
CURVE25519_KEY_SIZE)))
|
||||
return false;
|
||||
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519))
|
||||
curve25519_base_arch(pub, secret);
|
||||
else
|
||||
curve25519_generic(pub, secret, curve25519_base_point);
|
||||
return crypto_memneq(pub, curve25519_null_point, CURVE25519_KEY_SIZE);
|
||||
}
|
||||
bool __must_check curve25519_generate_public(u8 pub[CURVE25519_KEY_SIZE],
|
||||
const u8 secret[CURVE25519_KEY_SIZE]);
|
||||
|
||||
static inline void curve25519_clamp_secret(u8 secret[CURVE25519_KEY_SIZE])
|
||||
{
|
||||
|
|
|
|||
|
|
@ -10,8 +10,40 @@
|
|||
*/
|
||||
|
||||
#include <crypto/curve25519.h>
|
||||
#include <linux/module.h>
|
||||
#include <crypto/utils.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
bool __must_check
|
||||
curve25519(u8 mypublic[CURVE25519_KEY_SIZE],
|
||||
const u8 secret[CURVE25519_KEY_SIZE],
|
||||
const u8 basepoint[CURVE25519_KEY_SIZE])
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519))
|
||||
curve25519_arch(mypublic, secret, basepoint);
|
||||
else
|
||||
curve25519_generic(mypublic, secret, basepoint);
|
||||
return crypto_memneq(mypublic, curve25519_null_point,
|
||||
CURVE25519_KEY_SIZE);
|
||||
}
|
||||
EXPORT_SYMBOL(curve25519);
|
||||
|
||||
bool __must_check
|
||||
curve25519_generate_public(u8 pub[CURVE25519_KEY_SIZE],
|
||||
const u8 secret[CURVE25519_KEY_SIZE])
|
||||
{
|
||||
if (unlikely(!crypto_memneq(secret, curve25519_null_point,
|
||||
CURVE25519_KEY_SIZE)))
|
||||
return false;
|
||||
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519))
|
||||
curve25519_base_arch(pub, secret);
|
||||
else
|
||||
curve25519_generic(pub, secret, curve25519_base_point);
|
||||
return crypto_memneq(pub, curve25519_null_point, CURVE25519_KEY_SIZE);
|
||||
}
|
||||
EXPORT_SYMBOL(curve25519_generate_public);
|
||||
|
||||
static int __init curve25519_init(void)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue