Skip to content

Commit 6ba8736

Browse files
committed
library: ssl: replace mbedtls_pk_can_do() with mbedtls_pk_can_do_psa()
Signed-off-by: Valerio Setti <valerio.setti@nordicsemi.no>
1 parent 2aa9630 commit 6ba8736

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

library/ssl_tls12_client.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "debug_internal.h"
1717
#include "mbedtls/error.h"
1818
#include "mbedtls/constant_time.h"
19+
#include "mbedtls_utils.h"
1920

2021
#include "psa_util_internal.h"
2122
#include "psa/crypto.h"
@@ -1884,6 +1885,7 @@ static int ssl_parse_server_key_exchange(mbedtls_ssl_context *ssl)
18841885
unsigned char hash[MBEDTLS_MD_MAX_SIZE];
18851886

18861887
mbedtls_md_type_t md_alg = MBEDTLS_MD_NONE;
1888+
psa_algorithm_t psa_hash_alg;
18871889
mbedtls_pk_sigalg_t pk_alg = MBEDTLS_PK_SIGALG_NONE;
18881890
unsigned char *params = ssl->in_msg + mbedtls_ssl_hs_hdr_len(ssl);
18891891
size_t params_len = (size_t) (p - params);
@@ -1922,7 +1924,10 @@ static int ssl_parse_server_key_exchange(mbedtls_ssl_context *ssl)
19221924
}
19231925
p += 2;
19241926

1925-
if (!mbedtls_pk_can_do(peer_pk, (mbedtls_pk_type_t) pk_alg)) {
1927+
psa_hash_alg = mbedtls_md_psa_alg_from_type(md_alg);
1928+
if (!mbedtls_pk_can_do_psa(peer_pk,
1929+
mbedtls_psa_alg_from_pk_sigalg(pk_alg, psa_hash_alg),
1930+
PSA_KEY_USAGE_VERIFY_HASH)) {
19261931
MBEDTLS_SSL_DEBUG_MSG(1,
19271932
("bad server key exchange message"));
19281933
mbedtls_ssl_send_alert_message(

library/ssl_tls12_server.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "mbedtls/platform_util.h"
1818
#include "constant_time_internal.h"
1919
#include "mbedtls/constant_time.h"
20+
#include "mbedtls_utils.h"
2021

2122
#include <string.h>
2223

@@ -3426,7 +3427,9 @@ static int ssl_parse_certificate_verify(mbedtls_ssl_context *ssl)
34263427
/*
34273428
* Check the certificate's key type matches the signature alg
34283429
*/
3429-
if (!mbedtls_pk_can_do(peer_pk, (mbedtls_pk_type_t) pk_alg)) {
3430+
if (!mbedtls_pk_can_do_psa(peer_pk,
3431+
mbedtls_psa_alg_from_pk_sigalg(pk_alg, PSA_ALG_ANY_HASH),
3432+
PSA_KEY_USAGE_VERIFY_HASH)) {
34303433
MBEDTLS_SSL_DEBUG_MSG(1, ("sig_alg doesn't match cert key"));
34313434
return MBEDTLS_ERR_SSL_ILLEGAL_PARAMETER;
34323435
}

library/ssl_tls13_generic.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "mbedtls/constant_time.h"
1919
#include "psa/crypto.h"
2020
#include "mbedtls/psa_util.h"
21+
#include "mbedtls_utils.h"
2122

2223
#include "ssl_tls13_invasive.h"
2324
#include "ssl_tls13_keys.h"
@@ -277,7 +278,9 @@ static int ssl_tls13_parse_certificate_verify(mbedtls_ssl_context *ssl,
277278
/*
278279
* Check the certificate's key type matches the signature alg
279280
*/
280-
if (!mbedtls_pk_can_do(&ssl->session_negotiate->peer_cert->pk, (mbedtls_pk_type_t) sig_alg)) {
281+
if (!mbedtls_pk_can_do_psa(&ssl->session_negotiate->peer_cert->pk,
282+
mbedtls_psa_alg_from_pk_sigalg(sig_alg, hash_alg),
283+
PSA_KEY_USAGE_VERIFY_HASH)) {
281284
MBEDTLS_SSL_DEBUG_MSG(1, ("signature algorithm doesn't match cert key"));
282285
goto error;
283286
}

0 commit comments

Comments
 (0)