ser
This commit is contained in:
parent
1002c222a6
commit
663e62639d
@ -860,7 +860,10 @@ HDPrivateKey.generate = function generate(options, network) {
|
||||
*/
|
||||
|
||||
HDPrivateKey.parseBase58 = function parseBase58(xkey) {
|
||||
var raw = utils.fromBase58(xkey);
|
||||
return HDPrivateKey.parseRaw(utils.fromBase58(xkey));
|
||||
};
|
||||
|
||||
HDPrivateKey.parseRaw = function parseRaw(raw) {
|
||||
var p = new BufferReader(raw, true);
|
||||
var data = {};
|
||||
var i, type, prefix;
|
||||
@ -896,7 +899,11 @@ HDPrivateKey.parseBase58 = function parseBase58(xkey) {
|
||||
*/
|
||||
|
||||
HDPrivateKey.prototype.toBase58 = function toBase58(network) {
|
||||
var p = new BufferWriter();
|
||||
return utils.toBase58(this.toRaw(network));
|
||||
};
|
||||
|
||||
HDPrivateKey.prototype.toRaw = function toRaw(network, writer) {
|
||||
var p = new BufferWriter(writer);
|
||||
|
||||
if (!network)
|
||||
network = this.network;
|
||||
@ -912,7 +919,10 @@ HDPrivateKey.prototype.toBase58 = function toBase58(network) {
|
||||
p.writeBytes(this.privateKey);
|
||||
p.writeChecksum();
|
||||
|
||||
return utils.toBase58(p.render());
|
||||
if (!writer)
|
||||
p = p.render();
|
||||
|
||||
return p;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -1309,7 +1319,10 @@ HDPublicKey.isExtended = function isExtended(data) {
|
||||
*/
|
||||
|
||||
HDPublicKey.parseBase58 = function parseBase58(xkey) {
|
||||
var raw = utils.fromBase58(xkey);
|
||||
return HDPublicKey.parseRaw(utils.fromBase58(xkey));
|
||||
};
|
||||
|
||||
HDPublicKey.parseRaw = function parseRaw(raw) {
|
||||
var p = new BufferReader(raw, true);
|
||||
var data = {};
|
||||
var i, type, prefix;
|
||||
@ -1344,7 +1357,11 @@ HDPublicKey.parseBase58 = function parseBase58(xkey) {
|
||||
*/
|
||||
|
||||
HDPublicKey.prototype.toBase58 = function toBase58(network) {
|
||||
var p = new BufferWriter();
|
||||
return utils.toBase58(this.toRaw(network));
|
||||
};
|
||||
|
||||
HDPublicKey.prototype.toRaw = function toRaw(network, writer) {
|
||||
var p = new BufferWriter(writer);
|
||||
|
||||
if (!network)
|
||||
network = this.network;
|
||||
@ -1359,7 +1376,10 @@ HDPublicKey.prototype.toBase58 = function toBase58(network) {
|
||||
p.writeBytes(this.publicKey);
|
||||
p.writeChecksum();
|
||||
|
||||
return utils.toBase58(p.render());
|
||||
if (!writer)
|
||||
p = p.render();
|
||||
|
||||
return p;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@ -1572,6 +1572,89 @@ Wallet.prototype.toJSON = function toJSON() {
|
||||
};
|
||||
};
|
||||
|
||||
Wallet.prototype.toRaw = function toRaw(writer) {
|
||||
var p = new BufferWriter(writer);
|
||||
var i;
|
||||
|
||||
p.writeU32(this.network.magic);
|
||||
p.writeVarString(this.id, 'ascii');
|
||||
p.writeU8(this.type === 'pubkeyhash' ? 0 : 1);
|
||||
p.writeU8(this.m);
|
||||
p.writeU8(this.n);
|
||||
p.writeU8(this.witness ? 1 : 0);
|
||||
p.writeU8(this.derivation === 'bip44' ? 44 : 45);
|
||||
p.writeU8(this.copayBIP45 ? 1 : 0);
|
||||
p.writeU32(this.accountIndex);
|
||||
p.writeU32(this.receiveDepth);
|
||||
p.writeU32(this.changeDepth);
|
||||
p.writeVarBytes(this.master.toRaw());
|
||||
p.writeBytes(this.accountKey.toRaw()); // 82 bytes
|
||||
p.writeVarint(this.keys.length);
|
||||
|
||||
for (i = 0; i < this.keys.length; i++)
|
||||
p.writeBytes(this.keys[i].toRaw());
|
||||
|
||||
if (!writer)
|
||||
p = p.render();
|
||||
|
||||
return p;
|
||||
};
|
||||
|
||||
Wallet.fromRaw = function fromRaw(data) {
|
||||
return new Wallet(Wallet.parseRaw(data));
|
||||
};
|
||||
|
||||
Wallet.parseRaw = function parseRaw(data) {
|
||||
var networks = bcoin.protocol.network;
|
||||
var p = new BufferReader(data);
|
||||
var magic = p.readU32();
|
||||
var id = this.readVarString('ascii');
|
||||
var type = p.readU8() === 0 ? 'pubkeyhash' : 'multisig';
|
||||
var m = p.readU8();
|
||||
var n = p.readU8();
|
||||
var witness = p.readU8() === 1;
|
||||
var derivation = p.readU8() === 44 ? 'bip44' : 'bip45';
|
||||
var copayBIP45 = p.readU8() === 1;
|
||||
var accountIndex = p.readU32();
|
||||
var receiveDepth = p.readU32();
|
||||
var changeDepth = p.readU32();
|
||||
var master = MasterKey.fromRaw(p.readVarBytes());
|
||||
var accountKey = bcoin.hd.PublicKey.fromRaw(p.readBytes(82));
|
||||
var count = p.readVarint();
|
||||
var keys = [];
|
||||
var i, type, network;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
keys.push(bcoin.hd.PublicKey.fromRaw(p.readBytes(82)));
|
||||
|
||||
for (i = 0; i < networks.types.length; i++) {
|
||||
type = networks.types[i];
|
||||
if (magic === networks[type].magic) {
|
||||
network = type;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
assert(network, 'Network not found.');
|
||||
|
||||
return {
|
||||
network: network,
|
||||
id: id,
|
||||
type: type,
|
||||
m: m,
|
||||
n: n,
|
||||
witness: witness,
|
||||
derivation: derivation,
|
||||
copayBIP45: copayBIP45,
|
||||
accountIndex: accountIndex,
|
||||
receiveDepth: receiveDepth,
|
||||
changeDepth: changeDepth,
|
||||
master: master,
|
||||
accountKey: accountKey,
|
||||
keys: keys
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Handle a deserialized JSON wallet object.
|
||||
* @returns {Object} A "naked" wallet (a
|
||||
|
||||
Loading…
Reference in New Issue
Block a user