b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame^] | 1 | --- a/cmake/Modules/FindMbedTLS.cmake |
| 2 | +++ b/cmake/Modules/FindMbedTLS.cmake |
| 3 | @@ -34,7 +34,7 @@ set(_MBEDTLS_ROOT_HINTS_AND_PATHS |
| 4 | |
| 5 | find_path(MBEDTLS_INCLUDE_DIR |
| 6 | NAMES |
| 7 | - mbedtls/config.h |
| 8 | + mbedtls/version.h |
| 9 | HINTS |
| 10 | ${_MBEDTLS_ROOT_HINTS_AND_PATHS} |
| 11 | PATH_SUFFIXES |
| 12 | @@ -72,7 +72,13 @@ find_library(MBEDTLS_X509_LIBRARY |
| 13 | set(MBEDTLS_LIBRARIES ${MBEDTLS_SSL_LIBRARY} ${MBEDTLS_CRYPTO_LIBRARY} |
| 14 | ${MBEDTLS_X509_LIBRARY}) |
| 15 | |
| 16 | -if (MBEDTLS_INCLUDE_DIR AND EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h") |
| 17 | +if (MBEDTLS_INCLUDE_DIR AND EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h") |
| 18 | + file(STRINGS "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h" _mbedtls_version_str REGEX |
| 19 | + "^#[\t ]*define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"[0-9]+.[0-9]+.[0-9]+\"") |
| 20 | + |
| 21 | + string(REGEX REPLACE "^.*MBEDTLS_VERSION_STRING.*([0-9]+.[0-9]+.[0-9]+).*" |
| 22 | + "\\1" MBEDTLS_VERSION "${_mbedtls_version_str}") |
| 23 | +elseif (MBEDTLS_INCLUDE_DIR AND EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h") |
| 24 | file(STRINGS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h" _mbedtls_version_str REGEX |
| 25 | "^#[\t ]*define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"[0-9]+.[0-9]+.[0-9]+\"") |
| 26 | |
| 27 | @@ -93,7 +99,7 @@ if (MBEDTLS_VERSION) |
| 28 | in the system variable MBEDTLS_ROOT_DIR" |
| 29 | ) |
| 30 | else (MBEDTLS_VERSION) |
| 31 | - find_package_handle_standard_args(MBedTLS |
| 32 | + find_package_handle_standard_args(MbedTLS |
| 33 | "Could NOT find mbedTLS, try to set the path to mbedLS root folder in |
| 34 | the system variable MBEDTLS_ROOT_DIR" |
| 35 | MBEDTLS_INCLUDE_DIR |
| 36 | --- a/src/libmbedcrypto.c |
| 37 | +++ b/src/libmbedcrypto.c |
| 38 | @@ -118,8 +118,14 @@ int hmac_update(HMACCTX c, const void *d |
| 39 | |
| 40 | int hmac_final(HMACCTX c, unsigned char *hashmacbuf, size_t *len) |
| 41 | { |
| 42 | + const mbedtls_md_info_t *md_info; |
| 43 | int rc; |
| 44 | - *len = (unsigned int)mbedtls_md_get_size(c->md_info); |
| 45 | +#if MBEDTLS_VERSION_MAJOR >= 3 |
| 46 | + md_info = mbedtls_md_info_from_ctx(c); |
| 47 | +#else |
| 48 | + md_info = c->md_info; |
| 49 | +#endif |
| 50 | + *len = (unsigned int)mbedtls_md_get_size(md_info); |
| 51 | rc = !mbedtls_md_hmac_finish(c, hashmacbuf); |
| 52 | mbedtls_md_free(c); |
| 53 | SAFE_FREE(c); |