bitcore/lib/kdf.js

34 lines
753 B
JavaScript
Raw Normal View History

2014-08-13 14:31:28 -07:00
var Bn = require('./bn');
var Privkey = require('./privkey');
var Point = require('./point');
var Pubkey = require('./pubkey');
var Key = require('./key');
var Hash = require('./hash');
function KDF() {
};
KDF.buf2key = function(buf) {
return KDF.sha256hmac2key(buf);
};
KDF.sha256hmac2key = function(buf) {
var privkey = KDF.sha256hmac2privkey(buf);
2014-08-28 16:18:36 -07:00
var key = new Key({privkey: privkey});
2014-08-13 14:31:28 -07:00
key.privkey2pubkey();
return key;
};
KDF.sha256hmac2privkey = function(buf) {
var bn;
var concat = new Buffer([]);
do {
var hash = Hash.sha256hmac(buf, concat);
var bn = Bn.fromBuffer(hash);
concat = Buffer.concat([concat, new Buffer(0)]);
} while(!bn.lt(Point.getN()));
2014-08-28 17:26:56 -07:00
return new Privkey({bn: bn});
2014-08-13 14:31:28 -07:00
};
module.exports = KDF;