@bitgo-beta/utxo-core 1.8.1-beta.60 → 1.8.1-beta.601
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/Output.d.ts.map +1 -0
- package/dist/cjs/src/Output.js +60 -0
- package/dist/cjs/src/bip322/index.d.ts +5 -0
- package/dist/cjs/src/bip322/index.d.ts.map +1 -0
- package/dist/cjs/src/bip322/index.js +21 -0
- package/dist/cjs/src/bip322/toSign.d.ts +25 -0
- package/dist/cjs/src/bip322/toSign.d.ts.map +1 -0
- package/dist/cjs/src/bip322/toSign.js +126 -0
- package/dist/cjs/src/bip322/toSpend.d.ts +22 -0
- package/dist/cjs/src/bip322/toSpend.d.ts.map +1 -0
- package/dist/cjs/src/bip322/toSpend.js +72 -0
- package/dist/cjs/src/bip322/utils.d.ts +18 -0
- package/dist/cjs/src/bip322/utils.d.ts.map +1 -0
- package/dist/cjs/src/bip322/utils.js +115 -0
- package/dist/cjs/src/bip322/verify.d.ts +12 -0
- package/dist/cjs/src/bip322/verify.d.ts.map +1 -0
- package/dist/cjs/src/bip322/verify.js +115 -0
- package/dist/cjs/src/bip32utils.d.ts +16 -0
- package/dist/cjs/src/bip32utils.d.ts.map +1 -0
- package/dist/cjs/src/bip32utils.js +71 -0
- package/dist/cjs/src/bip65/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/bip65/index.js +1 -1
- package/dist/cjs/src/bip65/locktime.d.ts.map +1 -0
- package/dist/cjs/src/bip65/locktime.js +37 -0
- package/dist/{src → cjs/src}/descriptor/DescriptorMap.d.ts +1 -1
- package/dist/cjs/src/descriptor/DescriptorMap.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/DescriptorMap.js +9 -0
- package/dist/{src → cjs/src}/descriptor/Output.d.ts +1 -1
- package/dist/cjs/src/descriptor/Output.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/Output.js +41 -0
- package/dist/{src → cjs/src}/descriptor/VirtualSize.d.ts +1 -1
- package/dist/cjs/src/descriptor/VirtualSize.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/VirtualSize.js +100 -0
- package/dist/{src → cjs/src}/descriptor/address.d.ts +1 -1
- package/dist/cjs/src/descriptor/address.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/address.js +1 -1
- package/dist/{src → cjs/src}/descriptor/derive.d.ts +1 -1
- package/dist/cjs/src/descriptor/derive.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/derive.js +45 -0
- package/dist/{src → cjs/src}/descriptor/fromFixedScriptWallet.d.ts +1 -1
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/fromFixedScriptWallet.js +88 -0
- package/dist/{src → cjs/src}/descriptor/index.d.ts +1 -0
- package/dist/cjs/src/descriptor/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/index.js +2 -1
- package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts +14 -0
- package/dist/cjs/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/parse/PatternMatcher.js +60 -0
- package/dist/{src → cjs/src}/descriptor/psbt/assertSatisfiable.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/assertSatisfiable.js +74 -0
- package/dist/{src → cjs/src}/descriptor/psbt/createPsbt.d.ts +4 -0
- package/dist/cjs/src/descriptor/psbt/createPsbt.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/createPsbt.js +107 -0
- package/dist/{src → cjs/src}/descriptor/psbt/findDescriptors.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/findDescriptors.js +98 -0
- package/dist/cjs/src/descriptor/psbt/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/descriptor/psbt/index.js +1 -1
- package/dist/{src → cjs/src}/descriptor/psbt/parse.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/parse.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/parse.js +87 -0
- package/dist/{src → cjs/src}/descriptor/psbt/sign.d.ts +4 -4
- package/dist/cjs/src/descriptor/psbt/sign.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/sign.js +42 -0
- package/dist/{src → cjs/src}/descriptor/psbt/wrap.d.ts +1 -1
- package/dist/cjs/src/descriptor/psbt/wrap.d.ts.map +1 -0
- package/dist/cjs/src/descriptor/psbt/wrap.js +76 -0
- package/dist/cjs/src/dustThreshold.d.ts.map +1 -0
- package/dist/cjs/src/dustThreshold.js +134 -0
- package/dist/{src → cjs/src}/index.d.ts +1 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/index.js +3 -2
- package/dist/cjs/src/paygo/attestation.d.ts +11 -0
- package/dist/cjs/src/paygo/attestation.d.ts.map +1 -0
- package/dist/cjs/src/paygo/attestation.js +58 -0
- package/dist/cjs/src/paygo/index.d.ts +3 -0
- package/dist/cjs/src/paygo/index.d.ts.map +1 -0
- package/dist/cjs/src/paygo/index.js +19 -0
- package/dist/{src/paygo/ExtractAddressPayGoAttestation.d.ts → cjs/src/paygo/parsePayGoAttestation.d.ts} +8 -3
- package/dist/cjs/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/cjs/src/paygo/parsePayGoAttestation.js +50 -0
- package/dist/cjs/src/paygo/psbt/Errors.d.ts +22 -0
- package/dist/cjs/src/paygo/psbt/Errors.d.ts.map +1 -0
- package/dist/cjs/src/paygo/psbt/Errors.js +44 -0
- package/dist/cjs/src/paygo/psbt/index.d.ts +2 -0
- package/dist/cjs/src/paygo/psbt/index.d.ts.map +1 -0
- package/dist/{src/paygo → cjs/src/paygo/psbt}/index.js +2 -2
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/cjs/src/paygo/psbt/payGoAddressProof.js +124 -0
- package/dist/{src → cjs/src}/testutil/descriptor/descriptors.d.ts +4 -1
- package/dist/cjs/src/testutil/descriptor/descriptors.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/descriptors.js +162 -0
- package/dist/cjs/src/testutil/descriptor/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/testutil/descriptor/index.js +1 -1
- package/dist/{src → cjs/src}/testutil/descriptor/mock.utils.d.ts +3 -1
- package/dist/cjs/src/testutil/descriptor/mock.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/mock.utils.js +92 -0
- package/dist/cjs/src/testutil/descriptor/psbt.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/descriptor/psbt.utils.js +21 -0
- package/dist/cjs/src/testutil/fixtures.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/fixtures.utils.js +127 -0
- package/dist/{src → cjs/src}/testutil/generatePayGoAttestationProof.utils.d.ts +1 -1
- package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
- package/dist/{src → cjs/src}/testutil/index.d.ts +1 -0
- package/dist/cjs/src/testutil/index.d.ts.map +1 -0
- package/dist/{src → cjs/src}/testutil/index.js +2 -1
- package/dist/{src → cjs/src}/testutil/key.utils.d.ts +1 -1
- package/dist/cjs/src/testutil/key.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/key.utils.js +60 -0
- package/dist/cjs/src/testutil/toPlainObject.utils.d.ts.map +1 -0
- package/dist/cjs/src/testutil/toPlainObject.utils.js +89 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.d.ts +11 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.d.ts.map +1 -0
- package/dist/cjs/src/testutil/trimMessagePrefix.js +60 -0
- package/dist/cjs/src/xOnlyPubkey.d.ts.map +1 -0
- package/dist/cjs/src/xOnlyPubkey.js +18 -0
- package/dist/cjs/test/Output.d.ts +2 -0
- package/dist/cjs/test/Output.d.ts.map +1 -0
- package/dist/cjs/test/Output.js +70 -0
- package/dist/cjs/test/bip322/bip322.utils.d.ts +7 -0
- package/dist/cjs/test/bip322/bip322.utils.d.ts.map +1 -0
- package/dist/cjs/test/bip322/bip322.utils.js +16 -0
- package/dist/cjs/test/bip322/toSign.d.ts +2 -0
- package/dist/cjs/test/bip322/toSign.d.ts.map +1 -0
- package/dist/cjs/test/bip322/toSign.js +133 -0
- package/dist/cjs/test/bip322/toSpend.d.ts +2 -0
- package/dist/cjs/test/bip322/toSpend.d.ts.map +1 -0
- package/dist/cjs/test/bip322/toSpend.js +70 -0
- package/dist/cjs/test/bip322/utils.d.ts +2 -0
- package/dist/cjs/test/bip322/utils.d.ts.map +1 -0
- package/dist/cjs/test/bip322/utils.js +79 -0
- package/dist/cjs/test/bip322/verify.d.ts +2 -0
- package/dist/cjs/test/bip322/verify.d.ts.map +1 -0
- package/dist/cjs/test/bip322/verify.js +293 -0
- package/dist/cjs/test/bip32utils.d.ts +2 -0
- package/dist/cjs/test/bip32utils.d.ts.map +1 -0
- package/dist/cjs/test/bip32utils.js +62 -0
- package/dist/cjs/test/bip65/locktime.d.ts +2 -0
- package/dist/cjs/test/bip65/locktime.d.ts.map +1 -0
- package/dist/cjs/test/bip65/locktime.js +22 -0
- package/dist/cjs/test/descriptor/Output.d.ts +2 -0
- package/dist/cjs/test/descriptor/Output.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/Output.js +44 -0
- package/dist/cjs/test/descriptor/derive.d.ts +2 -0
- package/dist/cjs/test/descriptor/derive.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/derive.js +27 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts +2 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/fromFixedScriptWallet.js +145 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts +2 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/parse/PatternMatcher.js +120 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/VirtualSize.js +71 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/assertSatisfiable.js +56 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/findDescriptors.js +70 -0
- package/dist/cjs/test/descriptor/psbt/psbt.d.ts +2 -0
- package/dist/cjs/test/descriptor/psbt/psbt.d.ts.map +1 -0
- package/dist/cjs/test/descriptor/psbt/psbt.js +211 -0
- package/dist/cjs/test/dustThreshold.d.ts +2 -0
- package/dist/cjs/test/dustThreshold.d.ts.map +1 -0
- package/dist/cjs/test/dustThreshold.js +110 -0
- package/dist/cjs/test/paygo/attestation.d.ts +2 -0
- package/dist/cjs/test/paygo/attestation.d.ts.map +1 -0
- package/dist/cjs/test/paygo/attestation.js +23 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts +2 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/cjs/test/paygo/parsePayGoAttestation.js +75 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts +9 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/cjs/test/paygo/psbt/payGoAddressProof.js +163 -0
- package/dist/cjs/test/xOnlyPubkey.d.ts +2 -0
- package/dist/cjs/test/xOnlyPubkey.d.ts.map +1 -0
- package/dist/cjs/test/xOnlyPubkey.js +18 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/Output.d.ts +43 -0
- package/dist/esm/Output.js +53 -0
- package/dist/esm/bip322/index.d.ts +5 -0
- package/dist/esm/bip322/index.d.ts.map +1 -0
- package/dist/esm/bip322/index.js +5 -0
- package/dist/esm/bip322/toSign.d.ts +25 -0
- package/dist/esm/bip322/toSign.d.ts.map +1 -0
- package/dist/esm/bip322/toSign.js +120 -0
- package/dist/esm/bip322/toSpend.d.ts +22 -0
- package/dist/esm/bip322/toSpend.d.ts.map +1 -0
- package/dist/esm/bip322/toSpend.js +66 -0
- package/dist/esm/bip322/utils.d.ts +18 -0
- package/dist/esm/bip322/utils.d.ts.map +1 -0
- package/dist/esm/bip322/utils.js +77 -0
- package/dist/esm/bip322/verify.d.ts +12 -0
- package/dist/esm/bip322/verify.d.ts.map +1 -0
- package/dist/esm/bip322/verify.js +76 -0
- package/dist/esm/bip32utils.d.ts +16 -0
- package/dist/esm/bip32utils.d.ts.map +1 -0
- package/dist/esm/bip32utils.js +34 -0
- package/dist/esm/bip65/index.d.ts +2 -0
- package/dist/esm/bip65/index.js +2 -0
- package/dist/esm/bip65/locktime.d.ts +8 -0
- package/dist/esm/bip65/locktime.js +34 -0
- package/dist/esm/descriptor/DescriptorMap.d.ts +9 -0
- package/dist/{src → esm}/descriptor/DescriptorMap.d.ts.map +1 -1
- package/dist/esm/descriptor/DescriptorMap.js +6 -0
- package/dist/esm/descriptor/Output.d.ts +23 -0
- package/dist/{src → esm}/descriptor/Output.d.ts.map +1 -1
- package/dist/esm/descriptor/Output.js +32 -0
- package/dist/esm/descriptor/VirtualSize.d.ts +23 -0
- package/dist/{src → esm}/descriptor/VirtualSize.d.ts.map +1 -1
- package/dist/esm/descriptor/VirtualSize.js +94 -0
- package/dist/esm/descriptor/address.d.ts +5 -0
- package/dist/{src → esm}/descriptor/address.d.ts.map +1 -1
- package/dist/esm/descriptor/address.js +11 -0
- package/dist/esm/descriptor/derive.d.ts +13 -0
- package/dist/{src → esm}/descriptor/derive.d.ts.map +1 -1
- package/dist/esm/descriptor/derive.js +38 -0
- package/dist/esm/descriptor/fromFixedScriptWallet.d.ts +16 -0
- package/dist/{src → esm}/descriptor/fromFixedScriptWallet.d.ts.map +1 -1
- package/dist/esm/descriptor/fromFixedScriptWallet.js +51 -0
- package/dist/esm/descriptor/index.d.ts +11 -0
- package/dist/{src → esm}/descriptor/index.d.ts.map +1 -1
- package/dist/esm/descriptor/index.js +11 -0
- package/dist/esm/descriptor/parse/PatternMatcher.d.ts +14 -0
- package/dist/esm/descriptor/parse/PatternMatcher.d.ts.map +1 -0
- package/dist/esm/descriptor/parse/PatternMatcher.js +56 -0
- package/dist/esm/descriptor/psbt/assertSatisfiable.d.ts +20 -0
- package/dist/{src → esm}/descriptor/psbt/assertSatisfiable.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/assertSatisfiable.js +69 -0
- package/dist/esm/descriptor/psbt/createPsbt.d.ts +23 -0
- package/dist/esm/descriptor/psbt/createPsbt.d.ts.map +1 -0
- package/dist/esm/descriptor/psbt/createPsbt.js +69 -0
- package/dist/esm/descriptor/psbt/findDescriptors.d.ts +26 -0
- package/dist/{src → esm}/descriptor/psbt/findDescriptors.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/findDescriptors.js +94 -0
- package/dist/esm/descriptor/psbt/index.d.ts +7 -0
- package/dist/esm/descriptor/psbt/index.js +7 -0
- package/dist/esm/descriptor/psbt/parse.d.ts +27 -0
- package/dist/{src → esm}/descriptor/psbt/parse.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/parse.js +51 -0
- package/dist/esm/descriptor/psbt/sign.d.ts +26 -0
- package/dist/esm/descriptor/psbt/sign.d.ts.map +1 -0
- package/dist/esm/descriptor/psbt/sign.js +34 -0
- package/dist/esm/descriptor/psbt/wrap.d.ts +12 -0
- package/dist/{src → esm}/descriptor/psbt/wrap.d.ts.map +1 -1
- package/dist/esm/descriptor/psbt/wrap.js +38 -0
- package/dist/esm/dustThreshold.d.ts +4 -0
- package/dist/esm/dustThreshold.js +97 -0
- package/dist/esm/index.d.ts +10 -0
- package/dist/{src → esm}/index.d.ts.map +1 -1
- package/dist/esm/index.js +10 -0
- package/dist/esm/paygo/attestation.d.ts +11 -0
- package/dist/esm/paygo/attestation.d.ts.map +1 -0
- package/dist/esm/paygo/attestation.js +18 -0
- package/dist/esm/paygo/index.d.ts +3 -0
- package/dist/esm/paygo/index.d.ts.map +1 -0
- package/dist/esm/paygo/index.js +3 -0
- package/dist/esm/paygo/parsePayGoAttestation.d.ts +16 -0
- package/dist/esm/paygo/parsePayGoAttestation.d.ts.map +1 -0
- package/dist/esm/paygo/parsePayGoAttestation.js +43 -0
- package/dist/esm/paygo/psbt/Errors.d.ts +22 -0
- package/dist/esm/paygo/psbt/Errors.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/Errors.js +35 -0
- package/dist/esm/paygo/psbt/index.d.ts +2 -0
- package/dist/esm/paygo/psbt/index.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/index.js +2 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.d.ts +29 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
- package/dist/esm/paygo/psbt/payGoAddressProof.js +85 -0
- package/dist/esm/testutil/descriptor/descriptors.d.ts +13 -0
- package/dist/esm/testutil/descriptor/descriptors.d.ts.map +1 -0
- package/dist/esm/testutil/descriptor/descriptors.js +150 -0
- package/dist/esm/testutil/descriptor/index.d.ts +4 -0
- package/dist/esm/testutil/descriptor/index.js +4 -0
- package/dist/esm/testutil/descriptor/mock.utils.d.ts +36 -0
- package/dist/esm/testutil/descriptor/mock.utils.d.ts.map +1 -0
- package/dist/esm/testutil/descriptor/mock.utils.js +53 -0
- package/dist/esm/testutil/descriptor/psbt.utils.d.ts +4 -0
- package/dist/{src → esm}/testutil/descriptor/psbt.utils.d.ts.map +1 -1
- package/dist/esm/testutil/descriptor/psbt.utils.js +17 -0
- package/dist/esm/testutil/fixtures.utils.d.ts +15 -0
- package/dist/{src → esm}/testutil/fixtures.utils.js +5 -42
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
- package/dist/esm/testutil/generatePayGoAttestationProof.utils.js +32 -0
- package/dist/esm/testutil/index.d.ts +6 -0
- package/dist/{src → esm}/testutil/index.d.ts.map +1 -1
- package/dist/esm/testutil/index.js +6 -0
- package/dist/esm/testutil/key.utils.d.ts +16 -0
- package/dist/{src → esm}/testutil/key.utils.d.ts.map +1 -1
- package/dist/esm/testutil/key.utils.js +22 -0
- package/dist/esm/testutil/toPlainObject.utils.d.ts +11 -0
- package/dist/{src → esm}/testutil/toPlainObject.utils.d.ts.map +1 -1
- package/dist/esm/testutil/toPlainObject.utils.js +85 -0
- package/dist/esm/testutil/trimMessagePrefix.d.ts +11 -0
- package/dist/esm/testutil/trimMessagePrefix.d.ts.map +1 -0
- package/dist/esm/testutil/trimMessagePrefix.js +24 -0
- package/dist/esm/xOnlyPubkey.d.ts +2 -0
- package/dist/esm/xOnlyPubkey.js +15 -0
- package/package.json +50 -25
- package/dist/src/Output.js +0 -60
- package/dist/src/bip32utils.d.ts +0 -16
- package/dist/src/bip32utils.d.ts.map +0 -1
- package/dist/src/bip32utils.js +0 -72
- package/dist/src/bip65/locktime.js +0 -37
- package/dist/src/descriptor/DescriptorMap.js +0 -9
- package/dist/src/descriptor/Output.js +0 -41
- package/dist/src/descriptor/VirtualSize.js +0 -100
- package/dist/src/descriptor/derive.js +0 -45
- package/dist/src/descriptor/fromFixedScriptWallet.js +0 -88
- package/dist/src/descriptor/psbt/assertSatisfiable.js +0 -74
- package/dist/src/descriptor/psbt/createPsbt.d.ts.map +0 -1
- package/dist/src/descriptor/psbt/createPsbt.js +0 -82
- package/dist/src/descriptor/psbt/findDescriptors.js +0 -98
- package/dist/src/descriptor/psbt/parse.js +0 -87
- package/dist/src/descriptor/psbt/sign.d.ts.map +0 -1
- package/dist/src/descriptor/psbt/sign.js +0 -42
- package/dist/src/descriptor/psbt/wrap.js +0 -76
- package/dist/src/dustThreshold.js +0 -134
- package/dist/src/paygo/ExtractAddressPayGoAttestation.d.ts.map +0 -1
- package/dist/src/paygo/ExtractAddressPayGoAttestation.js +0 -44
- package/dist/src/paygo/index.d.ts +0 -2
- package/dist/src/paygo/index.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/descriptors.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/descriptors.js +0 -125
- package/dist/src/testutil/descriptor/mock.utils.d.ts.map +0 -1
- package/dist/src/testutil/descriptor/mock.utils.js +0 -91
- package/dist/src/testutil/descriptor/psbt.utils.js +0 -20
- package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +0 -1
- package/dist/src/testutil/generatePayGoAttestationProof.utils.js +0 -43
- package/dist/src/testutil/key.utils.js +0 -59
- package/dist/src/testutil/toPlainObject.utils.js +0 -75
- package/dist/src/xOnlyPubkey.js +0 -18
- /package/dist/{src → cjs/src}/Output.d.ts +0 -0
- /package/dist/{src → cjs/src}/bip65/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/bip65/locktime.d.ts +0 -0
- /package/dist/{src → cjs/src}/descriptor/psbt/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/dustThreshold.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/descriptor/index.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/descriptor/psbt.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/fixtures.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/testutil/toPlainObject.utils.d.ts +0 -0
- /package/dist/{src → cjs/src}/xOnlyPubkey.d.ts +0 -0
- /package/dist/{src → esm}/Output.d.ts.map +0 -0
- /package/dist/{src → esm}/bip65/index.d.ts.map +0 -0
- /package/dist/{src → esm}/bip65/locktime.d.ts.map +0 -0
- /package/dist/{src → esm}/descriptor/psbt/index.d.ts.map +0 -0
- /package/dist/{src → esm}/dustThreshold.d.ts.map +0 -0
- /package/dist/{src → esm}/testutil/descriptor/index.d.ts.map +0 -0
- /package/dist/{src → esm}/testutil/fixtures.utils.d.ts.map +0 -0
- /package/dist/{src → esm}/xOnlyPubkey.d.ts.map +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
export declare function getDustThresholdSat(network: utxolib.Network, outputSize: number, isWitness: boolean): number;
|
|
3
|
+
export declare function getDustThresholdSatForOutputScript(network: utxolib.Network, script: Buffer): number;
|
|
4
|
+
//# sourceMappingURL=dustThreshold.d.ts.map
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if the output script is a witness script or not
|
|
4
|
+
* @param script
|
|
5
|
+
* @returns true if the script is a witness script
|
|
6
|
+
*/
|
|
7
|
+
function isWitnessOutputScript(script) {
|
|
8
|
+
/**
|
|
9
|
+
* Source: https://github.com/bitcoin/bitcoin/blob/v28.1/src/script/script.cpp#L241-L257
|
|
10
|
+
* A witness program is any valid CScript that consists of a 1-byte push opcode
|
|
11
|
+
* followed by a data push between 2 and 40 bytes.
|
|
12
|
+
*/
|
|
13
|
+
if (script.length < 4 || script.length > 42) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (script[0] !== utxolib.opcodes.OP_0 && (script[0] < utxolib.opcodes.OP_1 || script[0] > utxolib.opcodes.OP_16)) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
return script[1] + 2 === script.length;
|
|
20
|
+
}
|
|
21
|
+
function getDustRelayLimit(network) {
|
|
22
|
+
network = utxolib.getMainnet(network);
|
|
23
|
+
switch (network) {
|
|
24
|
+
case utxolib.networks.bitcoin:
|
|
25
|
+
case utxolib.networks.bitcoingold:
|
|
26
|
+
case utxolib.networks.dash:
|
|
27
|
+
// btc: https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.h#L50-L55
|
|
28
|
+
// btg: https://github.com/BTCGPU/BTCGPU/blob/v0.17.3/src/policy/policy.h#L48
|
|
29
|
+
// dash: https://github.com/dashpay/dash/blob/v22.0.0-beta.1/src/policy/policy.h#L41-L46
|
|
30
|
+
return { feeRateSatKB: 3000 };
|
|
31
|
+
case utxolib.networks.bitcoincash:
|
|
32
|
+
// https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/v27.1.0/src/policy/policy.h#L76-L83
|
|
33
|
+
// I actually haven't looked at BSV and am depressed that I still need to handle the case here
|
|
34
|
+
return { feeRateSatKB: 1000 };
|
|
35
|
+
case utxolib.networks.dogecoin:
|
|
36
|
+
// https://github.com/dogecoin/dogecoin/blob/v1.14.8/src/policy/policy.h#L65-L81
|
|
37
|
+
// (COIN / 100) / 10;
|
|
38
|
+
return { satAmount: 1000000 };
|
|
39
|
+
case utxolib.networks.litecoin:
|
|
40
|
+
// https://github.com/litecoin-project/litecoin/blob/master/src/policy/policy.h#L47-L52
|
|
41
|
+
return { feeRateSatKB: 30000 };
|
|
42
|
+
case utxolib.networks.zcash:
|
|
43
|
+
// https://github.com/zcash/zcash/blob/master/src/primitives/transaction.h#L396-L399
|
|
44
|
+
// https://github.com/zcash/zcash/blob/v6.0.0/src/policy/policy.h#L43-L89 (I don't quite get it)
|
|
45
|
+
return { satAmount: 300 };
|
|
46
|
+
case utxolib.networks.bitcoinsv:
|
|
47
|
+
throw new Error('deprecated coin');
|
|
48
|
+
default:
|
|
49
|
+
throw new Error('unsupported network');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function getSpendSize(network, outputSize, isWitness) {
|
|
53
|
+
network = utxolib.getMainnet(network);
|
|
54
|
+
switch (network) {
|
|
55
|
+
case utxolib.networks.bitcoin:
|
|
56
|
+
case utxolib.networks.bitcoincash:
|
|
57
|
+
case utxolib.networks.bitcoingold:
|
|
58
|
+
case utxolib.networks.litecoin:
|
|
59
|
+
/*
|
|
60
|
+
btc: https://github.com/bitcoin/bitcoin/blob/v28.0/src/policy/policy.cpp#L26-L68
|
|
61
|
+
bch: https://github.com/bitcoin-cash-node/bitcoin-cash-node/blob/v27.1.0/src/policy/policy.cpp#L18-L36 (btc-ish)
|
|
62
|
+
btg: https://github.com/BTCGPU/BTCGPU/blob/v0.17.3/src/policy/policy.cpp#L18-L50 (btc-ish)
|
|
63
|
+
ltc: https://github.com/litecoin-project/litecoin/blob/v0.21.4/src/policy/policy.cpp#L15-L47 (btc-ish)
|
|
64
|
+
|
|
65
|
+
The fixed component here is 69.75 for isWitness=true and 150 for isWitness=false.
|
|
66
|
+
*/
|
|
67
|
+
return outputSize + 32 + 4 + 1 + 107 / (isWitness ? 4 : 1) + 4;
|
|
68
|
+
case utxolib.networks.dash:
|
|
69
|
+
// dash: https://github.com/dashpay/dash/blob/v21.1.1/src/policy/policy.cpp#L14-L30 (btc-ish)
|
|
70
|
+
// how did they end up with 148? I don't know
|
|
71
|
+
return outputSize + 148;
|
|
72
|
+
case utxolib.networks.dogecoin:
|
|
73
|
+
case utxolib.networks.zcash:
|
|
74
|
+
// doge: https://github.com/dogecoin/dogecoin/blob/v1.14.8/src/policy/policy.h#L65-L81 (hardcoded)
|
|
75
|
+
// zec: https://github.com/zcash/zcash/blob/v6.0.0/src/policy/policy.h#L43-L89 (some weird other thing, doge-ish)
|
|
76
|
+
throw new Error('dust limit is size-independent');
|
|
77
|
+
case utxolib.networks.bitcoinsv:
|
|
78
|
+
throw new Error('deprecated coin');
|
|
79
|
+
default:
|
|
80
|
+
throw new Error('unsupported network');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export function getDustThresholdSat(network, outputSize, isWitness) {
|
|
84
|
+
const dustLimit = getDustRelayLimit(network);
|
|
85
|
+
if ('satAmount' in dustLimit) {
|
|
86
|
+
return dustLimit.satAmount;
|
|
87
|
+
}
|
|
88
|
+
if ('feeRateSatKB' in dustLimit) {
|
|
89
|
+
const spendSize = getSpendSize(network, outputSize, isWitness);
|
|
90
|
+
return Math.ceil((dustLimit.feeRateSatKB * spendSize) / 1000);
|
|
91
|
+
}
|
|
92
|
+
throw new Error('unexpected dustLimit');
|
|
93
|
+
}
|
|
94
|
+
export function getDustThresholdSatForOutputScript(network, script) {
|
|
95
|
+
return getDustThresholdSat(network, script.length, isWitnessOutputScript(script));
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVzdFRocmVzaG9sZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kdXN0VGhyZXNob2xkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFFaEQ7Ozs7R0FJRztBQUNILFNBQVMscUJBQXFCLENBQUMsTUFBYztJQUMzQzs7OztPQUlHO0lBQ0gsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDekMsQ0FBQztBQTBERCxTQUFTLGlCQUFpQixDQUFDLE9BQXdCO0lBQ2pELE9BQU8sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxFQUFFLENBQUM7UUFDaEIsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUM5QixLQUFLLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBQ2xDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQ3hCLGtGQUFrRjtZQUNsRiw4RUFBOEU7WUFDOUUsd0ZBQXdGO1lBQ3hGLE9BQU8sRUFBRSxZQUFZLEVB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QUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsT0FBd0IsRUFBRSxNQUFjO0lBQ3pGLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNwRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBvdXRwdXQgc2NyaXB0IGlzIGEgd2l0bmVzcyBzY3JpcHQgb3Igbm90XG4gKiBAcGFyYW0gc2NyaXB0XG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBzY3JpcHQgaXMgYSB3aXRuZXNzIHNjcmlwdFxuICovXG5mdW5jdGlvbiBpc1dpdG5lc3NPdXRwdXRTY3JpcHQoc2NyaXB0OiBCdWZmZXIpOiBib29sZWFuIHtcbiAgLyoqXG4gICAqIFNvdXJjZTogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL3YyOC4xL3NyYy9zY3JpcHQvc2NyaXB0LmNwcCNMMjQxLUwyNTdcbiAgICogQSB3aXRuZXNzIHByb2dyYW0gaXMgYW55IHZhbGlkIENTY3JpcHQgdGhhdCBjb25zaXN0cyBvZiBhIDEtYnl0ZSBwdXNoIG9wY29kZVxuICAgKiBmb2xsb3dlZCBieSBhIGRhdGEgcHVzaCBiZXR3ZWVuIDIgYW5kIDQwIGJ5dGVzLlxuICAgKi9cbiAgaWYgKHNjcmlwdC5sZW5ndGggPCA0IHx8IHNjcmlwdC5sZW5ndGggPiA0Mikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoc2NyaXB0WzBdICE9PSB1dHhvbGliLm9wY29kZXMuT1BfMCAmJiAoc2NyaXB0WzBdIDwgdXR4b2xpYi5vcGNvZGVzLk9QXzEgfHwgc2NyaXB0WzBdID4gdXR4b2xpYi5vcGNvZGVzLk9QXzE2KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gc2NyaXB0WzFdICsgMiA9PT0gc2NyaXB0Lmxlbmd0aDtcbn1cblxuLypcblxuVGhlIGR1c3QgdGhyZXNob2xkIGZvciBtb3N0IFVUWE8gY29pbnMgaXMgZGVwZW5kZW50IG9uIG11bHRpcGxlIGZhY3RvcnM6XG5cbigxKSBzcGVuZGFiaWxpdHkgb2YgdGhlIG91dHB1dCAoT1BfUkVUVVJOcyBhcmUgYWxsb3dlZCB0byBiZSAwIHNpemVkKVxuKDIpIHdoZXRoZXIgaXQgaXMgYSB3aXRuZXNzIG9yIG5vbi13aXRuZXNzIG91dHB1dFxuKDMpIGEgcGFydGljdWxhciBmZWUgcmF0ZSAoR2V0RGlzY2FyZFJhdGUoKSlcblxuSSB3aWxsIGRvIHRoZSBhbmFseXNpcyBtb3N0bHkgZm9yIGJpdGNvaW4gaGVyZSBhbmQgdGhlbiBnZW5lcmFsaXplLlxuXG5PbiB0aGUgaW5kZXhlciB3ZSB1c2UgYHNlbmRyYXd0cmFuc2FjdGlvbmAsIHdoaWNoIGNhbGxzIGBJc1N0YW5kYXJkVHhgIGxpa2UgdGhpc1xuXG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL2tlcm5lbC9tZW1wb29sX29wdGlvbnMuaCNMNDdcblxuYGBgXG5pZiAoXG4gIG1fcG9vbC5tX29wdHMucmVxdWlyZV9zdGFuZGFyZCAmJlxuICAgIUlzU3RhbmRhcmRUeCh0eCxcbiAgIG1fcG9vbC5tX29wdHMubWF4X2RhdGFjYXJyaWVyX2J5dGVzLFxuICAgbV9wb29sLm1fb3B0cy5wZXJtaXRfYmFyZV9tdWx0aXNpZyxcbiAgIG1fcG9vbC5tX29wdHMuZHVzdF9yZWxheV9mZWVyYXRlLCByZWFzb24pKVxuYGBgXG5cblRoZSBgZHVzdF9yZWxheV9mZWVyYXRlYCBpbiB0aGlzIGNvbnRleHQgaXMgYSBoYXJkY29kZWQgY29uc3RhbnQ6XG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL3BvbGljeS9wb2xpY3kuaCNMNTAtTDU1XG5cbih0aGF0IGNhbiBhY3R1YWxseSBiZSBvdmVycmlkZGVuIHdpdGggYSBoaWRkZW4gY29tbWFuZFxubGluZSBwYXJhbWV0ZXI6IGh0dHBzOi8vYml0Y29pbi5zdGFja2V4Y2hhbmdlLmNvbS9hLzQxMDgyLzEzNzYwMSlcblxuVGhlcmUgd2UgY2FsbCBgSXNEdXN0YFxuXG5odHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI4LjAvc3JjL3BvbGljeS9wb2xpY3kuY3BwI0wxNDQtTDE0NlxuXG5gYGBcbmlmIChJc0R1c3QodHhvdXQsIGR1c3RfcmVsYXlfZmVlKSkge1xuICAgIHJlYXNvbiA9IFwiZHVzdFwiO1xuICAgIHJldHVybiBmYWxzZTtcbn1cbmBgYFxuXG5XaGljaCBjYWxscyBgR2V0RHVzdFRocmVzaG9sZGAsXG5cbmh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpdGNvaW4vYmxvYi92MjguMC9zcmMvcG9saWN5L3BvbGljeS5jcHAjTDY3XG5cblRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgR2V0RHVzdFRocmVzaG9sZGAgY29tcHV0ZXMgdGhlIG1pbmltYWwgdHJhbnNhY3Rpb24gc2l6ZSB0aGF0IGNhbiBzcGVuZCB0aGUgb3V0cHV0LCBhbmQgY29tcHV0ZXNcbmEgbWluaW11bSBmZWUgZm9yIHRoYXQgdHJhbnNhY3Rpb24gc2l6ZSBiYXNlZCBvbiB0aGUgYGR1c3RfcmVsYXlfZmVlYCAoRmVlUmF0ZSkgcGFyYW1ldGVyLlxuXG5UaGUgZGlmZmVyZW50IHV0eG8gaW1wbGVtZW50YXRpb25zIGRpZmZlciBpbiB0aGVzZSB3YXlzOlxuXG4tIHNvbWUgaGF2ZSBhIGZpeGVkLCBzYXRvc2hpIGFtb3VudCBkdXN0IGxpbWl0IChkb2dlLCB6ZWMpXG4tIHNvbWUgaGF2ZSBhIGRpZmZlcmVudCBkdXN0X3JlbGF5X2ZlZVxuXG4qL1xuXG50eXBlIER1c3RMaW1pdCA9IHsgZmVlUmF0ZVNhdEtCOiBudW1iZXIgfSB8IHsgc2F0QW1vdW50OiBudW1iZXIgfTtcblxuZnVuY3Rpb24gZ2V0RHVzdFJlbGF5TGltaXQobmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogRHVzdExpbWl0IHtcbiAgbmV0d29yayA9IHV0eG9saWIuZ2V0TWFpbm5ldChuZXR3b3JrKTtcbiAgc3dpdGNoIChuZXR3b3JrKSB7XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW46XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW5nb2xkOlxuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5kYXNoOlxuICAgICAgLy8gYnRjOiAgaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL3YyOC4wL3NyYy9wb2xpY3kvcG9saWN5LmgjTDUwLUw1NVxuICAgICAgLy8gYnRnOiAgaHR0cHM6Ly9naXRodWIuY29tL0JUQ0dQVS9CVENHUFUvYmxvYi92MC4xNy4zL3NyYy9wb2xpY3kvcG9saWN5LmgjTDQ4XG4gICAgICAvLyBkYXNoOiBodHRwczovL2dpdGh1Yi5jb20vZGFzaHBheS9kYXNoL2Jsb2IvdjIyLjAuMC1iZXRhLjEvc3JjL3BvbGljeS9wb2xpY3kuaCNMNDEtTDQ2XG4gICAgICByZXR1cm4geyBmZWVSYXRlU2F0S0I6IDMwMDAgfTtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbmNhc2g6XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi1jYXNoLW5vZGUvYml0Y29pbi1jYXNoLW5vZGUvYmxvYi92MjcuMS4wL3NyYy9wb2xpY3kvcG9saWN5LmgjTDc2LUw4M1xuICAgICAgLy8gSSBhY3R1YWxseSBoYXZlbid0IGxvb2tlZCBhdCBCU1YgYW5kIGFtIGRlcHJlc3NlZCB0aGF0IEkgc3RpbGwgbmVlZCB0byBoYW5kbGUgdGhlIGNhc2UgaGVyZVxuICAgICAgcmV0dXJuIHsgZmVlUmF0ZVNhdEtCOiAxMDAwIH07XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmRvZ2Vjb2luOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RvZ2Vjb2luL2RvZ2Vjb2luL2Jsb2IvdjEuMTQuOC9zcmMvcG9saWN5L3BvbGljeS5oI0w2NS1MODFcbiAgICAgIC8vIChDT0lOIC8gMTAwKSAvIDEwO1xuICAgICAgcmV0dXJuIHsgc2F0QW1vdW50OiAxXzAwMF8wMDAgfTtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MubGl0ZWNvaW46XG4gICAgICAvLyAgaHR0cHM6Ly9naXRodWIuY29tL2xpdGVjb2luLXByb2plY3QvbGl0ZWNvaW4vYmxvYi9tYXN0ZXIvc3JjL3BvbGljeS9wb2xpY3kuaCNMNDctTDUyXG4gICAgICByZXR1cm4geyBmZWVSYXRlU2F0S0I6IDMwXzAwMCB9O1xuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy56Y2FzaDpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL21hc3Rlci9zcmMvcHJpbWl0aXZlcy90cmFuc2FjdGlvbi5oI0wzOTYtTDM5OVxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3pjYXNoL3pjYXNoL2Jsb2IvdjYuMC4wL3NyYy9wb2xpY3kvcG9saWN5LmgjTDQzLUw4OSAoSSBkb24ndCBxdWl0ZSBnZXQgaXQpXG4gICAgICByZXR1cm4geyBzYXRBbW91bnQ6IDMwMCB9O1xuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luc3Y6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlcHJlY2F0ZWQgY29pbicpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIG5ldHdvcmsnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTcGVuZFNpemUobmV0d29yazogdXR4b2xpYi5OZXR3b3JrLCBvdXRwdXRTaXplOiBudW1iZXIsIGlzV2l0bmVzczogYm9vbGVhbik6IG51bWJlciB7XG4gIG5ldHdvcmsgPSB1dHhvbGliLmdldE1haW5uZXQobmV0d29yayk7XG4gIHN3aXRjaCAobmV0d29yaykge1xuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luOlxuICAgIGNhc2UgdXR4b2xpYi5uZXR3b3Jrcy5iaXRjb2luY2FzaDpcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbmdvbGQ6XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLmxpdGVjb2luOlxuICAgICAgLypcbiAgICAgICAgYnRjOiAgaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL3YyOC4wL3NyYy9wb2xpY3kvcG9saWN5LmNwcCNMMjYtTDY4XG4gICAgICAgIGJjaDogIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luLWNhc2gtbm9kZS9iaXRjb2luLWNhc2gtbm9kZS9ibG9iL3YyNy4xLjAvc3JjL3BvbGljeS9wb2xpY3kuY3BwI0wxOC1MMzYgKGJ0Yy1pc2gpXG4gICAgICAgIGJ0ZzogIGh0dHBzOi8vZ2l0aHViLmNvbS9CVENHUFUvQlRDR1BVL2Jsb2IvdjAuMTcuMy9zcmMvcG9saWN5L3BvbGljeS5jcHAjTDE4LUw1MCAoYnRjLWlzaClcbiAgICAgICAgbHRjOiAgaHR0cHM6Ly9naXRodWIuY29tL2xpdGVjb2luLXByb2plY3QvbGl0ZWNvaW4vYmxvYi92MC4yMS40L3NyYy9wb2xpY3kvcG9saWN5LmNwcCNMMTUtTDQ3IChidGMtaXNoKVxuXG4gICAgICAgIFRoZSBmaXhlZCBjb21wb25lbnQgaGVyZSBpcyA2OS43NSBmb3IgaXNXaXRuZXNzPXRydWUgYW5kIDE1MCBmb3IgaXNXaXRuZXNzPWZhbHNlLlxuICAgICAgICovXG4gICAgICByZXR1cm4gb3V0cHV0U2l6ZSArIDMyICsgNCArIDEgKyAxMDcgLyAoaXNXaXRuZXNzID8gNCA6IDEpICsgNDtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuZGFzaDpcbiAgICAgIC8vIGRhc2g6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXNocGF5L2Rhc2gvYmxvYi92MjEuMS4xL3NyYy9wb2xpY3kvcG9saWN5LmNwcCNMMTQtTDMwIChidGMtaXNoKVxuICAgICAgLy8gaG93IGRpZCB0aGV5IGVuZCB1cCB3aXRoIDE0OD8gSSBkb24ndCBrbm93XG4gICAgICByZXR1cm4gb3V0cHV0U2l6ZSArIDE0ODtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuZG9nZWNvaW46XG4gICAgY2FzZSB1dHhvbGliLm5ldHdvcmtzLnpjYXNoOlxuICAgICAgLy8gZG9nZTogaHR0cHM6Ly9naXRodWIuY29tL2RvZ2Vjb2luL2RvZ2Vjb2luL2Jsb2IvdjEuMTQuOC9zcmMvcG9saWN5L3BvbGljeS5oI0w2NS1MODEgKGhhcmRjb2RlZClcbiAgICAgIC8vIHplYzogIGh0dHBzOi8vZ2l0aHViLmNvbS96Y2FzaC96Y2FzaC9ibG9iL3Y2LjAuMC9zcmMvcG9saWN5L3BvbGljeS5oI0w0My1MODkgKHNvbWUgd2VpcmQgb3RoZXIgdGhpbmcsIGRvZ2UtaXNoKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkdXN0IGxpbWl0IGlzIHNpemUtaW5kZXBlbmRlbnQnKTtcbiAgICBjYXNlIHV0eG9saWIubmV0d29ya3MuYml0Y29pbnN2OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZXByZWNhdGVkIGNvaW4nKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCBuZXR3b3JrJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldER1c3RUaHJlc2hvbGRTYXQobmV0d29yazogdXR4b2xpYi5OZXR3b3JrLCBvdXRwdXRTaXplOiBudW1iZXIsIGlzV2l0bmVzczogYm9vbGVhbik6IG51bWJlciB7XG4gIGNvbnN0IGR1c3RMaW1pdCA9IGdldER1c3RSZWxheUxpbWl0KG5ldHdvcmspO1xuICBpZiAoJ3NhdEFtb3VudCcgaW4gZHVzdExpbWl0KSB7XG4gICAgcmV0dXJuIGR1c3RMaW1pdC5zYXRBbW91bnQ7XG4gIH1cbiAgaWYgKCdmZWVSYXRlU2F0S0InIGluIGR1c3RMaW1pdCkge1xuICAgIGNvbnN0IHNwZW5kU2l6ZSA9IGdldFNwZW5kU2l6ZShuZXR3b3JrLCBvdXRwdXRTaXplLCBpc1dpdG5lc3MpO1xuICAgIHJldHVybiBNYXRoLmNlaWwoKGR1c3RMaW1pdC5mZWVSYXRlU2F0S0IgKiBzcGVuZFNpemUpIC8gMTAwMCk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCd1bmV4cGVjdGVkIGR1c3RMaW1pdCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHVzdFRocmVzaG9sZFNhdEZvck91dHB1dFNjcmlwdChuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssIHNjcmlwdDogQnVmZmVyKTogbnVtYmVyIHtcbiAgcmV0dXJuIGdldER1c3RUaHJlc2hvbGRTYXQobmV0d29yaywgc2NyaXB0Lmxlbmd0aCwgaXNXaXRuZXNzT3V0cHV0U2NyaXB0KHNjcmlwdCkpO1xufVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * as bip65 from './bip65';
|
|
2
|
+
export * as descriptor from './descriptor';
|
|
3
|
+
export * as testutil from './testutil';
|
|
4
|
+
export * as paygo from './paygo';
|
|
5
|
+
export * as bip32utils from './bip32utils';
|
|
6
|
+
export * as bip322 from './bip322';
|
|
7
|
+
export * from './dustThreshold';
|
|
8
|
+
export * from './Output';
|
|
9
|
+
export * from './xOnlyPubkey';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * as bip65 from './bip65';
|
|
2
|
+
export * as descriptor from './descriptor';
|
|
3
|
+
export * as testutil from './testutil';
|
|
4
|
+
export * as paygo from './paygo';
|
|
5
|
+
export * as bip32utils from './bip32utils';
|
|
6
|
+
export * as bip322 from './bip322';
|
|
7
|
+
export * from './dustThreshold';
|
|
8
|
+
export * from './Output';
|
|
9
|
+
export * from './xOnlyPubkey';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxLQUFLLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxjQUFjLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxVQUFVLENBQUM7QUFDbkMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGJpcDY1IGZyb20gJy4vYmlwNjUnO1xuZXhwb3J0ICogYXMgZGVzY3JpcHRvciBmcm9tICcuL2Rlc2NyaXB0b3InO1xuZXhwb3J0ICogYXMgdGVzdHV0aWwgZnJvbSAnLi90ZXN0dXRpbCc7XG5leHBvcnQgKiBhcyBwYXlnbyBmcm9tICcuL3BheWdvJztcbmV4cG9ydCAqIGFzIGJpcDMydXRpbHMgZnJvbSAnLi9iaXAzMnV0aWxzJztcbmV4cG9ydCAqIGFzIGJpcDMyMiBmcm9tICcuL2JpcDMyMic7XG5leHBvcnQgKiBmcm9tICcuL2R1c3RUaHJlc2hvbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9PdXRwdXQnO1xuZXhwb3J0ICogZnJvbSAnLi94T25seVB1YmtleSc7XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
export declare const NIL_UUID = "00000000-0000-0000-0000-000000000000";
|
|
3
|
+
/** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
|
|
4
|
+
* given the address and entropy.
|
|
5
|
+
*
|
|
6
|
+
* @param address
|
|
7
|
+
* @param entropy
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export declare function createPayGoAttestationBuffer(address: string, entropy: Buffer, network: utxolib.Network): Buffer;
|
|
11
|
+
//# sourceMappingURL=attestation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/attestation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,eAAO,MAAM,QAAQ,yCAAyC,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAM/G"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
3
|
+
export const NIL_UUID = '00000000-0000-0000-0000-000000000000';
|
|
4
|
+
/** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
|
|
5
|
+
* given the address and entropy.
|
|
6
|
+
*
|
|
7
|
+
* @param address
|
|
8
|
+
* @param entropy
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export function createPayGoAttestationBuffer(address, entropy, network) {
|
|
12
|
+
assert(address.length > 0);
|
|
13
|
+
const isValidAddress = utxolib.address.toOutputScript(address, network);
|
|
14
|
+
assert(isValidAddress, `Address ${address} is not a valid address.`);
|
|
15
|
+
const addressBuffer = Buffer.from(address);
|
|
16
|
+
return Buffer.concat([entropy, addressBuffer, Buffer.from(NIL_UUID)]);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vYXR0ZXN0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHNDQUFzQyxDQUFDO0FBRS9EOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQXdCO0lBQ3JHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxNQUFNLENBQUMsY0FBYyxFQUFFLFdBQVcsT0FBTywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmV4cG9ydCBjb25zdCBOSUxfVVVJRCA9ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnO1xuXG4vKiogVGhpcyBmdW5jdGlvbiByZWNvbnN0cnVjdHMgdGhlIHByb29mIDxFTlRST1BZPjxBRERSRVNTPjxVVUlEPlxuICogZ2l2ZW4gdGhlIGFkZHJlc3MgYW5kIGVudHJvcHkuXG4gKlxuICogQHBhcmFtIGFkZHJlc3NcbiAqIEBwYXJhbSBlbnRyb3B5XG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGF5R29BdHRlc3RhdGlvbkJ1ZmZlcihhZGRyZXNzOiBzdHJpbmcsIGVudHJvcHk6IEJ1ZmZlciwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogQnVmZmVyIHtcbiAgYXNzZXJ0KGFkZHJlc3MubGVuZ3RoID4gMCk7XG4gIGNvbnN0IGlzVmFsaWRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLnRvT3V0cHV0U2NyaXB0KGFkZHJlc3MsIG5ldHdvcmspO1xuICBhc3NlcnQoaXNWYWxpZEFkZHJlc3MsIGBBZGRyZXNzICR7YWRkcmVzc30gaXMgbm90IGEgdmFsaWQgYWRkcmVzcy5gKTtcbiAgY29uc3QgYWRkcmVzc0J1ZmZlciA9IEJ1ZmZlci5mcm9tKGFkZHJlc3MpO1xuICByZXR1cm4gQnVmZmVyLmNvbmNhdChbZW50cm9weSwgYWRkcmVzc0J1ZmZlciwgQnVmZmVyLmZyb20oTklMX1VVSUQpXSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/paygo/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './parsePayGoAttestation';
|
|
2
|
+
export * from './psbt';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcGFyc2VQYXlHb0F0dGVzdGF0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vcHNidCc7XG4iXX0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const Prefix: Buffer<ArrayBuffer>;
|
|
2
|
+
/**
|
|
3
|
+
* This function takes in the attestation proof of a PayGo address of the from
|
|
4
|
+
* <varint_length><ENTROPY><ADDRESS><UUID> and returns
|
|
5
|
+
* the address given its length. It is assumed that the ENTROPY is 64 bytes in the Buffer
|
|
6
|
+
* so if not given an address proof length we can still extract the address from the proof.
|
|
7
|
+
*
|
|
8
|
+
* @param message
|
|
9
|
+
* @param adressProofLength
|
|
10
|
+
*/
|
|
11
|
+
export declare function parsePayGoAttestation(message: Buffer): {
|
|
12
|
+
entropy: Buffer;
|
|
13
|
+
address: Buffer;
|
|
14
|
+
uuid: Buffer;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=parsePayGoAttestation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsePayGoAttestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/parsePayGoAttestation.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,qBAA0D,CAAC;AAQ9E;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CA0BA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import assert from 'assert';
|
|
2
|
+
import { bufferutils } from '@bitgo-beta/utxo-lib';
|
|
3
|
+
// The signed address will always have the following structure:
|
|
4
|
+
// 0x18Bitcoin Signed Message:\n<varint_length><ENTROPY><ADDRESS><UUID>
|
|
5
|
+
export const Prefix = Buffer.from('\u0018Bitcoin Signed Message:\n', 'utf-8');
|
|
6
|
+
// UUID has the structure 00000000-0000-0000-0000-000000000000, and after
|
|
7
|
+
// we Buffer.from and get it's length its 36.
|
|
8
|
+
const UuidBufferLength = 36;
|
|
9
|
+
// The entropy will always be 64 bytes
|
|
10
|
+
const EntropyLen = 64;
|
|
11
|
+
/**
|
|
12
|
+
* This function takes in the attestation proof of a PayGo address of the from
|
|
13
|
+
* <varint_length><ENTROPY><ADDRESS><UUID> and returns
|
|
14
|
+
* the address given its length. It is assumed that the ENTROPY is 64 bytes in the Buffer
|
|
15
|
+
* so if not given an address proof length we can still extract the address from the proof.
|
|
16
|
+
*
|
|
17
|
+
* @param message
|
|
18
|
+
* @param adressProofLength
|
|
19
|
+
*/
|
|
20
|
+
export function parsePayGoAttestation(message) {
|
|
21
|
+
if (message.length <= EntropyLen + UuidBufferLength) {
|
|
22
|
+
throw new Error('PayGo attestation proof is too short to contain a valid address');
|
|
23
|
+
}
|
|
24
|
+
// This generates the first part before the varint length so that we can
|
|
25
|
+
// determine how many bytes this is and iterate through the Buffer.
|
|
26
|
+
let offset = 0;
|
|
27
|
+
if (message.toString('hex').startsWith(Prefix.toString('hex'))) {
|
|
28
|
+
offset = Prefix.length;
|
|
29
|
+
}
|
|
30
|
+
// we decode the varint of the message which is uint32
|
|
31
|
+
// https://en.bitcoin.it/wiki/Protocol_documentation
|
|
32
|
+
const varInt = bufferutils.varuint.decode(message, offset);
|
|
33
|
+
assert(varInt);
|
|
34
|
+
offset += bufferutils.varuint.decode.bytes;
|
|
35
|
+
const entropy = message.subarray(offset, offset + EntropyLen);
|
|
36
|
+
offset += EntropyLen;
|
|
37
|
+
const address = message.subarray(offset, message.length - UuidBufferLength);
|
|
38
|
+
offset += address.length;
|
|
39
|
+
const uuid = message.subarray(message.length - UuidBufferLength);
|
|
40
|
+
// we break up the original message and retuen the entropy, address and uuid in their buffers
|
|
41
|
+
return { entropy, address, uuid };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VQYXlHb0F0dGVzdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BheWdvL3BhcnNlUGF5R29BdHRlc3RhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELCtEQUErRDtBQUMvRCx1RUFBdUU7QUFDdkUsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFOUUseUVBQXlFO0FBQ3pFLDZDQUE2QztBQUM3QyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUM1QixzQ0FBc0M7QUFDdEMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBRXRCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE9BQWU7SUFLbkQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLG1FQUFtRTtJQUNuRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9ELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsb0RBQW9EO0lBQ3BELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDZixNQUFNLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBRTNDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUM5RCxNQUFNLElBQUksVUFBVSxDQUFDO0lBQ3JCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RSxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztJQUVqRSw2RkFBNkY7SUFDN0YsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDcEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0IHsgYnVmZmVydXRpbHMgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbi8vIFRoZSBzaWduZWQgYWRkcmVzcyB3aWxsIGFsd2F5cyBoYXZlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuLy8gMHgxOEJpdGNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuPHZhcmludF9sZW5ndGg+PEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG5leHBvcnQgY29uc3QgUHJlZml4ID0gQnVmZmVyLmZyb20oJ1xcdTAwMThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsICd1dGYtOCcpO1xuXG4vLyBVVUlEIGhhcyB0aGUgc3RydWN0dXJlIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCwgYW5kIGFmdGVyXG4vLyB3ZSBCdWZmZXIuZnJvbSBhbmQgZ2V0IGl0J3MgbGVuZ3RoIGl0cyAzNi5cbmNvbnN0IFV1aWRCdWZmZXJMZW5ndGggPSAzNjtcbi8vIFRoZSBlbnRyb3B5IHdpbGwgYWx3YXlzIGJlIDY0IGJ5dGVzXG5jb25zdCBFbnRyb3B5TGVuID0gNjQ7XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiB0YWtlcyBpbiB0aGUgYXR0ZXN0YXRpb24gcHJvb2Ygb2YgYSBQYXlHbyBhZGRyZXNzIG9mIHRoZSBmcm9tXG4gKiA8dmFyaW50X2xlbmd0aD48RU5UUk9QWT48QUREUkVTUz48VVVJRD4gYW5kIHJldHVybnNcbiAqIHRoZSBhZGRyZXNzIGdpdmVuIGl0cyBsZW5ndGguIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgRU5UUk9QWSBpcyA2NCBieXRlcyBpbiB0aGUgQnVmZmVyXG4gKiBzbyBpZiBub3QgZ2l2ZW4gYW4gYWRkcmVzcyBwcm9vZiBsZW5ndGggd2UgY2FuIHN0aWxsIGV4dHJhY3QgdGhlIGFkZHJlc3MgZnJvbSB0aGUgcHJvb2YuXG4gKlxuICogQHBhcmFtIG1lc3NhZ2VcbiAqIEBwYXJhbSBhZHJlc3NQcm9vZkxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQYXlHb0F0dGVzdGF0aW9uKG1lc3NhZ2U6IEJ1ZmZlcik6IHtcbiAgZW50cm9weTogQnVmZmVyO1xuICBhZGRyZXNzOiBCdWZmZXI7XG4gIHV1aWQ6IEJ1ZmZlcjtcbn0ge1xuICBpZiAobWVzc2FnZS5sZW5ndGggPD0gRW50cm9weUxlbiArIFV1aWRCdWZmZXJMZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheUdvIGF0dGVzdGF0aW9uIHByb29mIGlzIHRvbyBzaG9ydCB0byBjb250YWluIGEgdmFsaWQgYWRkcmVzcycpO1xuICB9XG5cbiAgLy8gVGhpcyBnZW5lcmF0ZXMgdGhlIGZpcnN0IHBhcnQgYmVmb3JlIHRoZSB2YXJpbnQgbGVuZ3RoIHNvIHRoYXQgd2UgY2FuXG4gIC8vIGRldGVybWluZSBob3cgbWFueSBieXRlcyB0aGlzIGlzIGFuZCBpdGVyYXRlIHRocm91Z2ggdGhlIEJ1ZmZlci5cbiAgbGV0IG9mZnNldCA9IDA7XG4gIGlmIChtZXNzYWdlLnRvU3RyaW5nKCdoZXgnKS5zdGFydHNXaXRoKFByZWZpeC50b1N0cmluZygnaGV4JykpKSB7XG4gICAgb2Zmc2V0ID0gUHJlZml4Lmxlbmd0aDtcbiAgfVxuXG4gIC8vIHdlIGRlY29kZSB0aGUgdmFyaW50IG9mIHRoZSBtZXNzYWdlIHdoaWNoIGlzIHVpbnQzMlxuICAvLyBodHRwczovL2VuLmJpdGNvaW4uaXQvd2lraS9Qcm90b2NvbF9kb2N1bWVudGF0aW9uXG4gIGNvbnN0IHZhckludCA9IGJ1ZmZlcnV0aWxzLnZhcnVpbnQuZGVjb2RlKG1lc3NhZ2UsIG9mZnNldCk7XG4gIGFzc2VydCh2YXJJbnQpO1xuICBvZmZzZXQgKz0gYnVmZmVydXRpbHMudmFydWludC5kZWNvZGUuYnl0ZXM7XG5cbiAgY29uc3QgZW50cm9weSA9IG1lc3NhZ2Uuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBFbnRyb3B5TGVuKTtcbiAgb2Zmc2V0ICs9IEVudHJvcHlMZW47XG4gIGNvbnN0IGFkZHJlc3MgPSBtZXNzYWdlLnN1YmFycmF5KG9mZnNldCwgbWVzc2FnZS5sZW5ndGggLSBVdWlkQnVmZmVyTGVuZ3RoKTtcbiAgb2Zmc2V0ICs9IGFkZHJlc3MubGVuZ3RoO1xuICBjb25zdCB1dWlkID0gbWVzc2FnZS5zdWJhcnJheShtZXNzYWdlLmxlbmd0aCAtIFV1aWRCdWZmZXJMZW5ndGgpO1xuXG4gIC8vIHdlIGJyZWFrIHVwIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFuZCByZXR1ZW4gdGhlIGVudHJvcHksIGFkZHJlc3MgYW5kIHV1aWQgaW4gdGhlaXIgYnVmZmVyc1xuICByZXR1cm4geyBlbnRyb3B5LCBhZGRyZXNzLCB1dWlkIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class PayGoError extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
export declare class ErrorNoPayGoProof extends PayGoError {
|
|
5
|
+
outputIndex: number;
|
|
6
|
+
constructor(outputIndex: number);
|
|
7
|
+
}
|
|
8
|
+
export declare class ErrorMultiplePayGoProof extends PayGoError {
|
|
9
|
+
constructor();
|
|
10
|
+
}
|
|
11
|
+
export declare class ErrorPayGoAddressProofFailedVerification extends PayGoError {
|
|
12
|
+
constructor();
|
|
13
|
+
}
|
|
14
|
+
export declare class ErrorOutputIndexOutOfBounds extends PayGoError {
|
|
15
|
+
outputIndex: number;
|
|
16
|
+
constructor(outputIndex: number);
|
|
17
|
+
}
|
|
18
|
+
export declare class ErrorMultiplePayGoProofAtPsbtIndex extends PayGoError {
|
|
19
|
+
outputIndex: number;
|
|
20
|
+
constructor(outputIndex: number);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=Errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/Errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IAC5B,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC;AAED,qBAAa,uBAAwB,SAAQ,UAAU;;CAItD;AAED,qBAAa,wCAAyC,SAAQ,UAAU;;CAIvE;AAED,qBAAa,2BAA4B,SAAQ,UAAU;IACtC,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC;AAED,qBAAa,kCAAmC,SAAQ,UAAU;IAC7C,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export class PayGoError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = this.constructor.name;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class ErrorNoPayGoProof extends PayGoError {
|
|
8
|
+
constructor(outputIndex) {
|
|
9
|
+
super(`There is no paygo address proof encoded in the PSBT at output ${outputIndex}.`);
|
|
10
|
+
this.outputIndex = outputIndex;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class ErrorMultiplePayGoProof extends PayGoError {
|
|
14
|
+
constructor() {
|
|
15
|
+
super('There are multiple paygo address proofs encoded in the PSBT. Something went wrong.');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class ErrorPayGoAddressProofFailedVerification extends PayGoError {
|
|
19
|
+
constructor() {
|
|
20
|
+
super('Cannot verify the paygo address signature with the provided pubkey.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class ErrorOutputIndexOutOfBounds extends PayGoError {
|
|
24
|
+
constructor(outputIndex) {
|
|
25
|
+
super(`Output index ${outputIndex} is out of bounds for PSBT outputs.`);
|
|
26
|
+
this.outputIndex = outputIndex;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class ErrorMultiplePayGoProofAtPsbtIndex extends PayGoError {
|
|
30
|
+
constructor(outputIndex) {
|
|
31
|
+
super(`There are multiple PayGo addresses in the PSBT output ${outputIndex}.`);
|
|
32
|
+
this.outputIndex = outputIndex;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BheWdvL3BzYnQvRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxVQUFXLFNBQVEsS0FBSztJQUNuQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsVUFBVTtJQUMvQyxZQUFtQixXQUFtQjtRQUNwQyxLQUFLLENBQUMsaUVBQWlFLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFEdEUsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFFdEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFVBQVU7SUFDckQ7UUFDRSxLQUFLLENBQUMsb0ZBQW9GLENBQUMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sd0NBQXlDLFNBQVEsVUFBVTtJQUN0RTtRQUNFLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxVQUFVO0lBQ3pELFlBQW1CLFdBQW1CO1FBQ3BDLEtBQUssQ0FBQyxnQkFBZ0IsV0FBVyxxQ0FBcUMsQ0FBQyxDQUFDO1FBRHZELGdCQUFXLEdBQVgsV0FBVyxDQUFRO0lBRXRDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSxVQUFVO0lBQ2hFLFlBQW1CLFdBQW1CO1FBQ3BDLEtBQUssQ0FBQyx5REFBeUQsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUQ5RCxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUV0QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGF5R29FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck5vUGF5R29Qcm9vZiBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0cHV0SW5kZXg6IG51bWJlcikge1xuICAgIHN1cGVyKGBUaGVyZSBpcyBubyBwYXlnbyBhZGRyZXNzIHByb29mIGVuY29kZWQgaW4gdGhlIFBTQlQgYXQgb3V0cHV0ICR7b3V0cHV0SW5kZXh9LmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZiBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignVGhlcmUgYXJlIG11bHRpcGxlIHBheWdvIGFkZHJlc3MgcHJvb2ZzIGVuY29kZWQgaW4gdGhlIFBTQlQuIFNvbWV0aGluZyB3ZW50IHdyb25nLicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvclBheUdvQWRkcmVzc1Byb29mRmFpbGVkVmVyaWZpY2F0aW9uIGV4dGVuZHMgUGF5R29FcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdDYW5ub3QgdmVyaWZ5IHRoZSBwYXlnbyBhZGRyZXNzIHNpZ25hdHVyZSB3aXRoIHRoZSBwcm92aWRlZCBwdWJrZXkuJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0cHV0SW5kZXg6IG51bWJlcikge1xuICAgIHN1cGVyKGBPdXRwdXQgaW5kZXggJHtvdXRwdXRJbmRleH0gaXMgb3V0IG9mIGJvdW5kcyBmb3IgUFNCVCBvdXRwdXRzLmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZkF0UHNidEluZGV4IGV4dGVuZHMgUGF5R29FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvdXRwdXRJbmRleDogbnVtYmVyKSB7XG4gICAgc3VwZXIoYFRoZXJlIGFyZSBtdWx0aXBsZSBQYXlHbyBhZGRyZXNzZXMgaW4gdGhlIFBTQlQgb3V0cHV0ICR7b3V0cHV0SW5kZXh9LmApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './payGoAddressProof';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXlHb0FkZHJlc3NQcm9vZic7XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
/** This function adds the entropy and signature into the PSBT output unknown key vals.
|
|
3
|
+
* We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
|
|
4
|
+
* to later verify.
|
|
5
|
+
*
|
|
6
|
+
* @param psbt - PSBT that we need to encode our paygo address into
|
|
7
|
+
* @param outputIndex - the index of the address in our output
|
|
8
|
+
* @param sig - the signature that we want to encode
|
|
9
|
+
* @param entropy - the arbitrary entropy bytes from our vasp proof
|
|
10
|
+
*/
|
|
11
|
+
export declare function addPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, sig: Buffer, entropy: Buffer): void;
|
|
12
|
+
/** Verify the paygo address signature is valid using verification pub key.
|
|
13
|
+
*
|
|
14
|
+
* @param psbt - PSBT we want to verify that the paygo address is in
|
|
15
|
+
* @param outputIndex - we have the output index that address is in
|
|
16
|
+
* @param verificationPubkey - the pubkey signed by the HSM to verify our message
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
export declare function verifyPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, verificationPubkey: Buffer): void;
|
|
20
|
+
/** Get the output index of the paygo output if there is one. It does this by
|
|
21
|
+
* checking if the metadata is on one of the outputs of the PSBT. If there is
|
|
22
|
+
* no paygo output, return undefined
|
|
23
|
+
*
|
|
24
|
+
* @param psbt
|
|
25
|
+
* @returns number - the index of the output address
|
|
26
|
+
*/
|
|
27
|
+
export declare function getPayGoAddressProofOutputIndex(psbt: utxolib.bitgo.UtxoPsbt): number | undefined;
|
|
28
|
+
export declare function psbtOutputIncludesPaygoAddressProof(psbt: utxolib.bitgo.UtxoPsbt): boolean;
|
|
29
|
+
//# sourceMappingURL=payGoAddressProof.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payGoAddressProof.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/payGoAddressProof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,GACzB,IAAI,CAiCN;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAehG;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAEzF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as utxolib from '@bitgo-beta/utxo-lib';
|
|
2
|
+
import { checkForOutput } from 'bip174/src/lib/utils';
|
|
3
|
+
import { verifyMessage } from '../../bip32utils';
|
|
4
|
+
import { createPayGoAttestationBuffer } from '../attestation';
|
|
5
|
+
import { ErrorMultiplePayGoProof, ErrorMultiplePayGoProofAtPsbtIndex, ErrorNoPayGoProof, ErrorOutputIndexOutOfBounds, ErrorPayGoAddressProofFailedVerification, } from './Errors';
|
|
6
|
+
/** This function adds the entropy and signature into the PSBT output unknown key vals.
|
|
7
|
+
* We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
|
|
8
|
+
* to later verify.
|
|
9
|
+
*
|
|
10
|
+
* @param psbt - PSBT that we need to encode our paygo address into
|
|
11
|
+
* @param outputIndex - the index of the address in our output
|
|
12
|
+
* @param sig - the signature that we want to encode
|
|
13
|
+
* @param entropy - the arbitrary entropy bytes from our vasp proof
|
|
14
|
+
*/
|
|
15
|
+
export function addPayGoAddressProof(psbt, outputIndex, sig, entropy) {
|
|
16
|
+
utxolib.bitgo.addProprietaryKeyValuesFromUnknownKeyValues(psbt, 'output', outputIndex, {
|
|
17
|
+
key: {
|
|
18
|
+
identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
|
|
19
|
+
subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
|
|
20
|
+
keydata: entropy,
|
|
21
|
+
},
|
|
22
|
+
value: sig,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/** Verify the paygo address signature is valid using verification pub key.
|
|
26
|
+
*
|
|
27
|
+
* @param psbt - PSBT we want to verify that the paygo address is in
|
|
28
|
+
* @param outputIndex - we have the output index that address is in
|
|
29
|
+
* @param verificationPubkey - the pubkey signed by the HSM to verify our message
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
32
|
+
export function verifyPayGoAddressProof(psbt, outputIndex, verificationPubkey) {
|
|
33
|
+
const psbtOutputs = checkForOutput(psbt.data.outputs, outputIndex);
|
|
34
|
+
const stored = utxolib.bitgo.getProprietaryKeyValuesFromUnknownKeyValues(psbtOutputs, {
|
|
35
|
+
identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
|
|
36
|
+
subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
|
|
37
|
+
});
|
|
38
|
+
// assert stored length is 0 or 1
|
|
39
|
+
if (stored.length === 0) {
|
|
40
|
+
throw new ErrorNoPayGoProof(outputIndex);
|
|
41
|
+
}
|
|
42
|
+
else if (stored.length > 1) {
|
|
43
|
+
throw new ErrorMultiplePayGoProof();
|
|
44
|
+
}
|
|
45
|
+
// We get the signature and entropy from our PSBT unknown key vals
|
|
46
|
+
const signature = stored[0].value;
|
|
47
|
+
const entropy = stored[0].key.keydata;
|
|
48
|
+
// Get the the PayGo address from the txOutputs
|
|
49
|
+
const txOutputs = psbt.txOutputs;
|
|
50
|
+
if (outputIndex >= txOutputs.length) {
|
|
51
|
+
throw new ErrorOutputIndexOutOfBounds(outputIndex);
|
|
52
|
+
}
|
|
53
|
+
const output = txOutputs[outputIndex];
|
|
54
|
+
const addressFromOutput = utxolib.address.fromOutputScript(output.script, psbt.network);
|
|
55
|
+
// We construct our message <ENTROPY><ADDRESS><UUID>
|
|
56
|
+
const message = createPayGoAttestationBuffer(addressFromOutput, entropy, psbt.network);
|
|
57
|
+
// bip32utils.verifyMessage now takes in message as a Buffer
|
|
58
|
+
if (!verifyMessage(message, verificationPubkey, signature, utxolib.networks.bitcoin)) {
|
|
59
|
+
throw new ErrorPayGoAddressProofFailedVerification();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** Get the output index of the paygo output if there is one. It does this by
|
|
63
|
+
* checking if the metadata is on one of the outputs of the PSBT. If there is
|
|
64
|
+
* no paygo output, return undefined
|
|
65
|
+
*
|
|
66
|
+
* @param psbt
|
|
67
|
+
* @returns number - the index of the output address
|
|
68
|
+
*/
|
|
69
|
+
export function getPayGoAddressProofOutputIndex(psbt) {
|
|
70
|
+
const res = psbt.data.outputs.flatMap((output, outputIndex) => {
|
|
71
|
+
const proprietaryKeyVals = utxolib.bitgo.getPsbtOutputProprietaryKeyVals(output, {
|
|
72
|
+
identifier: utxolib.bitgo.PSBT_PROPRIETARY_IDENTIFIER,
|
|
73
|
+
subtype: utxolib.bitgo.ProprietaryKeySubtype.PAYGO_ADDRESS_ATTESTATION_PROOF,
|
|
74
|
+
});
|
|
75
|
+
if (proprietaryKeyVals.length > 1) {
|
|
76
|
+
throw new ErrorMultiplePayGoProofAtPsbtIndex(outputIndex);
|
|
77
|
+
}
|
|
78
|
+
return proprietaryKeyVals.length === 0 ? [] : [outputIndex];
|
|
79
|
+
});
|
|
80
|
+
return res.length === 0 ? undefined : res[0];
|
|
81
|
+
}
|
|
82
|
+
export function psbtOutputIncludesPaygoAddressProof(psbt) {
|
|
83
|
+
return getPayGoAddressProofOutputIndex(psbt) !== undefined;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5R29BZGRyZXNzUHJvb2YuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9wYXlHb0FkZHJlc3NQcm9vZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixrQ0FBa0MsRUFDbEMsaUJBQWlCLEVBQ2pCLDJCQUEyQixFQUMzQix3Q0FBd0MsR0FDekMsTUFBTSxVQUFVLENBQUM7QUFFbEI7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLElBQTRCLEVBQzVCLFdBQW1CLEVBQ25CLEdBQVcsRUFDWCxPQUFlO0lBRWYsT0FBTyxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRTtRQUNyRixHQUFHLEVBQUU7WUFDSCxVQUFVLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkI7WUFDckQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsK0JBQStCO1lBQzVFLE9BQU8sRUFBRSxPQUFPO1NBQ2pCO1FBQ0QsS0FBSyxFQUFFLEdBQUc7S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxJQUE0QixFQUM1QixXQUFtQixFQUNuQixrQkFBMEI7SUFFMUIsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ25F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Y2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IGNoZWNrRm9yT3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyB2ZXJpZnlNZXNzYWdlIH0gZnJvbSAnLi4vLi4vYmlwMzJ1dGlscyc7XG5pbXBvcnQgeyBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyIH0gZnJvbSAnLi4vYXR0ZXN0YXRpb24nO1xuXG5pbXBvcnQge1xuICBFcnJvck11bHRpcGxlUGF5R29Qcm9vZixcbiAgRXJyb3JNdWx0aXBsZVBheUdvUHJvb2ZBdFBzYnRJbmRleCxcbiAgRXJyb3JOb1BheUdvUHJvb2YsXG4gIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyxcbiAgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbixcbn0gZnJvbSAnLi9FcnJvcnMnO1xuXG4vKiogVGhpcyBmdW5jdGlvbiBhZGRzIHRoZSBlbnRyb3B5IGFuZCBzaWduYXR1cmUgaW50byB0aGUgUFNCVCBvdXRwdXQgdW5rbm93biBrZXkgdmFscy5cbiAqIFdlIHN0b3JlIHRoZSBlbnRyb3B5IHNvIHRoYXQgd2UgcmVjb25zdHJ1Y3QgdGhlIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gKiB0byBsYXRlciB2ZXJpZnkuXG4gKlxuICogQHBhcmFtIHBzYnQgLSBQU0JUIHRoYXQgd2UgbmVlZCB0byBlbmNvZGUgb3VyIHBheWdvIGFkZHJlc3MgaW50b1xuICogQHBhcmFtIG91dHB1dEluZGV4IC0gdGhlIGluZGV4IG9mIHRoZSBhZGRyZXNzIGluIG91ciBvdXRwdXRcbiAqIEBwYXJhbSBzaWcgLSB0aGUgc2lnbmF0dXJlIHRoYXQgd2Ugd2FudCB0byBlbmNvZGVcbiAqIEBwYXJhbSBlbnRyb3B5IC0gdGhlIGFyYml0cmFyeSBlbnRyb3B5IGJ5dGVzIGZyb20gb3VyIHZhc3AgcHJvb2ZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFBheUdvQWRkcmVzc1Byb29mKFxuICBwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBzaWc6IEJ1ZmZlcixcbiAgZW50cm9weTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgdXR4b2xpYi5iaXRnby5hZGRQcm9wcmlldGFyeUtleVZhbHVlc0Zyb21Vbmtub3duS2V5VmFsdWVzKHBzYnQsICdvdXRwdXQnLCBvdXRwdXRJbmRleCwge1xuICAgIGtleToge1xuICAgICAgaWRlbnRpZmllcjogdXR4b2xpYi5iaXRnby5QU0JUX1BST1BSSUVUQVJZX0lERU5USUZJRVIsXG4gICAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICAgICAga2V5ZGF0YTogZW50cm9weSxcbiAgICB9LFxuICAgIHZhbHVlOiBzaWcsXG4gIH0pO1xufVxuXG4vKiogVmVyaWZ5IHRoZSBwYXlnbyBhZGRyZXNzIHNpZ25hdHVyZSBpcyB2YWxpZCB1c2luZyB2ZXJpZmljYXRpb24gcHViIGtleS5cbiAqXG4gKiBAcGFyYW0gcHNidCAtIFBTQlQgd2Ugd2FudCB0byB2ZXJpZnkgdGhhdCB0aGUgcGF5Z28gYWRkcmVzcyBpcyBpblxuICogQHBhcmFtIG91dHB1dEluZGV4IC0gd2UgaGF2ZSB0aGUgb3V0cHV0IGluZGV4IHRoYXQgYWRkcmVzcyBpcyBpblxuICogQHBhcmFtIHZlcmlmaWNhdGlvblB1YmtleSAtIHRoZSBwdWJrZXkgc2lnbmVkIGJ5IHRoZSBIU00gdG8gdmVyaWZ5IG91ciBtZXNzYWdlXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UGF5R29BZGRyZXNzUHJvb2YoXG4gIHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsXG4gIG91dHB1dEluZGV4OiBudW1iZXIsXG4gIHZlcmlmaWNhdGlvblB1YmtleTogQnVmZmVyXG4pOiB2b2lkIHtcbiAgY29uc3QgcHNidE91dHB1dHMgPSBjaGVja0Zvck91dHB1dChwc2J0LmRhdGEub3V0cHV0cywgb3V0cHV0SW5kZXgpO1xuICBjb25zdCBzdG9yZWQgPSB1dHhvbGliLmJpdGdvLmdldFByb3ByaWV0YXJ5S2V5VmFsdWVzRnJvbVVua25vd25LZXlWYWx1ZXMocHNidE91dHB1dHMsIHtcbiAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICBzdWJ0eXBlOiB1dHhvbGliLmJpdGdvLlByb3ByaWV0YXJ5S2V5U3VidHlwZS5QQVlHT19BRERSRVNTX0FUVEVTVEFUSU9OX1BST09GLFxuICB9KTtcblxuICAvLyBhc3NlcnQgc3RvcmVkIGxlbmd0aCBpcyAwIG9yIDFcbiAgaWYgKHN0b3JlZC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JOb1BheUdvUHJvb2Yob3V0cHV0SW5kZXgpO1xuICB9IGVsc2UgaWYgKHN0b3JlZC5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yTXVsdGlwbGVQYXlHb1Byb29mKCk7XG4gIH1cblxuICAvLyBXZSBnZXQgdGhlIHNpZ25hdHVyZSBhbmQgZW50cm9weSBmcm9tIG91ciBQU0JUIHVua25vd24ga2V5IHZhbHNcbiAgY29uc3Qgc2lnbmF0dXJlID0gc3RvcmVkWzBdLnZhbHVlO1xuICBjb25zdCBlbnRyb3B5ID0gc3RvcmVkWzBdLmtleS5rZXlkYXRhO1xuXG4gIC8vIEdldCB0aGUgdGhlIFBheUdvIGFkZHJlc3MgZnJvbSB0aGUgdHhPdXRwdXRzXG4gIGNvbnN0IHR4T3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzO1xuICBpZiAob3V0cHV0SW5kZXggPj0gdHhPdXRwdXRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvck91dHB1dEluZGV4T3V0T2ZCb3VuZHMob3V0cHV0SW5kZXgpO1xuICB9XG4gIGNvbnN0IG91dHB1dCA9IHR4T3V0cHV0c1tvdXRwdXRJbmRleF07XG4gIGNvbnN0IGFkZHJlc3NGcm9tT3V0cHV0ID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQob3V0cHV0LnNjcmlwdCwgcHNidC5uZXR3b3JrKTtcblxuICAvLyBXZSBjb25zdHJ1Y3Qgb3VyIG1lc3NhZ2UgPEVOVFJPUFk+PEFERFJFU1M+PFVVSUQ+XG4gIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVQYXlHb0F0dGVzdGF0aW9uQnVmZmVyKGFkZHJlc3NGcm9tT3V0cHV0LCBlbnRyb3B5LCBwc2J0Lm5ldHdvcmspO1xuXG4gIC8vIGJpcDMydXRpbHMudmVyaWZ5TWVzc2FnZSBub3cgdGFrZXMgaW4gbWVzc2FnZSBhcyBhIEJ1ZmZlclxuICBpZiAoIXZlcmlmeU1lc3NhZ2UobWVzc2FnZSwgdmVyaWZpY2F0aW9uUHVia2V5LCBzaWduYXR1cmUsIHV0eG9saWIubmV0d29ya3MuYml0Y29pbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3JQYXlHb0FkZHJlc3NQcm9vZkZhaWxlZFZlcmlmaWNhdGlvbigpO1xuICB9XG59XG5cbi8qKiBHZXQgdGhlIG91dHB1dCBpbmRleCBvZiB0aGUgcGF5Z28gb3V0cHV0IGlmIHRoZXJlIGlzIG9uZS4gSXQgZG9lcyB0aGlzIGJ5XG4gKiBjaGVja2luZyBpZiB0aGUgbWV0YWRhdGEgaXMgb24gb25lIG9mIHRoZSBvdXRwdXRzIG9mIHRoZSBQU0JULiBJZiB0aGVyZSBpc1xuICogbm8gcGF5Z28gb3V0cHV0LCByZXR1cm4gdW5kZWZpbmVkXG4gKlxuICogQHBhcmFtIHBzYnRcbiAqIEByZXR1cm5zIG51bWJlciAtIHRoZSBpbmRleCBvZiB0aGUgb3V0cHV0IGFkZHJlc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBheUdvQWRkcmVzc1Byb29mT3V0cHV0SW5kZXgocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJlcyA9IHBzYnQuZGF0YS5vdXRwdXRzLmZsYXRNYXAoKG91dHB1dCwgb3V0cHV0SW5kZXgpID0+IHtcbiAgICBjb25zdCBwcm9wcmlldGFyeUtleVZhbHMgPSB1dHhvbGliLmJpdGdvLmdldFBzYnRPdXRwdXRQcm9wcmlldGFyeUtleVZhbHMob3V0cHV0LCB7XG4gICAgICBpZGVudGlmaWVyOiB1dHhvbGliLmJpdGdvLlBTQlRfUFJPUFJJRVRBUllfSURFTlRJRklFUixcbiAgICAgIHN1YnR5cGU6IHV0eG9saWIuYml0Z28uUHJvcHJpZXRhcnlLZXlTdWJ0eXBlLlBBWUdPX0FERFJFU1NfQVRURVNUQVRJT05fUFJPT0YsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHJpZXRhcnlLZXlWYWxzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZkF0UHNidEluZGV4KG91dHB1dEluZGV4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvcHJpZXRhcnlLZXlWYWxzLmxlbmd0aCA9PT0gMCA/IFtdIDogW291dHB1dEluZGV4XTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcy5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiByZXNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwc2J0T3V0cHV0SW5jbHVkZXNQYXlnb0FkZHJlc3NQcm9vZihwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0KTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRQYXlHb0FkZHJlc3NQcm9vZk91dHB1dEluZGV4KHBzYnQpICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BIP32Interface } from '@bitgo-beta/secp256k1';
|
|
2
|
+
import { Miniscript, Descriptor, ast } from '@bitgo/wasm-utxo';
|
|
3
|
+
import { DescriptorMap, PsbtParams } from '../../descriptor';
|
|
4
|
+
import { Triple, KeyTriple } from '../key.utils';
|
|
5
|
+
export declare function getDefaultXPubs(seed?: string): Triple<string>;
|
|
6
|
+
export declare function getUnspendableKey(): string;
|
|
7
|
+
export type DescriptorTemplate = 'Wsh2Of3' | 'Tr1Of3-NoKeyPath-Tree' | 'Tr1Of3-NoKeyPath-Tree-Plain' | 'Tr2Of3-NoKeyPath' | 'Wsh2Of2' | 'Wsh2Of3CltvDrop';
|
|
8
|
+
export declare function getPsbtParams(t: DescriptorTemplate): Partial<PsbtParams>;
|
|
9
|
+
export declare function containsKey(script: Miniscript | ast.MiniscriptNode, key: BIP32Interface | string): boolean;
|
|
10
|
+
export declare function getTapLeafScripts(d: Descriptor): string[];
|
|
11
|
+
export declare function getDescriptor(template: DescriptorTemplate, keys?: KeyTriple | string[], path?: string): Descriptor;
|
|
12
|
+
export declare function getDescriptorMap(template: DescriptorTemplate, keys?: KeyTriple | string[]): DescriptorMap;
|
|
13
|
+
//# sourceMappingURL=descriptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../../../../src/testutil/descriptor/descriptors.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAgB,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE/D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAE7D;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAsB1C;AAMD,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,uBAAuB,GAEvB,6BAA6B,GAC7B,kBAAkB,GAClB,SAAS,GAMT,iBAAiB,CAAC;AAkCtB,wBAAgB,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CAOxE;AAuED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,CAAC,cAAc,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,GAAG,OAAO,CAQ1G;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAIzD;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,SAAS,GAAG,MAAM,EAAsB,EAC9C,IAAI,SAAQ,GACX,UAAU,CAEZ;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAC5B,IAAI,GAAE,SAAS,GAAG,MAAM,EAAsB,GAC7C,aAAa,CAKf"}
|