@bitgo/abstract-utxo 13.0.0 → 13.1.0

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.
Files changed (48) hide show
  1. package/dist/cjs/src/impl/zec/index.d.ts +1 -0
  2. package/dist/cjs/src/impl/zec/index.d.ts.map +1 -1
  3. package/dist/cjs/src/impl/zec/index.js +2 -1
  4. package/dist/cjs/src/impl/zec/shieldedAddress.d.ts +36 -0
  5. package/dist/cjs/src/impl/zec/shieldedAddress.d.ts.map +1 -0
  6. package/dist/cjs/src/impl/zec/shieldedAddress.js +51 -0
  7. package/dist/cjs/src/impl/zec/signIronwoodTransaction.d.ts +29 -0
  8. package/dist/cjs/src/impl/zec/signIronwoodTransaction.d.ts.map +1 -0
  9. package/dist/cjs/src/impl/zec/signIronwoodTransaction.js +57 -0
  10. package/dist/cjs/src/impl/zec/zec.d.ts +16 -2
  11. package/dist/cjs/src/impl/zec/zec.d.ts.map +1 -1
  12. package/dist/cjs/src/impl/zec/zec.js +38 -1
  13. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts +7 -0
  14. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
  15. package/dist/cjs/src/transaction/fixedScript/signPsbtWasm.js +32 -20
  16. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts +9 -0
  17. package/dist/cjs/src/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  18. package/dist/cjs/src/transaction/fixedScript/signTransaction.js +18 -9
  19. package/dist/cjs/src/transaction/signTransaction.d.ts +12 -0
  20. package/dist/cjs/src/transaction/signTransaction.d.ts.map +1 -1
  21. package/dist/cjs/src/transaction/signTransaction.js +16 -7
  22. package/dist/cjs/test/unit/impl/zec/shieldedPrebuildAndSign.js +142 -1
  23. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.d.ts +2 -0
  24. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.d.ts.map +1 -0
  25. package/dist/cjs/test/unit/impl/zec/unit/shieldedAddress.js +57 -0
  26. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  27. package/dist/esm/impl/zec/index.d.ts +1 -0
  28. package/dist/esm/impl/zec/index.d.ts.map +1 -1
  29. package/dist/esm/impl/zec/index.js +2 -1
  30. package/dist/esm/impl/zec/shieldedAddress.d.ts +36 -0
  31. package/dist/esm/impl/zec/shieldedAddress.d.ts.map +1 -0
  32. package/dist/esm/impl/zec/shieldedAddress.js +48 -0
  33. package/dist/esm/impl/zec/signIronwoodTransaction.d.ts +29 -0
  34. package/dist/esm/impl/zec/signIronwoodTransaction.d.ts.map +1 -0
  35. package/dist/esm/impl/zec/signIronwoodTransaction.js +50 -0
  36. package/dist/esm/impl/zec/zec.d.ts +16 -2
  37. package/dist/esm/impl/zec/zec.d.ts.map +1 -1
  38. package/dist/esm/impl/zec/zec.js +36 -2
  39. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts +7 -0
  40. package/dist/esm/transaction/fixedScript/signPsbtWasm.d.ts.map +1 -1
  41. package/dist/esm/transaction/fixedScript/signPsbtWasm.js +30 -20
  42. package/dist/esm/transaction/fixedScript/signTransaction.d.ts +9 -0
  43. package/dist/esm/transaction/fixedScript/signTransaction.d.ts.map +1 -1
  44. package/dist/esm/transaction/fixedScript/signTransaction.js +17 -9
  45. package/dist/esm/transaction/signTransaction.d.ts +12 -0
  46. package/dist/esm/transaction/signTransaction.d.ts.map +1 -1
  47. package/dist/esm/transaction/signTransaction.js +15 -8
  48. package/package.json +6 -6
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const strict_1 = __importDefault(require("node:assert/strict"));
7
+ const wasm_utxo_1 = require("@bitgo/wasm-utxo");
8
+ const zec_1 = require("../../../../../src/impl/zec");
9
+ // ZIP-316 unified-address test vector, copied from
10
+ // BitGoWASM/packages/wasm-utxo/test/fixtures/zcash/unified_address.json so
11
+ // both repos test against the same known-good data.
12
+ const testnetWallet = {
13
+ unified: 'utest1w5m0qcnp8egl8qa296n70n8nvj0tqnzk90p7f48v7mjhhdrdqs8vgqydslg5plmzefawefnpmgmlm6hcy38m972erwxs04s02cq2prhguz8kqly75m6zjy56m08d5jnycgtpqtjeprte576gkmrxyszepgx76yzuwhh7m4lfz9jaq7unjk0x5ant46juxz73hsc6q4v3dqtzww00vps',
14
+ transparentAddress: 'tmM4DvLVJKXZt5ydn1tqYTHvahpKSwgjuRk',
15
+ };
16
+ const toHex = (bytes) => Buffer.from(bytes).toString('hex');
17
+ /** Wallet-platform style `coinSpecific.shielded` derived from the UA itself. */
18
+ function shieldedCoinSpecificFor(address, network) {
19
+ const orchard = wasm_utxo_1.fixedScriptWallet.ZcashUnifiedAddress.parse(address, network).orchardReceiver;
20
+ return {
21
+ shielded: {
22
+ type: 'ironwood',
23
+ diversifier: toHex(orchard.slice(0, 11)),
24
+ pkD: toHex(orchard.slice(11)),
25
+ diversifierIndex: 0,
26
+ },
27
+ };
28
+ }
29
+ describe('assertShieldedWalletAddress', function () {
30
+ const coinSpecific = shieldedCoinSpecificFor(testnetWallet.unified, 'tzec');
31
+ it('accepts a unified address whose Orchard receiver matches the reported diversifier/pkD', function () {
32
+ (0, zec_1.assertShieldedWalletAddress)('tzec', { address: testnetWallet.unified, coinSpecific });
33
+ });
34
+ it('rejects a unified address whose Orchard receiver does not match the reported pkD', function () {
35
+ strict_1.default.throws(() => (0, zec_1.assertShieldedWalletAddress)('tzec', {
36
+ address: testnetWallet.unified,
37
+ coinSpecific: { shielded: { ...coinSpecific.shielded, pkD: '00'.repeat(32) } },
38
+ }), /Orchard receiver does not match/);
39
+ });
40
+ it('rejects when shielded coinSpecific is missing', function () {
41
+ strict_1.default.throws(() => (0, zec_1.assertShieldedWalletAddress)('tzec', { address: testnetWallet.unified }), /missing diversifier/);
42
+ });
43
+ it('rejects malformed diversifier/pkD lengths', function () {
44
+ strict_1.default.throws(() => (0, zec_1.assertShieldedWalletAddress)('tzec', {
45
+ address: testnetWallet.unified,
46
+ coinSpecific: { shielded: { ...coinSpecific.shielded, diversifier: '00' } },
47
+ }), /invalid diversifier length/);
48
+ strict_1.default.throws(() => (0, zec_1.assertShieldedWalletAddress)('tzec', {
49
+ address: testnetWallet.unified,
50
+ coinSpecific: { shielded: { ...coinSpecific.shielded, pkD: '00' } },
51
+ }), /invalid pkD length/);
52
+ });
53
+ it('rejects an address that is not a unified address', function () {
54
+ strict_1.default.throws(() => (0, zec_1.assertShieldedWalletAddress)('tzec', { address: testnetWallet.transparentAddress, coinSpecific }), /not a valid unified address/);
55
+ });
56
+ });
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpZWxkZWRBZGRyZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2ltcGwvemVjL3VuaXQvc2hpZWxkZWRBZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQXdDO0FBRXhDLGdEQUFxRDtBQUVyRCxxREFBMEU7QUFFMUUsbURBQW1EO0FBQ25ELDJFQUEyRTtBQUMzRSxvREFBb0Q7QUFDcEQsTUFBTSxhQUFhLEdBQUc7SUFDcEIsT0FBTyxFQUNMLDJOQUEyTjtJQUM3TixrQkFBa0IsRUFBRSxxQ0FBcUM7Q0FDMUQsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBaUIsRUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFaEYsZ0ZBQWdGO0FBQ2hGLFNBQVMsdUJBQXVCLENBQUMsT0FBZSxFQUFFLE9BQTJDO0lBQzNGLE1BQU0sT0FBTyxHQUFHLDZCQUFpQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsZUFBZ0IsQ0FBQztJQUMvRixPQUFPO1FBQ0wsUUFBUSxFQUFFO1lBQ1IsSUFBSSxFQUFFLFVBQVU7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4QyxHQUFHLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0IsZ0JBQWdCLEVBQUUsQ0FBQztTQUNwQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsUUFBUSxDQUFDLDZCQUE2QixFQUFFO0lBQ3RDLE1BQU0sWUFBWSxHQUFHLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFNUUsRUFBRSxDQUFDLHVGQUF1RixFQUFFO1FBQzFGLElBQUEsaUNBQTJCLEVBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN4RixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrRkFBa0YsRUFBRTtRQUNyRixnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FDSCxJQUFBLGlDQUEyQixFQUFDLE1BQU0sRUFBRTtZQUNsQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87WUFDOUIsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7U0FDL0UsQ0FBQyxFQUNKLGlDQUFpQyxDQUNsQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0NBQStDLEVBQUU7UUFDbEQsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBQSxpQ0FBMkIsRUFBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUN0SCxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyQ0FBMkMsRUFBRTtRQUM5QyxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FDSCxJQUFBLGlDQUEyQixFQUFDLE1BQU0sRUFBRTtZQUNsQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87WUFDOUIsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRTtTQUM1RSxDQUFDLEVBQ0osNEJBQTRCLENBQzdCLENBQUM7UUFDRixnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FDSCxJQUFBLGlDQUEyQixFQUFDLE1BQU0sRUFBRTtZQUNsQyxPQUFPLEVBQUUsYUFBYSxDQUFDLE9BQU87WUFDOUIsWUFBWSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtTQUNwRSxDQUFDLEVBQ0osb0JBQW9CLENBQ3JCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxrREFBa0QsRUFBRTtRQUNyRCxnQkFBTSxDQUFDLE1BQU0sQ0FDWCxHQUFHLEVBQUUsQ0FBQyxJQUFBLGlDQUEyQixFQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFDdEcsNkJBQTZCLENBQzlCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdub2RlOmFzc2VydC9zdHJpY3QnO1xuXG5pbXBvcnQgeyBmaXhlZFNjcmlwdFdhbGxldCB9IGZyb20gJ0BiaXRnby93YXNtLXV0eG8nO1xuXG5pbXBvcnQgeyBhc3NlcnRTaGllbGRlZFdhbGxldEFkZHJlc3MgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zcmMvaW1wbC96ZWMnO1xuXG4vLyBaSVAtMzE2IHVuaWZpZWQtYWRkcmVzcyB0ZXN0IHZlY3RvciwgY29waWVkIGZyb21cbi8vIEJpdEdvV0FTTS9wYWNrYWdlcy93YXNtLXV0eG8vdGVzdC9maXh0dXJlcy96Y2FzaC91bmlmaWVkX2FkZHJlc3MuanNvbiBzb1xuLy8gYm90aCByZXBvcyB0ZXN0IGFnYWluc3QgdGhlIHNhbWUga25vd24tZ29vZCBkYXRhLlxuY29uc3QgdGVzdG5ldFdhbGxldCA9IHtcbiAgdW5pZmllZDpcbiAgICAndXRlc3QxdzVtMHFjbnA4ZWdsOHFhMjk2bjcwbjhudmowdHFuems5MHA3ZjQ4djdtamhoZHJkcXM4dmdxeWRzbGc1cGxtemVmYXdlZm5wbWdtbG02aGN5MzhtOTcyZXJ3eHMwNHMwMmNxMnByaGd1ejhrcWx5NzVtNnpqeTU2bTA4ZDVqbnljZ3RwcXRqZXBydGU1NzZna21yeHlzemVwZ3g3Nnl6dXdoaDdtNGxmejlqYXE3dW5qazB4NWFudDQ2anV4ejczaHNjNnE0djNkcXR6d3cwMHZwcycsXG4gIHRyYW5zcGFyZW50QWRkcmVzczogJ3RtTTREdkxWSktYWnQ1eWRuMXRxWVRIdmFocEtTd2dqdVJrJyxcbn07XG5cbmNvbnN0IHRvSGV4ID0gKGJ5dGVzOiBVaW50OEFycmF5KTogc3RyaW5nID0+IEJ1ZmZlci5mcm9tKGJ5dGVzKS50b1N0cmluZygnaGV4Jyk7XG5cbi8qKiBXYWxsZXQtcGxhdGZvcm0gc3R5bGUgYGNvaW5TcGVjaWZpYy5zaGllbGRlZGAgZGVyaXZlZCBmcm9tIHRoZSBVQSBpdHNlbGYuICovXG5mdW5jdGlvbiBzaGllbGRlZENvaW5TcGVjaWZpY0ZvcihhZGRyZXNzOiBzdHJpbmcsIG5ldHdvcms6IGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoTmV0d29ya05hbWUpIHtcbiAgY29uc3Qgb3JjaGFyZCA9IGZpeGVkU2NyaXB0V2FsbGV0LlpjYXNoVW5pZmllZEFkZHJlc3MucGFyc2UoYWRkcmVzcywgbmV0d29yaykub3JjaGFyZFJlY2VpdmVyITtcbiAgcmV0dXJuIHtcbiAgICBzaGllbGRlZDoge1xuICAgICAgdHlwZTogJ2lyb253b29kJyxcbiAgICAgIGRpdmVyc2lmaWVyOiB0b0hleChvcmNoYXJkLnNsaWNlKDAsIDExKSksXG4gICAgICBwa0Q6IHRvSGV4KG9yY2hhcmQuc2xpY2UoMTEpKSxcbiAgICAgIGRpdmVyc2lmaWVySW5kZXg6IDAsXG4gICAgfSxcbiAgfTtcbn1cblxuZGVzY3JpYmUoJ2Fzc2VydFNoaWVsZGVkV2FsbGV0QWRkcmVzcycsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pblNwZWNpZmljID0gc2hpZWxkZWRDb2luU3BlY2lmaWNGb3IodGVzdG5ldFdhbGxldC51bmlmaWVkLCAndHplYycpO1xuXG4gIGl0KCdhY2NlcHRzIGEgdW5pZmllZCBhZGRyZXNzIHdob3NlIE9yY2hhcmQgcmVjZWl2ZXIgbWF0Y2hlcyB0aGUgcmVwb3J0ZWQgZGl2ZXJzaWZpZXIvcGtEJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydFNoaWVsZGVkV2FsbGV0QWRkcmVzcygndHplYycsIHsgYWRkcmVzczogdGVzdG5ldFdhbGxldC51bmlmaWVkLCBjb2luU3BlY2lmaWMgfSk7XG4gIH0pO1xuXG4gIGl0KCdyZWplY3RzIGEgdW5pZmllZCBhZGRyZXNzIHdob3NlIE9yY2hhcmQgcmVjZWl2ZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcG9ydGVkIHBrRCcsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgKCkgPT5cbiAgICAgICAgYXNzZXJ0U2hpZWxkZWRXYWxsZXRBZGRyZXNzKCd0emVjJywge1xuICAgICAgICAgIGFkZHJlc3M6IHRlc3RuZXRXYWxsZXQudW5pZmllZCxcbiAgICAgICAgICBjb2luU3BlY2lmaWM6IHsgc2hpZWxkZWQ6IHsgLi4uY29pblNwZWNpZmljLnNoaWVsZGVkLCBwa0Q6ICcwMCcucmVwZWF0KDMyKSB9IH0sXG4gICAgICAgIH0pLFxuICAgICAgL09yY2hhcmQgcmVjZWl2ZXIgZG9lcyBub3QgbWF0Y2gvXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3JlamVjdHMgd2hlbiBzaGllbGRlZCBjb2luU3BlY2lmaWMgaXMgbWlzc2luZycsIGZ1bmN0aW9uICgpIHtcbiAgICBhc3NlcnQudGhyb3dzKCgpID0+IGFzc2VydFNoaWVsZGVkV2FsbGV0QWRkcmVzcygndHplYycsIHsgYWRkcmVzczogdGVzdG5ldFdhbGxldC51bmlmaWVkIH0pLCAvbWlzc2luZyBkaXZlcnNpZmllci8pO1xuICB9KTtcblxuICBpdCgncmVqZWN0cyBtYWxmb3JtZWQgZGl2ZXJzaWZpZXIvcGtEIGxlbmd0aHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICgpID0+XG4gICAgICAgIGFzc2VydFNoaWVsZGVkV2FsbGV0QWRkcmVzcygndHplYycsIHtcbiAgICAgICAgICBhZGRyZXNzOiB0ZXN0bmV0V2FsbGV0LnVuaWZpZWQsXG4gICAgICAgICAgY29pblNwZWNpZmljOiB7IHNoaWVsZGVkOiB7IC4uLmNvaW5TcGVjaWZpYy5zaGllbGRlZCwgZGl2ZXJzaWZpZXI6ICcwMCcgfSB9LFxuICAgICAgICB9KSxcbiAgICAgIC9pbnZhbGlkIGRpdmVyc2lmaWVyIGxlbmd0aC9cbiAgICApO1xuICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAoKSA9PlxuICAgICAgICBhc3NlcnRTaGllbGRlZFdhbGxldEFkZHJlc3MoJ3R6ZWMnLCB7XG4gICAgICAgICAgYWRkcmVzczogdGVzdG5ldFdhbGxldC51bmlmaWVkLFxuICAgICAgICAgIGNvaW5TcGVjaWZpYzogeyBzaGllbGRlZDogeyAuLi5jb2luU3BlY2lmaWMuc2hpZWxkZWQsIHBrRDogJzAwJyB9IH0sXG4gICAgICAgIH0pLFxuICAgICAgL2ludmFsaWQgcGtEIGxlbmd0aC9cbiAgICApO1xuICB9KTtcblxuICBpdCgncmVqZWN0cyBhbiBhZGRyZXNzIHRoYXQgaXMgbm90IGEgdW5pZmllZCBhZGRyZXNzJywgZnVuY3Rpb24gKCkge1xuICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAoKSA9PiBhc3NlcnRTaGllbGRlZFdhbGxldEFkZHJlc3MoJ3R6ZWMnLCB7IGFkZHJlc3M6IHRlc3RuZXRXYWxsZXQudHJhbnNwYXJlbnRBZGRyZXNzLCBjb2luU3BlY2lmaWMgfSksXG4gICAgICAvbm90IGEgdmFsaWQgdW5pZmllZCBhZGRyZXNzL1xuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=