aboutsummaryrefslogtreecommitdiff
path: root/src/PasswordHash.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/PasswordHash.cpp')
-rw-r--r--src/PasswordHash.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/PasswordHash.cpp b/src/PasswordHash.cpp
new file mode 100644
index 0000000..f6d3713
--- /dev/null
+++ b/src/PasswordHash.cpp
@@ -0,0 +1,23 @@
+#include "../include/odhtdb/PasswordHash.hpp"
+#include <argon2.h>
+
+namespace odhtdb
+{
+ OwnedMemory hashPassword(const DataView &plainPassword, const DataView &salt)
+ {
+ OwnedMemory result;
+
+ const uint32_t tCost = 2;
+ const uint32_t mCost = 1 << 16;
+ const uint32_t parallelism = 1;
+ const uint32_t HASHLEN = 32;
+
+ result.data = new uint8_t[HASHLEN];
+ result.size = HASHLEN;
+
+ if(argon2i_hash_raw(tCost, mCost, parallelism, plainPassword.data, plainPassword.size, salt.data, salt.size, result.data, HASHLEN) != ARGON2_OK)
+ throw std::runtime_error("Failed to hash password");
+
+ return result;
+ }
+}