From 1c6d20e73c9369eb57b255188b59d784d0f2730e Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 28 Feb 2023 14:30:35 +0000 Subject: Refactor the password checking API. - Rename from (On)PassCompare to (On)CheckPassword. - Fix the order of the arguments to be password, hash, value. This makes more sense than what it was previously. - Fix the code documentation to not be complete nonsense and not reference ancient outdated APIs. --- src/command_parse.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/command_parse.cpp') diff --git a/src/command_parse.cpp b/src/command_parse.cpp index 0460f60b7..a5edf9913 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -26,24 +26,24 @@ #include "inspircd.h" -bool InspIRCd::PassCompare(const std::string& data, const std::string& input, const std::string& hashtype) +bool InspIRCd::CheckPassword(const std::string& password, const std::string& passwordhash, const std::string& value) { ModResult res; - FIRST_MOD_RESULT(OnPassCompare, res, (data, input, hashtype)); + FIRST_MOD_RESULT(OnCheckPassword, res, (password, passwordhash, value)); - /* Module matched */ if (res == MOD_RES_ALLOW) - return true; + return true; // Password explicitly valid. - /* Module explicitly didnt match */ if (res == MOD_RES_DENY) - return false; + return false; // Password explicitly invalid. - /* We dont handle any hash types except for plaintext - Thanks tra26 */ - if (!hashtype.empty() && !stdalgo::string::equalsci(hashtype, "plaintext")) - return false; + // 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); - return TimingSafeCompare(data, input); + // The password was invalid. + return false; } bool CommandParser::LoopCall(User* user, Command* handler, const CommandBase::Params& parameters, unsigned int splithere, int extra, bool usemax) -- cgit v1.3.1-10-gc9f91