nerve-sdk-js
Version:
nerve nerve-js nerve-sdk nerve-js-sdk
67 lines (54 loc) • 1.75 kB
JavaScript
var Serializers = require("../api/serializers");
var P2PHKSignature = function P2PHKSignature() {
this.pubkey = null;
this.signData = null;
};
var TransactionSignatures = function TransactionSignatures(_isPersonalSign) {
this.signatures = null;
this.isPersonalSign = false;
if (_isPersonalSign) {
this.isPersonalSign = _isPersonalSign;
}
this.serialize = function () {
var bw = new Serializers();
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.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 = {
TransactionSignatures,
P2PHKSignature
};