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) {
|
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 p = new BufferReader(raw, true);
|
||||||
var data = {};
|
var data = {};
|
||||||
var i, type, prefix;
|
var i, type, prefix;
|
||||||
@ -896,7 +899,11 @@ HDPrivateKey.parseBase58 = function parseBase58(xkey) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
HDPrivateKey.prototype.toBase58 = function toBase58(network) {
|
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)
|
if (!network)
|
||||||
network = this.network;
|
network = this.network;
|
||||||
@ -912,7 +919,10 @@ HDPrivateKey.prototype.toBase58 = function toBase58(network) {
|
|||||||
p.writeBytes(this.privateKey);
|
p.writeBytes(this.privateKey);
|
||||||
p.writeChecksum();
|
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) {
|
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 p = new BufferReader(raw, true);
|
||||||
var data = {};
|
var data = {};
|
||||||
var i, type, prefix;
|
var i, type, prefix;
|
||||||
@ -1344,7 +1357,11 @@ HDPublicKey.parseBase58 = function parseBase58(xkey) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
HDPublicKey.prototype.toBase58 = function toBase58(network) {
|
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)
|
if (!network)
|
||||||
network = this.network;
|
network = this.network;
|
||||||
@ -1359,7 +1376,10 @@ HDPublicKey.prototype.toBase58 = function toBase58(network) {
|
|||||||
p.writeBytes(this.publicKey);
|
p.writeBytes(this.publicKey);
|
||||||
p.writeChecksum();
|
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.
|
* Handle a deserialized JSON wallet object.
|
||||||
* @returns {Object} A "naked" wallet (a
|
* @returns {Object} A "naked" wallet (a
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user