diff --git a/servatrice/src/main.cpp b/servatrice/src/main.cpp index c71477fe..17338337 100644 --- a/servatrice/src/main.cpp +++ b/servatrice/src/main.cpp @@ -157,6 +157,8 @@ int main(int argc, char *argv[]) std::cerr << "Servatrice " << VERSION_STRING << " starting." << std::endl; std::cerr << "-------------------------" << std::endl; + PasswordHasher::initialize(); + if (testRandom) testRNG(); if (testHashFunction) diff --git a/servatrice/src/passwordhasher.cpp b/servatrice/src/passwordhasher.cpp index 48fe7b66..1cc8528c 100644 --- a/servatrice/src/passwordhasher.cpp +++ b/servatrice/src/passwordhasher.cpp @@ -3,6 +3,14 @@ #include #include +void PasswordHasher::initialize() +{ + // These calls are required by libgcrypt before we use any of its functions. + gcry_check_version(0); + gcry_control(GCRYCTL_DISABLE_SECMEM, 0); + gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0); +} + QString PasswordHasher::computeHash(const QString &password, const QString &salt) { const int algo = GCRY_MD_SHA512; diff --git a/servatrice/src/passwordhasher.h b/servatrice/src/passwordhasher.h index 2487b322..0cb6744c 100644 --- a/servatrice/src/passwordhasher.h +++ b/servatrice/src/passwordhasher.h @@ -5,6 +5,7 @@ class PasswordHasher { public: + static void initialize(); static QString computeHash(const QString &password, const QString &salt); };