aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-05-02 19:55:03 +0100
committerGravatar Sadie Powell2022-05-02 19:55:03 +0100
commitc4f1d27a29763d4bcf3fc56a8629b2d3d7fba05e (patch)
tree5f38d3fcd9b448accd35a8c7c0e6e92725e6a129 /src/modules
parentFix various Doxygen comment issues. (diff)
parentFix 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.cpp23
-rw-r--r--src/modules/m_services_account.cpp16
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
{