Add support for SHA2-512 hash on Qt4 builds
[quassel.git] / src / core / storage.h
index 9984d31..87e9b84 100644 (file)
@@ -42,6 +42,13 @@ public:
         NotAvailable // remove the storage backend from the list of avaliable backends
     };
 
+    enum HashVersion {
+        Sha1,
+        Sha2_512,
+        Latest=Sha2_512
+        
+    };
+
 public slots:
     /* General */
 
@@ -408,10 +415,16 @@ signals:
     void userRemoved(UserId);
 
 protected:
-    //! when implementing a storage handler, use this method to crypt user passwords.
-    /**  This guarantees compatibility with other storage handlers and allows easy migration
-     */
-    QString cryptedPassword(const QString &password);
+    QString hashPassword(const QString &password);
+    bool checkHashedPassword(const UserId user, const QString &password, const QString &hashedPassword, const Storage::HashVersion version);
+
+private:
+    QString hashPasswordSha1(const QString &password);
+    bool checkHashedPasswordSha1(const QString &password, const QString &hashedPassword);
+
+    QString hashPasswordSha2_512(const QString &password);
+    bool checkHashedPasswordSha2_512(const QString &password, const QString &hashedPassword);
+    QString sha2_512(const QString &input);
 };