From 328c3112ac548ba5e6adc43a9bce5b524421994e Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 1 May 2026 21:04:15 +0200 Subject: [PATCH] Use ecp keypair calc public instead. Signed-off-by: Pol Henarejos --- pico-keys-sdk | 2 +- src/openpgp/cmd_import_data.c | 10 +--------- src/openpgp/openpgp.c | 12 ++---------- src/openpgp/piv.c | 2 +- 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/pico-keys-sdk b/pico-keys-sdk index 92b8c64..9cb83e3 160000 --- a/pico-keys-sdk +++ b/pico-keys-sdk @@ -1 +1 @@ -Subproject commit 92b8c644d85c73ceb0571da167e048cdbd608a71 +Subproject commit 9cb83e3abc3321b57f5d1d7ee3af565a9ee33fd5 diff --git a/src/openpgp/cmd_import_data.c b/src/openpgp/cmd_import_data.c index 56ae1af..7ec086c 100644 --- a/src/openpgp/cmd_import_data.c +++ b/src/openpgp/cmd_import_data.c @@ -175,15 +175,7 @@ int cmd_import_data(void) { mbedtls_ecp_keypair_free(&ecdsa); return SW_EXEC_ERROR(); } -#ifdef MBEDTLS_EDDSA_C - if (ecdsa.grp.id == MBEDTLS_ECP_DP_ED25519) { - r = mbedtls_ecp_point_edwards(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, random_fill_iterator, NULL); - } - else -#endif - { - r = mbedtls_ecp_mul(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, &ecdsa.grp.G, random_fill_iterator, NULL); - } + r = mbedtls_ecp_keypair_calc_public(&ecdsa, random_fill_iterator, NULL); if (r != 0) { mbedtls_ecp_keypair_free(&ecdsa); return SW_EXEC_ERROR(); diff --git a/src/openpgp/openpgp.c b/src/openpgp/openpgp.c index 9c5c9b7..9aaf985 100644 --- a/src/openpgp/openpgp.c +++ b/src/openpgp/openpgp.c @@ -738,17 +738,9 @@ int load_private_key_ecdsa(mbedtls_ecp_keypair *ctx, file_t *fkey, bool use_dek) return PICOKEYS_EXEC_ERROR; } mbedtls_platform_zeroize(kdata, sizeof(kdata)); -#ifdef MBEDTLS_EDDSA_C - if (ctx->grp.id == MBEDTLS_ECP_DP_ED25519 || ctx->grp.id == MBEDTLS_ECP_DP_ED448) { - r = mbedtls_ecp_point_edwards(&ctx->grp, &ctx->Q, &ctx->d, random_fill_iterator, NULL); - } - else -#endif - { - r = mbedtls_ecp_mul(&ctx->grp, &ctx->Q, &ctx->d, &ctx->grp.G, random_fill_iterator, NULL); - } + r = mbedtls_ecp_keypair_calc_public(ctx, random_fill_iterator, NULL); if (r != 0) { - mbedtls_ecdsa_free(ctx); + mbedtls_ecp_keypair_free(ctx); return PICOKEYS_EXEC_ERROR; } return PICOKEYS_OK; diff --git a/src/openpgp/piv.c b/src/openpgp/piv.c index 87f77bd..fef844d 100644 --- a/src/openpgp/piv.c +++ b/src/openpgp/piv.c @@ -1335,7 +1335,7 @@ static int cmd_import_asym(void) { mbedtls_ecdsa_free(&ecdsa); return SW_EXEC_ERROR(); } - r = mbedtls_ecp_mul(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, &ecdsa.grp.G, random_fill_iterator, NULL); + r = mbedtls_ecp_keypair_calc_public(&ecdsa, random_fill_iterator, NULL); if (r != 0) { mbedtls_ecdsa_free(&ecdsa); return SW_EXEC_ERROR();