more hd refactoring.
This commit is contained in:
parent
c8e771d05b
commit
99d8f4d928
@ -238,6 +238,17 @@ HD.fromAny = function fromAny(options, networkType) {
|
|||||||
return HDPrivateKey.fromSeed(options, networkType);
|
return HDPrivateKey.fromSeed(options, networkType);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test whether an object is in the form of a base58 hd key.
|
||||||
|
* @param {String} data
|
||||||
|
* @returns {Boolean}
|
||||||
|
*/
|
||||||
|
|
||||||
|
HD.isExtended = function isExtended(data) {
|
||||||
|
return HDPrivateKey.isExtended(data)
|
||||||
|
|| HDPublicKey.isExtended(data);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* LRU cache to avoid deriving keys twice.
|
* LRU cache to avoid deriving keys twice.
|
||||||
* @type {LRU}
|
* @type {LRU}
|
||||||
|
|||||||
@ -44,9 +44,6 @@ var assert = utils.assert;
|
|||||||
var constants = bcoin.protocol.constants;
|
var constants = bcoin.protocol.constants;
|
||||||
var network = bcoin.protocol.network;
|
var network = bcoin.protocol.network;
|
||||||
var BufferWriter = require('./writer');
|
var BufferWriter = require('./writer');
|
||||||
var HD = bcoin.hd;
|
|
||||||
var HDPrivateKey = bcoin.hd.privateKey;
|
|
||||||
var HDPublicKey = bcoin.hd.publicKey;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HD BIP-44/45 wallet
|
* HD BIP-44/45 wallet
|
||||||
@ -98,12 +95,12 @@ function Wallet(options) {
|
|||||||
|
|
||||||
if (options.master
|
if (options.master
|
||||||
&& typeof options.master === 'object'
|
&& typeof options.master === 'object'
|
||||||
&& !(options.master instanceof HD)) {
|
&& !(options.master instanceof bcoin.hd)) {
|
||||||
options.master = HD.fromAny(options.master);
|
options.master = bcoin.hd.fromAny(options.master);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!options.master)
|
if (!options.master)
|
||||||
options.master = HD.fromSeed();
|
options.master = bcoin.hd.fromSeed();
|
||||||
|
|
||||||
this.options = options;
|
this.options = options;
|
||||||
this.provider = options.provider || null;
|
this.provider = options.provider || null;
|
||||||
@ -272,20 +269,20 @@ Wallet.prototype.destroy = function destroy(callback) {
|
|||||||
Wallet.prototype.addKey = function addKey(key) {
|
Wallet.prototype.addKey = function addKey(key) {
|
||||||
var index, i;
|
var index, i;
|
||||||
|
|
||||||
|
assert(key, 'Key required.');
|
||||||
|
|
||||||
if (key instanceof bcoin.wallet) {
|
if (key instanceof bcoin.wallet) {
|
||||||
assert(key.derivation === this.derivation);
|
assert(key.derivation === this.derivation);
|
||||||
key = key.accountKey;
|
key = key.accountKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HDPrivateKey.isExtended(key))
|
if (bcoin.hd.isExtended(key))
|
||||||
key = HDPrivateKey.fromBase58(key);
|
key = bcoin.hd.fromBase58(key);
|
||||||
else if (HDPublicKey.isExtended(key))
|
|
||||||
key = HDPublicKey.fromBase58(key);
|
|
||||||
|
|
||||||
if (key instanceof HDPrivateKey)
|
if (key.hdPublicKey)
|
||||||
key = key.hdPublicKey;
|
key = key.hdPublicKey;
|
||||||
|
|
||||||
assert(key instanceof HD, 'Must add HD keys to wallet.');
|
assert(key instanceof bcoin.hd, 'Must add HD keys to wallet.');
|
||||||
|
|
||||||
if (this.derivation === 'bip44') {
|
if (this.derivation === 'bip44') {
|
||||||
if (!key || !key.isAccount44())
|
if (!key || !key.isAccount44())
|
||||||
@ -325,20 +322,20 @@ Wallet.prototype.removeKey = function removeKey(key) {
|
|||||||
|
|
||||||
assert(!this._keysFinalized);
|
assert(!this._keysFinalized);
|
||||||
|
|
||||||
|
assert(key, 'Key required.');
|
||||||
|
|
||||||
if (key instanceof bcoin.wallet) {
|
if (key instanceof bcoin.wallet) {
|
||||||
assert(key.derivation === this.derivation);
|
assert(key.derivation === this.derivation);
|
||||||
key = key.accountKey;
|
key = key.accountKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HDPrivateKey.isExtended(key))
|
if (bcoin.hd.isExtended(key))
|
||||||
key = HDPrivateKey.fromBase58(key);
|
key = bcoin.hd.fromBase58(key);
|
||||||
else if (HDPublicKey.isExtended(key))
|
|
||||||
key = HDPublicKey.fromBase58(key);
|
|
||||||
|
|
||||||
if (key instanceof HDPrivateKey)
|
if (key.hdPublicKey)
|
||||||
key = key.hdPublicKey;
|
key = key.hdPublicKey;
|
||||||
|
|
||||||
assert(key instanceof HD, 'Must add HD keys to wallet.');
|
assert(key instanceof bcoin.hd, 'Must add HD keys to wallet.');
|
||||||
|
|
||||||
if (this.derivation === 'bip44') {
|
if (this.derivation === 'bip44') {
|
||||||
if (!key || !key.isAccount44())
|
if (!key || !key.isAccount44())
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user