2013-04-02 09:02:57 -04:00
|
|
|
/**
|
2013-05-14 06:01:51 -04:00
|
|
|
* A Wrapper for Forge's PBKDF2 function
|
2013-04-02 09:02:57 -04:00
|
|
|
*/
|
2013-03-13 11:58:46 -04:00
|
|
|
|
2014-10-02 16:05:44 -04:00
|
|
|
'use strict';
|
2013-06-10 17:07:29 -04:00
|
|
|
|
2014-10-09 08:27:10 -04:00
|
|
|
var pbkdf2 = {};
|
2013-04-01 18:12:15 -04:00
|
|
|
|
2014-10-02 16:05:44 -04:00
|
|
|
/**
|
|
|
|
* PBKDF2-HMAC-SHA256 key derivation with a random salt and 10000 iterations
|
|
|
|
* @param {String} password The password in UTF8
|
|
|
|
* @param {String} salt The base64 encoded salt
|
|
|
|
* @param {String} keySize The key size in bits
|
|
|
|
* @return {String} The base64 encoded key
|
|
|
|
*/
|
2014-10-09 08:27:10 -04:00
|
|
|
pbkdf2.getKey = function(password, salt, keySize) {
|
2014-10-02 16:05:44 -04:00
|
|
|
var saltUtf8 = forge.util.decode64(salt);
|
|
|
|
var md = forge.md.sha256.create();
|
|
|
|
var key = forge.pkcs5.pbkdf2(password, saltUtf8, 10000, keySize / 8, md);
|
|
|
|
|
|
|
|
return forge.util.encode64(key);
|
|
|
|
};
|
2013-04-01 18:12:15 -04:00
|
|
|
|
2014-10-09 08:27:10 -04:00
|
|
|
module.exports = pbkdf2;
|