{"_id":"@dfx.swiss/bip322-multisig","_rev":"7-3cb00a2c0e69bfd907b92dd966bdd423","name":"@dfx.swiss/bip322-multisig","dist-tags":{"latest":"0.2.1","beta":"0.2.1-beta.0"},"versions":{"0.2.0-beta.0":{"name":"@dfx.swiss/bip322-multisig","version":"0.2.0-beta.0","license":"MIT","_id":"@dfx.swiss/bip322-multisig@0.2.0-beta.0","maintainers":[{"name":"dfxcto","email":"cto@dfx.swiss"},{"name":"taprootfreak","email":"ceo@dfx.swiss"}],"homepage":"https://github.com/DFXswiss/packages#readme","bugs":{"url":"https://github.com/DFXswiss/packages/issues"},"bin":{"bip322-sign":"dist/bin/sign.js","bip322-finalize":"dist/bin/finalize.js"},"dist":{"shasum":"c4c4e2db2df4bef374076c3dfcb1c9970137887c","tarball":"https://registry.npmjs.org/@dfx.swiss/bip322-multisig/-/bip322-multisig-0.2.0-beta.0.tgz","fileCount":31,"integrity":"sha512-2Ppxj2kO4TEevQ/raHvKQsdGCS9Ag++QDH00R7G/2o9E3+s5NOQxVrciYJCvIQZRbrJyTzAp0xuzNqxrLpL/Ew==","signatures":[{"sig":"MEQCIB4YSMBuYn4eWW0okmFwb3iH1ANeP5O9/8nAo4LIbxtWAiAO5buGTReDzLZ3fUCYIgJwfseVuFkN+FopFaSYEFKiXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58596},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"6fd8037d5f0277970b9fbe2bdc92908b575fd093","private":false,"scripts":{"lint":"eslint src --ext .ts","pack":"npm pack","test":"jest","build":"tsc -b ./tsconfig.build.json","clean":"rm -rf ./dist/ && rm -rf ./tsconfig.build.tsbuildinfo","format":"prettier --write src","lint:fix":"eslint src --ext .ts --fix","format:check":"prettier --check src"},"_npmUser":{"name":"taprootfreak","email":"ceo@dfx.swiss"},"repository":{"url":"git+https://github.com/DFXswiss/packages.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v18.20.8+x64 (linux)","description":"Build and sign BIP-322 simple signatures for Bitcoin P2WSH multisig wallets via PSBT","directories":{},"_nodeVersion":"18.20.8","dependencies":{"bip32":"^4.0.0","bech32":"^2.0.0","bitcoinjs-lib":"^6.1.7","@bitcoinerlab/secp256k1":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.4.9","typescript":"^4.9.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/bip322-multisig_0.2.0-beta.0_1777481414103_0.8886813558371678","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-beta.2":{"name":"@dfx.swiss/bip322-multisig","version":"0.2.0-beta.2","license":"MIT","_id":"@dfx.swiss/bip322-multisig@0.2.0-beta.2","maintainers":[{"name":"dfxcto","email":"cto@dfx.swiss"},{"name":"taprootfreak","email":"ceo@dfx.swiss"}],"homepage":"https://github.com/DFXswiss/packages#readme","bugs":{"url":"https://github.com/DFXswiss/packages/issues"},"bin":{"bip322-sign":"dist/bin/sign.js","bip322-finalize":"dist/bin/finalize.js"},"dist":{"shasum":"b555c92184bbcdce180a8a51a46c26a5847eede2","tarball":"https://registry.npmjs.org/@dfx.swiss/bip322-multisig/-/bip322-multisig-0.2.0-beta.2.tgz","fileCount":35,"integrity":"sha512-ZRnmdGTUwyUe8+onx7yhIoKrOnzw1BBZfRsVssJPQFKG+AER5wt/h7tmZwlpXahVA8ypaC45jvqlG4I9BLIM4Q==","signatures":[{"sig":"MEUCIHf9Ub5GNoBiji32o5I4oAW7o/gXQ2OiunNhgp+SwtyqAiEAl/fv0OBP0ci0asXw1KzPVgjN09A73gqf1pphxVZJpwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76834},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fbb7b9d8d75010a325f1078dbb17c377d81a012c","private":false,"scripts":{"lint":"eslint src --ext .ts","pack":"npm pack","test":"jest","build":"tsc -b ./tsconfig.build.json","clean":"rm -rf ./dist/ && rm -rf ./tsconfig.build.tsbuildinfo","format":"prettier --write src","lint:fix":"eslint src --ext .ts --fix","format:check":"prettier --check src"},"_npmUser":{"name":"taprootfreak","email":"ceo@dfx.swiss"},"repository":{"url":"git+https://github.com/DFXswiss/packages.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v18.20.8+x64 (linux)","description":"Build and sign BIP-322 simple signatures for Bitcoin P2WSH multisig wallets via PSBT","directories":{},"_nodeVersion":"18.20.8","dependencies":{"bip32":"^4.0.0","bech32":"^2.0.0","@noble/curves":"^2.2.0","bitcoinjs-lib":"^6.1.7","@bitcoinerlab/secp256k1":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","ts-jest":"^29.4.9","typescript":"^4.9.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/bip322-multisig_0.2.0-beta.2_1777566238628_0.6942765317390949","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-beta.3":{"name":"@dfx.swiss/bip322-multisig","version":"0.2.0-beta.3","license":"MIT","_id":"@dfx.swiss/bip322-multisig@0.2.0-beta.3","maintainers":[{"name":"dfxcto","email":"cto@dfx.swiss"},{"name":"taprootfreak","email":"ceo@dfx.swiss"}],"homepage":"https://github.com/DFXswiss/packages#readme","bugs":{"url":"https://github.com/DFXswiss/packages/issues"},"bin":{"bip322-sign":"dist/bin/sign.js","bip322-finalize":"dist/bin/finalize.js"},"dist":{"shasum":"34ca0407ae1eb2bcbd007ed25bdc173c105fd4b2","tarball":"https://registry.npmjs.org/@dfx.swiss/bip322-multisig/-/bip322-multisig-0.2.0-beta.3.tgz","fileCount":35,"integrity":"sha512-zBIetXuaM1I+nuhmsrWHVEQDW+OUH/R7ebkX6T1d9MVuIKMRWaRgP/LvHeKa68xJ2r5FoemwAmRsLiOhsu701w==","signatures":[{"sig":"MEUCICYkM7SX+f78yU3T0N86omm7p4BiGWrgRZmtX8CYOlXBAiEAuuhM6y6gTs1/D2ijuJ0aeRJgHfjTeJO3eIh1t0u3WuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76843},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"de8975b5cdb4fdd4300bd55e8a2cc2e5ac081361","private":false,"scripts":{"lint":"eslint src --ext .ts","pack":"npm pack","test":"jest","build":"tsc -b ./tsconfig.build.json","clean":"rm -rf ./dist/ && rm -rf ./tsconfig.build.tsbuildinfo","format":"prettier --write src","lint:fix":"eslint src --ext .ts --fix","format:check":"prettier --check src"},"_npmUser":{"name":"taprootfreak","email":"ceo@dfx.swiss"},"repository":{"url":"git+https://github.com/DFXswiss/packages.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v18.20.8+x64 (linux)","description":"Build and sign BIP-322 simple signatures for Bitcoin P2WSH multisig wallets via PSBT","directories":{},"_nodeVersion":"18.20.8","dependencies":{"bip32":"^4.0.0","bech32":"^2.0.0","@noble/curves":"^2.2.0","bitcoinjs-lib":"^6.1.7","@bitcoinerlab/secp256k1":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","ts-jest":"^29.4.9","typescript":"^4.9.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/bip322-multisig_0.2.0-beta.3_1777566549737_0.772322747458841","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-beta.4":{"name":"@dfx.swiss/bip322-multisig","version":"0.2.0-beta.4","license":"MIT","_id":"@dfx.swiss/bip322-multisig@0.2.0-beta.4","maintainers":[{"name":"dfxcto","email":"cto@dfx.swiss"},{"name":"taprootfreak","email":"ceo@dfx.swiss"}],"homepage":"https://github.com/DFXswiss/packages#readme","bugs":{"url":"https://github.com/DFXswiss/packages/issues"},"bin":{"bip322-sign":"dist/bin/sign.js","bip322-finalize":"dist/bin/finalize.js"},"dist":{"shasum":"801e38f18cfd0257dd7c0557a434fbd6a6d9b20f","tarball":"https://registry.npmjs.org/@dfx.swiss/bip322-multisig/-/bip322-multisig-0.2.0-beta.4.tgz","fileCount":35,"integrity":"sha512-gir5Vmha/gf0zbLljaeONhN5LHtp3VHC19Z4t4GO38uIN0Wlt5SX00p4pg6IYRHo/I6ETPIy9pfsK04asHw2vA==","signatures":[{"sig":"MEQCIHryY2aAaOKh0zXqbHHtUp3H8plxDHBkRcW0L7yXE0N7AiBCHfWLF3ib0r/bmRPG/jTzsIgDMz07ZZdugwvOz8YhPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72159},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"358352090319a25959c99d278400a1e3a4ff4875","private":false,"scripts":{"lint":"eslint src --ext .ts","pack":"npm pack","test":"jest","build":"tsc -b ./tsconfig.build.json","clean":"rm -rf ./dist/ && rm -rf ./tsconfig.build.tsbuildinfo","format":"prettier --write src","lint:fix":"eslint src --ext .ts --fix","format:check":"prettier --check src"},"_npmUser":{"name":"taprootfreak","email":"ceo@dfx.swiss"},"repository":{"url":"git+https://github.com/DFXswiss/packages.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v18.20.8+x64 (linux)","description":"Build and sign BIP-322 simple signatures for Bitcoin P2WSH multisig wallets via PSBT","directories":{},"_nodeVersion":"18.20.8","dependencies":{"bip32":"^4.0.0","bech32":"^2.0.0","@noble/curves":"^1.9.0","bitcoinjs-lib":"^6.1.7","@bitcoinerlab/secp256k1":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","ts-jest":"^29.4.9","typescript":"^4.9.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/bip322-multisig_0.2.0-beta.4_1778683687686_0.528048210148286","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dfx.swiss/bip322-multisig","version":"0.2.0","license":"MIT","_id":"@dfx.swiss/bip322-multisig@0.2.0","maintainers":[{"name":"dfxcto","email":"cto@dfx.swiss"},{"name":"taprootfreak","email":"ceo@dfx.swiss"}],"homepage":"https://github.com/DFXswiss/packages#readme","bugs":{"url":"https://github.com/DFXswiss/packages/issues"},"bin":{"bip322-sign":"dist/bin/sign.js","bip322-finalize":"dist/bin/finalize.js"},"dist":{"shasum":"208eb618e1ee76a5b01d9429956dde2dbe3778a7","tarball":"https://registry.npmjs.org/@dfx.swiss/bip322-multisig/-/bip322-multisig-0.2.0.tgz","fileCount":35,"integrity":"sha512-EqU42TyrduykKsZH8ITTxI5/8cAg0gU2YHjbCTv/26vJ8rj251TgGY+9BSqLRk/k0eYNSI99UNU0xoUuidmlVA==","signatures":[{"sig":"MEQCIBpOuFsOhjUWVl47ApmsAy8NpXALe2ZSjzFce7+PWJIWAiA9OEbzkYr2+X8SGt0XawckSC1kF/ncKcwotSKLsJttfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dfx.swiss%2fbip322-multisig@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":72152},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"750ab964e2af53c231948d81425b033a4439bcbf","private":false,"scripts":{"lint":"eslint src --ext .ts","pack":"npm pack","test":"jest","build":"tsc -b ./tsconfig.build.json","clean":"rm -rf ./dist/ && rm -rf ./tsconfig.build.tsbuildinfo","format":"prettier --write src","lint:fix":"eslint src --ext .ts --fix","format:check":"prettier --check src"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5c6cf45b-1251-445e-a8c1-c3525404865e"}},"repository":{"url":"git+https://github.com/DFXswiss/packages.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v22.23.1+x64 (linux)","description":"Build and sign BIP-322 simple signatures for Bitcoin P2WSH multisig wallets via PSBT","directories":{},"_nodeVersion":"22.23.1","dependencies":{"bip32":"^4.0.0","bech32":"^2.0.0","@noble/curves":"^1.9.0","bitcoinjs-lib":"^6.1.7","@bitcoinerlab/secp256k1":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.4.9","typescript":"^4.9.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/bip322-multisig_0.2.0_1782940297438_0.004817474541531475","host":"s3://npm-registry-packages-npm-production"}},"0.2.1-beta.0":{"name":"@dfx.swiss/bip322-multisig","version":"0.2.1-beta.0","license":"MIT","_id":"@dfx.swiss/bip322-multisig@0.2.1-beta.0","maintainers":[{"name":"dfxcto","email":"cto@dfx.swiss"},{"name":"taprootfreak","email":"ceo@dfx.swiss"}],"homepage":"https://github.com/DFXswiss/packages#readme","bugs":{"url":"https://github.com/DFXswiss/packages/issues"},"bin":{"bip322-sign":"dist/bin/sign.js","bip322-finalize":"dist/bin/finalize.js"},"dist":{"shasum":"71aef0230b8ef0525f3a27d5a122f524b2a18989","tarball":"https://registry.npmjs.org/@dfx.swiss/bip322-multisig/-/bip322-multisig-0.2.1-beta.0.tgz","fileCount":35,"integrity":"sha512-MyVGuDSnwa+fGLj8pjJzrlpMlsevBLrefqR3O5LypuKxDIZw4MWHPo6ymVoDyKLmV8ZKvf2kXHEaM4LSOcXy6Q==","signatures":[{"sig":"MEUCICbEOVpioMMRZNTwOpv9Ztp9Q6KwDjGvKZvntq5RBdU7AiEAo+tvOMsfEOVw7vp2lAooQSb/byG4u5kVchKYqt4nIbY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA9La/v3lshRE5xvnyrUs4sgxXAGwallMwIVqGwhI9MNAiAIsx6+oNn6vApIw1enKS4yOH+ZZ6znTZwsOS1JR9PKkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dfx.swiss%2fbip322-multisig@0.2.1-beta.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79292},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"c5a0ab48405413d0aeb3a15affac06ce0adf2a6e","private":false,"scripts":{"lint":"eslint src --ext .ts","pack":"npm pack","test":"jest","build":"tsc -b ./tsconfig.build.json","clean":"rm -rf ./dist/ && rm -rf ./tsconfig.build.tsbuildinfo","format":"prettier --write src","lint:fix":"eslint src --ext .ts --fix","format:check":"prettier --check src"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5c6cf45b-1251-445e-a8c1-c3525404865e"}},"repository":{"url":"git+https://github.com/DFXswiss/packages.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v22.23.2+x64 (linux)","description":"Build and sign BIP-322 simple signatures for Bitcoin P2WSH multisig wallets via PSBT","directories":{},"_nodeVersion":"22.23.2","dependencies":{"bip32":"^4.0.0","bech32":"^2.0.0","@noble/curves":"^1.9.0","bitcoinjs-lib":"^6.1.7","@bitcoinerlab/secp256k1":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","ts-jest":"^29.4.9","typescript":"^4.9.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"tmp":"tmp/bip322-multisig_0.2.1-beta.0_1789372909812_0.4323579573712091","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"_id":"@dfx.swiss/bip322-multisig@0.2.1","bin":{"bip322-sign":"dist/bin/sign.js","bip322-finalize":"dist/bin/finalize.js"},"bugs":{"url":"https://github.com/DFXswiss/packages/issues"},"dist":{"shasum":"273bcb58276df21517f3584d9deb2c312e2b2e36","tarball":"https://registry.npmjs.org/@dfx.swiss/bip322-multisig/-/bip322-multisig-0.2.1.tgz","fileCount":35,"integrity":"sha512-DQUeTKINDo3IVoknrYvyXAZkxMA4yOvoPvimhEHLv6bBQw4IaxQVt7m8fy2nTVZaQFGvIv9/Kqk7qFWKou4JAw==","signatures":[{"sig":"MEUCIC+V08GUWzXDz+rsdCo1msVZyT/GQaR8dtn2wb/l+4L/AiEA9kKDOMrIngqa8MWj44DSPJ0tJ0kkguK8wQvP1kMRhIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH+wNHfNIIxqktRHyv9e8DWsCi0p05AoxyyziUH76apSAiEAqger8Rm6q0Eht7yvYesBFnrFjLtxpXW+pUXENb0zvTs="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dfx.swiss%2fbip322-multisig@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79285},"main":"dist/index.js","name":"@dfx.swiss/bip322-multisig","types":"dist/index.d.ts","engines":{"node":">=18"},"gitHead":"18b655639e70f0295cc692a1fdda8990d8a4ad8a","license":"MIT","private":false,"scripts":{"lint":"eslint src --ext .ts","pack":"npm pack","test":"jest","build":"tsc -b ./tsconfig.build.json","clean":"rm -rf ./dist/ && rm -rf ./tsconfig.build.tsbuildinfo","format":"prettier --write src","lint:fix":"eslint src --ext .ts --fix","format:check":"prettier --check src"},"version":"0.2.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5c6cf45b-1251-445e-a8c1-c3525404865e"}},"homepage":"https://github.com/DFXswiss/packages#readme","repository":{"url":"git+https://github.com/DFXswiss/packages.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v22.23.2+x64 (linux)","description":"Build and sign BIP-322 simple signatures for Bitcoin P2WSH multisig wallets via PSBT","directories":{},"maintainers":[{"name":"dfxcto","email":"cto@dfx.swiss"},{"name":"taprootfreak","email":"ceo@dfx.swiss"}],"_nodeVersion":"22.23.2","dependencies":{"bip32":"^4.0.0","bech32":"^2.0.0","@noble/curves":"^1.9.0","bitcoinjs-lib":"^6.1.7","@bitcoinerlab/secp256k1":"^1.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.4.9","typescript":"^4.9.3","@types/jest":"^29.5.14"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bip322-multisig_0.2.1_1789373094920_0.49291296333206636"}}},"time":{"created":"2026-04-29T16:50:13.956Z","modified":"2026-09-14T08:04:55.374Z","0.2.0-beta.0":"2026-04-29T16:50:14.261Z","0.2.0-beta.2":"2026-04-30T16:23:58.782Z","0.2.0-beta.3":"2026-04-30T16:29:09.921Z","0.2.0-beta.4":"2026-05-13T14:48:07.881Z","0.2.0":"2026-07-01T21:11:37.573Z","0.2.1-beta.0":"2026-09-14T08:01:49.909Z","0.2.1":"2026-09-14T08:04:55.005Z"},"bugs":{"url":"https://github.com/DFXswiss/packages/issues"},"license":"MIT","homepage":"https://github.com/DFXswiss/packages#readme","repository":{"url":"git+https://github.com/DFXswiss/packages.git","type":"git"},"description":"Build and sign BIP-322 simple signatures for Bitcoin P2WSH multisig wallets via PSBT","maintainers":[{"name":"dfxcto","email":"cto@dfx.swiss"},{"name":"taprootfreak","email":"ceo@dfx.swiss"}],"readme":"# @dfx.swiss/bip322-multisig\n\nBuild and verify BIP-322 *simple* signatures for Bitcoin **P2WSH multisig** wallets via PSBT. Provides both a JavaScript / TypeScript library (Node + browser) and CLI binaries.\n\n## Installation\n\n```bash\nnpm install @dfx.swiss/bip322-multisig\n```\n\nRequires Node.js ≥ 18 (uses native `fetch` in the CLI).\n\n## CLI\n\nAfter global install, two commands are available:\n\n```bash\nnpm install -g @dfx.swiss/bip322-multisig\n\nbip322-sign \\\n  --descriptor 'wsh(sortedmulti(2,[fp1/48h/0h/0h/2h]xpub.../<0;1>/*,...))' \\\n  --address bc1q...\n\n# Sign the resulting PSBT in Sparrow with the threshold number of cosigners,\n# save it as signed.psbt, then:\n\nbip322-finalize --psbt signed.psbt --address bc1q...\n```\n\nBoth commands accept `--api <baseUrl>` (default `https://api.dfx.swiss`) and `bip322-finalize` accepts `--no-submit` to print the signature without contacting the API.\n\n## Library\n\n```typescript\nimport {\n  parseDescriptor,\n  findAddress,\n  buildBip322Psbt,\n  extractBip322Signature,\n} from '@dfx.swiss/bip322-multisig';\n\n// Build a BIP-322 to_sign PSBT for a given P2WSH multisig address\nconst built = buildBip322Psbt({\n  message: 'challenge string from server',\n  descriptor: 'wsh(sortedmulti(2,[fp1/48h/0h/0h/2h]xpub.../<0;1>/*,...))',\n  address: 'bc1q...',\n});\n// → built.psbtBase64, built.toSpendTxid, built.derived\n\n// After the PSBT has been signed (e.g. by Sparrow + hardware wallets):\nconst signatureBase64 = extractBip322Signature(signedPsbtBase64);\n// → BIP-322 Complete simple: \"smp\" + base64(witness stack)\n```\n\n## Scope\n\n| Supported | Not supported |\n|-----------|---------------|\n| `wsh(sortedmulti(t, …))` descriptors with key origin info | Non-multisig descriptors |\n| Both `h` and `'` hardened path notations | Miniscript / Taproot policies |\n| Whitespace and newlines in descriptor input | Testnet / signet (`tpub`) |\n| BIP-389 multipath `<0;1>/*` (receive + change branches) | Multipath with > 2 branches |\n| Standard `OP_M … OP_N OP_CHECKMULTISIG` witness scripts | Non-standard witness scripts |\n\n## How it works\n\n[BIP-322](https://github.com/bitcoin/bips/blob/master/bip-0322.mediawiki) defines a generic message-signing scheme by constructing two virtual transactions: `to_spend` commits the message to the address, and `to_sign` spends `to_spend`. BIP-322 Complete simple signatures are `smp` plus the base64 witness stack of `to_sign`'s input (no colon). Unprefixed simple signatures still verify for backward compatibility.\n\nThis package builds `to_sign` as a regular PSBT with all the BIP32 derivation paths, witness UTXO, witness script, sighash type, and global `PSBT_GLOBAL_GENERIC_SIGNED_MESSAGE` (`0x09`, UTF-8 message bytes) that hardware wallets need to sign and display “signing message …”. Sparrow (or any other coordinator) handles the multisig orchestration via its standard PSBT-signing flow; this package extracts the resulting witness as a BIP-322 Complete simple signature.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}