From: Max Fillinger Date: Fri, 30 Jan 2026 07:11:31 +0000 (+0100) Subject: Mbed TLS 4: Add more algorithms X-Git-Tag: v2.7.0~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2183eb5d5437df03f74141f35fd548ae481f6b11;p=thirdparty%2Fopenvpn.git Mbed TLS 4: Add more algorithms Expand the tables of hash functions and elliptic curve groups, and also check if they are compiled in. Change-Id: I740991f22b728fe2f5a48bc18d5ca4b62f56f399 Signed-off-by: Max Fillinger Acked-by: Arne Schwabe Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1500 Message-Id: <20260130071137.14398-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg35507.html Signed-off-by: Gert Doering --- diff --git a/src/openvpn/crypto_mbedtls.c b/src/openvpn/crypto_mbedtls.c index 5418df92e..02735cd2a 100644 --- a/src/openvpn/crypto_mbedtls.c +++ b/src/openvpn/crypto_mbedtls.c @@ -605,10 +605,36 @@ cipher_ctx_final_check_tag(cipher_ctx_t *ctx, uint8_t *dst, int *dst_len, uint8_ } static const md_info_t md_info_table[] = { - /* TODO: Fill out table. */ +#if defined(PSA_WANT_ALG_MD5) { "MD5", PSA_ALG_MD5 }, +#endif +#if defined(PSA_WANT_ALG_SHA_1) { "SHA1", PSA_ALG_SHA_1 }, +#endif +#if defined(PSA_WANT_ALG_SHA_224) + { "SHA224", PSA_ALG_SHA_224 }, +#endif +#if defined(PSA_WANT_ALG_SHA_256) { "SHA256", PSA_ALG_SHA_256 }, +#endif +#if defined(PSA_WANT_ALG_SHA_384) + { "SHA384", PSA_ALG_SHA_384 }, +#endif +#if defined(PSA_WANT_ALG_SHA_512) + { "SHA512", PSA_ALG_SHA_512 }, +#endif +#if defined(PSA_WANT_ALG_SHA3_224) + { "SHA3-224", PSA_ALG_SHA3_224 }, +#endif +#if defined(PSA_WANT_ALG_SHA3_256) + { "SHA3-256", PSA_ALG_SHA3_256 }, +#endif +#if defined(PSA_WANT_ALG_SHA3_384) + { "SHA3-384", PSA_ALG_SHA3_384 }, +#endif +#if defined(PSA_WANT_ALG_SHA3_512) + { "SHA3-512", PSA_ALG_SHA3_512 }, +#endif }; const size_t md_info_table_entries = sizeof(md_info_table) / sizeof(md_info_t); diff --git a/src/openvpn/ssl_mbedtls.c b/src/openvpn/ssl_mbedtls.c index 3e1698fee..5227eb84e 100644 --- a/src/openvpn/ssl_mbedtls.c +++ b/src/openvpn/ssl_mbedtls.c @@ -356,15 +356,54 @@ tls_ctx_set_cert_profile(struct tls_root_ctx *ctx, const char *profile) #if MBEDTLS_VERSION_NUMBER >= 0x04000000 static const mbedtls_ecp_curve_info ecp_curve_info_table[] = { - /* TODO: Fill out the table. */ +/* secp curves. */ +#if defined(PSA_WANT_ECC_SECP_R1_256) { "secp256r1", MBEDTLS_SSL_IANA_TLS_GROUP_SECP256R1 }, +#endif +#if defined(PSA_WANT_ECC_SECP_R1_384) { "secp384r1", MBEDTLS_SSL_IANA_TLS_GROUP_SECP384R1 }, +#endif +#if defined(PSA_WANT_ECC_SECP_R1_521) + { "secp521r1", MBEDTLS_SSL_IANA_TLS_GROUP_SECP521R1 }, +#endif + +/* Curve25519. */ +#if defined(PSA_WANT_ECC_MONTGOMERY_255) { "X25519", MBEDTLS_SSL_IANA_TLS_GROUP_X25519 }, +#endif + +/* Curve448. */ +#if defined(PSA_WANT_ECC_MONTGOMERY_448) + { "X448", MBEDTLS_SSL_IANA_TLS_GROUP_X448 }, +#endif + +/* Brainpool curves. */ +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_256) + { "brainpoolP256r1", MBEDTLS_SSL_IANA_TLS_GROUP_BP256R1 }, +#endif +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_384) + { "brainpoolP384r1", MBEDTLS_SSL_IANA_TLS_GROUP_BP384R1 }, +#endif +#if defined(PSA_WANT_ECC_BRAINPOOL_P_R1_512) + { "brainpoolP512r1", MBEDTLS_SSL_IANA_TLS_GROUP_BP512R1 }, +#endif + +/* Named Diffie-Hellman groups. */ +#if defined(PSA_WANT_DH_RFC7919_2048) { "ffdhe2048", MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE2048 }, +#endif +#if defined(PSA_WANT_DH_RFC7919_3072) { "ffdhe3072", MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE3072 }, +#endif +#if defined(PSA_WANT_DH_RFC7919_4096) { "ffdhe4096", MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE4096 }, +#endif +#if defined(PSA_WANT_DH_RFC7919_6144) { "ffdhe6144", MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE6144 }, +#endif +#if defined(PSA_WANT_DH_RFC7919_8192) { "ffdhe8192", MBEDTLS_SSL_IANA_TLS_GROUP_FFDHE8192 }, +#endif }; static const size_t ecp_curve_info_table_items = sizeof(ecp_curve_info_table) / sizeof(mbedtls_ecp_curve_info); @@ -1523,7 +1562,11 @@ show_available_curves(void) pcurve++; } #else - msg(M_FATAL, "Mbed TLS 4 has no mechanism to list supported curves."); + printf("Available elliptic curves:\n\n"); + for (size_t i = 0; i < ecp_curve_info_table_items; i++) + { + printf("%s\n", ecp_curve_info_table[i].name); + } #endif /* MBEDTLS_VERSION_NUMBER < 0x04000000 */ }