diff options
| author | 2022-05-02 19:45:58 +0100 | |
|---|---|---|
| committer | 2022-05-02 19:46:32 +0100 | |
| commit | e8f758234057bb4e0aaeb4d57ec41bf76223dc11 (patch) | |
| tree | 33913416cfb2140be46c501b17021afe3ce043f1 /src/modules/extra | |
| parent | Implement the 'r' (registered nick) WHO flag from UnrealIRCd. (diff) | |
| download | inspircd++-e8f758234057bb4e0aaeb4d57ec41bf76223dc11.tar.gz inspircd++-e8f758234057bb4e0aaeb4d57ec41bf76223dc11.tar.bz2 inspircd++-e8f758234057bb4e0aaeb4d57ec41bf76223dc11.zip | |
Fix using the obsolete curve method on mbedTLS 3+.
Diffstat (limited to 'src/modules/extra')
| -rw-r--r-- | src/modules/extra/m_ssl_mbedtls.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/modules/extra/m_ssl_mbedtls.cpp b/src/modules/extra/m_ssl_mbedtls.cpp index 4c8c99f1a..64bb553a1 100644 --- a/src/modules/extra/m_ssl_mbedtls.cpp +++ b/src/modules/extra/m_ssl_mbedtls.cpp @@ -40,10 +40,6 @@ # endif #endif -// Temporary fix for mbedTLS v3 not allowing access to grp_id without any -// replacement API. -#define MBEDTLS_ALLOW_PRIVATE_ACCESS - #include <mbedtls/ctr_drbg.h> #include <mbedtls/dhm.h> #include <mbedtls/ecp.h> @@ -182,7 +178,11 @@ namespace mbedTLS class Curves { +#if MBEDTLS_VERSION_MAJOR >= 3 + std::vector<uint16_t> list; +#else std::vector<mbedtls_ecp_group_id> list; +#endif public: Curves(const std::string& str) @@ -193,12 +193,21 @@ namespace mbedTLS const mbedtls_ecp_curve_info* curve = mbedtls_ecp_curve_info_from_name(token.c_str()); if (!curve) throw Exception("Unknown curve " + token); +#if MBEDTLS_VERSION_MAJOR >= 3 + list.push_back(curve->tls_id); +#else list.push_back(curve->grp_id); +#endif } list.push_back(MBEDTLS_ECP_DP_NONE); } +#if MBEDTLS_VERSION_MAJOR >= 3 + const uint16_t* get() const { return &list.front(); } +#else const mbedtls_ecp_group_id* get() const { return &list.front(); } +#endif + bool empty() const { return (list.size() <= 1); } }; @@ -248,12 +257,10 @@ namespace mbedTLS bool found = false; for (mbedtls_x509_crt* cert = certs.get(); cert; cert = cert->next) { - #if MBEDTLS_VERSION_MAJOR >= 3 if (mbedtls_pk_check_pair(&cert->pk, key.get(), mbedtls_ctr_drbg_random, 0) == 0) #else if (mbedtls_pk_check_pair(&cert->pk, key.get()) == 0) - #endif { found = true; @@ -324,7 +331,11 @@ namespace mbedTLS void SetCurves(const Curves& curves) { +#if MBEDTLS_VERSION_MAJOR >= 3 + mbedtls_ssl_conf_groups(&conf, curves.get()); +#else mbedtls_ssl_conf_curves(&conf, curves.get()); +#endif } void SetVersion(int minver, int maxver) |
