From 865eafb1f3bbbb1601eb9019607879dbf3cef015 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Tue, 5 Sep 2023 00:25:39 +0200 Subject: [PATCH] Fix Curve25519 key import. For an unknown reason, curve25519 keys are imported in big endian instead of little endian. Signed-off-by: Pol Henarejos --- src/openpgp/openpgp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/openpgp/openpgp.c b/src/openpgp/openpgp.c index f65d69f..eeb47ed 100644 --- a/src/openpgp/openpgp.c +++ b/src/openpgp/openpgp.c @@ -1984,7 +1984,13 @@ static int cmd_import_data() { return SW_FUNC_NOT_SUPPORTED(); } mbedtls_ecdsa_init(&ecdsa); - r = mbedtls_ecp_read_key(gid, &ecdsa, p[1], len[1]); + if (gid == MBEDTLS_ECP_DP_CURVE25519) { + mbedtls_ecp_group_load(&ecdsa.grp, gid); + r = mbedtls_mpi_read_binary(&ecdsa.d, p[1], len[1]); + } + else { + r = mbedtls_ecp_read_key(gid, &ecdsa, p[1], len[1]); + } if (r != 0) { mbedtls_ecdsa_free(&ecdsa); return SW_EXEC_ERROR();