forked from 1self/api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathencoder.js
More file actions
25 lines (22 loc) · 681 Bytes
/
Copy pathencoder.js
File metadata and controls
25 lines (22 loc) · 681 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var crypto = require('crypto');
var Q = require('q');
var hashPassword = function (opts) {
var deferred = Q.defer();
crypto.pbkdf2(opts.plaintext, opts.salt, opts.iterations, 64, function (err, key) {
if (err) {
deferred.reject(err);
}
opts.key = new Buffer(key).toString('base64');
deferred.resolve({ encodedUsername: opts.key, salt: opts.salt });
});
return deferred.promise;
};
exports.encodeUsername = function (username) {
var salt = crypto.randomBytes(8).toString('base64');
var opts = {
salt: salt,
plaintext: username,
iterations: 10000
};
return hashPassword(opts);
};