X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_pbkdf2.cpp;h=daafa7f8c72e9fc8de2275de03d17905522b5576;hb=e2b0f3dc9ef4d56c71d7abda13e6139ca092e387;hp=036538a3941d0a4acfba5d2609d85fc66b6b4613;hpb=87b1461e2a4710a38b32186c2582da9fe9bb3804;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_pbkdf2.cpp b/src/modules/m_pbkdf2.cpp index 036538a39..daafa7f8c 100644 --- a/src/modules/m_pbkdf2.cpp +++ b/src/modules/m_pbkdf2.cpp @@ -1,7 +1,10 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2014 Daniel Vassdal + * Copyright (C) 2018, 2020 Sadie Powell + * Copyright (C) 2018 linuxdaemon + * Copyright (C) 2014, 2020 Daniel Vassdal + * Copyright (C) 2014, 2016 Attila Molnar * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public @@ -123,7 +126,7 @@ class PBKDF2Provider : public HashProvider return false; std::string cmp = PBKDF2(input, hs.salt, hs.iterations, hs.length); - return (cmp == hs.hash); + return InspIRCd::TimingSafeCompare(cmp, hs.hash); } std::string ToPrintable(const std::string& raw) CXX11_OVERRIDE @@ -206,6 +209,14 @@ class ModulePBKDF2 : public Module stdalgo::delete_all(providers); } + void init() CXX11_OVERRIDE + { + // Let ourself know about any existing services. + const ModuleManager::DataProviderMap& dataproviders = ServerInstance->Modules->DataProviders; + for (ModuleManager::DataProviderMap::const_iterator it = dataproviders.begin(); it != dataproviders.end(); ++it) + OnServiceAdd(*it->second); + } + void OnServiceAdd(ServiceProvider& provider) CXX11_OVERRIDE { // Check if it's a hash provider @@ -245,7 +256,7 @@ class ModulePBKDF2 : public Module Version GetVersion() CXX11_OVERRIDE { - return Version("Implements PBKDF2 hashing", VF_VENDOR); + return Version("Allows other modules to generate PBKDF2 hashes.", VF_VENDOR); } };