@openzeppelin/miden-multisig-client 0.13.1 → 0.13.2

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 (275) hide show
  1. package/README.md +98 -119
  2. package/dist/account/builder.d.ts +18 -0
  3. package/dist/account/builder.d.ts.map +1 -1
  4. package/dist/account/builder.js +59 -29
  5. package/dist/account/builder.js.map +1 -1
  6. package/dist/account/builder.test.js +108 -32
  7. package/dist/account/builder.test.js.map +1 -1
  8. package/dist/account/index.d.ts +1 -1
  9. package/dist/account/index.d.ts.map +1 -1
  10. package/dist/account/index.js +1 -1
  11. package/dist/account/index.js.map +1 -1
  12. package/dist/account/masm/account-components/auth.d.ts +5 -0
  13. package/dist/account/masm/account-components/auth.d.ts.map +1 -0
  14. package/dist/account/masm/account-components/auth.js +67 -0
  15. package/dist/account/masm/account-components/auth.js.map +1 -0
  16. package/dist/account/masm/auth.d.ts +5 -0
  17. package/dist/account/masm/auth.d.ts.map +1 -0
  18. package/dist/account/masm/auth.js +1395 -0
  19. package/dist/account/masm/auth.js.map +1 -0
  20. package/dist/account/masm/index.d.ts +3 -0
  21. package/dist/account/masm/index.d.ts.map +1 -0
  22. package/dist/account/masm/index.js +5 -0
  23. package/dist/account/masm/index.js.map +1 -0
  24. package/dist/account/masm.d.ts +1 -4
  25. package/dist/account/masm.d.ts.map +1 -1
  26. package/dist/account/masm.js +3 -1034
  27. package/dist/account/masm.js.map +1 -1
  28. package/dist/account/storage.d.ts +2 -2
  29. package/dist/account/storage.d.ts.map +1 -1
  30. package/dist/account/storage.js +18 -16
  31. package/dist/account/storage.js.map +1 -1
  32. package/dist/client.d.ts +67 -9
  33. package/dist/client.d.ts.map +1 -1
  34. package/dist/client.js +73 -22
  35. package/dist/client.js.map +1 -1
  36. package/dist/client.test.js +31 -32
  37. package/dist/client.test.js.map +1 -1
  38. package/dist/index.d.ts +54 -12
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +53 -9
  41. package/dist/index.js.map +1 -1
  42. package/dist/inspector.d.ts +32 -6
  43. package/dist/inspector.d.ts.map +1 -1
  44. package/dist/inspector.js +58 -23
  45. package/dist/inspector.js.map +1 -1
  46. package/dist/inspector.test.js +18 -18
  47. package/dist/inspector.test.js.map +1 -1
  48. package/dist/multisig/proposal/execution.d.ts +4 -4
  49. package/dist/multisig/proposal/execution.d.ts.map +1 -1
  50. package/dist/multisig/proposal/execution.js +42 -31
  51. package/dist/multisig/proposal/execution.js.map +1 -1
  52. package/dist/multisig/proposal/parser.d.ts +3 -3
  53. package/dist/multisig/proposal/parser.d.ts.map +1 -1
  54. package/dist/multisig/proposal/parser.js +23 -23
  55. package/dist/multisig/proposal/parser.js.map +1 -1
  56. package/dist/multisig/signing.d.ts +3 -3
  57. package/dist/multisig/signing.d.ts.map +1 -1
  58. package/dist/multisig/signing.js +3 -3
  59. package/dist/multisig/signing.js.map +1 -1
  60. package/dist/multisig.d.ts +188 -48
  61. package/dist/multisig.d.ts.map +1 -1
  62. package/dist/multisig.js +650 -308
  63. package/dist/multisig.js.map +1 -1
  64. package/dist/multisig.test.js +1680 -241
  65. package/dist/multisig.test.js.map +1 -1
  66. package/dist/procedures.d.ts +46 -24
  67. package/dist/procedures.d.ts.map +1 -1
  68. package/dist/procedures.js +46 -21
  69. package/dist/procedures.js.map +1 -1
  70. package/dist/proposal/factory.d.ts +18 -0
  71. package/dist/proposal/factory.d.ts.map +1 -0
  72. package/dist/proposal/factory.js +99 -0
  73. package/dist/proposal/factory.js.map +1 -0
  74. package/dist/proposal/metadata.d.ts +5 -12
  75. package/dist/proposal/metadata.d.ts.map +1 -1
  76. package/dist/proposal/metadata.js +118 -174
  77. package/dist/proposal/metadata.js.map +1 -1
  78. package/dist/proposal/signatures.d.ts +10 -0
  79. package/dist/proposal/signatures.d.ts.map +1 -0
  80. package/dist/proposal/signatures.js +54 -0
  81. package/dist/proposal/signatures.js.map +1 -0
  82. package/dist/signer.d.ts +2 -0
  83. package/dist/signer.d.ts.map +1 -1
  84. package/dist/signer.js +2 -0
  85. package/dist/signer.js.map +1 -1
  86. package/dist/signers/ecdsa.d.ts +3 -0
  87. package/dist/signers/ecdsa.d.ts.map +1 -1
  88. package/dist/signers/ecdsa.js +8 -4
  89. package/dist/signers/ecdsa.js.map +1 -1
  90. package/dist/signers/ecdsa.test.d.ts +2 -0
  91. package/dist/signers/ecdsa.test.d.ts.map +1 -0
  92. package/dist/signers/ecdsa.test.js +65 -0
  93. package/dist/signers/ecdsa.test.js.map +1 -0
  94. package/dist/signers/falcon.d.ts +3 -0
  95. package/dist/signers/falcon.d.ts.map +1 -1
  96. package/dist/signers/falcon.js +8 -4
  97. package/dist/signers/falcon.js.map +1 -1
  98. package/dist/signers/falcon.test.js +12 -0
  99. package/dist/signers/falcon.test.js.map +1 -1
  100. package/dist/signers/miden-wallet.d.ts +3 -1
  101. package/dist/signers/miden-wallet.d.ts.map +1 -1
  102. package/dist/signers/miden-wallet.js +11 -2
  103. package/dist/signers/miden-wallet.js.map +1 -1
  104. package/dist/signers/miden-wallet.test.js +26 -0
  105. package/dist/signers/miden-wallet.test.js.map +1 -1
  106. package/dist/signers/para.d.ts +3 -3
  107. package/dist/signers/para.d.ts.map +1 -1
  108. package/dist/signers/para.js +15 -6
  109. package/dist/signers/para.js.map +1 -1
  110. package/dist/signers/para.test.js +39 -0
  111. package/dist/signers/para.test.js.map +1 -1
  112. package/dist/transaction/consumeNotes.d.ts.map +1 -1
  113. package/dist/transaction/consumeNotes.js +1 -0
  114. package/dist/transaction/consumeNotes.js.map +1 -1
  115. package/dist/transaction/index.d.ts +2 -1
  116. package/dist/transaction/index.d.ts.map +1 -1
  117. package/dist/transaction/index.js +2 -1
  118. package/dist/transaction/index.js.map +1 -1
  119. package/dist/transaction/options.d.ts +1 -1
  120. package/dist/transaction/options.d.ts.map +1 -1
  121. package/dist/transaction/p2id.d.ts +1 -0
  122. package/dist/transaction/p2id.d.ts.map +1 -1
  123. package/dist/transaction/p2id.js +9 -3
  124. package/dist/transaction/p2id.js.map +1 -1
  125. package/dist/transaction/updateGuardian.d.ts +7 -0
  126. package/dist/transaction/updateGuardian.d.ts.map +1 -0
  127. package/dist/transaction/{updatePsm.js → updateGuardian.js} +15 -29
  128. package/dist/transaction/updateGuardian.js.map +1 -0
  129. package/dist/transaction/updateProcedureThreshold.d.ts +9 -0
  130. package/dist/transaction/updateProcedureThreshold.d.ts.map +1 -0
  131. package/dist/transaction/updateProcedureThreshold.js +55 -0
  132. package/dist/transaction/updateProcedureThreshold.js.map +1 -0
  133. package/dist/transaction/updateSigners.d.ts.map +1 -1
  134. package/dist/transaction/updateSigners.js +5 -23
  135. package/dist/transaction/updateSigners.js.map +1 -1
  136. package/dist/transaction.d.ts +2 -1
  137. package/dist/transaction.d.ts.map +1 -1
  138. package/dist/transaction.js +2 -1
  139. package/dist/transaction.js.map +1 -1
  140. package/dist/types/proposal.d.ts +32 -15
  141. package/dist/types/proposal.d.ts.map +1 -1
  142. package/dist/types.d.ts +24 -7
  143. package/dist/types.d.ts.map +1 -1
  144. package/dist/utils/digest.d.ts +5 -0
  145. package/dist/utils/digest.d.ts.map +1 -1
  146. package/dist/utils/digest.js +34 -1
  147. package/dist/utils/digest.js.map +1 -1
  148. package/dist/utils/digest.test.d.ts +2 -0
  149. package/dist/utils/digest.test.d.ts.map +1 -0
  150. package/dist/utils/digest.test.js +48 -0
  151. package/dist/utils/digest.test.js.map +1 -0
  152. package/dist/utils/signature.d.ts +3 -1
  153. package/dist/utils/signature.d.ts.map +1 -1
  154. package/dist/utils/signature.js +31 -6
  155. package/dist/utils/signature.js.map +1 -1
  156. package/dist/utils/word.test.js +1 -52
  157. package/dist/utils/word.test.js.map +1 -1
  158. package/masm/account_components/auth/multisig.masm +13 -0
  159. package/masm/account_components/auth/multisig_ecdsa.masm +13 -0
  160. package/masm/account_components/auth/multisig_guardian.masm +17 -0
  161. package/masm/account_components/auth/multisig_guardian_ecdsa.masm +17 -0
  162. package/masm/auth/guardian.masm +177 -0
  163. package/masm/auth/guardian_ecdsa.masm +178 -0
  164. package/masm/{multisig.masm → auth/multisig.masm} +149 -55
  165. package/masm/{multisig_ecdsa.masm → auth/multisig_ecdsa.masm} +148 -56
  166. package/package.json +11 -9
  167. package/src/account/builder.test.ts +165 -0
  168. package/src/account/builder.ts +71 -34
  169. package/src/account/index.ts +1 -1
  170. package/src/account/masm/account-components/auth.ts +70 -0
  171. package/src/account/masm/auth.ts +1398 -0
  172. package/src/account/masm/index.ts +5 -0
  173. package/src/account/masm.ts +3 -1040
  174. package/src/account/storage.ts +18 -16
  175. package/src/client.test.ts +31 -35
  176. package/src/client.ts +98 -26
  177. package/src/index.ts +84 -22
  178. package/src/inspector.test.ts +17 -17
  179. package/src/inspector.ts +63 -29
  180. package/src/multisig/proposal/execution.ts +66 -49
  181. package/src/multisig/proposal/parser.ts +26 -26
  182. package/src/multisig/signing.ts +4 -4
  183. package/src/multisig.test.ts +2097 -248
  184. package/src/multisig.ts +882 -388
  185. package/src/procedures.ts +50 -26
  186. package/src/proposal/factory.ts +171 -0
  187. package/src/proposal/metadata.ts +165 -0
  188. package/src/proposal/signatures.ts +68 -0
  189. package/src/signer.ts +2 -0
  190. package/src/signers/ecdsa.test.ts +80 -0
  191. package/src/signers/ecdsa.ts +15 -4
  192. package/src/signers/falcon.test.ts +19 -0
  193. package/src/signers/falcon.ts +16 -5
  194. package/src/signers/miden-wallet.test.ts +47 -0
  195. package/src/signers/miden-wallet.ts +18 -1
  196. package/src/signers/para.test.ts +57 -0
  197. package/src/signers/para.ts +26 -7
  198. package/src/transaction/consumeNotes.ts +1 -0
  199. package/src/transaction/index.ts +2 -2
  200. package/src/transaction/options.ts +1 -2
  201. package/src/transaction/p2id.test.ts +190 -0
  202. package/src/transaction/p2id.ts +11 -5
  203. package/src/transaction/rpoRandomCoin.test.ts +64 -0
  204. package/src/transaction/rpoRandomCoin.ts +24 -0
  205. package/src/transaction/{updatePsm.ts → updateGuardian.ts} +19 -32
  206. package/src/transaction/updateProcedureThreshold.ts +97 -0
  207. package/src/transaction/updateSigners.ts +12 -27
  208. package/src/transaction.ts +5 -3
  209. package/src/types/proposal.ts +43 -11
  210. package/src/types.ts +29 -11
  211. package/src/utils/digest.test.ts +55 -0
  212. package/src/utils/digest.ts +51 -1
  213. package/src/utils/signature.ts +47 -9
  214. package/src/utils/word.test.ts +1 -55
  215. package/dist/account.d.ts +0 -104
  216. package/dist/account.d.ts.map +0 -1
  217. package/dist/account.js +0 -136
  218. package/dist/account.js.map +0 -1
  219. package/dist/builder.d.ts +0 -54
  220. package/dist/builder.d.ts.map +0 -1
  221. package/dist/builder.js +0 -78
  222. package/dist/builder.js.map +0 -1
  223. package/dist/http.d.ts +0 -64
  224. package/dist/http.d.ts.map +0 -1
  225. package/dist/http.js +0 -162
  226. package/dist/http.js.map +0 -1
  227. package/dist/keystore.d.ts +0 -65
  228. package/dist/keystore.d.ts.map +0 -1
  229. package/dist/keystore.js +0 -121
  230. package/dist/keystore.js.map +0 -1
  231. package/dist/miden.d.ts +0 -9
  232. package/dist/miden.d.ts.map +0 -1
  233. package/dist/miden.js +0 -26
  234. package/dist/miden.js.map +0 -1
  235. package/dist/multisig/metadata.d.ts +0 -18
  236. package/dist/multisig/metadata.d.ts.map +0 -1
  237. package/dist/multisig/metadata.js +0 -100
  238. package/dist/multisig/metadata.js.map +0 -1
  239. package/dist/multisig/metadata.test.d.ts +0 -2
  240. package/dist/multisig/metadata.test.d.ts.map +0 -1
  241. package/dist/multisig/metadata.test.js +0 -323
  242. package/dist/multisig/metadata.test.js.map +0 -1
  243. package/dist/proposal/exported.d.ts +0 -12
  244. package/dist/proposal/exported.d.ts.map +0 -1
  245. package/dist/proposal/exported.js +0 -88
  246. package/dist/proposal/exported.js.map +0 -1
  247. package/dist/signer.test.d.ts +0 -2
  248. package/dist/signer.test.d.ts.map +0 -1
  249. package/dist/signer.test.js +0 -123
  250. package/dist/signer.test.js.map +0 -1
  251. package/dist/transaction/p2id.interop.test.d.ts +0 -2
  252. package/dist/transaction/p2id.interop.test.d.ts.map +0 -1
  253. package/dist/transaction/p2id.interop.test.js +0 -36
  254. package/dist/transaction/p2id.interop.test.js.map +0 -1
  255. package/dist/transaction/updatePsm.d.ts +0 -7
  256. package/dist/transaction/updatePsm.d.ts.map +0 -1
  257. package/dist/transaction/updatePsm.js.map +0 -1
  258. package/dist/transport/http.d.ts +0 -64
  259. package/dist/transport/http.d.ts.map +0 -1
  260. package/dist/transport/http.js +0 -162
  261. package/dist/transport/http.js.map +0 -1
  262. package/dist/transport/index.d.ts +0 -5
  263. package/dist/transport/index.d.ts.map +0 -1
  264. package/dist/transport/index.js +0 -5
  265. package/dist/transport/index.js.map +0 -1
  266. package/dist/utils/state-validation.d.ts +0 -5
  267. package/dist/utils/state-validation.d.ts.map +0 -1
  268. package/dist/utils/state-validation.js +0 -30
  269. package/dist/utils/state-validation.js.map +0 -1
  270. package/dist/utils/validation.d.ts +0 -6
  271. package/dist/utils/validation.d.ts.map +0 -1
  272. package/dist/utils/validation.js +0 -52
  273. package/dist/utils/validation.js.map +0 -1
  274. package/masm/psm.masm +0 -178
  275. package/masm/psm_ecdsa.masm +0 -179
