om/server/crypto.js

32 lines
940 B
JavaScript

// Original file created by Prof.Dr. Matthias Hopf
/*
* Crypto routines for Authorization
*/
const crypto = require ("crypto");
const defaultHash = "sha256";
const defaultSaltLen = 16; // More (e.g. 256) for extra paranoia
const mod = {
encodePwd: function (entry, pwd) {
return crypto.createHash (entry.hash) .update (entry.salt + ":" + pwd, 'utf8') .digest ('base64');
},
checkLocalAuth: function (entry, pwd) {
if (!entry || !entry._id || !entry.hash || !entry.salt || !entry.hash || !entry.pwd ||
!pwd || pwd === '')
return false;
return mod.encodePwd (entry, pwd) === entry.pwd;
},
fillLocalAuth: function (entry, pwd) {
if (!entry.hash)
entry.hash = defaultHash;
entry.salt = crypto.randomBytes (defaultSaltLen) .toString('base64');
entry.pwd = mod.encodePwd (entry, pwd);
},
}
module.exports = mod;