@ledgerhq/hw-app-btc
Version:
Ledger Hardware Wallet Bitcoin Application API
27 lines • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTrustedInputBIP143 = getTrustedInputBIP143;
const sha256_1 = require("@noble/hashes/sha256");
const serializeTransaction_1 = require("./serializeTransaction");
function getTrustedInputBIP143(indexLookup, transaction, additionals = []) {
if (!transaction) {
throw new Error("getTrustedInputBIP143: missing tx");
}
const isDecred = additionals.includes("decred");
if (isDecred) {
throw new Error("Decred does not implement BIP143");
}
let hash = Buffer.from((0, sha256_1.sha256)((0, sha256_1.sha256)((0, serializeTransaction_1.serializeTransaction)(transaction, true))));
const data = Buffer.alloc(4);
data.writeUInt32LE(indexLookup, 0);
const { outputs, locktime } = transaction;
if (!outputs || !locktime) {
throw new Error("getTrustedInputBIP143: locktime & outputs is expected");
}
if (!outputs[indexLookup]) {
throw new Error("getTrustedInputBIP143: wrong index");
}
hash = Buffer.concat([hash, data, outputs[indexLookup].amount]);
return hash.toString("hex");
}
//# sourceMappingURL=getTrustedInputBIP143.js.map