summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorThorsten Blum <thorsten.blum@linux.dev>2026-06-11 23:36:17 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2026-07-05 13:24:07 +0800
commitf240f9b588f4e2de89822adebf560a96b5d263ed (patch)
tree3044dee08423cd0bad35c567fea00e376e41a1ef /drivers
parentf964df8a1229561c32d4fa76b91260822dc470f1 (diff)
downloadlinux-next-f240f9b588f4e2de89822adebf560a96b5d263ed.tar.gz
linux-next-f240f9b588f4e2de89822adebf560a96b5d263ed.zip
crypto: atmel-ecc - reject hardware ECDH without a public key
The hardware ECDH path in atmel_ecdh_compute_shared_secret() uses the private key stored in the device. However, the public key is cached only after atmel_ecdh_set_secret() successfully generated that private key for the current tfm. atmel_ecdh_generate_public_key() already rejects requests when no public key is cached. Add the same check to atmel_ecdh_compute_shared_secret() to prevent the device from using a private key that was not generated for the current tfm. Fixes: 11105693fa05 ("crypto: atmel-ecc - introduce Microchip / Atmel ECC driver") Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/crypto/atmel-ecc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/crypto/atmel-ecc.c b/drivers/crypto/atmel-ecc.c
index 51c865884055..8e13aeccf011 100644
--- a/drivers/crypto/atmel-ecc.c
+++ b/drivers/crypto/atmel-ecc.c
@@ -163,6 +163,9 @@ static int atmel_ecdh_compute_shared_secret(struct kpp_request *req)
return crypto_kpp_compute_shared_secret(req);
}
+ if (!ctx->public_key)
+ return -EINVAL;
+
/* A P-256 public key must contain two 32-byte coordinates */
if (req->src_len != ATMEL_ECC_PUBKEY_SIZE)
return -EINVAL;