diff options
| author | Thorsten Blum <thorsten.blum@linux.dev> | 2026-06-11 23:36:17 +0200 |
|---|---|---|
| committer | Herbert Xu <herbert@gondor.apana.org.au> | 2026-07-05 13:24:07 +0800 |
| commit | f240f9b588f4e2de89822adebf560a96b5d263ed (patch) | |
| tree | 3044dee08423cd0bad35c567fea00e376e41a1ef /drivers | |
| parent | f964df8a1229561c32d4fa76b91260822dc470f1 (diff) | |
| download | linux-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.c | 3 |
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; |
