/*
* 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
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
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
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Implements PBKDF2 hashing", VF_VENDOR);
+ return Version("Allows other modules to generate PBKDF2 hashes.", VF_VENDOR);
}
};