From 963456051eeecd50702b9305802592d11d2b4b55 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Tue, 7 Mar 2023 23:45:10 +0100 Subject: [PATCH] If public point is not found, it is computed automatically. Signed-off-by: Pol Henarejos --- src/hsm/kek.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/hsm/kek.c b/src/hsm/kek.c index bce0ae2..4eceb4d 100644 --- a/src/hsm/kek.c +++ b/src/hsm/kek.c @@ -704,8 +704,11 @@ int dkek_decode_key(uint8_t id, len = get_uint16_t(kb, ofs); ofs += 2; r = mbedtls_ecp_point_read_binary(&ecdsa->grp, &ecdsa->Q, kb + ofs, len); if (r != 0) { - mbedtls_ecdsa_free(ecdsa); - return CCID_EXEC_ERROR; + r = mbedtls_ecp_mul(&ecdsa->grp, &ecdsa->Q, &ecdsa->d, &ecdsa->grp.G, random_gen, NULL); + if (r != 0) { + mbedtls_ecdsa_free(ecdsa); + return CCID_EXEC_ERROR; + } } r = mbedtls_ecp_check_pub_priv(ecdsa, ecdsa, random_gen, NULL); if (r != 0) {