From b6db18bd12cc5654f206dd40e6bf16e80cedb7e6 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Mon, 8 May 2023 12:50:42 +0100 Subject: Move CheckPassword to helperfuncs. --- src/helperfuncs.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/helperfuncs.cpp') diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index ba61d1b0d..4de955464 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -37,6 +37,26 @@ #include "duration.h" #include "xline.h" +bool InspIRCd::CheckPassword(const std::string& password, const std::string& passwordhash, const std::string& value) +{ + ModResult res; + FIRST_MOD_RESULT(OnCheckPassword, res, (password, passwordhash, value)); + + if (res == MOD_RES_ALLOW) + return true; // Password explicitly valid. + + if (res == MOD_RES_DENY) + return false; // Password explicitly invalid. + + // The hash algorithm wasn't recognised by any modules. If its plain + // text then we can check it internally. + if (passwordhash.empty() || stdalgo::string::equalsci(passwordhash, "plaintext")) + return TimingSafeCompare(password, value); + + // The password was invalid. + return false; +} + bool InspIRCd::IsValidMask(const std::string& mask) { const char* dest = mask.c_str(); -- cgit v1.3.1-10-gc9f91