From 1437e1c58d20f8f3985d169fae6e8570b0552554 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Fri, 22 Apr 2022 20:37:13 +0200 Subject: [PATCH] Fix returning public key for ECC. Signed-off-by: Pol Henarejos --- src/openpgp/openpgp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/openpgp/openpgp.c b/src/openpgp/openpgp.c index 6ffec96..66f4e15 100644 --- a/src/openpgp/openpgp.c +++ b/src/openpgp/openpgp.c @@ -883,10 +883,12 @@ void make_rsa_response(mbedtls_rsa_context *rsa) { } void make_ecdsa_response(mbedtls_ecdsa_context *ecdsa) { + size_t plen = mbedtls_mpi_size(&ecdsa->grp.P); memcpy(res_APDU, "\x7f\x49\x81\x00", 4); res_APDU_size = 4; res_APDU[res_APDU_size++] = 0x86; - size_t plen = mbedtls_mpi_size(&ecdsa->grp.P); + res_APDU[res_APDU_size++] = 0x81; + res_APDU[res_APDU_size++] = 2*plen+1; res_APDU[res_APDU_size++] = 0x04; mbedtls_mpi_write_binary(&ecdsa->Q.X, res_APDU+res_APDU_size, plen); res_APDU_size += plen; mbedtls_mpi_write_binary(&ecdsa->Q.Y, res_APDU+res_APDU_size, plen); res_APDU_size += plen;