45 lines
948 B
JavaScript
45 lines
948 B
JavaScript
/*!
|
|
* pbkdf2.js - pbkdf2 for bcoin
|
|
* Copyright (c) 2014-2017, Christopher Jeffrey (MIT License).
|
|
* https://github.com/bcoin-org/bcoin
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* @module crypto.pbkdf2
|
|
*/
|
|
|
|
const crypto = require('crypto');
|
|
const co = require('../utils/co');
|
|
|
|
/**
|
|
* Perform key derivation using PBKDF2.
|
|
* @param {Buffer} key
|
|
* @param {Buffer} salt
|
|
* @param {Number} iter
|
|
* @param {Number} len
|
|
* @param {String} alg
|
|
* @returns {Buffer}
|
|
*/
|
|
|
|
exports.derive = function derive(key, salt, iter, len, alg) {
|
|
return crypto.pbkdf2Sync(key, salt, iter, len, alg);
|
|
};
|
|
|
|
/**
|
|
* Execute pbkdf2 asynchronously.
|
|
* @param {Buffer} key
|
|
* @param {Buffer} salt
|
|
* @param {Number} iter
|
|
* @param {Number} len
|
|
* @param {String} alg
|
|
* @returns {Promise}
|
|
*/
|
|
|
|
exports.deriveAsync = function deriveAsync(key, salt, iter, len, alg) {
|
|
return new Promise((resolve, reject) => {
|
|
crypto.pbkdf2(key, salt, iter, len, alg, co.wrap(resolve, reject));
|
|
});
|
|
};
|