@@ -1,179 +0,0 @@
1
- # Private State Manager (PSM) Authentication Component (ECDSA)
2
- #
3
- # This component provides PSM signature verification for accounts using
4
- # ECDSA secp256k1 (k256/keccak) signatures.
5
- # It can be used standalone or in conjunction with other auth components like multisig.
6
-
7
- use miden::active_account
8
- use miden::native_account
9
-
10
- # Type definitions for v0.12 syntax
11
- type BeWord = struct @bigendian { a: felt, b: felt, c: felt, d: felt }
12
-
13
- # IMPORTANT SECURITY NOTES
14
- # --------------------------------------------------------------------------------
15
- # - The selector in `PSM_SELECTOR_SLOT` controls whether the extra PSM signature
16
- # is enforced:
17
- # * PSM_ON => exactly one valid PSM signature is required.
18
- # * PSM_OFF => PSM signature is skipped for that call.
19
- #
20
- # - `verify_psm_signature` reads the selector from initial storage state.
21
- # This means changes made during the same transaction won't affect the check.
22
- #
23
- # - `enable_psm` / `disable_psm` procedures allow explicit control over PSM state.
24
- #
25
- # - `update_psm_public_key`:
26
- # * Installs a new PSM public key in the map at `PSM_PUBLIC_KEY_MAP_SLOT`.
27
- # * Does not itself perform any signature checks.
28
- # * To update the key without requiring PSM signature, ensure selector is OFF.
29
- #
30
- # Storage Layout
31
- # --------------------------------------------------------------------------------
32
- #
33
- # +---------------------+---------------+
34
- # | DESCRIPTION | SLOT |
35
- # +---------------------+---------------+
36
- # | PSM SELECTOR (word) | 0 |
37
- # | PSM PUBLIC KEY MAP | 1 |
38
- # +---------------------+---------------+
39
- #
40
- # - PSM_SELECTOR_SLOT (0):
41
- # * Stores a word that is compared against [1, 0, 0, 0] (PSM_ON).
42
- # * Any value != PSM_ON is treated as PSM_OFF.
43
- #
44
- # - PSM_PUBLIC_KEY_MAP_SLOT (1):
45
- # * A map from a fixed key [0, 0, 0, 0] to the single PSM public key:
46
- # [0, 0, 0, 0] => PSM_PUBLIC_KEY
47
- # * PSM_PUBLIC_KEY is an ECDSA secp256k1 public key represented as a word.
48
-
49
- # CONSTANTS
50
- # =================================================================================================
51
-
52
- # Slot where the PSM selector flag is stored:
53
- # - PSM_ON => PSM signature required
54
- # - PSM_OFF => PSM signature skipped
55
- const PSM_SELECTOR_SLOT = 0
56
-
57
- # Map slot for PSM public key
58
- # Uses exactly one PSM public key at index [0, 0, 0, 0]
59
- # [0, 0, 0, 0] => PSM_PUBLIC_KEY
60
- const PSM_PUBLIC_KEY_MAP_SLOT = 1
61
-
62
- # Selector flag values
63
- const PSM_ON = [1, 0, 0, 0]
64
- const PSM_OFF = [0, 0, 0, 0]
65
-
66
- # The event emitted when a signature is not found for a required signer.
67
- const AUTH_UNAUTHORIZED_EVENT = event("miden::auth::unauthorized")
68
-
69
- # PSM PROCEDURES
70
- # =================================================================================================
71
-
72
- #! Enable PSM verification by setting the selector to ON.
73
- #!
74
- #! Operand stack inputs: []
75
- #! Outputs: []
76
- #!
77
- #! Notes:
78
- #! - Sets PSM_SELECTOR_SLOT to PSM_ON (1)
79
- #! - After this, transactions will require PSM signature verification
80
- proc.enable_psm
81
- push.PSM_ON
82
- # => [PSM_ON]
83
-
84
- push.PSM_SELECTOR_SLOT
85
- # => [PSM_SELECTOR_SLOT, PSM_ON]
86
-
87
- exec.native_account::set_item
88
- # => [OLD_ROOT]
89
-
90
- dropw
91
- # => []
92
- end
93
-
94
- #! Disable PSM verification by setting the selector to OFF.
95
- #!
96
- #! Operand stack inputs: []
97
- #! Outputs: []
98
- #!
99
- #! Notes:
100
- #! - Sets PSM_SELECTOR_SLOT to PSM_OFF (0)
101
- #! - After this, transactions will NOT require PSM signature verification
102
- proc.disable_psm
103
- push.PSM_OFF
104
- # => [PSM_OFF]
105
-
106
- push.PSM_SELECTOR_SLOT
107
- # => [PSM_SELECTOR_SLOT, PSM_OFF]
108
-
109
- exec.native_account::set_item
110
- # => [OLD_ROOT]
111
-
112
- dropw
113
- # => []
114
- end
115
-
116
- #! Update the PSM public key.
117
- #!
118
- #! Operand stack inputs: []
119
- #! Advice stack inputs: [PUB_KEY]
120
- #! - PUB_KEY is the new PSM ECDSA secp256k1 public key
121
- #!
122
- #! Notes:
123
- #! - Stores PUB_KEY into PSM_PUBLIC_KEY_MAP_SLOT:
124
- #! [0, 0, 0, 0] => PSM_PUBLIC_KEY
125
- #! - To update the key without requiring PSM signature, ensure
126
- #! PSM_SELECTOR_SLOT = 0 (OFF) before calling this.
127
- pub proc update_psm_public_key
128
- exec.disable_psm
129
- # ------ Update the PSM public key ------
130
- adv_loadw
131
- # => [PUB_KEY]
132
-
133
- push.0.0.0.0
134
- # => [MAP_KEY, PUB_KEY]
135
- # Note that MAP_KEY is [0, 0, 0, 0] for a single PSM_KEY
136
-
137
- push.PSM_PUBLIC_KEY_MAP_SLOT
138
- # => [index, MAP_KEY, PUB_KEY]
139
-
140
- exec.native_account::set_map_item
141
- # => [OLD_MAP_ROOT, OLD_MAP_VALUE]
142
-
143
- dropw dropw
144
- # => []
145
- end
146
-
147
- #! Conditionally verify a "PSM" signature against a stored public key hash.
148
- #! The condition is controlled by the selector at PSM_SELECTOR_SLOT.
149
- #!
150
- #! Inputs: [MSG]
151
- #! Outputs: [MSG]
152
- #!
153
- #! Panics if:
154
- #! - Selector is ON but the provided PSM signature is invalid or missing.
155
- #!
156
- #! Notes:
157
- #! - MSG is TX_SUMMARY_COMMITMENT provided by auth procedure
158
- #! - If selector is OFF (0), PSM verification is skipped
159
- #! - Selector value is read from initial storage state
160
- pub proc verify_psm_signature(msg: BeWord)
161
- push.PSM_SELECTOR_SLOT
162
- exec.active_account::get_item
163
- drop drop drop
164
- # => [selector, MSG]
165
-
166
- push.1 eq
167
- if.true
168
- push.1
169
- push.PSM_PUBLIC_KEY_MAP_SLOT
170
- exec.::miden::auth::ecdsa_k256_keccak::verify_signatures
171
- push.1 neq
172
- if.true
173
- emit.AUTH_UNAUTHORIZED_EVENT
174
- push.0 assert.err="invalid PSM signature"
175
- end
176
- end
177
- # => [MSG]
178
- exec.enable_psm
179
- end