]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_pbkdf2.cpp
Add support for blocking tag messages with the deaf mode.
[user/henk/code/inspircd.git] / src / modules / m_pbkdf2.cpp
index 036538a3941d0a4acfba5d2609d85fc66b6b4613..daafa7f8c72e9fc8de2275de03d17905522b5576 100644 (file)
@@ -1,7 +1,10 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
- *   Copyright (C) 2014 Daniel Vassdal <shutter@canternet.org>
+ *   Copyright (C) 2018, 2020 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2018 linuxdaemon <linuxdaemon.irc@gmail.com>
+ *   Copyright (C) 2014, 2020 Daniel Vassdal <shutter@canternet.org>
+ *   Copyright (C) 2014, 2016 Attila Molnar <attilamolnar@hush.com>
  *
  * 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);
        }
 };