Newer
Older
const
computecluster = require('compute-cluster'),
logger = require('../lib/logging.js').logger,
bcrypt = require('bcrypt');
var cc = new computecluster({
module: path.join(__dirname, "bcrypt-compute.js"),
max_backlog: 100000
});
cc.on('error', function(e) {
logger.error("error detected in bcrypt computation process! fatal: " + e.toString());
setTimeout(function() { process.exit(1); }, 0);
}).on('info', function(msg) {
logger.info("(compute cluster): " + msg);
}).on('debug', function(msg) {
logger.debug("(compute cluster): " + msg);
});
exports.encrypt = function(workFactor, password, cb) {
if (!cc) throw "bcrypt cluster is shut down";
cc.enqueue({
op: 'encrypt',
factor: workFactor,
pass: password
}, function(err, r) {
cb(err, r ? r.r : undefined);
});
};
exports.compare = function(pass, hash, cb) {
if (!cc) throw "bcrypt cluster is shut down";
cc.enqueue({
op: 'compare',
pass: pass,
hash: hash
}, function(err, r) {
cb(err, r ? r.r : undefined);
})
};
exports.get_rounds = function(hash) {
return bcrypt.get_rounds(hash);
};
exports.shutdown = function() {
if (cc) {
cc.exit();
cc = undefined;
}