@openzeppelin/miden-multisig-client 0.13.3 → 0.14.3
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/README.md +10 -13
- package/dist/account/builder.d.ts +3 -3
- package/dist/account/builder.d.ts.map +1 -1
- package/dist/account/builder.js +10 -10
- package/dist/account/builder.js.map +1 -1
- package/dist/account/builder.test.js +16 -14
- package/dist/account/builder.test.js.map +1 -1
- package/dist/account/masm/account-components/auth.d.ts +4 -4
- package/dist/account/masm/account-components/auth.d.ts.map +1 -1
- package/dist/account/masm/account-components/auth.js +8 -12
- package/dist/account/masm/account-components/auth.js.map +1 -1
- package/dist/account/masm/auth.d.ts +4 -4
- package/dist/account/masm/auth.d.ts.map +1 -1
- package/dist/account/masm/auth.js +226 -124
- package/dist/account/masm/auth.js.map +1 -1
- package/dist/account/storage.d.ts.map +1 -1
- package/dist/account/storage.js +24 -6
- package/dist/account/storage.js.map +1 -1
- package/dist/account/storage.test.d.ts +2 -0
- package/dist/account/storage.test.d.ts.map +1 -0
- package/dist/account/storage.test.js +73 -0
- package/dist/account/storage.test.js.map +1 -0
- package/dist/client.d.ts +9 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +24 -14
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +45 -8
- package/dist/client.test.js.map +1 -1
- package/dist/index.d.ts +6 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -12
- package/dist/index.js.map +1 -1
- package/dist/multisig/proposal/execution.d.ts +3 -2
- package/dist/multisig/proposal/execution.d.ts.map +1 -1
- package/dist/multisig/proposal/execution.js +8 -12
- package/dist/multisig/proposal/execution.js.map +1 -1
- package/dist/multisig.d.ts +10 -4
- package/dist/multisig.d.ts.map +1 -1
- package/dist/multisig.js +97 -71
- package/dist/multisig.js.map +1 -1
- package/dist/multisig.test.js +481 -29
- package/dist/multisig.test.js.map +1 -1
- package/dist/procedures.d.ts +8 -8
- package/dist/procedures.js +8 -8
- package/dist/raw-client.d.ts +13 -0
- package/dist/raw-client.d.ts.map +1 -0
- package/dist/raw-client.js +42 -0
- package/dist/raw-client.js.map +1 -0
- package/dist/raw-client.test.d.ts +2 -0
- package/dist/raw-client.test.d.ts.map +1 -0
- package/dist/raw-client.test.js +89 -0
- package/dist/raw-client.test.js.map +1 -0
- package/dist/signers/ecdsa.d.ts +3 -1
- package/dist/signers/ecdsa.d.ts.map +1 -1
- package/dist/signers/ecdsa.js +15 -1
- package/dist/signers/ecdsa.js.map +1 -1
- package/dist/signers/ecdsa.test.js +27 -4
- package/dist/signers/ecdsa.test.js.map +1 -1
- package/dist/signers/falcon.d.ts +3 -1
- package/dist/signers/falcon.d.ts.map +1 -1
- package/dist/signers/falcon.js +15 -1
- package/dist/signers/falcon.js.map +1 -1
- package/dist/signers/falcon.test.js +39 -3
- package/dist/signers/falcon.test.js.map +1 -1
- package/dist/transaction/consumeNotes.d.ts +2 -2
- package/dist/transaction/consumeNotes.d.ts.map +1 -1
- package/dist/transaction/consumeNotes.js +5 -4
- package/dist/transaction/consumeNotes.js.map +1 -1
- package/dist/transaction/options.d.ts +1 -0
- package/dist/transaction/options.d.ts.map +1 -1
- package/dist/transaction/p2id.d.ts.map +1 -1
- package/dist/transaction/p2id.js +7 -10
- package/dist/transaction/p2id.js.map +1 -1
- package/dist/transaction/p2id.test.js +19 -9
- package/dist/transaction/p2id.test.js.map +1 -1
- package/dist/transaction/summary.d.ts +2 -2
- package/dist/transaction/summary.d.ts.map +1 -1
- package/dist/transaction/summary.js +4 -2
- package/dist/transaction/summary.js.map +1 -1
- package/dist/transaction/updateGuardian.d.ts +2 -2
- package/dist/transaction/updateGuardian.d.ts.map +1 -1
- package/dist/transaction/updateGuardian.js +8 -11
- package/dist/transaction/updateGuardian.js.map +1 -1
- package/dist/transaction/updateProcedureThreshold.d.ts +2 -2
- package/dist/transaction/updateProcedureThreshold.d.ts.map +1 -1
- package/dist/transaction/updateProcedureThreshold.js +8 -10
- package/dist/transaction/updateProcedureThreshold.js.map +1 -1
- package/dist/transaction/updateSigners.d.ts +2 -2
- package/dist/transaction/updateSigners.d.ts.map +1 -1
- package/dist/transaction/updateSigners.js +8 -10
- package/dist/transaction/updateSigners.js.map +1 -1
- package/dist/transaction.test.js +6 -6
- package/dist/transaction.test.js.map +1 -1
- package/dist/utils/key.d.ts.map +1 -1
- package/dist/utils/key.js +3 -3
- package/dist/utils/key.js.map +1 -1
- package/dist/utils/key.test.js +4 -2
- package/dist/utils/key.test.js.map +1 -1
- package/dist/utils/signature.d.ts +2 -0
- package/dist/utils/signature.d.ts.map +1 -1
- package/dist/utils/signature.js +10 -5
- package/dist/utils/signature.js.map +1 -1
- package/dist/utils/signature.test.js +9 -9
- package/dist/utils/signature.test.js.map +1 -1
- package/masm/account_components/auth/multisig.masm +2 -3
- package/masm/account_components/auth/multisig_ecdsa.masm +2 -3
- package/masm/account_components/auth/multisig_guardian.masm +2 -3
- package/masm/account_components/auth/multisig_guardian_ecdsa.masm +2 -3
- package/masm/auth/guardian.masm +30 -8
- package/masm/auth/guardian_ecdsa.masm +24 -7
- package/masm/auth/multisig.masm +86 -55
- package/masm/auth/multisig_ecdsa.masm +86 -54
- package/package.json +3 -3
- package/src/account/builder.test.ts +16 -14
- package/src/account/builder.ts +13 -12
- package/src/account/masm/account-components/auth.ts +8 -12
- package/src/account/masm/auth.ts +226 -124
- package/src/account/storage.test.ts +90 -0
- package/src/account/storage.ts +27 -6
- package/src/client.test.ts +52 -8
- package/src/client.ts +39 -16
- package/src/index.ts +6 -12
- package/src/multisig/proposal/execution.ts +18 -14
- package/src/multisig.test.ts +572 -29
- package/src/multisig.ts +121 -83
- package/src/procedures.ts +8 -8
- package/src/raw-client.test.ts +133 -0
- package/src/raw-client.ts +75 -0
- package/src/signers/ecdsa.test.ts +35 -4
- package/src/signers/ecdsa.ts +18 -2
- package/src/signers/falcon.test.ts +50 -3
- package/src/signers/falcon.ts +18 -2
- package/src/transaction/consumeNotes.ts +16 -5
- package/src/transaction/options.ts +1 -0
- package/src/transaction/p2id.test.ts +19 -9
- package/src/transaction/p2id.ts +8 -13
- package/src/transaction/summary.ts +11 -4
- package/src/transaction/updateGuardian.ts +22 -14
- package/src/transaction/updateProcedureThreshold.ts +20 -15
- package/src/transaction/updateSigners.ts +22 -14
- package/src/transaction.test.ts +6 -6
- package/src/utils/key.test.ts +4 -2
- package/src/utils/key.ts +7 -3
- package/src/utils/signature.test.ts +10 -10
- package/src/utils/signature.ts +12 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-client.js","sourceRoot":"","sources":["../src/raw-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,MAAM,CAAC,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AASnE,MAAM,cAAc,GAAG,IAAI,OAAO,EAAuC,CAAC;AAE1E,MAAM,UAAU,uBAAuB,CAAC,QAAiB;IACvD,OAAO,QAAQ,IAAI,qBAAqB,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAuB;IAClD,OAAO,UAAU,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAuB,EACvB,MAAe;IAEf,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAC1C,uBAAuB,CAAC,MAAM,CAAC,EAC/B,SAAS,EACT,SAAS,EACT,MAAM,CAAC,eAAe,EAAE,CACzB,CAAC;IACF,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,IAAY,EACZ,YAAmC,EAAE,EACrC,MAAe;IAEf,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAC9C,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-client.test.d.ts","sourceRoot":"","sources":["../src/raw-client.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
const { mockCreateClient } = vi.hoisted(() => ({
|
|
3
|
+
mockCreateClient: vi.fn(),
|
|
4
|
+
}));
|
|
5
|
+
vi.mock('@miden-sdk/miden-sdk', () => ({
|
|
6
|
+
WasmWebClient: {
|
|
7
|
+
createClient: mockCreateClient,
|
|
8
|
+
},
|
|
9
|
+
}));
|
|
10
|
+
import { compileTxScript, getRawMidenClient, getTransactionProver, resolveMidenRpcEndpoint, } from './raw-client.js';
|
|
11
|
+
describe('raw-client', () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
mockCreateClient.mockReset();
|
|
14
|
+
});
|
|
15
|
+
it('defaults RPC endpoint resolution to devnet', () => {
|
|
16
|
+
expect(resolveMidenRpcEndpoint()).toBe('https://rpc.devnet.miden.io');
|
|
17
|
+
});
|
|
18
|
+
it('returns the default prover from a public MidenClient', () => {
|
|
19
|
+
const prover = { kind: 'devnet-prover' };
|
|
20
|
+
const client = {
|
|
21
|
+
accounts: {},
|
|
22
|
+
sync: vi.fn(),
|
|
23
|
+
defaultProver: prover,
|
|
24
|
+
storeIdentifier: vi.fn(() => 'browser-db'),
|
|
25
|
+
};
|
|
26
|
+
expect(getTransactionProver(client)).toBe(prover);
|
|
27
|
+
});
|
|
28
|
+
it('returns null for raw web clients', () => {
|
|
29
|
+
const rawClient = {
|
|
30
|
+
executeTransaction: vi.fn(),
|
|
31
|
+
proveTransaction: vi.fn(),
|
|
32
|
+
};
|
|
33
|
+
expect(getTransactionProver(rawClient)).toBeNull();
|
|
34
|
+
});
|
|
35
|
+
it('creates and caches a raw client for a public MidenClient', async () => {
|
|
36
|
+
const rawClient = { kind: 'raw-client' };
|
|
37
|
+
const client = {
|
|
38
|
+
accounts: {},
|
|
39
|
+
sync: vi.fn(),
|
|
40
|
+
defaultProver: null,
|
|
41
|
+
storeIdentifier: vi.fn(() => 'browser-db'),
|
|
42
|
+
};
|
|
43
|
+
mockCreateClient.mockResolvedValue(rawClient);
|
|
44
|
+
await expect(getRawMidenClient(client, 'https://rpc.devnet.miden.io')).resolves.toBe(rawClient);
|
|
45
|
+
await expect(getRawMidenClient(client, 'https://rpc.devnet.miden.io')).resolves.toBe(rawClient);
|
|
46
|
+
expect(mockCreateClient).toHaveBeenCalledTimes(1);
|
|
47
|
+
expect(mockCreateClient).toHaveBeenCalledWith('https://rpc.devnet.miden.io', undefined, undefined, 'browser-db');
|
|
48
|
+
});
|
|
49
|
+
it('uses the public compile resource when available', async () => {
|
|
50
|
+
const script = { kind: 'compiled-script' };
|
|
51
|
+
const client = {
|
|
52
|
+
accounts: {},
|
|
53
|
+
sync: vi.fn(),
|
|
54
|
+
compile: {
|
|
55
|
+
txScript: vi.fn().mockResolvedValue(script),
|
|
56
|
+
},
|
|
57
|
+
storeIdentifier: vi.fn(() => 'browser-db'),
|
|
58
|
+
};
|
|
59
|
+
await expect(compileTxScript(client, 'begin end', [{ namespace: 'auth::multisig', code: 'export.foo' }])).resolves.toBe(script);
|
|
60
|
+
expect(client.compile.txScript).toHaveBeenCalledWith({
|
|
61
|
+
code: 'begin end',
|
|
62
|
+
libraries: [{ namespace: 'auth::multisig', code: 'export.foo' }],
|
|
63
|
+
});
|
|
64
|
+
expect(mockCreateClient).not.toHaveBeenCalled();
|
|
65
|
+
});
|
|
66
|
+
it('falls back to raw client compilation for low-level callers', async () => {
|
|
67
|
+
const compiledScript = { kind: 'compiled-script' };
|
|
68
|
+
const builtLibrary = { kind: 'built-library' };
|
|
69
|
+
const builder = {
|
|
70
|
+
buildLibrary: vi.fn().mockReturnValue(builtLibrary),
|
|
71
|
+
linkDynamicLibrary: vi.fn(),
|
|
72
|
+
linkStaticLibrary: vi.fn(),
|
|
73
|
+
compileTxScript: vi.fn().mockReturnValue(compiledScript),
|
|
74
|
+
};
|
|
75
|
+
const rawClient = {
|
|
76
|
+
createCodeBuilder: vi.fn().mockReturnValue(builder),
|
|
77
|
+
};
|
|
78
|
+
await expect(compileTxScript(rawClient, 'begin end', [
|
|
79
|
+
{ namespace: 'auth::multisig', code: 'export.foo' },
|
|
80
|
+
{ namespace: 'auth::guardian', code: 'export.bar', linking: 'static' },
|
|
81
|
+
])).resolves.toBe(compiledScript);
|
|
82
|
+
expect(builder.buildLibrary).toHaveBeenNthCalledWith(1, 'auth::multisig', 'export.foo');
|
|
83
|
+
expect(builder.buildLibrary).toHaveBeenNthCalledWith(2, 'auth::guardian', 'export.bar');
|
|
84
|
+
expect(builder.linkDynamicLibrary).toHaveBeenCalledWith(builtLibrary);
|
|
85
|
+
expect(builder.linkStaticLibrary).toHaveBeenCalledWith(builtLibrary);
|
|
86
|
+
expect(builder.compileTxScript).toHaveBeenCalledWith('begin end');
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=raw-client.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw-client.test.js","sourceRoot":"","sources":["../src/raw-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;CAC1B,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,aAAa,EAAE;QACb,YAAY,EAAE,gBAAgB;KAC/B;CACF,CAAC,CAAC,CAAC;AAEJ,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,aAAa,EAAE,MAAM;YACrB,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;SAC3C,CAAC;QAEF,MAAM,CAAC,oBAAoB,CAAC,MAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,SAAS,GAAG;YAChB,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;SAC1B,CAAC;QAEF,MAAM,CAAC,oBAAoB,CAAC,SAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,SAAS,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,aAAa,EAAE,IAAI;YACnB,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;SAC3C,CAAC;QAEF,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE9C,MAAM,MAAM,CACV,iBAAiB,CAAC,MAAa,EAAE,6BAA6B,CAAC,CAChE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,MAAM,CACV,iBAAiB,CAAC,MAAa,EAAE,6BAA6B,CAAC,CAChE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3B,MAAM,CAAC,gBAAgB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAC3C,6BAA6B,EAC7B,SAAS,EACT,SAAS,EACT,YAAY,CACb,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;YACb,OAAO,EAAE;gBACP,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;aAC5C;YACD,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC;SAC3C,CAAC;QAEF,MAAM,MAAM,CACV,eAAe,CACb,MAAa,EACb,WAAW,EACX,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CACtD,CACF,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAExB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC;YACnD,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;SACjE,CAAC,CAAC;QACH,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,cAAc,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG;YACd,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC;YACnD,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;YAC1B,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC;SACzD,CAAC;QACF,MAAM,SAAS,GAAG;YAChB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;SACpD,CAAC;QAEF,MAAM,MAAM,CACV,eAAe,CACb,SAAgB,EAChB,WAAW,EACX;YACE,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE;YACnD,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE;SACvE,CACF,CACF,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEhC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;QACxF,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC;QACxF,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACtE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACrE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/signers/ecdsa.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type { RequestAuthPayload } from '@openzeppelin/guardian-client';
|
|
2
|
-
import { AuthSecretKey } from '@miden-sdk/miden-sdk';
|
|
2
|
+
import { AuthSecretKey, type MidenClient } from '@miden-sdk/miden-sdk';
|
|
3
3
|
import type { Signer, SignatureScheme } from '../types.js';
|
|
4
4
|
export declare class EcdsaSigner implements Signer {
|
|
5
5
|
readonly commitment: string;
|
|
6
6
|
readonly publicKey: string;
|
|
7
7
|
readonly scheme: SignatureScheme;
|
|
8
8
|
private readonly secretKey;
|
|
9
|
+
private readonly publicKeyCommitment;
|
|
9
10
|
constructor(secretKey: AuthSecretKey);
|
|
10
11
|
signAccountIdWithTimestamp(accountId: string, timestamp: number): Promise<string>;
|
|
11
12
|
signRequest(accountId: string, timestamp: number, requestPayload: RequestAuthPayload): Promise<string>;
|
|
12
13
|
signCommitment(commitmentHex: string): Promise<string>;
|
|
14
|
+
bindAccountKey(midenClient: MidenClient, accountId: string): Promise<void>;
|
|
13
15
|
private signWord;
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=ecdsa.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../src/signers/ecdsa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"ecdsa.d.ts","sourceRoot":"","sources":["../../src/signers/ecdsa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAa,aAAa,EAAE,KAAK,WAAW,EAAa,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI3D,qBAAa,WAAY,YAAW,MAAM;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAO;gBAE/B,SAAS,EAAE,aAAa;IAS9B,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjF,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,kBAAkB,GACjC,OAAO,CAAC,MAAM,CAAC;IAKZ,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtD,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAchF,OAAO,CAAC,QAAQ;CAMjB"}
|
package/dist/signers/ecdsa.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AccountId } from '@miden-sdk/miden-sdk';
|
|
1
2
|
import { bytesToHex, normalizeHexWord } from '../utils/encoding.js';
|
|
2
3
|
import { AuthDigest } from '../utils/digest.js';
|
|
3
4
|
export class EcdsaSigner {
|
|
@@ -5,12 +6,14 @@ export class EcdsaSigner {
|
|
|
5
6
|
publicKey;
|
|
6
7
|
scheme = 'ecdsa';
|
|
7
8
|
secretKey;
|
|
9
|
+
publicKeyCommitment;
|
|
8
10
|
constructor(secretKey) {
|
|
9
11
|
this.secretKey = secretKey;
|
|
10
12
|
const pubKey = secretKey.publicKey();
|
|
11
13
|
const serialized = pubKey.serialize();
|
|
12
14
|
this.publicKey = bytesToHex(serialized.slice(1));
|
|
13
|
-
this.
|
|
15
|
+
this.publicKeyCommitment = pubKey.toCommitment();
|
|
16
|
+
this.commitment = normalizeHexWord(this.publicKeyCommitment.toHex());
|
|
14
17
|
}
|
|
15
18
|
async signAccountIdWithTimestamp(accountId, timestamp) {
|
|
16
19
|
const digest = AuthDigest.fromAccountIdWithTimestamp(accountId, timestamp);
|
|
@@ -24,6 +27,17 @@ export class EcdsaSigner {
|
|
|
24
27
|
const word = AuthDigest.fromCommitmentHex(commitmentHex);
|
|
25
28
|
return this.signWord(word);
|
|
26
29
|
}
|
|
30
|
+
async bindAccountKey(midenClient, accountId) {
|
|
31
|
+
const targetAccountId = AccountId.fromHex(accountId);
|
|
32
|
+
const existingAccountId = await midenClient.keystore.getAccountId(this.publicKeyCommitment);
|
|
33
|
+
if (existingAccountId) {
|
|
34
|
+
if (existingAccountId.toString().toLowerCase() === accountId.toLowerCase()) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
throw new Error(`Signer commitment ${this.commitment} is already bound to account ${existingAccountId.toString()}`);
|
|
38
|
+
}
|
|
39
|
+
await midenClient.keystore.insert(targetAccountId, this.secretKey);
|
|
40
|
+
}
|
|
27
41
|
signWord(word) {
|
|
28
42
|
const signature = this.secretKey.sign(word);
|
|
29
43
|
const signatureBytes = signature.serialize();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.js","sourceRoot":"","sources":["../../src/signers/ecdsa.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ecdsa.js","sourceRoot":"","sources":["../../src/signers/ecdsa.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA8C,MAAM,sBAAsB,CAAC;AAE7F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,OAAO,WAAW;IACb,UAAU,CAAS;IACnB,SAAS,CAAS;IAClB,MAAM,GAAoB,OAAO,CAAC;IAC1B,SAAS,CAAgB;IACzB,mBAAmB,CAAO;IAE3C,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,SAAiB,EAAE,SAAiB;QACnE,MAAM,MAAM,GAAG,UAAU,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,SAAiB,EACjB,cAAkC;QAElC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAwB,EAAE,SAAiB;QAC9D,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5F,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC3E,OAAO;YACT,CAAC;YACD,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,UAAU,gCAAgC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CACnG,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IAEO,QAAQ,CAAC,IAAqD;QACpE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QAC7C,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -4,10 +4,11 @@ vi.mock('@miden-sdk/miden-sdk', () => {
|
|
|
4
4
|
const mockSignature = {
|
|
5
5
|
serialize: () => new Uint8Array([0, 1, 2, 3, 4, 5]),
|
|
6
6
|
};
|
|
7
|
+
const mockCommitment = {
|
|
8
|
+
toHex: () => '0x' + 'a'.repeat(64),
|
|
9
|
+
};
|
|
7
10
|
const mockPublicKey = {
|
|
8
|
-
toCommitment: () =>
|
|
9
|
-
toHex: () => '0x' + 'a'.repeat(64),
|
|
10
|
-
}),
|
|
11
|
+
toCommitment: () => mockCommitment,
|
|
11
12
|
serialize: () => new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
|
|
12
13
|
};
|
|
13
14
|
const mockSecretKey = {
|
|
@@ -23,7 +24,8 @@ vi.mock('@miden-sdk/miden-sdk', () => {
|
|
|
23
24
|
})),
|
|
24
25
|
},
|
|
25
26
|
AccountId: {
|
|
26
|
-
fromHex: vi.fn(() => ({
|
|
27
|
+
fromHex: vi.fn((hex) => ({
|
|
28
|
+
toString: () => hex,
|
|
27
29
|
prefix: () => ({ asInt: () => BigInt(1) }),
|
|
28
30
|
suffix: () => ({ asInt: () => BigInt(2) }),
|
|
29
31
|
})),
|
|
@@ -61,5 +63,26 @@ describe('EcdsaSigner', () => {
|
|
|
61
63
|
expect(mockSecretKey.sign).toHaveBeenCalled();
|
|
62
64
|
expect(Rpo256.hashElements).toHaveBeenCalledTimes(2);
|
|
63
65
|
});
|
|
66
|
+
it('skips rebinding when the signer key is already attached to the same account', async () => {
|
|
67
|
+
const accountId = '0x' + 'd'.repeat(30);
|
|
68
|
+
const midenClient = {
|
|
69
|
+
keystore: {
|
|
70
|
+
getAccountId: vi.fn().mockResolvedValue({ toString: () => accountId }),
|
|
71
|
+
insert: vi.fn().mockResolvedValue(undefined),
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
await signer.bindAccountKey(midenClient, accountId);
|
|
75
|
+
expect(midenClient.keystore.insert).not.toHaveBeenCalled();
|
|
76
|
+
});
|
|
77
|
+
it('throws when the signer key is already attached to a different account', async () => {
|
|
78
|
+
const midenClient = {
|
|
79
|
+
keystore: {
|
|
80
|
+
getAccountId: vi.fn().mockResolvedValue({ toString: () => '0x' + 'e'.repeat(30) }),
|
|
81
|
+
insert: vi.fn().mockResolvedValue(undefined),
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
await expect(signer.bindAccountKey(midenClient, '0x' + 'd'.repeat(30))).rejects.toThrow('already bound to account');
|
|
85
|
+
expect(midenClient.keystore.insert).not.toHaveBeenCalled();
|
|
86
|
+
});
|
|
64
87
|
});
|
|
65
88
|
//# sourceMappingURL=ecdsa.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ecdsa.test.js","sourceRoot":"","sources":["../../src/signers/ecdsa.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACnC,MAAM,aAAa,GAAG;QACpB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD,CAAC;IAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"ecdsa.test.js","sourceRoot":"","sources":["../../src/signers/ecdsa.test.ts"],"names":[],"mappings":"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"}
|
package/dist/signers/falcon.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import type { RequestAuthPayload } from '@openzeppelin/guardian-client';
|
|
2
|
-
import { AuthSecretKey } from '@miden-sdk/miden-sdk';
|
|
2
|
+
import { AuthSecretKey, type MidenClient } from '@miden-sdk/miden-sdk';
|
|
3
3
|
import type { Signer, SignatureScheme } from '../types.js';
|
|
4
4
|
export declare class FalconSigner implements Signer {
|
|
5
5
|
readonly commitment: string;
|
|
6
6
|
readonly publicKey: string;
|
|
7
7
|
readonly scheme: SignatureScheme;
|
|
8
8
|
private readonly secretKey;
|
|
9
|
+
private readonly publicKeyCommitment;
|
|
9
10
|
constructor(secretKey: AuthSecretKey);
|
|
10
11
|
signAccountIdWithTimestamp(accountId: string, timestamp: number): Promise<string>;
|
|
11
12
|
signRequest(accountId: string, timestamp: number, requestPayload: RequestAuthPayload): Promise<string>;
|
|
12
13
|
signCommitment(commitmentHex: string): Promise<string>;
|
|
14
|
+
bindAccountKey(midenClient: MidenClient, accountId: string): Promise<void>;
|
|
13
15
|
private signWord;
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=falcon.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"falcon.d.ts","sourceRoot":"","sources":["../../src/signers/falcon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,
|
|
1
|
+
{"version":3,"file":"falcon.d.ts","sourceRoot":"","sources":["../../src/signers/falcon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAa,aAAa,EAAE,KAAK,WAAW,EAAa,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI3D,qBAAa,YAAa,YAAW,MAAM;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAY;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAO;gBAE/B,SAAS,EAAE,aAAa;IAU9B,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjF,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,kBAAkB,GACjC,OAAO,CAAC,MAAM,CAAC;IAKZ,cAAc,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKtD,cAAc,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAchF,OAAO,CAAC,QAAQ;CAMjB"}
|
package/dist/signers/falcon.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AccountId } from '@miden-sdk/miden-sdk';
|
|
1
2
|
import { bytesToHex } from '../utils/encoding.js';
|
|
2
3
|
import { AuthDigest } from '../utils/digest.js';
|
|
3
4
|
export class FalconSigner {
|
|
@@ -5,10 +6,12 @@ export class FalconSigner {
|
|
|
5
6
|
publicKey;
|
|
6
7
|
scheme = 'falcon';
|
|
7
8
|
secretKey;
|
|
9
|
+
publicKeyCommitment;
|
|
8
10
|
constructor(secretKey) {
|
|
9
11
|
this.secretKey = secretKey;
|
|
10
12
|
const pubKey = secretKey.publicKey();
|
|
11
|
-
this.
|
|
13
|
+
this.publicKeyCommitment = pubKey.toCommitment();
|
|
14
|
+
this.commitment = this.publicKeyCommitment.toHex();
|
|
12
15
|
const serialized = pubKey.serialize();
|
|
13
16
|
const falconPubKey = serialized.slice(1);
|
|
14
17
|
this.publicKey = bytesToHex(falconPubKey);
|
|
@@ -25,6 +28,17 @@ export class FalconSigner {
|
|
|
25
28
|
const word = AuthDigest.fromCommitmentHex(commitmentHex);
|
|
26
29
|
return this.signWord(word);
|
|
27
30
|
}
|
|
31
|
+
async bindAccountKey(midenClient, accountId) {
|
|
32
|
+
const targetAccountId = AccountId.fromHex(accountId);
|
|
33
|
+
const existingAccountId = await midenClient.keystore.getAccountId(this.publicKeyCommitment);
|
|
34
|
+
if (existingAccountId) {
|
|
35
|
+
if (existingAccountId.toString().toLowerCase() === accountId.toLowerCase()) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`Signer commitment ${this.commitment} is already bound to account ${existingAccountId.toString()}`);
|
|
39
|
+
}
|
|
40
|
+
await midenClient.keystore.insert(targetAccountId, this.secretKey);
|
|
41
|
+
}
|
|
28
42
|
signWord(word) {
|
|
29
43
|
const signature = this.secretKey.sign(word);
|
|
30
44
|
const signatureBytes = signature.serialize();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"falcon.js","sourceRoot":"","sources":["../../src/signers/falcon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"falcon.js","sourceRoot":"","sources":["../../src/signers/falcon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA8C,MAAM,sBAAsB,CAAC;AAE7F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,MAAM,OAAO,YAAY;IACd,UAAU,CAAS;IACnB,SAAS,CAAS;IAClB,MAAM,GAAoB,QAAQ,CAAC;IAC3B,SAAS,CAAgB;IACzB,mBAAmB,CAAO;IAE3C,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,SAAiB,EAAE,SAAiB;QACnE,MAAM,MAAM,GAAG,UAAU,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,WAAW,CACf,SAAiB,EACjB,SAAiB,EACjB,cAAkC;QAElC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAwB,EAAE,SAAiB;QAC9D,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5F,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC3E,OAAO;YACT,CAAC;YACD,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,CAAC,UAAU,gCAAgC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CACnG,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;IAEO,QAAQ,CAAC,IAAU;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QAC7C,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,UAAU,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -4,10 +4,11 @@ vi.mock('@miden-sdk/miden-sdk', () => {
|
|
|
4
4
|
const mockSignature = {
|
|
5
5
|
serialize: () => new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
|
|
6
6
|
};
|
|
7
|
+
const mockCommitment = {
|
|
8
|
+
toHex: () => '0x' + 'a'.repeat(64),
|
|
9
|
+
};
|
|
7
10
|
const mockPublicKey = {
|
|
8
|
-
toCommitment: () =>
|
|
9
|
-
toHex: () => '0x' + 'a'.repeat(64),
|
|
10
|
-
}),
|
|
11
|
+
toCommitment: () => mockCommitment,
|
|
11
12
|
serialize: () => new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]),
|
|
12
13
|
};
|
|
13
14
|
const mockSecretKey = {
|
|
@@ -26,6 +27,7 @@ vi.mock('@miden-sdk/miden-sdk', () => {
|
|
|
26
27
|
},
|
|
27
28
|
AccountId: {
|
|
28
29
|
fromHex: vi.fn((hex) => ({
|
|
30
|
+
toString: () => hex,
|
|
29
31
|
prefix: () => ({ asInt: () => BigInt(1) }),
|
|
30
32
|
suffix: () => ({ asInt: () => BigInt(2) }),
|
|
31
33
|
})),
|
|
@@ -121,5 +123,39 @@ describe('FalconSigner', () => {
|
|
|
121
123
|
expect(signature).toBe('0x010203040506070809');
|
|
122
124
|
});
|
|
123
125
|
});
|
|
126
|
+
describe('bindAccountKey', () => {
|
|
127
|
+
it('inserts the signer key when the commitment is not bound yet', async () => {
|
|
128
|
+
const midenClient = {
|
|
129
|
+
keystore: {
|
|
130
|
+
getAccountId: vi.fn().mockResolvedValue(null),
|
|
131
|
+
insert: vi.fn().mockResolvedValue(undefined),
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
await signer.bindAccountKey(midenClient, '0x' + 'd'.repeat(30));
|
|
135
|
+
expect(midenClient.keystore.getAccountId).toHaveBeenCalledTimes(1);
|
|
136
|
+
expect(midenClient.keystore.insert).toHaveBeenCalledTimes(1);
|
|
137
|
+
});
|
|
138
|
+
it('skips insert when the signer key is already bound to the same account', async () => {
|
|
139
|
+
const accountId = '0x' + 'd'.repeat(30);
|
|
140
|
+
const midenClient = {
|
|
141
|
+
keystore: {
|
|
142
|
+
getAccountId: vi.fn().mockResolvedValue({ toString: () => accountId }),
|
|
143
|
+
insert: vi.fn().mockResolvedValue(undefined),
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
await signer.bindAccountKey(midenClient, accountId);
|
|
147
|
+
expect(midenClient.keystore.insert).not.toHaveBeenCalled();
|
|
148
|
+
});
|
|
149
|
+
it('throws when the signer key is already bound to a different account', async () => {
|
|
150
|
+
const midenClient = {
|
|
151
|
+
keystore: {
|
|
152
|
+
getAccountId: vi.fn().mockResolvedValue({ toString: () => '0x' + 'e'.repeat(30) }),
|
|
153
|
+
insert: vi.fn().mockResolvedValue(undefined),
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
await expect(signer.bindAccountKey(midenClient, '0x' + 'd'.repeat(30))).rejects.toThrow('already bound to account');
|
|
157
|
+
expect(midenClient.keystore.insert).not.toHaveBeenCalled();
|
|
158
|
+
});
|
|
159
|
+
});
|
|
124
160
|
});
|
|
125
161
|
//# sourceMappingURL=falcon.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"falcon.test.js","sourceRoot":"","sources":["../../src/signers/falcon.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACnC,MAAM,aAAa,GAAG;QACpB,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAChE,CAAC;IAEF,MAAM,
|
|
1
|
+
{"version":3,"file":"falcon.test.js","sourceRoot":"","sources":["../../src/signers/falcon.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { TransactionRequest,
|
|
1
|
+
import type { MidenClient, TransactionRequest, WasmWebClient, Word } from '@miden-sdk/miden-sdk';
|
|
2
2
|
import type { SignatureOptions } from './options.js';
|
|
3
|
-
export declare function buildConsumeNotesTransactionRequest(
|
|
3
|
+
export declare function buildConsumeNotesTransactionRequest(client: MidenClient | WasmWebClient, noteIds: string[], options?: SignatureOptions): Promise<{
|
|
4
4
|
request: TransactionRequest;
|
|
5
5
|
salt: Word;
|
|
6
6
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumeNotes.d.ts","sourceRoot":"","sources":["../../src/transaction/consumeNotes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"consumeNotes.d.ts","sourceRoot":"","sources":["../../src/transaction/consumeNotes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,IAAI,EACL,MAAM,sBAAsB,CAAC;AAU9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAsB,mCAAmC,CACvD,MAAM,EAAE,WAAW,GAAG,aAAa,EACnC,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAmCtD"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { NoteAndArgs, NoteAndArgsArray, TransactionRequestBuilder, Word as WordType } from '@miden-sdk/miden-sdk';
|
|
1
|
+
import { NoteAndArgs, NoteAndArgsArray, TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
|
|
2
|
+
import { getRawMidenClient } from '../raw-client.js';
|
|
2
3
|
import { randomWord } from '../utils/random.js';
|
|
3
4
|
import { normalizeHexWord } from '../utils/encoding.js';
|
|
4
|
-
export async function buildConsumeNotesTransactionRequest(
|
|
5
|
+
export async function buildConsumeNotesTransactionRequest(client, noteIds, options = {}) {
|
|
5
6
|
if (noteIds.length === 0) {
|
|
6
7
|
throw new Error('At least one note ID is required');
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
+
const rawClient = await getRawMidenClient(client, options.midenRpcEndpoint);
|
|
9
10
|
const noteAndArgsArray = new NoteAndArgsArray();
|
|
10
11
|
for (const noteIdHex of noteIds) {
|
|
11
|
-
const inputNoteRecord = await
|
|
12
|
+
const inputNoteRecord = await rawClient.getInputNote(noteIdHex);
|
|
12
13
|
if (!inputNoteRecord) {
|
|
13
14
|
throw new Error(`Note not found in local store: ${noteIdHex}`);
|
|
14
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consumeNotes.js","sourceRoot":"","sources":["../../src/transaction/consumeNotes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"consumeNotes.js","sourceRoot":"","sources":["../../src/transaction/consumeNotes.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,yBAAyB,EACzB,IAAI,IAAI,QAAQ,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,MAAmC,EACnC,OAAiB,EACjB,UAA4B,EAAE;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5E,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAChD,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChD,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAE/E,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3E,IAAI,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAChD,SAAS,GAAG,SAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACvD,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1E,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,iBAAiB;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/transaction/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/transaction/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2id.d.ts","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"p2id.d.ts","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAoBrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAMvD;AA8BD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC7B;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAoC7C"}
|
package/dist/transaction/p2id.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
import { AccountId,
|
|
1
|
+
import { AccountId, FeltArray, FungibleAsset, MidenArrays, Note, NoteAssets, NoteMetadata, NoteRecipient, NoteScript, NoteStorage, NoteTag, NoteType, Poseidon2, TransactionRequestBuilder, Word as WordType, } from '@miden-sdk/miden-sdk';
|
|
2
2
|
import { randomWord } from '../utils/random.js';
|
|
3
3
|
import { normalizeHexWord } from '../utils/encoding.js';
|
|
4
4
|
export function deriveP2idSerialNumber(salt) {
|
|
5
|
-
|
|
5
|
+
const zeroWord = WordType.fromHex(`0x${'00'.repeat(32)}`);
|
|
6
|
+
return Poseidon2.hashElements(new FeltArray([
|
|
6
7
|
...salt.toFelts(),
|
|
7
|
-
|
|
8
|
-
new Felt(0n),
|
|
9
|
-
new Felt(0n),
|
|
10
|
-
new Felt(0n),
|
|
8
|
+
...zeroWord.toFelts(),
|
|
11
9
|
]));
|
|
12
10
|
}
|
|
13
11
|
function buildP2idNote(sender, recipient, noteAssets, noteType, saltHex) {
|
|
14
12
|
const salt = WordType.fromHex(normalizeHexWord(saltHex));
|
|
15
13
|
const serialNum = deriveP2idSerialNumber(salt);
|
|
16
14
|
const noteScript = NoteScript.p2id();
|
|
17
|
-
const
|
|
15
|
+
const noteStorage = new NoteStorage(new FeltArray([
|
|
18
16
|
recipient.suffix(),
|
|
19
17
|
recipient.prefix(),
|
|
20
18
|
]));
|
|
21
|
-
const noteRecipient = new NoteRecipient(serialNum, noteScript,
|
|
19
|
+
const noteRecipient = new NoteRecipient(serialNum, noteScript, noteStorage);
|
|
22
20
|
const noteTag = NoteTag.withAccountTarget(recipient);
|
|
23
21
|
const noteMetadata = new NoteMetadata(sender, noteType, noteTag);
|
|
24
22
|
return new Note(noteAssets, noteMetadata, noteRecipient);
|
|
@@ -31,8 +29,7 @@ export function buildP2idTransactionRequest(senderId, recipientId, faucetId, amo
|
|
|
31
29
|
const asset = new FungibleAsset(faucet, amount);
|
|
32
30
|
const noteAssets = new NoteAssets([asset]);
|
|
33
31
|
const note = buildP2idNote(sender, recipient, noteAssets, NoteType.Public, authSaltHex);
|
|
34
|
-
const
|
|
35
|
-
const outputNotes = new MidenArrays.OutputNoteArray([outputNote]);
|
|
32
|
+
const outputNotes = new MidenArrays.NoteArray([note]);
|
|
36
33
|
const authSaltForBuilder = WordType.fromHex(normalizeHexWord(authSaltHex));
|
|
37
34
|
let txBuilder = new TransactionRequestBuilder();
|
|
38
35
|
txBuilder = txBuilder.withOwnOutputNotes(outputNotes);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p2id.js","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"p2id.js","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"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"}
|