Add EdDSA support as a conditional build.
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
@@ -177,10 +177,13 @@ int cmd_import_data() {
|
|||||||
mbedtls_ecp_keypair_free(&ecdsa);
|
mbedtls_ecp_keypair_free(&ecdsa);
|
||||||
return SW_EXEC_ERROR();
|
return SW_EXEC_ERROR();
|
||||||
}
|
}
|
||||||
|
#ifdef MBEDTLS_EDDSA_C
|
||||||
if (ecdsa.grp.id == MBEDTLS_ECP_DP_ED25519) {
|
if (ecdsa.grp.id == MBEDTLS_ECP_DP_ED25519) {
|
||||||
r = mbedtls_ecp_point_edwards(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, random_gen, NULL);
|
r = mbedtls_ecp_point_edwards(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, random_gen, NULL);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
r = mbedtls_ecp_mul(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, &ecdsa.grp.G, random_gen, NULL);
|
r = mbedtls_ecp_mul(&ecdsa.grp, &ecdsa.Q, &ecdsa.d, &ecdsa.grp.G, random_gen, NULL);
|
||||||
}
|
}
|
||||||
if (r != 0) {
|
if (r != 0) {
|
||||||
|
|||||||
@@ -30,7 +30,9 @@
|
|||||||
#include "ccid/ccid.h"
|
#include "ccid/ccid.h"
|
||||||
#include "otp.h"
|
#include "otp.h"
|
||||||
#include "do.h"
|
#include "do.h"
|
||||||
|
#ifdef MBEDTLS_EDDSA_C
|
||||||
#include "mbedtls/eddsa.h"
|
#include "mbedtls/eddsa.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
uint8_t PICO_PRODUCT = 3;
|
uint8_t PICO_PRODUCT = 3;
|
||||||
|
|
||||||
@@ -573,10 +575,13 @@ int load_private_key_ecdsa(mbedtls_ecp_keypair *ctx, file_t *fkey, bool use_dek)
|
|||||||
return PICOKEY_EXEC_ERROR;
|
return PICOKEY_EXEC_ERROR;
|
||||||
}
|
}
|
||||||
mbedtls_platform_zeroize(kdata, sizeof(kdata));
|
mbedtls_platform_zeroize(kdata, sizeof(kdata));
|
||||||
|
#ifdef MBEDTLS_EDDSA_C
|
||||||
if (ctx->grp.id == MBEDTLS_ECP_DP_ED25519) {
|
if (ctx->grp.id == MBEDTLS_ECP_DP_ED25519) {
|
||||||
r = mbedtls_ecp_point_edwards(&ctx->grp, &ctx->Q, &ctx->d, random_gen, NULL);
|
r = mbedtls_ecp_point_edwards(&ctx->grp, &ctx->Q, &ctx->d, random_gen, NULL);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
r = mbedtls_ecp_mul(&ctx->grp, &ctx->Q, &ctx->d, &ctx->grp.G, random_gen, NULL);
|
r = mbedtls_ecp_mul(&ctx->grp, &ctx->Q, &ctx->d, &ctx->grp.G, random_gen, NULL);
|
||||||
}
|
}
|
||||||
if (r != 0) {
|
if (r != 0) {
|
||||||
@@ -623,9 +628,11 @@ mbedtls_ecp_group_id get_ec_group_id_from_attr(const uint8_t *algo, size_t algo_
|
|||||||
else if (memcmp(algorithm_attr_x448 + 2, algo, algo_len) == 0) {
|
else if (memcmp(algorithm_attr_x448 + 2, algo, algo_len) == 0) {
|
||||||
return MBEDTLS_ECP_DP_CURVE448;
|
return MBEDTLS_ECP_DP_CURVE448;
|
||||||
}
|
}
|
||||||
|
#ifdef MBEDTLS_EDDSA_C
|
||||||
else if (memcmp(algorithm_attr_ed25519 + 2, algo, algo_len) == 0) {
|
else if (memcmp(algorithm_attr_ed25519 + 2, algo, algo_len) == 0) {
|
||||||
return MBEDTLS_ECP_DP_ED25519;
|
return MBEDTLS_ECP_DP_ED25519;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return MBEDTLS_ECP_DP_NONE;
|
return MBEDTLS_ECP_DP_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -744,10 +751,13 @@ int ecdsa_sign(mbedtls_ecp_keypair *ctx,
|
|||||||
size_t *out_len) {
|
size_t *out_len) {
|
||||||
|
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
#ifdef MBEDTLS_EDDSA_C
|
||||||
if (ctx->grp.id == MBEDTLS_ECP_DP_ED25519) {
|
if (ctx->grp.id == MBEDTLS_ECP_DP_ED25519) {
|
||||||
r = mbedtls_eddsa_write_signature(ctx, data, data_len, out, 64, out_len, MBEDTLS_EDDSA_PURE, NULL, 0, random_gen, NULL);
|
r = mbedtls_eddsa_write_signature(ctx, data, data_len, out, 64, out_len, MBEDTLS_EDDSA_PURE, NULL, 0, random_gen, NULL);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
mbedtls_mpi ri, si;
|
mbedtls_mpi ri, si;
|
||||||
mbedtls_mpi_init(&ri);
|
mbedtls_mpi_init(&ri);
|
||||||
mbedtls_mpi_init(&si);
|
mbedtls_mpi_init(&si);
|
||||||
|
|||||||
@@ -3,5 +3,5 @@
|
|||||||
source tests/docker_env.sh
|
source tests/docker_env.sh
|
||||||
#run_in_docker rm -rf CMakeFiles
|
#run_in_docker rm -rf CMakeFiles
|
||||||
run_in_docker mkdir -p build_in_docker
|
run_in_docker mkdir -p build_in_docker
|
||||||
run_in_docker -w "$PWD/build_in_docker" cmake -DENABLE_EMULATION=1 ..
|
run_in_docker -w "$PWD/build_in_docker" cmake -DENABLE_EMULATION=1 -DENABLE_EDDSA=1 ..
|
||||||
run_in_docker -w "$PWD/build_in_docker" make -j ${NUM_PROC}
|
run_in_docker -w "$PWD/build_in_docker" make -j ${NUM_PROC}
|
||||||
|
|||||||
Reference in New Issue
Block a user