Key -> Keypair

This commit is contained in:
Ryan X. Charles 2014-09-17 15:13:57 -07:00
parent 7390b15f89
commit bd16eddf54
1 changed files with 28 additions and 28 deletions

View File

@ -25,7 +25,7 @@ BIP32.prototype.set = function(obj) {
this.parentFingerprint = obj.parentFingerprint || this.parentFingerprint;
this.childIndex = obj.childIndex || this.childIndex;
this.chainCode = obj.chainCode || this.chainCode;
this.key = obj.key || this.key;
this.keypair = obj.keypair || this.keypair;
this.hasPrivateKey = typeof obj.hasPrivateKey !== 'undefined' ? obj.hasPrivateKey : this.hasPrivateKey;
this.pubKeyHash = obj.pubKeyHash || this.pubKeyHash;
this.extendedPublicKey = obj.extendedPublicKey || this.extendedPublicKey;
@ -41,9 +41,9 @@ BIP32.prototype.fromRandom = function(networkstr) {
this.parentFingerprint = new Buffer([0, 0, 0, 0]);
this.childIndex = new Buffer([0, 0, 0, 0]);
this.chainCode = Random.getRandomBuffer(32);
this.key = (new Keypair()).fromRandom();
this.keypair = (new Keypair()).fromRandom();
this.hasPrivateKey = true;
this.pubKeyHash = Hash.sha256ripemd160(this.key.pubkey.toBuffer());
this.pubKeyHash = Hash.sha256ripemd160(this.keypair.pubkey.toBuffer());
this.buildExtendedPublicKey();
this.buildExtendedPrivateKey();
};
@ -71,11 +71,11 @@ BIP32.prototype.fromSeed = function(bytes, networkstr) {
this.childIndex = new Buffer([0, 0, 0, 0]);
this.chainCode = hash.slice(32, 64);
this.version = constants[networkstr].bip32privkey;
this.key = new Keypair();
this.key.privkey = new Privkey({bn: bn.fromBuffer(hash.slice(0, 32))});
this.key.privkey2pubkey();
this.keypair = new Keypair();
this.keypair.privkey = new Privkey({bn: bn.fromBuffer(hash.slice(0, 32))});
this.keypair.privkey2pubkey();
this.hasPrivateKey = true;
this.pubKeyHash = Hash.sha256ripemd160(this.key.pubkey.toBuffer());
this.pubKeyHash = Hash.sha256ripemd160(this.keypair.pubkey.toBuffer());
this.buildExtendedPublicKey();
this.buildExtendedPrivateKey();
@ -105,15 +105,15 @@ BIP32.prototype.initFromBytes = function(bytes) {
this.version == constants.testnet.bip32pubkey);
if (isPrivate && keyBytes[0] == 0) {
this.key = new Keypair();
this.key.privkey = new Privkey({bn: bn.fromBuffer(keyBytes.slice(1, 33))});
this.key.privkey2pubkey();
this.pubKeyHash = Hash.sha256ripemd160(this.key.pubkey.toBuffer());
this.keypair = new Keypair();
this.keypair.privkey = new Privkey({bn: bn.fromBuffer(keyBytes.slice(1, 33))});
this.keypair.privkey2pubkey();
this.pubKeyHash = Hash.sha256ripemd160(this.keypair.pubkey.toBuffer());
this.hasPrivateKey = true;
} else if (isPublic && (keyBytes[0] == 0x02 || keyBytes[0] == 0x03)) {
this.key = new Keypair();
this.key.pubkey = (new Pubkey()).fromDER(keyBytes);
this.pubKeyHash = Hash.sha256ripemd160(this.key.pubkey.toBuffer());
this.keypair = new Keypair();
this.keypair.pubkey = (new Pubkey()).fromDER(keyBytes);
this.pubKeyHash = Hash.sha256ripemd160(this.keypair.pubkey.toBuffer());
this.hasPrivateKey = false;
} else {
throw new Error('Invalid key');
@ -153,7 +153,7 @@ BIP32.prototype.buildExtendedPublicKey = function() {
new Buffer([(this.childIndex >>> 8) & 0xff]),
new Buffer([this.childIndex & 0xff]),
this.chainCode,
this.key.pubkey.toBuffer()
this.keypair.pubkey.toBuffer()
]);
}
@ -186,7 +186,7 @@ BIP32.prototype.buildExtendedPrivateKey = function() {
new Buffer([this.childIndex & 0xff]),
this.chainCode,
new Buffer([0]),
this.key.privkey.bn.toBuffer({size: 32})
this.keypair.privkey.bn.toBuffer({size: 32})
]);
}
@ -257,9 +257,9 @@ BIP32.prototype.deriveChild = function(i) {
var data = null;
if (usePrivate) {
data = Buffer.concat([new Buffer([0]), this.key.privkey.bn.toBuffer({size: 32}), ib]);
data = Buffer.concat([new Buffer([0]), this.keypair.privkey.bn.toBuffer({size: 32}), ib]);
} else {
data = Buffer.concat([this.key.pubkey.toBuffer({size: 32}), ib]);
data = Buffer.concat([this.keypair.pubkey.toBuffer({size: 32}), ib]);
}
var hash = Hash.sha512hmac(data, this.chainCode);
@ -267,25 +267,25 @@ BIP32.prototype.deriveChild = function(i) {
var ir = hash.slice(32, 64);
// ki = IL + kpar (mod n).
var k = il.add(this.key.privkey.bn).mod(Point.getN());
var k = il.add(this.keypair.privkey.bn).mod(Point.getN());
ret = new BIP32();
ret.chainCode = ir;
ret.key = new Keypair();
ret.key.privkey = new Privkey({bn: k});
ret.key.privkey2pubkey();
ret.keypair = new Keypair();
ret.keypair.privkey = new Privkey({bn: k});
ret.keypair.privkey2pubkey();
ret.hasPrivateKey = true;
} else {
var data = Buffer.concat([this.key.pubkey.toBuffer(), ib]);
var data = Buffer.concat([this.keypair.pubkey.toBuffer(), ib]);
var hash = Hash.sha512hmac(data, this.chainCode);
var il = bn(hash.slice(0, 32));
var ir = hash.slice(32, 64);
// Ki = (IL + kpar)*G = IL*G + Kpar
var ilG = Point.getG().mul(il);
var Kpar = this.key.pubkey.point;
var Kpar = this.keypair.pubkey.point;
var Ki = ilG.add(Kpar);
var newpub = new Pubkey();
newpub.point = Ki;
@ -293,9 +293,9 @@ BIP32.prototype.deriveChild = function(i) {
ret = new BIP32();
ret.chainCode = ir;
var key = new Keypair();
key.pubkey = newpub;
ret.key = key;
var keypair = new Keypair();
keypair.pubkey = newpub;
ret.keypair = keypair;
ret.hasPrivateKey = false;
}
@ -304,7 +304,7 @@ BIP32.prototype.deriveChild = function(i) {
ret.version = this.version;
ret.depth = this.depth + 1;
ret.pubKeyHash = Hash.sha256ripemd160(ret.key.pubkey.toBuffer());
ret.pubKeyHash = Hash.sha256ripemd160(ret.keypair.pubkey.toBuffer());
ret.buildExtendedPublicKey();
ret.buildExtendedPrivateKey();