25 lines
698 B
JavaScript
25 lines
698 B
JavaScript
// @ts-check
|
|
|
|
const { createHmac } = require("crypto");
|
|
|
|
/**
|
|
* # Hash password Function
|
|
* @param {object} param0
|
|
* @param {string} param0.password - Password to hash
|
|
* @param {string} [param0.encryptionKey] - Encryption key
|
|
* @returns {string}
|
|
*/
|
|
module.exports = function hashPassword({ password, encryptionKey }) {
|
|
const finalEncryptionKey =
|
|
encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD;
|
|
|
|
if (!finalEncryptionKey?.match(/.{8,}/)) {
|
|
throw new Error("Encryption key is invalid");
|
|
}
|
|
|
|
const hmac = createHmac("sha512", finalEncryptionKey);
|
|
hmac.update(password);
|
|
let hashed = hmac.digest("base64");
|
|
return hashed;
|
|
};
|