mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-04 04:04:19 +00:00
crypto: ecdh - check validity of Z before export
SP800-56A rev3 section 5.7.1.2 step 2 mandates that the validity of the calculated shared secret is verified before the data is returned to the caller. Thus, the export function and the validity check functions are reversed. In addition, the sensitive variables of priv and rand_z are zeroized. Signed-off-by: Stephan Mueller <smueller@chronox.de> Reviewed-by: Vitaly Chikunov <vt@altlinux.org> Acked-by: Neil Horman <nhorman@redhat.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
ef19f826ec
commit
e7d2b41e5c
11
crypto/ecc.c
11
crypto/ecc.c
@ -1495,11 +1495,16 @@ int crypto_ecdh_shared_secret(unsigned int curve_id, unsigned int ndigits,
|
||||
|
||||
ecc_point_mult(product, pk, priv, rand_z, curve, ndigits);
|
||||
|
||||
if (ecc_point_is_zero(product)) {
|
||||
ret = -EFAULT;
|
||||
goto err_validity;
|
||||
}
|
||||
|
||||
ecc_swap_digits(product->x, secret, ndigits);
|
||||
|
||||
if (ecc_point_is_zero(product))
|
||||
ret = -EFAULT;
|
||||
|
||||
err_validity:
|
||||
memzero_explicit(priv, sizeof(priv));
|
||||
memzero_explicit(rand_z, sizeof(rand_z));
|
||||
ecc_free_point(product);
|
||||
err_alloc_product:
|
||||
ecc_free_point(pk);
|
||||
|
Loading…
Reference in New Issue
Block a user