@@ -74,23 +74,32 @@ static int crt_check_signature(mbedtls_x509_crt *child, const uint8_t *pub_key_b
7474 }
7575
7676
77+ #if MBEDTLS_VERSION_MAJOR < 4
7778 // Fast check to avoid expensive computations when not necessary
7879 if (!mbedtls_pk_can_do (& parent .pk , child -> MBEDTLS_PRIVATE (sig_pk ))) {
7980 LOGE (TAG , "Simple compare failed" );
8081 ret = -1 ;
8182 goto cleanup ;
8283 }
84+ #endif
8385
8486 md_info = mbedtls_md_info_from_type (child -> MBEDTLS_PRIVATE (sig_md ));
8587 if ((ret = mbedtls_md (md_info , child -> tbs .p , child -> tbs .len , hash )) != 0 ) {
8688 LOGE (TAG , "Internal mbedTLS error %X" , ret );
8789 goto cleanup ;
8890 }
8991
92+ #if MBEDTLS_VERSION_MAJOR >= 4
93+ if ((ret = mbedtls_pk_verify_ext (
94+ child -> MBEDTLS_PRIVATE (sig_pk ), & parent .pk ,
95+ child -> MBEDTLS_PRIVATE (sig_md ), hash , mbedtls_md_get_size (md_info ),
96+ child -> MBEDTLS_PRIVATE (sig ).p , child -> MBEDTLS_PRIVATE (sig ).len )) != 0 ) {
97+ #else
9098 if ((ret = mbedtls_pk_verify_ext (
9199 child -> MBEDTLS_PRIVATE (sig_pk ), child -> MBEDTLS_PRIVATE (sig_opts ), & parent .pk ,
92100 child -> MBEDTLS_PRIVATE (sig_md ), hash , mbedtls_md_get_size (md_info ),
93101 child -> MBEDTLS_PRIVATE (sig ).p , child -> MBEDTLS_PRIVATE (sig ).len )) != 0 ) {
102+ #endif
94103
95104 LOGE (TAG , "PK verify failed with error %X" , ret );
96105 goto cleanup ;
0 commit comments