UNPKG

@bitgo/utxo-lib

Version:

Client-side Bitcoin JavaScript library

54 lines 6.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getKey = getKey; exports.getKeyTriple = getKeyTriple; exports.getUncompressedKeyTriple = getUncompressedKeyTriple; exports.getKeyName = getKeyName; exports.getDefaultCosigner = getDefaultCosigner; exports.getDefaultWalletKeys = getDefaultWalletKeys; const bip32_1 = require("bip32"); const crypto = require("crypto"); const WalletKeys_1 = require("../bitgo/wallet/WalletKeys"); const noble_ecc_1 = require("../noble_ecc"); const networks_1 = require("../networks"); const bip32 = (0, bip32_1.BIP32Factory)(noble_ecc_1.ecc); function getKey(seed) { return bip32.fromSeed(crypto.createHash('sha256').update(seed).digest()); } function getKeyTriple(seed) { return [getKey(seed + '.0'), getKey(seed + '.1'), getKey(seed + '.2')]; } function getUncompressedKey(input) { // Using input for deterministic randomness return noble_ecc_1.ECPair.makeRandom({ compressed: false, network: networks_1.networks.testnet, rng: () => { return Buffer.alloc(32, input); }, }); } function getUncompressedKeyTriple(inputs) { return [getUncompressedKey(inputs[0]), getUncompressedKey(inputs[1]), getUncompressedKey(inputs[2])]; } function getKeyName(triple, k) { return ['user', 'backup', 'bitgo'][triple.indexOf(k)]; } function getDefaultCosigner(keyset, signer) { const eq = (a, b) => a === b || (Buffer.isBuffer(a) && Buffer.isBuffer(b) && a.equals(b)); const [user, backup, bitgo] = keyset; if (eq(signer, user)) { return bitgo; } if (eq(signer, backup)) { return bitgo; } if (eq(signer, bitgo)) { return user; } throw new Error(`signer not in pubkeys`); } function getDefaultWalletKeys() { return new WalletKeys_1.RootWalletKeys(getKeyTriple('default')); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBYUEsd0JBRUM7QUFFRCxvQ0FFQztBQWFELDREQUVDO0FBRUQsZ0NBRUM7QUFFRCxnREFhQztBQUVELG9EQUVDO0FBekRELGlDQUErRDtBQUMvRCxpQ0FBaUM7QUFHakMsMkRBQTREO0FBQzVELDRDQUE0RDtBQUM1RCwwQ0FBdUM7QUFFdkMsTUFBTSxLQUFLLEdBQWEsSUFBQSxvQkFBWSxFQUFDLGVBQUcsQ0FBQyxDQUFDO0FBSzFDLFNBQWdCLE1BQU0sQ0FBQyxJQUFZO0lBQ2pDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsSUFBWTtJQUN2QyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxLQUFLO0lBQy9CLDJDQUEyQztJQUMzQyxPQUFPLGtCQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3ZCLFVBQVUsRUFBRSxLQUFLO1FBQ2pCLE9BQU8sRUFBRSxtQkFBUSxDQUFDLE9BQU87UUFDekIsR0FBRyxFQUFFLEdBQVcsRUFBRTtZQUNoQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsTUFBc0I7SUFDN0QsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkcsQ0FBQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxNQUE4QixFQUFFLENBQWlCO0lBQzFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUksTUFBaUIsRUFBRSxNQUFTO0lBQ2hFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3JDLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CO0lBQ2xDLE9BQU8sSUFBSSwyQkFBYyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkFQSSwgQklQMzJGYWN0b3J5LCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICcuLi9iaXRnby90eXBlcyc7XG5pbXBvcnQgeyBSb290V2FsbGV0S2V5cyB9IGZyb20gJy4uL2JpdGdvL3dhbGxldC9XYWxsZXRLZXlzJztcbmltcG9ydCB7IGVjYywgRUNQYWlyLCBFQ1BhaXJJbnRlcmZhY2UgfSBmcm9tICcuLi9ub2JsZV9lY2MnO1xuaW1wb3J0IHsgbmV0d29ya3MgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5cbmNvbnN0IGJpcDMyOiBCSVAzMkFQSSA9IEJJUDMyRmFjdG9yeShlY2MpO1xuXG5leHBvcnQgdHlwZSBLZXlUcmlwbGUgPSBUcmlwbGU8QklQMzJJbnRlcmZhY2U+O1xuZXhwb3J0IHR5cGUgVW5jb21wcmVzc2VkS2V5VHJpcGxlID0gVHJpcGxlPEVDUGFpckludGVyZmFjZT47XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXkoc2VlZDogc3RyaW5nKTogQklQMzJJbnRlcmZhY2Uge1xuICByZXR1cm4gYmlwMzIuZnJvbVNlZWQoY3J5cHRvLmNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShzZWVkKS5kaWdlc3QoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXlUcmlwbGUoc2VlZDogc3RyaW5nKTogS2V5VHJpcGxlIHtcbiAgcmV0dXJuIFtnZXRLZXkoc2VlZCArICcuMCcpLCBnZXRLZXkoc2VlZCArICcuMScpLCBnZXRLZXkoc2VlZCArICcuMicpXTtcbn1cblxuZnVuY3Rpb24gZ2V0VW5jb21wcmVzc2VkS2V5KGlucHV0KSB7XG4gIC8vIFVzaW5nIGlucHV0IGZvciBkZXRlcm1pbmlzdGljIHJhbmRvbW5lc3NcbiAgcmV0dXJuIEVDUGFpci5tYWtlUmFuZG9tKHtcbiAgICBjb21wcmVzc2VkOiBmYWxzZSxcbiAgICBuZXR3b3JrOiBuZXR3b3Jrcy50ZXN0bmV0LFxuICAgIHJuZzogKCk6IEJ1ZmZlciA9PiB7XG4gICAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDMyLCBpbnB1dCk7XG4gICAgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVbmNvbXByZXNzZWRLZXlUcmlwbGUoaW5wdXRzOiBUcmlwbGU8bnVtYmVyPik6IFVuY29tcHJlc3NlZEtleVRyaXBsZSB7XG4gIHJldHVybiBbZ2V0VW5jb21wcmVzc2VkS2V5KGlucHV0c1swXSksIGdldFVuY29tcHJlc3NlZEtleShpbnB1dHNbMV0pLCBnZXRVbmNvbXByZXNzZWRLZXkoaW5wdXRzWzJdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXlOYW1lKHRyaXBsZTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPiwgazogQklQMzJJbnRlcmZhY2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gWyd1c2VyJywgJ2JhY2t1cCcsICdiaXRnbyddW3RyaXBsZS5pbmRleE9mKGspXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb3NpZ25lcjxUPihrZXlzZXQ6IFRyaXBsZTxUPiwgc2lnbmVyOiBUKTogVCB7XG4gIGNvbnN0IGVxID0gKGE6IFQsIGI6IFQpID0+IGEgPT09IGIgfHwgKEJ1ZmZlci5pc0J1ZmZlcihhKSAmJiBCdWZmZXIuaXNCdWZmZXIoYikgJiYgYS5lcXVhbHMoYikpO1xuICBjb25zdCBbdXNlciwgYmFja3VwLCBiaXRnb10gPSBrZXlzZXQ7XG4gIGlmIChlcShzaWduZXIsIHVzZXIpKSB7XG4gICAgcmV0dXJuIGJpdGdvO1xuICB9XG4gIGlmIChlcShzaWduZXIsIGJhY2t1cCkpIHtcbiAgICByZXR1cm4gYml0Z287XG4gIH1cbiAgaWYgKGVxKHNpZ25lciwgYml0Z28pKSB7XG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBzaWduZXIgbm90IGluIHB1YmtleXNgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRXYWxsZXRLZXlzKCk6IFJvb3RXYWxsZXRLZXlzIHtcbiAgcmV0dXJuIG5ldyBSb290V2FsbGV0S2V5cyhnZXRLZXlUcmlwbGUoJ2RlZmF1bHQnKSk7XG59XG4iXX0=