summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Wunner <lukas@wunner.de>2024-09-10 16:30:29 +0200
committerHerbert Xu <herbert@gondor.apana.org.au>2024-10-05 13:22:05 +0800
commitb9cbf6916e0a6899bc67ee574993b7f24d3f606b (patch)
treeebbebd49269feaba875c1000c7679e94c3c12bea
parentb04163863caf599d4348a05af5a71cf5d42f11dc (diff)
crypto: ecrdsa - Fix signature size calculation
software_key_query() returns the curve size as maximum signature size for ecrdsa. However it should return twice as much. It's only the maximum signature size that seems to be off. The maximum digest size is likewise set to the curve size, but that's correct as it matches the checks in ecrdsa_set_pub_key() and ecrdsa_verify(). Signed-off-by: Lukas Wunner <lukas@wunner.de> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--crypto/ecrdsa.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/crypto/ecrdsa.c b/crypto/ecrdsa.c
index f981b31f4249..b3dd8a3ddeb7 100644
--- a/crypto/ecrdsa.c
+++ b/crypto/ecrdsa.c
@@ -252,6 +252,13 @@ static unsigned int ecrdsa_key_size(struct crypto_sig *tfm)
return ctx->pub_key.ndigits * sizeof(u64);
}
+static unsigned int ecrdsa_max_size(struct crypto_sig *tfm)
+{
+ struct ecrdsa_ctx *ctx = crypto_sig_ctx(tfm);
+
+ return 2 * ctx->pub_key.ndigits * sizeof(u64);
+}
+
static void ecrdsa_exit_tfm(struct crypto_sig *tfm)
{
}
@@ -260,6 +267,7 @@ static struct sig_alg ecrdsa_alg = {
.verify = ecrdsa_verify,
.set_pub_key = ecrdsa_set_pub_key,
.key_size = ecrdsa_key_size,
+ .max_size = ecrdsa_max_size,
.exit = ecrdsa_exit_tfm,
.base = {
.cra_name = "ecrdsa",