UNPKG

@bitgo/utxo-lib

Version:

Client-side Bitcoin JavaScript library

47 lines 7.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WalletUnspentSigner = void 0; const WalletKeys_1 = require("./WalletKeys"); class WalletUnspentSigner { static from(walletKeys, signer, cosigner) { return new WalletUnspentSigner(walletKeys, signer, cosigner); } constructor(walletKeys, signer, cosigner) { this.signer = signer; this.cosigner = cosigner; if (Array.isArray(walletKeys)) { walletKeys = new WalletKeys_1.RootWalletKeys(walletKeys); } this.signerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, signer)); if (this.signerIndex === undefined) { throw new Error(`signer not part of walletKeys`); } this.cosignerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, cosigner)); if (this.cosignerIndex === undefined) { throw new Error(`cosigner not part of walletKeys`); } this.walletKeys = walletKeys; if ((0, WalletKeys_1.eqPublicKey)(signer, cosigner)) { throw new Error(`signer must not equal cosigner`); } if (signer.isNeutered()) { throw new Error(`signer must have private key`); } } /** * @param chain * @param index * @return WalletUnspentSigner that contains keys for generating output scripts and signatures. */ deriveForChainAndIndex(chain, index) { if (this.walletKeys instanceof WalletKeys_1.DerivedWalletKeys) { throw new Error(`cannot derive again from DerivedWalletKeys`); } if (this.walletKeys instanceof WalletKeys_1.RootWalletKeys) { return new WalletUnspentSigner(this.walletKeys.deriveForChainAndIndex(chain, index), this.signer.derivePath(this.walletKeys.getDerivationPath(this.signer, chain, index)), this.cosigner.derivePath(this.walletKeys.getDerivationPath(this.cosigner, chain, index))); } throw new Error(`invalid state`); } } exports.WalletUnspentSigner = WalletUnspentSigner; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0VW5zcGVudFNpZ25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0VW5zcGVudFNpZ25lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw2Q0FBMEY7QUFHMUYsTUFBYSxtQkFBbUI7SUFHOUIsTUFBTSxDQUFDLElBQUksQ0FDVCxVQUEwQixFQUMxQixNQUFzQixFQUN0QixRQUF3QjtRQUV4QixPQUFPLElBQUksbUJBQW1CLENBQWlCLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUtELFlBQ0UsVUFBK0MsRUFDeEMsTUFBc0IsRUFDdEIsUUFBd0I7UUFEeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFFL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsVUFBVSxHQUFHLElBQUksMkJBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBVyxFQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQVcsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQWUsQ0FBQztRQUVsQyxJQUFJLElBQUEsd0JBQVcsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pELElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSw4QkFBaUIsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxZQUFZLDJCQUFjLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksbUJBQW1CLENBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ3BGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDekYsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQTdERCxrREE2REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby9zZWNwMjU2azEnO1xuXG5pbXBvcnQgeyBEZXJpdmVkV2FsbGV0S2V5cywgZXFQdWJsaWNLZXksIFJvb3RXYWxsZXRLZXlzLCBXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IFRyaXBsZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFdhbGxldFVuc3BlbnRTaWduZXI8VCBleHRlbmRzIFdhbGxldEtleXM+IHtcbiAgcHVibGljIHJlYWRvbmx5IHdhbGxldEtleXM6IFQ7XG5cbiAgc3RhdGljIGZyb20oXG4gICAgd2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gICAgc2lnbmVyOiBCSVAzMkludGVyZmFjZSxcbiAgICBjb3NpZ25lcjogQklQMzJJbnRlcmZhY2VcbiAgKTogV2FsbGV0VW5zcGVudFNpZ25lcjxSb290V2FsbGV0S2V5cz4ge1xuICAgIHJldHVybiBuZXcgV2FsbGV0VW5zcGVudFNpZ25lcjxSb290V2FsbGV0S2V5cz4od2FsbGV0S2V5cywgc2lnbmVyLCBjb3NpZ25lcik7XG4gIH1cblxuICByZWFkb25seSBzaWduZXJJbmRleDtcbiAgcmVhZG9ubHkgY29zaWduZXJJbmRleDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB3YWxsZXRLZXlzOiBXYWxsZXRLZXlzIHwgVHJpcGxlPEJJUDMySW50ZXJmYWNlPixcbiAgICBwdWJsaWMgc2lnbmVyOiBCSVAzMkludGVyZmFjZSxcbiAgICBwdWJsaWMgY29zaWduZXI6IEJJUDMySW50ZXJmYWNlXG4gICkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHdhbGxldEtleXMpKSB7XG4gICAgICB3YWxsZXRLZXlzID0gbmV3IFJvb3RXYWxsZXRLZXlzKHdhbGxldEtleXMpO1xuICAgIH1cbiAgICB0aGlzLnNpZ25lckluZGV4ID0gd2FsbGV0S2V5cy50cmlwbGUuZmluZEluZGV4KChrKSA9PiBlcVB1YmxpY0tleShrLCBzaWduZXIpKTtcbiAgICBpZiAodGhpcy5zaWduZXJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNpZ25lciBub3QgcGFydCBvZiB3YWxsZXRLZXlzYCk7XG4gICAgfVxuICAgIHRoaXMuY29zaWduZXJJbmRleCA9IHdhbGxldEtleXMudHJpcGxlLmZpbmRJbmRleCgoaykgPT4gZXFQdWJsaWNLZXkoaywgY29zaWduZXIpKTtcbiAgICBpZiAodGhpcy5jb3NpZ25lckluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY29zaWduZXIgbm90IHBhcnQgb2Ygd2FsbGV0S2V5c2ApO1xuICAgIH1cblxuICAgIHRoaXMud2FsbGV0S2V5cyA9IHdhbGxldEtleXMgYXMgVDtcblxuICAgIGlmIChlcVB1YmxpY0tleShzaWduZXIsIGNvc2lnbmVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzaWduZXIgbXVzdCBub3QgZXF1YWwgY29zaWduZXJgKTtcbiAgICB9XG4gICAgaWYgKHNpZ25lci5pc05ldXRlcmVkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmVyIG11c3QgaGF2ZSBwcml2YXRlIGtleWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gY2hhaW5cbiAgICogQHBhcmFtIGluZGV4XG4gICAqIEByZXR1cm4gV2FsbGV0VW5zcGVudFNpZ25lciB0aGF0IGNvbnRhaW5zIGtleXMgZm9yIGdlbmVyYXRpbmcgb3V0cHV0IHNjcmlwdHMgYW5kIHNpZ25hdHVyZXMuXG4gICAqL1xuICBkZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluOiBudW1iZXIsIGluZGV4OiBudW1iZXIpOiBXYWxsZXRVbnNwZW50U2lnbmVyPERlcml2ZWRXYWxsZXRLZXlzPiB7XG4gICAgaWYgKHRoaXMud2FsbGV0S2V5cyBpbnN0YW5jZW9mIERlcml2ZWRXYWxsZXRLZXlzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbm5vdCBkZXJpdmUgYWdhaW4gZnJvbSBEZXJpdmVkV2FsbGV0S2V5c2ApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhbGxldEtleXMgaW5zdGFuY2VvZiBSb290V2FsbGV0S2V5cykge1xuICAgICAgcmV0dXJuIG5ldyBXYWxsZXRVbnNwZW50U2lnbmVyKFxuICAgICAgICB0aGlzLndhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpLFxuICAgICAgICB0aGlzLnNpZ25lci5kZXJpdmVQYXRoKHRoaXMud2FsbGV0S2V5cy5nZXREZXJpdmF0aW9uUGF0aCh0aGlzLnNpZ25lciwgY2hhaW4sIGluZGV4KSksXG4gICAgICAgIHRoaXMuY29zaWduZXIuZGVyaXZlUGF0aCh0aGlzLndhbGxldEtleXMuZ2V0RGVyaXZhdGlvblBhdGgodGhpcy5jb3NpZ25lciwgY2hhaW4sIGluZGV4KSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIHN0YXRlYCk7XG4gIH1cbn1cbiJdfQ==