diff options
| author | 2022-05-02 19:55:03 +0100 | |
|---|---|---|
| committer | 2022-05-02 19:55:03 +0100 | |
| commit | c4f1d27a29763d4bcf3fc56a8629b2d3d7fba05e (patch) | |
| tree | 5f38d3fcd9b448accd35a8c7c0e6e92725e6a129 /src/modules | |
| parent | Fix various Doxygen comment issues. (diff) | |
| parent | Fix using the obsolete curve method on mbedTLS 3+. (diff) | |
Merge branch 'insp3' into master.
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/extra/m_ssl_mbedtls.cpp | 23 | ||||
| -rw-r--r-- | src/modules/m_services_account.cpp | 16 |
2 files changed, 33 insertions, 6 deletions
diff --git a/src/modules/extra/m_ssl_mbedtls.cpp b/src/modules/extra/m_ssl_mbedtls.cpp index 09023771b..67a5cac79 100644 --- a/src/modules/extra/m_ssl_mbedtls.cpp +++ b/src/modules/extra/m_ssl_mbedtls.cpp @@ -29,10 +29,6 @@ #include "inspircd.h" #include "modules/ssl.h" -// 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> @@ -179,7 +175,11 @@ namespace mbedTLS class Curves final { +#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) @@ -190,12 +190,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); } }; @@ -247,12 +256,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; @@ -323,7 +330,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) diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp index 7475ad48d..2e2334c24 100644 --- a/src/modules/m_services_account.cpp +++ b/src/modules/m_services_account.cpp @@ -32,6 +32,7 @@ #include "modules/ctctags.h" #include "modules/extban.h" #include "modules/exemption.h" +#include "modules/who.h" #include "modules/whois.h" enum @@ -172,6 +173,7 @@ public: class ModuleServicesAccount final : public Module , public CTCTags::EventListener + , public Who::EventListener , public Whois::EventListener { private: @@ -191,6 +193,7 @@ public: ModuleServicesAccount() : Module(VF_VENDOR | VF_OPTCOMMON, "Adds various channel and user modes relating to services accounts.") , CTCTags::EventListener(this) + , Who::EventListener(this) , Whois::EventListener(this) , calleridapi(this) , exemptionprov(this) @@ -206,6 +209,19 @@ public: { } + + ModResult OnWhoLine(const Who::Request& request, LocalUser* source, User* user, Membership* memb, Numeric::Numeric& numeric) override + { + size_t flag_index; + if (!request.GetFieldIndex('f', flag_index)) + return MOD_RES_PASSTHRU; + + if (user->IsModeSet(userregmode)) + numeric.GetParams()[flag_index].push_back('r'); + + return MOD_RES_PASSTHRU; + } + /* <- :twisted.oscnet.org 330 w00t2 w00t2 w00t :is logged in as */ void OnWhois(Whois::Context& whois) override { |
