flocore/lib/crypto/kdf.js
2014-11-20 18:08:31 -03:00

34 lines
742 B
JavaScript

'use strict';
var Bn = require('./bn');
var Point = require('./point');
var Hash = require('./hash');
var Privkey = require('../privkey');
var Keypair = require('../keypair');
function KDF() {
}
KDF.buf2keypair = function(buf) {
return KDF.sha256hmac2keypair(buf);
};
KDF.sha256hmac2keypair = function(buf) {
var privkey = KDF.sha256hmac2privkey(buf);
var keypair = Keypair().fromPrivkey(privkey);
return keypair;
};
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()));
return new Privkey({bn: bn});
};
module.exports = KDF;