UNPKG

1.8 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const crypto_1 = require("../crypto");
4const utils_1 = require("../utils");
5const utils_2 = require("./utils");
6class Signer {
7 static sign(transaction, keys, options) {
8 options = options || { excludeSignature: true, excludeSecondSignature: true };
9 const hash = utils_2.Utils.toHash(transaction, options);
10 const signature = transaction.version === 2 ? crypto_1.Hash.signSchnorr(hash, keys) : crypto_1.Hash.signECDSA(hash, keys);
11 if (!transaction.signature && !options.excludeMultiSignature) {
12 transaction.signature = signature;
13 }
14 return signature;
15 }
16 static secondSign(transaction, keys) {
17 const hash = utils_2.Utils.toHash(transaction, { excludeSecondSignature: true });
18 const signature = transaction.version === 2 ? crypto_1.Hash.signSchnorr(hash, keys) : crypto_1.Hash.signECDSA(hash, keys);
19 if (!transaction.secondSignature) {
20 transaction.secondSignature = signature;
21 }
22 return signature;
23 }
24 static multiSign(transaction, keys, index = -1) {
25 if (!transaction.signatures) {
26 transaction.signatures = [];
27 }
28 index = index === -1 ? transaction.signatures.length : index;
29 const hash = utils_2.Utils.toHash(transaction, {
30 excludeSignature: true,
31 excludeSecondSignature: true,
32 excludeMultiSignature: true,
33 });
34 const signature = crypto_1.Hash.signSchnorr(hash, keys);
35 const indexedSignature = `${utils_1.numberToHex(index)}${signature}`;
36 transaction.signatures.push(indexedSignature);
37 return indexedSignature;
38 }
39}
40exports.Signer = Signer;
41//# sourceMappingURL=signer.js.map
\No newline at end of file