From b2c4e0e1c1352a6869347793c263d42a08fc9878 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Thu, 17 Aug 2023 01:19:13 +0200 Subject: [PATCH] Added curve to fido. Signed-off-by: Pol Henarejos --- src/fido/fido.c | 21 +++++++++++++++++++++ src/fido/fido.h | 1 + 2 files changed, 22 insertions(+) diff --git a/src/fido/fido.c b/src/fido/fido.c index dc5f6ce..abb0bf9 100644 --- a/src/fido/fido.c +++ b/src/fido/fido.c @@ -95,6 +95,27 @@ mbedtls_ecp_group_id fido_curve_to_mbedtls(int curve) { } return MBEDTLS_ECP_DP_NONE; } +int mbedtls_curve_to_fido(mbedtls_ecp_group_id id) { + if (id == MBEDTLS_ECP_DP_SECP256R1) { + return FIDO2_CURVE_P256; + } + else if (id == MBEDTLS_ECP_DP_SECP384R1) { + return FIDO2_CURVE_P384; + } + else if (id == MBEDTLS_ECP_DP_SECP521R1) { + return FIDO2_CURVE_P521; + } + else if (id == MBEDTLS_ECP_DP_SECP256K1) { + return FIDO2_CURVE_P256K1; + } + else if (id == MBEDTLS_ECP_DP_CURVE25519) { + return MBEDTLS_ECP_DP_CURVE25519; + } + else if (id == MBEDTLS_ECP_DP_CURVE448) { + return FIDO2_CURVE_X448; + } + return 0; +} int fido_load_key(int curve, const uint8_t *cred_id, mbedtls_ecdsa_context *key) { mbedtls_ecp_group_id mbedtls_curve = fido_curve_to_mbedtls(curve); diff --git a/src/fido/fido.h b/src/fido/fido.h index 06d547b..c22ed37 100644 --- a/src/fido/fido.h +++ b/src/fido/fido.h @@ -45,6 +45,7 @@ extern int verify_key(const uint8_t *appId, const uint8_t *keyHandle, mbedtls_ec extern bool wait_button_pressed(); extern void init_fido(); extern mbedtls_ecp_group_id fido_curve_to_mbedtls(int curve); +extern int mbedtls_curve_to_fido(mbedtls_ecp_group_id id); extern int fido_load_key(int curve, const uint8_t *cred_id, mbedtls_ecdsa_context *key); extern int load_keydev(uint8_t *key); extern int encrypt(uint8_t protocol,