nerve-sdk-js
Version:
nerve nerve-js nerve-sdk nerve-js-sdk
82 lines (66 loc) • 2.24 kB
JavaScript
var Serializers = require("../api/serializers");
var P2PHKSignature = function P2PHKSignature() {
this.pubkey = null;
this.signData = null;
};
var MultiTransactionSignatures = function MultiTransactionSignatures(_m, _pubkeyArray, _isPersonalSign) {
this.m = _m;
this.pubkeyArray = _pubkeyArray;
this.signatures = null;
this.isPersonalSign = false;
if (_isPersonalSign) {
this.isPersonalSign = _isPersonalSign;
}
this.serialize = function () {
var bw = new Serializers();
bw.getBufWriter().writeUInt8(this.m);
bw.getBufWriter().writeVarintNum(this.pubkeyArray.length);
for (index in this.pubkeyArray) {
bw.writeBytesWithLength(this.pubkeyArray[index]);
}
if (this.signatures && this.signatures.length > 0) {
for (var i = 0; i < this.signatures.length; i++) {
var signature = this.signatures[i];
bw.getBufWriter().writeUInt8(signature.pubkey.length);
bw.getBufWriter().write(signature.pubkey);
bw.writeBytesWithLength(signature.signData);
}
if (this.isPersonalSign) {
bw.writeBoolean(this.isPersonalSign);
}
}
return bw.getBufWriter().toBuffer();
};
this.parse = function (bufferReader) {
this.m = bufferReader.readUInt8();
var pubCount = bufferReader.readVarInt();
this.pubkeyArray = [];
for (var i = 0; i < pubCount; i++) {
this.pubkeyArray.push(bufferReader.readBytesByLength());
}
this.signatures = [];
this.isPersonalSign = false;
while (!bufferReader.isFinished() && bufferReader.remainLength() > 32) {
var length = bufferReader.readUInt8();
var sign = new P2PHKSignature();
sign.pubkey = bufferReader.slice(length);
sign.signData = bufferReader.readBytesByLength();
this.signatures.push(sign);
}
if (!bufferReader.isFinished()) {
this.isPersonalSign = bufferReader.readBoolean();
}
};
this.addSign = function (pubkey, signValue) {
if (!this.signatures || this.signatures == null) {
this.signatures = [];
}
var sign = new P2PHKSignature();
sign.pubkey = pubkey;
sign.signData = signValue;
this.signatures.push(sign);
};
};
module.exports = {
MultiTransactionSignatures
};