1
0
mirror of https://github.com/anope/anope.git synced 2026-07-03 04:23:13 +02:00

Add self-tests to the encryption providers.

This commit is contained in:
Sadie Powell
2024-03-10 16:14:22 +00:00
parent 3b85a8071f
commit f919bb0748
5 changed files with 51 additions and 1 deletions
+18 -1
View File
@@ -66,7 +66,18 @@ namespace Encryption
/** Checks whether a plain text value matches a hash created by this provider. */
virtual bool Compare(const Anope::string &hash, const Anope::string &plain)
{
return hash.equals_cs(plain);
return !hash.empty() && hash.equals_cs(ToPrintable(Encrypt(plain)));
}
/** Called on initialising a encryption provider to check it works properly. */
void Check(const Anope::map<Anope::string> &checks)
{
for (const auto &[hash, plain] : checks)
{
if (!Compare(hash, plain))
throw ModuleException("BUG: unable to generate " + this->name + " hashes safely! Please report this!");
}
Log(LOG_DEBUG) << "The " << this->name << " encryption provider appears to be working correctly.";
}
/** Creates a new encryption context. */
@@ -102,6 +113,12 @@ namespace Encryption
return Encrypt(hmac1);
}
/** Converts a hash to its printable form. */
virtual Anope::string ToPrintable(const Anope::string &hash)
{
return Anope::Hex(hash);
}
};
/** Helper template for creating simple providers of encryption contexts. */