From 461fa723a1a1e9feb9db5e9bd77c34cb34caef29 Mon Sep 17 00:00:00 2001 From: Hanno Becker Date: Wed, 21 Aug 2019 17:05:03 +0100 Subject: [PATCH] TinyCrypt SSL: Adapt ssl_check_key_curve() to TinyCrypt --- library/ssl_srv.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/library/ssl_srv.c b/library/ssl_srv.c index f27fb0db9..f617950c2 100644 --- a/library/ssl_srv.c +++ b/library/ssl_srv.c @@ -725,11 +725,17 @@ static int ssl_parse_alpn_ext( mbedtls_ssl_context *ssl, /* * Return 0 if the given key uses one of the acceptable curves, -1 otherwise */ -#if defined(MBEDTLS_ECDSA_C) +#if defined(MBEDTLS_ECDSA_C) || defined(MBEDTLS_USE_TINYCRYPT) static int ssl_check_key_curve( mbedtls_pk_context *pk, unsigned char const *acceptable_ec_tls_ids, size_t ec_tls_ids_len ) { + uint16_t tls_id; + +#if defined(MBEDTLS_USE_TINYCRYPT) + ((void) pk); + tls_id = 23; /* TLS ID for Secp256r1. */ +#else mbedtls_ecp_curve_info const *info; mbedtls_ecp_group_id grp_id = mbedtls_pk_ec( *pk )->grp.id; @@ -737,6 +743,9 @@ static int ssl_check_key_curve( mbedtls_pk_context *pk, if( info == NULL ) return( -1 ); + tls_id = info->tls_id; +#endif /* MBEDTLS_USE_TINYCRYPT */ + if( acceptable_ec_tls_ids == NULL ) return( -1 ); @@ -745,7 +754,7 @@ static int ssl_check_key_curve( mbedtls_pk_context *pk, uint16_t const cur_tls_id = ( acceptable_ec_tls_ids[0] << 8 ) | acceptable_ec_tls_ids[1]; - if( cur_tls_id == info->tls_id ) + if( cur_tls_id == tls_id ) return( 0 ); acceptable_ec_tls_ids += 2; @@ -825,7 +834,7 @@ static int ssl_pick_cert( mbedtls_ssl_context *ssl, match = 0; } -#if defined(MBEDTLS_ECDSA_C) +#if defined(MBEDTLS_ECDSA_C) || defined(MBEDTLS_USE_TINYCRYPT) if( pk_alg == MBEDTLS_PK_ECDSA && ssl_check_key_curve( pk, acceptable_ec_tls_ids,