@fhevm/sdk 1.1.0-alpha.6 → 1.1.0-alpha.8

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 (670) hide show
  1. package/README.md +5 -5
  2. package/_cjs/core/_version.js +1 -1
  3. package/_cjs/core/actions/base/index.js +1 -17
  4. package/_cjs/core/actions/base/index.js.map +1 -1
  5. package/_cjs/core/actions/base/signDecryptionPermit.js +0 -3
  6. package/_cjs/core/actions/base/signDecryptionPermit.js.map +1 -1
  7. package/_cjs/core/actions/chain/index.js +1 -13
  8. package/_cjs/core/actions/chain/index.js.map +1 -1
  9. package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  10. package/_cjs/core/actions/chain/serializeSignedDecryptionPermit.js.map +1 -1
  11. package/_cjs/core/actions/decrypt/canDecryptValue.js.map +1 -1
  12. package/_cjs/core/actions/decrypt/canDecryptValues.js.map +1 -1
  13. package/_cjs/core/actions/decrypt/canDecryptValuesFromPairs.js.map +1 -1
  14. package/_cjs/core/actions/decrypt/decryptValue.js +1 -0
  15. package/_cjs/core/actions/decrypt/decryptValue.js.map +1 -1
  16. package/_cjs/core/actions/decrypt/decryptValues.js +2 -0
  17. package/_cjs/core/actions/decrypt/decryptValues.js.map +1 -1
  18. package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js +2 -0
  19. package/_cjs/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  20. package/_cjs/core/actions/decrypt/index.js +1 -3
  21. package/_cjs/core/actions/decrypt/index.js.map +1 -1
  22. package/_cjs/core/actions/encrypt/encryptValue.js +2 -1
  23. package/_cjs/core/actions/encrypt/encryptValue.js.map +1 -1
  24. package/_cjs/core/actions/encrypt/encryptValues.js +2 -1
  25. package/_cjs/core/actions/encrypt/encryptValues.js.map +1 -1
  26. package/_cjs/core/actions/encrypt/generateZkProof.js +2 -1
  27. package/_cjs/core/actions/encrypt/generateZkProof.js.map +1 -1
  28. package/_cjs/core/actions/host/index.js +1 -9
  29. package/_cjs/core/actions/host/index.js.map +1 -1
  30. package/_cjs/core/actions/host/readKmsVerifierContractData.js +1 -1
  31. package/_cjs/core/actions/host/readKmsVerifierContractData.js.map +1 -1
  32. package/_cjs/core/base/cachedFetch.js +2 -1
  33. package/_cjs/core/base/cachedFetch.js.map +1 -1
  34. package/_cjs/core/base/uint.js +7 -0
  35. package/_cjs/core/base/uint.js.map +1 -1
  36. package/_cjs/core/clients/decorators/base.js +1 -1
  37. package/_cjs/core/clients/decorators/base.js.map +1 -1
  38. package/_cjs/core/handle/FheType.js +4 -0
  39. package/_cjs/core/handle/FheType.js.map +1 -1
  40. package/_cjs/core/host-contracts/HostContractVersion-p.js +4 -0
  41. package/_cjs/core/host-contracts/HostContractVersion-p.js.map +1 -1
  42. package/_cjs/core/host-contracts/KmsSignersContext-p.js +15 -25
  43. package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  44. package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js +4 -1
  45. package/_cjs/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
  46. package/_cjs/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.js +1 -1
  47. package/_cjs/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.js.map +1 -1
  48. package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +1 -1
  49. package/_cjs/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -1
  50. package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js +1 -1
  51. package/_cjs/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
  52. package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js +1 -1
  53. package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
  54. package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +7 -6
  55. package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
  56. package/_cjs/core/host-contracts/readKmsSignersContext-p.js +54 -66
  57. package/_cjs/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
  58. package/_cjs/core/kms/KmsSigncryptedShares-p.js +40 -4
  59. package/_cjs/core/kms/KmsSigncryptedShares-p.js.map +1 -1
  60. package/_cjs/core/kms/PublicDecryptionProof-p.js +8 -7
  61. package/_cjs/core/kms/PublicDecryptionProof-p.js.map +1 -1
  62. package/_cjs/core/kms/SignedDecryptionPermit-p.js +33 -199
  63. package/_cjs/core/kms/SignedDecryptionPermit-p.js.map +1 -1
  64. package/_cjs/core/kms/SignedDecryptionPermitV1-p.js +204 -0
  65. package/_cjs/core/kms/SignedDecryptionPermitV1-p.js.map +1 -0
  66. package/_cjs/core/kms/SignedDecryptionPermitV2-p.js +172 -0
  67. package/_cjs/core/kms/SignedDecryptionPermitV2-p.js.map +1 -0
  68. package/_cjs/core/kms/{createKmsDelegatedUserDecryptEip712.js → createKmsDelegatedUserDecryptEip712V1.js} +12 -13
  69. package/_cjs/core/kms/createKmsDelegatedUserDecryptEip712V1.js.map +1 -0
  70. package/_cjs/core/kms/{createKmsUserDecryptEip712.js → createKmsUserDecryptEip712V1.js} +22 -21
  71. package/_cjs/core/kms/createKmsUserDecryptEip712V1.js.map +1 -0
  72. package/_cjs/core/kms/createKmsUserDecryptEip712V2.js +4 -5
  73. package/_cjs/core/kms/createKmsUserDecryptEip712V2.js.map +1 -1
  74. package/_cjs/core/kms/decryptValuesFromPairs.js +18 -2
  75. package/_cjs/core/kms/decryptValuesFromPairs.js.map +1 -1
  76. package/_cjs/core/kms/{fetchKmsSigncryptedShares-p.js → fetchKmsSigncryptedSharesV1-p.js} +19 -9
  77. package/_cjs/core/kms/fetchKmsSigncryptedSharesV1-p.js.map +1 -0
  78. package/_cjs/core/kms/fetchKmsSigncryptedSharesV2-p.js +95 -0
  79. package/_cjs/core/kms/fetchKmsSigncryptedSharesV2-p.js.map +1 -0
  80. package/_cjs/core/kms/{kmsDelegatedUserDecryptEip712Types.js → kmsDelegatedUserDecryptEip712V1Types.js} +8 -8
  81. package/_cjs/core/kms/kmsDelegatedUserDecryptEip712V1Types.js.map +1 -0
  82. package/_cjs/core/kms/kmsExtraData-p.js +234 -0
  83. package/_cjs/core/kms/kmsExtraData-p.js.map +1 -0
  84. package/_cjs/core/kms/{kmsUserDecryptEip712Types.js → kmsUserDecryptEip712V1Types.js} +8 -8
  85. package/_cjs/core/kms/kmsUserDecryptEip712V1Types.js.map +1 -0
  86. package/_cjs/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -1
  87. package/_cjs/core/kms/publicDecrypt.js +5 -5
  88. package/_cjs/core/kms/publicDecrypt.js.map +1 -1
  89. package/_cjs/core/kms/utils.js +0 -19
  90. package/_cjs/core/kms/utils.js.map +1 -1
  91. package/_cjs/core/kms/verifyKmsPublicDecryptEip712-p.js +6 -5
  92. package/_cjs/core/kms/verifyKmsPublicDecryptEip712-p.js.map +1 -1
  93. package/_cjs/core/modules/decrypt/mock.js +6 -6
  94. package/_cjs/core/modules/decrypt/mock.js.map +1 -1
  95. package/_cjs/core/modules/decrypt/module/api-p.js +12 -12
  96. package/_cjs/core/modules/decrypt/module/api-p.js.map +1 -1
  97. package/_cjs/core/modules/decrypt/module/init-p.js +6 -7
  98. package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
  99. package/_cjs/core/modules/encrypt/module/init-p.js +12 -11
  100. package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
  101. package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +53 -3
  102. package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -1
  103. package/_cjs/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +67 -21
  104. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.js.map +1 -0
  105. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js +64 -7
  106. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -1
  107. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +9 -108
  108. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
  109. package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV1.js +163 -0
  110. package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV1.js.map +1 -0
  111. package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV2.js +7 -0
  112. package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV2.js.map +1 -0
  113. package/_cjs/core/modules/relayer/cleartext/forgeFhevmV1.js +83 -0
  114. package/_cjs/core/modules/relayer/cleartext/forgeFhevmV1.js.map +1 -0
  115. package/_cjs/core/modules/relayer/cleartext/mock.js +2 -2
  116. package/_cjs/core/modules/relayer/cleartext/mock.js.map +1 -1
  117. package/_cjs/core/modules/relayer/cleartext/signers.js +14 -0
  118. package/_cjs/core/modules/relayer/cleartext/signers.js.map +1 -1
  119. package/_cjs/core/modules/relayer/module/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +1 -1
  120. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecryptV1.js.map +1 -0
  121. package/_cjs/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
  122. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js +11 -45
  123. package/_cjs/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  124. package/_cjs/core/modules/relayer/module/fetchUserDecryptV1.js +52 -0
  125. package/_cjs/core/modules/relayer/module/fetchUserDecryptV1.js.map +1 -0
  126. package/_cjs/core/modules/relayer/module/fetchUserDecryptV2.js +54 -0
  127. package/_cjs/core/modules/relayer/module/fetchUserDecryptV2.js.map +1 -0
  128. package/_cjs/core/modules/relayer/module/guards/RelayerResponseFailed.js +10 -2
  129. package/_cjs/core/modules/relayer/module/guards/RelayerResponseFailed.js.map +1 -1
  130. package/_cjs/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.js +5 -2
  131. package/_cjs/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.js.map +1 -1
  132. package/_cjs/core/modules/relayer/module/guards/api-errors/RelayerApiError503.js +2 -0
  133. package/_cjs/core/modules/relayer/module/guards/api-errors/RelayerApiError503.js.map +1 -1
  134. package/_cjs/core/modules/relayer/module/index.js +2 -2
  135. package/_cjs/core/modules/relayer/module/index.js.map +1 -1
  136. package/_cjs/core/runtime/HyperWasmSolver-p.js +1 -6
  137. package/_cjs/core/runtime/HyperWasmSolver-p.js.map +1 -1
  138. package/_cjs/core/utils-p/decrypt/{verifyKmsDelegatedUserDecryptEip712.js → verifyKmsDelegatedUserDecryptEip712V1.js} +5 -5
  139. package/_cjs/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712V1.js.map +1 -0
  140. package/_cjs/core/utils-p/decrypt/{verifyKmsUserDecryptEip712.js → verifyKmsUserDecryptEip712V1.js} +5 -5
  141. package/_cjs/core/utils-p/decrypt/verifyKmsUserDecryptEip712V1.js.map +1 -0
  142. package/_cjs/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.js +30 -0
  143. package/_cjs/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.js.map +1 -0
  144. package/_cjs/ethers/internal/ethereum-ct.js +11 -0
  145. package/_cjs/ethers/internal/ethereum-ct.js.map +1 -1
  146. package/_cjs/ethers/internal/runtime-ct.js +9 -7
  147. package/_cjs/ethers/internal/runtime-ct.js.map +1 -1
  148. package/_cjs/viem/internal/ethereum-ct.js +8 -0
  149. package/_cjs/viem/internal/ethereum-ct.js.map +1 -1
  150. package/_cjs/viem/internal/runtime-ct.js +9 -7
  151. package/_cjs/viem/internal/runtime-ct.js.map +1 -1
  152. package/_cjs/wasm/tfhe/loadTfheLib.js.map +1 -1
  153. package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
  154. package/_esm/core/_version.js +1 -1
  155. package/_esm/core/actions/base/index.js +0 -8
  156. package/_esm/core/actions/base/index.js.map +1 -1
  157. package/_esm/core/actions/base/signDecryptionPermit.js +0 -6
  158. package/_esm/core/actions/base/signDecryptionPermit.js.map +1 -1
  159. package/_esm/core/actions/chain/index.js +0 -6
  160. package/_esm/core/actions/chain/index.js.map +1 -1
  161. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  162. package/_esm/core/actions/chain/serializeSignedDecryptionPermit.js.map +1 -1
  163. package/_esm/core/actions/decrypt/canDecryptValue.js +40 -0
  164. package/_esm/core/actions/decrypt/canDecryptValue.js.map +1 -1
  165. package/_esm/core/actions/decrypt/canDecryptValues.js +1 -0
  166. package/_esm/core/actions/decrypt/canDecryptValues.js.map +1 -1
  167. package/_esm/core/actions/decrypt/canDecryptValuesFromPairs.js +1 -0
  168. package/_esm/core/actions/decrypt/canDecryptValuesFromPairs.js.map +1 -1
  169. package/_esm/core/actions/decrypt/decryptValue.js +1 -0
  170. package/_esm/core/actions/decrypt/decryptValue.js.map +1 -1
  171. package/_esm/core/actions/decrypt/decryptValues.js +2 -0
  172. package/_esm/core/actions/decrypt/decryptValues.js.map +1 -1
  173. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js +2 -0
  174. package/_esm/core/actions/decrypt/decryptValuesFromPairs.js.map +1 -1
  175. package/_esm/core/actions/decrypt/index.js +0 -1
  176. package/_esm/core/actions/decrypt/index.js.map +1 -1
  177. package/_esm/core/actions/encrypt/encryptValue.js +2 -1
  178. package/_esm/core/actions/encrypt/encryptValue.js.map +1 -1
  179. package/_esm/core/actions/encrypt/encryptValues.js +2 -1
  180. package/_esm/core/actions/encrypt/encryptValues.js.map +1 -1
  181. package/_esm/core/actions/encrypt/generateZkProof.js +2 -1
  182. package/_esm/core/actions/encrypt/generateZkProof.js.map +1 -1
  183. package/_esm/core/actions/host/index.js +0 -4
  184. package/_esm/core/actions/host/index.js.map +1 -1
  185. package/_esm/core/actions/host/readKmsVerifierContractData.js +2 -2
  186. package/_esm/core/actions/host/readKmsVerifierContractData.js.map +1 -1
  187. package/_esm/core/base/cachedFetch.js +1 -0
  188. package/_esm/core/base/cachedFetch.js.map +1 -1
  189. package/_esm/core/base/uint.js +7 -0
  190. package/_esm/core/base/uint.js.map +1 -1
  191. package/_esm/core/clients/decorators/base.js +2 -4
  192. package/_esm/core/clients/decorators/base.js.map +1 -1
  193. package/_esm/core/coprocessor/coprocessorEip712Types.js +2 -2
  194. package/_esm/core/handle/FheType.js +10 -0
  195. package/_esm/core/handle/FheType.js.map +1 -1
  196. package/_esm/core/host-contracts/HostContractVersion-p.js +6 -0
  197. package/_esm/core/host-contracts/HostContractVersion-p.js.map +1 -1
  198. package/_esm/core/host-contracts/KmsSignersContext-p.js +16 -25
  199. package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  200. package/_esm/core/host-contracts/canDecryptValuesFromPairs.js +5 -2
  201. package/_esm/core/host-contracts/canDecryptValuesFromPairs.js.map +1 -1
  202. package/_esm/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.js +2 -2
  203. package/_esm/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.js.map +1 -1
  204. package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js +2 -2
  205. package/_esm/core/host-contracts/getCurrentKmsContextAndEpoch-p.js.map +1 -1
  206. package/_esm/core/host-contracts/getCurrentKmsContextId-p.js +2 -2
  207. package/_esm/core/host-contracts/getCurrentKmsContextId-p.js.map +1 -1
  208. package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js +2 -2
  209. package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
  210. package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +6 -5
  211. package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
  212. package/_esm/core/host-contracts/readKmsSignersContext-p.js +132 -68
  213. package/_esm/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
  214. package/_esm/core/kms/KmsSigncryptedShares-p.js +70 -4
  215. package/_esm/core/kms/KmsSigncryptedShares-p.js.map +1 -1
  216. package/_esm/core/kms/PublicDecryptionProof-p.js +8 -7
  217. package/_esm/core/kms/PublicDecryptionProof-p.js.map +1 -1
  218. package/_esm/core/kms/SignedDecryptionPermit-p.js +48 -245
  219. package/_esm/core/kms/SignedDecryptionPermit-p.js.map +1 -1
  220. package/_esm/core/kms/SignedDecryptionPermitV1-p.js +228 -0
  221. package/_esm/core/kms/SignedDecryptionPermitV1-p.js.map +1 -0
  222. package/_esm/core/kms/SignedDecryptionPermitV2-p.js +192 -0
  223. package/_esm/core/kms/SignedDecryptionPermitV2-p.js.map +1 -0
  224. package/_esm/core/kms/{createKmsDelegatedUserDecryptEip712.js → createKmsDelegatedUserDecryptEip712V1.js} +11 -12
  225. package/_esm/core/kms/createKmsDelegatedUserDecryptEip712V1.js.map +1 -0
  226. package/_esm/core/kms/createKmsPublicDecryptEip712.js +1 -1
  227. package/_esm/core/kms/{createKmsUserDecryptEip712.js → createKmsUserDecryptEip712V1.js} +23 -22
  228. package/_esm/core/kms/createKmsUserDecryptEip712V1.js.map +1 -0
  229. package/_esm/core/kms/createKmsUserDecryptEip712V2.js +4 -5
  230. package/_esm/core/kms/createKmsUserDecryptEip712V2.js.map +1 -1
  231. package/_esm/core/kms/decryptValuesFromPairs.js +18 -2
  232. package/_esm/core/kms/decryptValuesFromPairs.js.map +1 -1
  233. package/_esm/core/kms/{fetchKmsSigncryptedShares-p.js → fetchKmsSigncryptedSharesV1-p.js} +49 -15
  234. package/_esm/core/kms/fetchKmsSigncryptedSharesV1-p.js.map +1 -0
  235. package/_esm/core/kms/fetchKmsSigncryptedSharesV2-p.js +119 -0
  236. package/_esm/core/kms/fetchKmsSigncryptedSharesV2-p.js.map +1 -0
  237. package/_esm/core/kms/{kmsDelegatedUserDecryptEip712Types.js → kmsDelegatedUserDecryptEip712V1Types.js} +9 -8
  238. package/_esm/core/kms/kmsDelegatedUserDecryptEip712V1Types.js.map +1 -0
  239. package/_esm/core/kms/kmsExtraData-p.js +298 -0
  240. package/_esm/core/kms/kmsExtraData-p.js.map +1 -0
  241. package/_esm/core/kms/kmsPublicDecryptEip712Types.js +1 -1
  242. package/_esm/core/kms/{kmsUserDecryptEip712Types.js → kmsUserDecryptEip712V1Types.js} +9 -8
  243. package/_esm/core/kms/kmsUserDecryptEip712V1Types.js.map +1 -0
  244. package/_esm/core/kms/kmsUserDecryptEip712V2Types.js +2 -1
  245. package/_esm/core/kms/kmsUserDecryptEip712V2Types.js.map +1 -1
  246. package/_esm/core/kms/publicDecrypt.js +6 -6
  247. package/_esm/core/kms/publicDecrypt.js.map +1 -1
  248. package/_esm/core/kms/utils.js +0 -18
  249. package/_esm/core/kms/utils.js.map +1 -1
  250. package/_esm/core/kms/verifyKmsPublicDecryptEip712-p.js +7 -6
  251. package/_esm/core/kms/verifyKmsPublicDecryptEip712-p.js.map +1 -1
  252. package/_esm/core/modules/decrypt/mock.js +6 -6
  253. package/_esm/core/modules/decrypt/mock.js.map +1 -1
  254. package/_esm/core/modules/decrypt/module/api-p.js +13 -13
  255. package/_esm/core/modules/decrypt/module/api-p.js.map +1 -1
  256. package/_esm/core/modules/decrypt/module/init-p.js +7 -7
  257. package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
  258. package/_esm/core/modules/encrypt/module/init-p.js +13 -11
  259. package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
  260. package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +69 -12
  261. package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -1
  262. package/_esm/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +76 -22
  263. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.js.map +1 -0
  264. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js +80 -7
  265. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -1
  266. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +13 -114
  267. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
  268. package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV1.js +173 -0
  269. package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV1.js.map +1 -0
  270. package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV2.js +6 -0
  271. package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV2.js.map +1 -0
  272. package/_esm/core/modules/relayer/cleartext/forgeFhevmV1.js +140 -0
  273. package/_esm/core/modules/relayer/cleartext/forgeFhevmV1.js.map +1 -0
  274. package/_esm/core/modules/relayer/cleartext/mock.js +1 -1
  275. package/_esm/core/modules/relayer/cleartext/mock.js.map +1 -1
  276. package/_esm/core/modules/relayer/cleartext/signers.js +26 -0
  277. package/_esm/core/modules/relayer/cleartext/signers.js.map +1 -1
  278. package/_esm/core/modules/relayer/module/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +1 -1
  279. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecryptV1.js.map +1 -0
  280. package/_esm/core/modules/relayer/module/fetchPublicDecrypt.js +1 -1
  281. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js +11 -46
  282. package/_esm/core/modules/relayer/module/fetchUserDecrypt.js.map +1 -1
  283. package/_esm/core/modules/relayer/module/fetchUserDecryptV1.js +53 -0
  284. package/_esm/core/modules/relayer/module/fetchUserDecryptV1.js.map +1 -0
  285. package/_esm/core/modules/relayer/module/fetchUserDecryptV2.js +56 -0
  286. package/_esm/core/modules/relayer/module/fetchUserDecryptV2.js.map +1 -0
  287. package/_esm/core/modules/relayer/module/guards/RelayerResponseFailed.js +10 -2
  288. package/_esm/core/modules/relayer/module/guards/RelayerResponseFailed.js.map +1 -1
  289. package/_esm/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.js +6 -3
  290. package/_esm/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.js.map +1 -1
  291. package/_esm/core/modules/relayer/module/guards/api-errors/RelayerApiError503.js +2 -0
  292. package/_esm/core/modules/relayer/module/guards/api-errors/RelayerApiError503.js.map +1 -1
  293. package/_esm/core/modules/relayer/module/index.js +1 -1
  294. package/_esm/core/modules/relayer/module/index.js.map +1 -1
  295. package/_esm/core/runtime/HyperWasmSolver-p.js +1 -6
  296. package/_esm/core/runtime/HyperWasmSolver-p.js.map +1 -1
  297. package/_esm/core/utils-p/decrypt/{verifyKmsDelegatedUserDecryptEip712.js → verifyKmsDelegatedUserDecryptEip712V1.js} +5 -5
  298. package/_esm/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712V1.js.map +1 -0
  299. package/_esm/core/utils-p/decrypt/{verifyKmsUserDecryptEip712.js → verifyKmsUserDecryptEip712V1.js} +5 -5
  300. package/_esm/core/utils-p/decrypt/verifyKmsUserDecryptEip712V1.js.map +1 -0
  301. package/_esm/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.js +27 -0
  302. package/_esm/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.js.map +1 -0
  303. package/_esm/ethers/internal/ethereum-ct.js +12 -1
  304. package/_esm/ethers/internal/ethereum-ct.js.map +1 -1
  305. package/_esm/ethers/internal/runtime-ct.js +9 -7
  306. package/_esm/ethers/internal/runtime-ct.js.map +1 -1
  307. package/_esm/viem/internal/ethereum-ct.js +10 -2
  308. package/_esm/viem/internal/ethereum-ct.js.map +1 -1
  309. package/_esm/viem/internal/runtime-ct.js +9 -7
  310. package/_esm/viem/internal/runtime-ct.js.map +1 -1
  311. package/_types/core/actions/base/index.d.ts +0 -8
  312. package/_types/core/actions/base/index.d.ts.map +1 -1
  313. package/_types/core/actions/base/signDecryptionPermit.d.ts +4 -5
  314. package/_types/core/actions/base/signDecryptionPermit.d.ts.map +1 -1
  315. package/_types/core/actions/chain/index.d.ts +1 -7
  316. package/_types/core/actions/chain/index.d.ts.map +1 -1
  317. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +1 -0
  318. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
  319. package/_types/core/actions/chain/serializeSignedDecryptionPermit.d.ts +3 -2
  320. package/_types/core/actions/chain/serializeSignedDecryptionPermit.d.ts.map +1 -1
  321. package/_types/core/actions/decrypt/canDecryptValue.d.ts +3 -4
  322. package/_types/core/actions/decrypt/canDecryptValue.d.ts.map +1 -1
  323. package/_types/core/actions/decrypt/canDecryptValues.d.ts +3 -4
  324. package/_types/core/actions/decrypt/canDecryptValues.d.ts.map +1 -1
  325. package/_types/core/actions/decrypt/canDecryptValuesFromPairs.d.ts +3 -4
  326. package/_types/core/actions/decrypt/canDecryptValuesFromPairs.d.ts.map +1 -1
  327. package/_types/core/actions/decrypt/decryptValue.d.ts.map +1 -1
  328. package/_types/core/actions/decrypt/decryptValues.d.ts.map +1 -1
  329. package/_types/core/actions/decrypt/decryptValuesFromPairs.d.ts.map +1 -1
  330. package/_types/core/actions/decrypt/index.d.ts +0 -1
  331. package/_types/core/actions/decrypt/index.d.ts.map +1 -1
  332. package/_types/core/actions/encrypt/encryptValue.d.ts.map +1 -1
  333. package/_types/core/actions/encrypt/encryptValues.d.ts.map +1 -1
  334. package/_types/core/actions/encrypt/generateZkProof.d.ts.map +1 -1
  335. package/_types/core/actions/host/index.d.ts +0 -4
  336. package/_types/core/actions/host/index.d.ts.map +1 -1
  337. package/_types/core/base/cachedFetch.d.ts +1 -0
  338. package/_types/core/base/cachedFetch.d.ts.map +1 -1
  339. package/_types/core/base/uint.d.ts +2 -1
  340. package/_types/core/base/uint.d.ts.map +1 -1
  341. package/_types/core/clients/decorators/base.d.ts +12 -23
  342. package/_types/core/clients/decorators/base.d.ts.map +1 -1
  343. package/_types/core/handle/FheType.d.ts +8 -0
  344. package/_types/core/handle/FheType.d.ts.map +1 -1
  345. package/_types/core/host-contracts/HostContractVersion-p.d.ts +8 -0
  346. package/_types/core/host-contracts/HostContractVersion-p.d.ts.map +1 -1
  347. package/_types/core/host-contracts/KmsSignersContext-p.d.ts +3 -2
  348. package/_types/core/host-contracts/KmsSignersContext-p.d.ts.map +1 -1
  349. package/_types/core/host-contracts/canDecryptValuesFromPairs.d.ts +2 -2
  350. package/_types/core/host-contracts/canDecryptValuesFromPairs.d.ts.map +1 -1
  351. package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts +3 -2
  352. package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts.map +1 -1
  353. package/_types/core/host-contracts/readKmsSignersContext-p.d.ts +43 -26
  354. package/_types/core/host-contracts/readKmsSignersContext-p.d.ts.map +1 -1
  355. package/_types/core/kms/KmsSigncryptedShares-p.d.ts +18 -0
  356. package/_types/core/kms/KmsSigncryptedShares-p.d.ts.map +1 -1
  357. package/_types/core/kms/PublicDecryptionProof-p.d.ts +1 -1
  358. package/_types/core/kms/PublicDecryptionProof-p.d.ts.map +1 -1
  359. package/_types/core/kms/SignedDecryptionPermit-p.d.ts +15 -29
  360. package/_types/core/kms/SignedDecryptionPermit-p.d.ts.map +1 -1
  361. package/_types/core/kms/SignedDecryptionPermitV1-p.d.ts +7 -0
  362. package/_types/core/kms/SignedDecryptionPermitV1-p.d.ts.map +1 -0
  363. package/_types/core/kms/SignedDecryptionPermitV2-p.d.ts +7 -0
  364. package/_types/core/kms/SignedDecryptionPermitV2-p.d.ts.map +1 -0
  365. package/_types/core/kms/createKmsDelegatedUserDecryptEip712V1.d.ts +16 -0
  366. package/_types/core/kms/createKmsDelegatedUserDecryptEip712V1.d.ts.map +1 -0
  367. package/_types/core/kms/createKmsUserDecryptEip712V1.d.ts +27 -0
  368. package/_types/core/kms/createKmsUserDecryptEip712V1.d.ts.map +1 -0
  369. package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts +3 -2
  370. package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts.map +1 -1
  371. package/_types/core/kms/decryptValuesFromPairs.d.ts +4 -11
  372. package/_types/core/kms/decryptValuesFromPairs.d.ts.map +1 -1
  373. package/_types/core/kms/{fetchKmsSigncryptedShares-p.d.ts → fetchKmsSigncryptedSharesV1-p.d.ts} +10 -12
  374. package/_types/core/kms/fetchKmsSigncryptedSharesV1-p.d.ts.map +1 -0
  375. package/_types/core/kms/fetchKmsSigncryptedSharesV2-p.d.ts +28 -0
  376. package/_types/core/kms/fetchKmsSigncryptedSharesV2-p.d.ts.map +1 -0
  377. package/_types/core/kms/kmsDelegatedUserDecryptEip712V1Types.d.ts +3 -0
  378. package/_types/core/kms/kmsDelegatedUserDecryptEip712V1Types.d.ts.map +1 -0
  379. package/_types/core/kms/kmsExtraData-p.d.ts +66 -0
  380. package/_types/core/kms/kmsExtraData-p.d.ts.map +1 -0
  381. package/_types/core/kms/kmsUserDecryptEip712V1Types.d.ts +3 -0
  382. package/_types/core/kms/kmsUserDecryptEip712V1Types.d.ts.map +1 -0
  383. package/_types/core/kms/kmsUserDecryptEip712V2Types.d.ts.map +1 -1
  384. package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
  385. package/_types/core/kms/utils.d.ts +0 -4
  386. package/_types/core/kms/utils.d.ts.map +1 -1
  387. package/_types/core/kms/verifyKmsPublicDecryptEip712-p.d.ts +1 -1
  388. package/_types/core/kms/verifyKmsPublicDecryptEip712-p.d.ts.map +1 -1
  389. package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
  390. package/_types/core/modules/ethereum/types-ct.d.ts +20 -2
  391. package/_types/core/modules/ethereum/types-ct.d.ts.map +1 -1
  392. package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts.map +1 -1
  393. package/_types/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.d.ts → fetchDelegatedUserDecryptV1.d.ts} +1 -1
  394. package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.d.ts.map +1 -0
  395. package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts.map +1 -1
  396. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts.map +1 -1
  397. package/_types/core/modules/relayer/cleartext/fetchUserDecryptV1.d.ts +3 -0
  398. package/_types/core/modules/relayer/cleartext/fetchUserDecryptV1.d.ts.map +1 -0
  399. package/_types/core/modules/relayer/cleartext/fetchUserDecryptV2.d.ts +3 -0
  400. package/_types/core/modules/relayer/cleartext/fetchUserDecryptV2.d.ts.map +1 -0
  401. package/_types/core/modules/relayer/cleartext/forgeFhevmV1.d.ts +29 -0
  402. package/_types/core/modules/relayer/cleartext/forgeFhevmV1.d.ts.map +1 -0
  403. package/_types/core/modules/relayer/cleartext/signers.d.ts +1 -0
  404. package/_types/core/modules/relayer/cleartext/signers.d.ts.map +1 -1
  405. package/_types/core/modules/relayer/module/{fetchDelegatedUserDecrypt.d.ts → fetchDelegatedUserDecryptV1.d.ts} +1 -1
  406. package/_types/core/modules/relayer/module/fetchDelegatedUserDecryptV1.d.ts.map +1 -0
  407. package/_types/core/modules/relayer/module/fetchUserDecrypt.d.ts.map +1 -1
  408. package/_types/core/modules/relayer/module/fetchUserDecryptV1.d.ts +3 -0
  409. package/_types/core/modules/relayer/module/fetchUserDecryptV1.d.ts.map +1 -0
  410. package/_types/core/modules/relayer/module/fetchUserDecryptV2.d.ts +3 -0
  411. package/_types/core/modules/relayer/module/fetchUserDecryptV2.d.ts.map +1 -0
  412. package/_types/core/modules/relayer/module/guards/RelayerResponseFailed.d.ts.map +1 -1
  413. package/_types/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.d.ts +1 -1
  414. package/_types/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.d.ts.map +1 -1
  415. package/_types/core/modules/relayer/module/guards/api-errors/RelayerApiError503.d.ts.map +1 -1
  416. package/_types/core/modules/relayer/types.d.ts +18 -5
  417. package/_types/core/modules/relayer/types.d.ts.map +1 -1
  418. package/_types/core/types/kms-p.d.ts +7 -1
  419. package/_types/core/types/kms-p.d.ts.map +1 -1
  420. package/_types/core/types/kms.d.ts +18 -19
  421. package/_types/core/types/kms.d.ts.map +1 -1
  422. package/_types/core/types/logger.d.ts +3 -3
  423. package/_types/core/types/logger.d.ts.map +1 -1
  424. package/_types/core/types/record-p.d.ts +2 -1
  425. package/_types/core/types/record-p.d.ts.map +1 -1
  426. package/_types/core/types/relayer-p.d.ts +27 -5
  427. package/_types/core/types/relayer-p.d.ts.map +1 -1
  428. package/_types/core/types/signedDecryptionPermit.d.ts +37 -26
  429. package/_types/core/types/signedDecryptionPermit.d.ts.map +1 -1
  430. package/_types/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712V1.d.ts +14 -0
  431. package/_types/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712V1.d.ts.map +1 -0
  432. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712V1.d.ts +14 -0
  433. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712V1.d.ts.map +1 -0
  434. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.d.ts +14 -0
  435. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.d.ts.map +1 -0
  436. package/_types/core/utils-p/runtime/recoverSigners.d.ts +2 -2
  437. package/_types/ethers/internal/ethereum-ct.d.ts.map +1 -1
  438. package/_types/ethers/internal/runtime-ct.d.ts.map +1 -1
  439. package/_types/viem/internal/ethereum-ct.d.ts.map +1 -1
  440. package/_types/viem/internal/runtime-ct.d.ts.map +1 -1
  441. package/core/_version.ts +1 -1
  442. package/core/actions/base/index.ts +0 -42
  443. package/core/actions/base/signDecryptionPermit.ts +3 -31
  444. package/core/actions/chain/index.ts +0 -28
  445. package/core/actions/chain/parseSignedDecryptionPermit.ts +1 -0
  446. package/core/actions/chain/serializeSignedDecryptionPermit.ts +3 -2
  447. package/core/actions/decrypt/canDecryptValue.ts +2 -16
  448. package/core/actions/decrypt/canDecryptValues.ts +2 -16
  449. package/core/actions/decrypt/canDecryptValuesFromPairs.ts +2 -16
  450. package/core/actions/decrypt/decryptValue.ts +2 -1
  451. package/core/actions/decrypt/decryptValues.ts +3 -1
  452. package/core/actions/decrypt/decryptValuesFromPairs.ts +3 -1
  453. package/core/actions/decrypt/index.ts +0 -6
  454. package/core/actions/encrypt/encryptValue.ts +4 -1
  455. package/core/actions/encrypt/encryptValues.ts +5 -1
  456. package/core/actions/encrypt/generateZkProof.ts +2 -1
  457. package/core/actions/host/index.ts +0 -20
  458. package/core/actions/host/readKmsVerifierContractData.ts +2 -2
  459. package/core/base/cachedFetch.ts +1 -0
  460. package/core/base/uint.ts +18 -1
  461. package/core/clients/decorators/base.ts +13 -37
  462. package/core/coprocessor/coprocessorEip712Types.ts +2 -2
  463. package/core/handle/FheType.ts +11 -0
  464. package/core/host-contracts/HostContractVersion-p.ts +12 -0
  465. package/core/host-contracts/KmsSignersContext-p.ts +29 -36
  466. package/core/host-contracts/canDecryptValuesFromPairs.ts +7 -7
  467. package/core/host-contracts/getCoprocessorContextSignersAndThreshold-p.ts +2 -2
  468. package/core/host-contracts/getCurrentKmsContextAndEpoch-p.ts +2 -2
  469. package/core/host-contracts/getCurrentKmsContextId-p.ts +2 -2
  470. package/core/host-contracts/getKmsContextSignersAndThreshold-p.ts +3 -2
  471. package/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.ts +10 -7
  472. package/core/host-contracts/readKmsSignersContext-p.ts +156 -115
  473. package/core/kms/KmsSigncryptedShares-p.ts +87 -4
  474. package/core/kms/PublicDecryptionProof-p.ts +11 -9
  475. package/core/kms/SignedDecryptionPermit-p.ts +67 -357
  476. package/core/kms/SignedDecryptionPermitV1-p.ts +308 -0
  477. package/core/kms/SignedDecryptionPermitV2-p.ts +275 -0
  478. package/core/kms/{createKmsDelegatedUserDecryptEip712.ts → createKmsDelegatedUserDecryptEip712V1.ts} +21 -21
  479. package/core/kms/createKmsPublicDecryptEip712.ts +1 -1
  480. package/core/kms/{createKmsUserDecryptEip712.ts → createKmsUserDecryptEip712V1.ts} +35 -31
  481. package/core/kms/createKmsUserDecryptEip712V2.ts +7 -7
  482. package/core/kms/decryptValuesFromPairs.ts +34 -22
  483. package/core/kms/{fetchKmsSigncryptedShares-p.ts → fetchKmsSigncryptedSharesV1-p.ts} +62 -45
  484. package/core/kms/fetchKmsSigncryptedSharesV2-p.ts +176 -0
  485. package/core/kms/{kmsDelegatedUserDecryptEip712Types.ts → kmsDelegatedUserDecryptEip712V1Types.ts} +9 -8
  486. package/core/kms/kmsExtraData-p.ts +374 -0
  487. package/core/kms/kmsPublicDecryptEip712Types.ts +1 -1
  488. package/core/kms/{kmsUserDecryptEip712Types.ts → kmsUserDecryptEip712V1Types.ts} +9 -8
  489. package/core/kms/kmsUserDecryptEip712V2Types.ts +2 -1
  490. package/core/kms/publicDecrypt.ts +10 -9
  491. package/core/kms/utils.ts +0 -32
  492. package/core/kms/verifyKmsPublicDecryptEip712-p.ts +10 -8
  493. package/core/modules/decrypt/mock.ts +6 -6
  494. package/core/modules/decrypt/module/api-p.ts +15 -15
  495. package/core/modules/decrypt/module/init-p.ts +7 -7
  496. package/core/modules/encrypt/module/init-p.ts +16 -11
  497. package/core/modules/ethereum/types-ct.ts +25 -2
  498. package/core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts +98 -15
  499. package/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.ts → fetchDelegatedUserDecryptV1.ts} +115 -27
  500. package/core/modules/relayer/cleartext/fetchPublicDecrypt.ts +115 -9
  501. package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +23 -131
  502. package/core/modules/relayer/cleartext/fetchUserDecryptV1.ts +229 -0
  503. package/core/modules/relayer/cleartext/fetchUserDecryptV2.ts +11 -0
  504. package/core/modules/relayer/cleartext/forgeFhevmV1.ts +185 -0
  505. package/core/modules/relayer/cleartext/mock.ts +1 -1
  506. package/core/modules/relayer/cleartext/signers.ts +35 -0
  507. package/core/modules/relayer/module/fetchPublicDecrypt.ts +1 -1
  508. package/core/modules/relayer/module/fetchUserDecrypt.ts +20 -56
  509. package/core/modules/relayer/module/fetchUserDecryptV1.ts +69 -0
  510. package/core/modules/relayer/module/fetchUserDecryptV2.ts +71 -0
  511. package/core/modules/relayer/module/guards/RelayerResponseFailed.ts +10 -2
  512. package/core/modules/relayer/module/guards/api-errors/RelayerApiError400NoDetails.ts +6 -3
  513. package/core/modules/relayer/module/guards/api-errors/RelayerApiError503.ts +2 -0
  514. package/core/modules/relayer/module/index.ts +1 -1
  515. package/core/modules/relayer/types.ts +24 -5
  516. package/core/runtime/HyperWasmSolver-p.ts +1 -5
  517. package/core/types/kms-p.ts +16 -1
  518. package/core/types/kms.ts +40 -28
  519. package/core/types/logger.ts +3 -3
  520. package/core/types/record-p.ts +2 -1
  521. package/core/types/relayer-p.ts +48 -5
  522. package/core/types/signedDecryptionPermit.ts +47 -26
  523. package/core/utils-p/decrypt/{verifyKmsDelegatedUserDecryptEip712.ts → verifyKmsDelegatedUserDecryptEip712V1.ts} +9 -9
  524. package/core/utils-p/decrypt/{verifyKmsUserDecryptEip712.ts → verifyKmsUserDecryptEip712V1.ts} +9 -9
  525. package/core/utils-p/decrypt/verifyKmsUserDecryptEip712V2.ts +43 -0
  526. package/core/utils-p/runtime/recoverSigners.ts +2 -2
  527. package/ethers/internal/ethereum-ct.ts +15 -1
  528. package/ethers/internal/runtime-ct.ts +9 -7
  529. package/package.json +1 -1
  530. package/viem/internal/ethereum-ct.ts +14 -2
  531. package/viem/internal/runtime-ct.ts +9 -7
  532. package/_cjs/core/actions/base/createVerifiedInputProofFromRawBytes.js +0 -10
  533. package/_cjs/core/actions/base/createVerifiedInputProofFromRawBytes.js.map +0 -1
  534. package/_cjs/core/actions/base/fetchKmsSigncryptedShares.js +0 -19
  535. package/_cjs/core/actions/base/fetchKmsSigncryptedShares.js.map +0 -1
  536. package/_cjs/core/actions/base/fetchVerifiedInputProof.js +0 -11
  537. package/_cjs/core/actions/base/fetchVerifiedInputProof.js.map +0 -1
  538. package/_cjs/core/actions/base/readKmsSignersContext.js +0 -11
  539. package/_cjs/core/actions/base/readKmsSignersContext.js.map +0 -1
  540. package/_cjs/core/actions/base/verifyHandlesCoprocessorSignatures.js +0 -31
  541. package/_cjs/core/actions/base/verifyHandlesCoprocessorSignatures.js.map +0 -1
  542. package/_cjs/core/actions/base/verifyInputProof.js +0 -24
  543. package/_cjs/core/actions/base/verifyInputProof.js.map +0 -1
  544. package/_cjs/core/actions/base/verifyZkProofCoprocessorSignatures.js +0 -17
  545. package/_cjs/core/actions/base/verifyZkProofCoprocessorSignatures.js.map +0 -1
  546. package/_cjs/core/actions/chain/createCoprocessorEip712Domain.js +0 -11
  547. package/_cjs/core/actions/chain/createCoprocessorEip712Domain.js.map +0 -1
  548. package/_cjs/core/actions/chain/createKmsDelegatedUserDecryptEip712.js +0 -17
  549. package/_cjs/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +0 -1
  550. package/_cjs/core/actions/chain/createKmsEip712Domain.js +0 -11
  551. package/_cjs/core/actions/chain/createKmsEip712Domain.js.map +0 -1
  552. package/_cjs/core/actions/chain/createKmsUserDecryptEip712.js +0 -16
  553. package/_cjs/core/actions/chain/createKmsUserDecryptEip712.js.map +0 -1
  554. package/_cjs/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.js +0 -8
  555. package/_cjs/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.js.map +0 -1
  556. package/_cjs/core/actions/chain/verifyKmsUserDecryptEip712.js +0 -8
  557. package/_cjs/core/actions/chain/verifyKmsUserDecryptEip712.js.map +0 -1
  558. package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js +0 -13
  559. package/_cjs/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +0 -1
  560. package/_cjs/core/kms/createKmsDelegatedUserDecryptEip712.js.map +0 -1
  561. package/_cjs/core/kms/createKmsUserDecryptEip712.js.map +0 -1
  562. package/_cjs/core/kms/fetchKmsSigncryptedShares-p.js.map +0 -1
  563. package/_cjs/core/kms/kmsDelegatedUserDecryptEip712Types.js.map +0 -1
  564. package/_cjs/core/kms/kmsExtraData.js +0 -82
  565. package/_cjs/core/kms/kmsExtraData.js.map +0 -1
  566. package/_cjs/core/kms/kmsUserDecryptEip712Types.js.map +0 -1
  567. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +0 -1
  568. package/_cjs/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +0 -1
  569. package/_cjs/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712.js.map +0 -1
  570. package/_cjs/core/utils-p/decrypt/verifyKmsUserDecryptEip712.js.map +0 -1
  571. package/_esm/core/actions/base/createVerifiedInputProofFromRawBytes.js +0 -7
  572. package/_esm/core/actions/base/createVerifiedInputProofFromRawBytes.js.map +0 -1
  573. package/_esm/core/actions/base/fetchKmsSigncryptedShares.js +0 -17
  574. package/_esm/core/actions/base/fetchKmsSigncryptedShares.js.map +0 -1
  575. package/_esm/core/actions/base/fetchVerifiedInputProof.js +0 -8
  576. package/_esm/core/actions/base/fetchVerifiedInputProof.js.map +0 -1
  577. package/_esm/core/actions/base/readKmsSignersContext.js +0 -10
  578. package/_esm/core/actions/base/readKmsSignersContext.js.map +0 -1
  579. package/_esm/core/actions/base/verifyHandlesCoprocessorSignatures.js +0 -35
  580. package/_esm/core/actions/base/verifyHandlesCoprocessorSignatures.js.map +0 -1
  581. package/_esm/core/actions/base/verifyInputProof.js +0 -22
  582. package/_esm/core/actions/base/verifyInputProof.js.map +0 -1
  583. package/_esm/core/actions/base/verifyZkProofCoprocessorSignatures.js +0 -14
  584. package/_esm/core/actions/base/verifyZkProofCoprocessorSignatures.js.map +0 -1
  585. package/_esm/core/actions/chain/createCoprocessorEip712Domain.js +0 -8
  586. package/_esm/core/actions/chain/createCoprocessorEip712Domain.js.map +0 -1
  587. package/_esm/core/actions/chain/createKmsDelegatedUserDecryptEip712.js +0 -15
  588. package/_esm/core/actions/chain/createKmsDelegatedUserDecryptEip712.js.map +0 -1
  589. package/_esm/core/actions/chain/createKmsEip712Domain.js +0 -8
  590. package/_esm/core/actions/chain/createKmsEip712Domain.js.map +0 -1
  591. package/_esm/core/actions/chain/createKmsUserDecryptEip712.js +0 -14
  592. package/_esm/core/actions/chain/createKmsUserDecryptEip712.js.map +0 -1
  593. package/_esm/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.js +0 -5
  594. package/_esm/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.js.map +0 -1
  595. package/_esm/core/actions/chain/verifyKmsUserDecryptEip712.js +0 -5
  596. package/_esm/core/actions/chain/verifyKmsUserDecryptEip712.js.map +0 -1
  597. package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js +0 -11
  598. package/_esm/core/actions/decrypt/decryptKmsSigncryptedShares.js.map +0 -1
  599. package/_esm/core/kms/createKmsDelegatedUserDecryptEip712.js.map +0 -1
  600. package/_esm/core/kms/createKmsUserDecryptEip712.js.map +0 -1
  601. package/_esm/core/kms/fetchKmsSigncryptedShares-p.js.map +0 -1
  602. package/_esm/core/kms/kmsDelegatedUserDecryptEip712Types.js.map +0 -1
  603. package/_esm/core/kms/kmsExtraData.js +0 -99
  604. package/_esm/core/kms/kmsExtraData.js.map +0 -1
  605. package/_esm/core/kms/kmsUserDecryptEip712Types.js.map +0 -1
  606. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +0 -1
  607. package/_esm/core/modules/relayer/module/fetchDelegatedUserDecrypt.js.map +0 -1
  608. package/_esm/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712.js.map +0 -1
  609. package/_esm/core/utils-p/decrypt/verifyKmsUserDecryptEip712.js.map +0 -1
  610. package/_types/core/actions/base/createVerifiedInputProofFromRawBytes.d.ts +0 -14
  611. package/_types/core/actions/base/createVerifiedInputProofFromRawBytes.d.ts.map +0 -1
  612. package/_types/core/actions/base/fetchKmsSigncryptedShares.d.ts +0 -41
  613. package/_types/core/actions/base/fetchKmsSigncryptedShares.d.ts.map +0 -1
  614. package/_types/core/actions/base/fetchVerifiedInputProof.d.ts +0 -14
  615. package/_types/core/actions/base/fetchVerifiedInputProof.d.ts.map +0 -1
  616. package/_types/core/actions/base/readKmsSignersContext.d.ts +0 -6
  617. package/_types/core/actions/base/readKmsSignersContext.d.ts.map +0 -1
  618. package/_types/core/actions/base/verifyHandlesCoprocessorSignatures.d.ts +0 -14
  619. package/_types/core/actions/base/verifyHandlesCoprocessorSignatures.d.ts.map +0 -1
  620. package/_types/core/actions/base/verifyInputProof.d.ts +0 -14
  621. package/_types/core/actions/base/verifyInputProof.d.ts.map +0 -1
  622. package/_types/core/actions/base/verifyZkProofCoprocessorSignatures.d.ts +0 -11
  623. package/_types/core/actions/base/verifyZkProofCoprocessorSignatures.d.ts.map +0 -1
  624. package/_types/core/actions/chain/createCoprocessorEip712Domain.d.ts +0 -7
  625. package/_types/core/actions/chain/createCoprocessorEip712Domain.d.ts.map +0 -1
  626. package/_types/core/actions/chain/createKmsDelegatedUserDecryptEip712.d.ts +0 -15
  627. package/_types/core/actions/chain/createKmsDelegatedUserDecryptEip712.d.ts.map +0 -1
  628. package/_types/core/actions/chain/createKmsEip712Domain.d.ts +0 -7
  629. package/_types/core/actions/chain/createKmsEip712Domain.d.ts.map +0 -1
  630. package/_types/core/actions/chain/createKmsUserDecryptEip712.d.ts +0 -14
  631. package/_types/core/actions/chain/createKmsUserDecryptEip712.d.ts.map +0 -1
  632. package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts +0 -7
  633. package/_types/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.d.ts.map +0 -1
  634. package/_types/core/actions/chain/verifyKmsUserDecryptEip712.d.ts +0 -7
  635. package/_types/core/actions/chain/verifyKmsUserDecryptEip712.d.ts.map +0 -1
  636. package/_types/core/actions/decrypt/decryptKmsSigncryptedShares.d.ts +0 -13
  637. package/_types/core/actions/decrypt/decryptKmsSigncryptedShares.d.ts.map +0 -1
  638. package/_types/core/kms/createKmsDelegatedUserDecryptEip712.d.ts +0 -15
  639. package/_types/core/kms/createKmsDelegatedUserDecryptEip712.d.ts.map +0 -1
  640. package/_types/core/kms/createKmsUserDecryptEip712.d.ts +0 -26
  641. package/_types/core/kms/createKmsUserDecryptEip712.d.ts.map +0 -1
  642. package/_types/core/kms/fetchKmsSigncryptedShares-p.d.ts.map +0 -1
  643. package/_types/core/kms/kmsDelegatedUserDecryptEip712Types.d.ts +0 -3
  644. package/_types/core/kms/kmsDelegatedUserDecryptEip712Types.d.ts.map +0 -1
  645. package/_types/core/kms/kmsExtraData.d.ts +0 -25
  646. package/_types/core/kms/kmsExtraData.d.ts.map +0 -1
  647. package/_types/core/kms/kmsUserDecryptEip712Types.d.ts +0 -3
  648. package/_types/core/kms/kmsUserDecryptEip712Types.d.ts.map +0 -1
  649. package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts.map +0 -1
  650. package/_types/core/modules/relayer/module/fetchDelegatedUserDecrypt.d.ts.map +0 -1
  651. package/_types/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712.d.ts +0 -14
  652. package/_types/core/utils-p/decrypt/verifyKmsDelegatedUserDecryptEip712.d.ts.map +0 -1
  653. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712.d.ts +0 -14
  654. package/_types/core/utils-p/decrypt/verifyKmsUserDecryptEip712.d.ts.map +0 -1
  655. package/core/actions/base/createVerifiedInputProofFromRawBytes.ts +0 -24
  656. package/core/actions/base/fetchKmsSigncryptedShares.ts +0 -83
  657. package/core/actions/base/fetchVerifiedInputProof.ts +0 -25
  658. package/core/actions/base/readKmsSignersContext.ts +0 -20
  659. package/core/actions/base/verifyHandlesCoprocessorSignatures.ts +0 -60
  660. package/core/actions/base/verifyInputProof.ts +0 -45
  661. package/core/actions/base/verifyZkProofCoprocessorSignatures.ts +0 -32
  662. package/core/actions/chain/createCoprocessorEip712Domain.ts +0 -16
  663. package/core/actions/chain/createKmsDelegatedUserDecryptEip712.ts +0 -36
  664. package/core/actions/chain/createKmsEip712Domain.ts +0 -16
  665. package/core/actions/chain/createKmsUserDecryptEip712.ts +0 -34
  666. package/core/actions/chain/verifyKmsDelegatedUserDecryptEip712.ts +0 -16
  667. package/core/actions/chain/verifyKmsUserDecryptEip712.ts +0 -16
  668. package/core/actions/decrypt/decryptKmsSigncryptedShares.ts +0 -34
  669. package/core/kms/kmsExtraData.ts +0 -127
  670. /package/core/modules/relayer/module/{fetchDelegatedUserDecrypt.ts → fetchDelegatedUserDecryptV1.ts} +0 -0
@@ -1,21 +1,20 @@
1
1
  import type { KmsSignersContext } from '../types/kmsSignersContext.js';
2
2
  import type { BytesHex, ChecksummedAddress, Uint256BigInt } from '../types/primitives.js';
3
3
  import type { FhevmRuntime } from '../types/coreFhevmRuntime.js';
4
- import {
5
- assertIsKmsSignersContext,
6
- createKmsSignersContext,
7
- kmsSignersContextToExtraData,
8
- } from './KmsSignersContext-p.js';
4
+ import type { KmsExtraData } from '../types/kms-p.js';
5
+ import { assertIsKmsSignersContext, createKmsSignersContext } from './KmsSignersContext-p.js';
9
6
  import { getCurrentKmsContextId } from './getCurrentKmsContextId-p.js';
10
7
  import { getCurrentKmsContextAndEpoch } from './getCurrentKmsContextAndEpoch-p.js';
11
8
  import { getHostContractVersion, isVersionStrictlyBefore } from './HostContractVersion-p.js';
12
9
  import {
13
10
  assertIsKmsExtraData,
14
- EXTRA_DATA_V1,
15
- EXTRA_DATA_V2,
16
- fromKmsExtraData,
17
- toKmsExtraData,
18
- } from '../kms/kmsExtraData.js';
11
+ createKmsExtraData,
12
+ createKmsExtraDataV1,
13
+ createKmsExtraDataV2,
14
+ equalsKmsExtraData,
15
+ fromKmsExtraDataBytesHex,
16
+ isKmsExtraDataCompatibleWithKmsVerifier,
17
+ } from '../kms/kmsExtraData-p.js';
19
18
  import { getKmsContextSignersAndThresholdFromExtraData } from './getKmsContextSignersAndThresholdFromExtraData-p.js';
20
19
  import { getKmsSignersAndThreshold } from './getKmsContextSignersAndThreshold-p.js';
21
20
 
@@ -31,29 +30,72 @@ type Parameters = {
31
30
  readonly kmsVerifierAddress: ChecksummedAddress;
32
31
  readonly protocolConfigAddress: ChecksummedAddress | undefined;
33
32
  readonly forceRefresh?: boolean | undefined;
34
- readonly kmsContextId?: Uint256BigInt | undefined;
35
- readonly kmsEpochId?: Uint256BigInt | undefined;
33
+ };
34
+
35
+ type ParametersWithExtraData = Parameters & {
36
+ readonly extraData: KmsExtraData;
37
+ };
38
+
39
+ type ParametersWithOptionalExtraData = Parameters & {
40
+ readonly extraData?: KmsExtraData | undefined;
36
41
  };
37
42
 
38
43
  type ReturnType = KmsSignersContext;
39
44
 
40
45
  ////////////////////////////////////////////////////////////////////////////////
41
46
 
42
- export async function readKmsSignersContext(context: Context, parameters: Parameters): Promise<ReturnType> {
47
+ export async function readCurrentKmsSignersContext(context: Context, parameters: Parameters): Promise<ReturnType> {
48
+ return _readKmsSignersContext(context, parameters);
49
+ }
50
+
51
+ ////////////////////////////////////////////////////////////////////////////////
52
+
53
+ /**
54
+ * Reads the {@link KmsSignersContext} for a caller-provided `extraData`.
55
+ *
56
+ * Accepts an `extraData` of any version (v0, v1, v2, …); the underlying resolver
57
+ * selects the right protocol path and verifies the version is compatible with
58
+ * the on-chain KMSVerifier, throwing if it is not.
59
+ */
60
+ export async function readKmsSignersContextFromExtraData(
61
+ context: Context,
62
+ parameters: ParametersWithExtraData,
63
+ ): Promise<ReturnType> {
64
+ assertIsKmsExtraData(parameters.extraData, {});
65
+ return _readKmsSignersContext(context, parameters);
66
+ }
67
+
68
+ ////////////////////////////////////////////////////////////////////////////////
69
+
70
+ async function _readKmsSignersContext(
71
+ context: Context,
72
+ parameters: ParametersWithOptionalExtraData,
73
+ ): Promise<ReturnType> {
43
74
  // TTL-cached
44
75
  const kmsVerifierVersion = await getHostContractVersion(context, {
45
76
  address: parameters.kmsVerifierAddress,
46
77
  });
47
78
 
79
+ if (parameters.extraData !== undefined) {
80
+ if (!isKmsExtraDataCompatibleWithKmsVerifier(parameters.extraData, kmsVerifierVersion)) {
81
+ throw new Error(
82
+ `KmsExtraData ${parameters.extraData.toBytesHex()} is not compatible with ${kmsVerifierVersion.contractName} ${kmsVerifierVersion.version}`,
83
+ );
84
+ }
85
+ }
86
+
48
87
  if (isVersionStrictlyBefore(kmsVerifierVersion, { major: 0, minor: 2 })) {
88
+ // extraData.version = 0 only
49
89
  return _readKmsSignersContext_Protocol_11(context, parameters);
50
90
  }
51
91
 
52
92
  if (isVersionStrictlyBefore(kmsVerifierVersion, { major: 0, minor: 4 })) {
93
+ // extraData.version = 0 or 1 only
53
94
  return _readKmsSignersContext_Protocol_12_13(context, parameters);
54
95
  }
55
96
 
56
- return _readKmsSignersContext_Protocol_14(context, parameters);
97
+ // any extraData.version
98
+ return _readKmsSignersContext_Protocol_14_or_higher(context, parameters);
57
99
  }
58
100
 
59
101
  ////////////////////////////////////////////////////////////////////////////////
@@ -62,10 +104,6 @@ export async function readKmsSignersContext(context: Context, parameters: Parame
62
104
  // context ID is 0. Any other value is invalid and should throw.
63
105
  // eslint-disable-next-line @typescript-eslint/naming-convention
64
106
  async function _readKmsSignersContext_Protocol_11(context: Context, parameters: Parameters): Promise<ReturnType> {
65
- if (parameters.kmsContextId !== undefined && parameters.kmsContextId !== 0n) {
66
- throw new Error('Impossible on protocol v0.11.0');
67
- }
68
-
69
107
  // TTL-Cached
70
108
  const c = await getKmsSignersAndThreshold(context, parameters);
71
109
 
@@ -84,40 +122,44 @@ async function _readKmsSignersContext_Protocol_11(context: Context, parameters:
84
122
 
85
123
  // Protocol v0.12.0 / v0.13.0 (KMSVerifier = v0.2.0 / v0.3.0)
86
124
  // eslint-disable-next-line @typescript-eslint/naming-convention
87
- async function _readKmsSignersContext_Protocol_12_13(context: Context, parameters: Parameters): Promise<ReturnType> {
88
- if (parameters.kmsEpochId !== undefined && parameters.kmsEpochId !== 0n) {
89
- throw new Error('kmsEpochId should be 0 on protocol v0.12.0 / v0.13.0');
90
- }
91
-
92
- let kmsContextId: Uint256BigInt;
93
- if (parameters.kmsContextId === undefined) {
125
+ async function _readKmsSignersContext_Protocol_12_13(
126
+ context: Context,
127
+ parameters: ParametersWithOptionalExtraData,
128
+ ): Promise<ReturnType> {
129
+ // On protocol v0.12/v0.13, the KMS signers and threshold are looked up by
130
+ // `extraData` (which encodes the KMS context id). The caller may pass one in;
131
+ // if not, we derive it from the chain's current KMS context id using the v1
132
+ // extraData encoding (version byte + context id, no epoch).
133
+ let extraData: KmsExtraData;
134
+
135
+ if (parameters.extraData === undefined) {
94
136
  // TTL-Cached
95
- kmsContextId = await getCurrentKmsContextId(context, parameters);
137
+ const kmsContextId = await getCurrentKmsContextId(context, parameters);
138
+ extraData = createKmsExtraDataV1({
139
+ kmsContextId,
140
+ });
96
141
  } else {
97
- if (parameters.kmsContextId === 0n) {
98
- throw new Error('kmsContextId cannot be 0 on protocol v0.12.0 / v0.13.0');
99
- }
100
- kmsContextId = parameters.kmsContextId;
142
+ // v0 or v1
143
+ extraData = parameters.extraData;
101
144
  }
102
145
 
103
- const extraData = toKmsExtraData({
104
- version: EXTRA_DATA_V1,
105
- kmsContextId,
106
- kmsEpochId: 0n as Uint256BigInt,
107
- });
108
-
109
146
  // Permanent-Cached
110
- const c = await getKmsContextSignersAndThresholdFromExtraData(context, {
111
- ...parameters,
112
- extraData,
113
- });
147
+ // On protocol v0.12/v0.13, getKmsContextSignersAndThresholdFromExtraData
148
+ // supports extraData v0 and v1 only.
149
+ const { signers: kmsSigners, threshold: kmsSignerThreshold } = await getKmsContextSignersAndThresholdFromExtraData(
150
+ context,
151
+ {
152
+ ...parameters,
153
+ extraData,
154
+ },
155
+ );
114
156
 
115
157
  return createKmsSignersContext(new WeakRef(context.runtime), {
116
158
  ...parameters,
117
- kmsContextId,
159
+ kmsContextId: extraData.kmsContextId,
118
160
  kmsEpochId: 0n as Uint256BigInt,
119
- kmsSigners: c.signers,
120
- kmsSignerThreshold: c.threshold,
161
+ kmsSigners,
162
+ kmsSignerThreshold,
121
163
  });
122
164
  }
123
165
 
@@ -125,57 +167,54 @@ async function _readKmsSignersContext_Protocol_12_13(context: Context, parameter
125
167
 
126
168
  // Protocol v0.14.0+ (KMSVerifier = v0.4.0+)
127
169
  // eslint-disable-next-line @typescript-eslint/naming-convention
128
- async function _readKmsSignersContext_Protocol_14(context: Context, parameters: Parameters): Promise<ReturnType> {
170
+ async function _readKmsSignersContext_Protocol_14_or_higher(
171
+ context: Context,
172
+ parameters: ParametersWithOptionalExtraData,
173
+ ): Promise<ReturnType> {
129
174
  if (parameters.protocolConfigAddress === undefined) {
130
175
  throw new Error('protocolConfigAddress is required on protocol v0.14.0+');
131
176
  }
132
177
  const protocolConfigAddress = parameters.protocolConfigAddress;
133
178
 
134
- let kmsContextId: Uint256BigInt;
135
- if (parameters.kmsContextId === undefined) {
136
- // TTL-Cached
137
- ({ contextId: kmsContextId } = await getCurrentKmsContextAndEpoch(context, { protocolConfigAddress }));
138
- } else {
139
- if (parameters.kmsContextId === 0n) {
140
- throw new Error('kmsContextId cannot be 0 on protocol v0.14.0+');
141
- }
142
- kmsContextId = parameters.kmsContextId;
143
- }
179
+ let extraData: KmsExtraData;
144
180
 
145
- let kmsEpochId: Uint256BigInt;
146
- if (parameters.kmsEpochId === undefined) {
181
+ if (parameters.extraData === undefined) {
147
182
  // TTL-Cached
148
- ({ epochId: kmsEpochId } = await getCurrentKmsContextAndEpoch(context, { protocolConfigAddress }));
183
+ const { contextId, epochId } = await getCurrentKmsContextAndEpoch(context, { protocolConfigAddress });
184
+ extraData = createKmsExtraDataV2({
185
+ kmsContextId: contextId,
186
+ kmsEpochId: epochId,
187
+ });
149
188
  } else {
150
- if (parameters.kmsEpochId === 0n) {
151
- throw new Error('kmsEpochId cannot be 0 on protocol v0.14.0+');
152
- }
153
- kmsEpochId = parameters.kmsEpochId;
189
+ // any version: v0, v1, v2, ... vn
190
+ extraData = parameters.extraData;
154
191
  }
155
192
 
156
- const extraData = toKmsExtraData({
157
- version: EXTRA_DATA_V2,
158
- kmsContextId,
159
- kmsEpochId,
160
- });
161
-
162
193
  // Permanent-Cached
163
- const c = await getKmsContextSignersAndThresholdFromExtraData(context, {
164
- ...parameters,
165
- extraData,
166
- });
194
+ // May revert if extraData.version is incompatible (see `getKmsContextSignersAndThresholdFromExtraData` comments)
195
+ const { signers: kmsSigners, threshold: kmsSignerThreshold } = await getKmsContextSignersAndThresholdFromExtraData(
196
+ context,
197
+ {
198
+ ...parameters,
199
+ extraData,
200
+ },
201
+ );
167
202
 
168
203
  return createKmsSignersContext(new WeakRef(context.runtime), {
169
204
  ...parameters,
170
- kmsContextId,
171
- kmsEpochId,
172
- kmsSigners: c.signers,
173
- kmsSignerThreshold: c.threshold,
205
+ kmsContextId: extraData.kmsContextId,
206
+ kmsEpochId: extraData.kmsEpochId,
207
+ kmsSigners,
208
+ kmsSignerThreshold,
174
209
  });
175
210
  }
176
211
 
177
212
  ////////////////////////////////////////////////////////////////////////////////
178
213
 
214
+ ////////////////////////////////////////////////////////////////////////////////
215
+
216
+ export type ReconcileMode = 'exact' | 'strict' | 'loose';
217
+
179
218
  /**
180
219
  * Reconciles the KMS signers context used by the SDK with the one the relayer
181
220
  * actually used when forwarding the decryption request to KMS nodes.
@@ -190,8 +229,10 @@ async function _readKmsSignersContext_Protocol_14(context: Context, parameters:
190
229
  *
191
230
  * ### Nomenclature
192
231
  *
193
- * - `requestedExtraData` — `kmsSignersContextToExtraData(requestedKmsSignersContext)`.
194
- * - `relayerKmsContextId` — `fromKmsExtraData(relayerExtraData).kmsContextId`.
232
+ * - `requestedKmsExtraData` — `createKmsExtraData({ kmsContextId, kmsEpochId })`
233
+ * derived from `requestedKmsSignersContext`.
234
+ * - `relayerKmsExtraData` — `fromKmsExtraDataBytesHex(relayerKmsExtraDataBytesHex)`
235
+ * (its `.kmsContextId` / `.kmsEpochId`).
195
236
  *
196
237
  * ### Host-Contract Compatibility
197
238
  *
@@ -202,69 +243,70 @@ async function _readKmsSignersContext_Protocol_14(context: Context, parameters:
202
243
  * - host-contracts v12 and v13 support `extraData` v0 and v1.
203
244
  * - host-contracts v14 support `extraData` v0, v1, and v2.
204
245
  *
205
- * ### Resolution (checked in order)
246
+ * ### Resolution (checked in order, then by `mode`)
206
247
  *
207
- * 1. `relayerExtraData === requestedExtraData` → exact byte match, return
208
- * `requestedKmsSignersContext`. This is the **only** path that trusts cached data.
209
- * 2. In `'exact'` mode, any byte mismatch **always throw**. This mode does
210
- * not parse, refresh, or reconcile different `extraData`.
211
- * 3. Serialization version mismatch → **always throw**. The SDK and relayer must
212
- * agree on the `extraData` encoding format, even if the context ID is the same.
213
- * 4. Context IDs differ **full on-chain refetch**. The cached context is never
214
- * reused, because any mismatch means on-chain state may have diverged
215
- * (rotation, destruction, signer changes, etc.).
216
- * - Context is **valid** on-chain (current or non-destroyed) return it.
217
- * - Context is **destroyed or out of range** → throw.
248
+ * 1. `relayerKmsExtraData` equals `requestedKmsExtraData` → return
249
+ * `requestedKmsSignersContext`. This is the **only** path that trusts cached
250
+ * data, and it applies in every mode.
251
+ * 2. Otherwise, in `'exact'` mode → **throw**. This mode never parses, refreshes,
252
+ * or reconciles differing `extraData`.
253
+ * 3. `extraData` serialization version mismatch **throw** (`'strict'`/`'loose'`).
254
+ * The SDK and relayer must agree on the encoding format, even for the same context ID.
255
+ * 4. Versions match but context/epoch differ → force a **full on-chain refetch**
256
+ * (cached data is never reused, since a mismatch means on-chain state may have
257
+ * diverged: rotation, destruction, signer/epoch changes). The accept criterion
258
+ * then depends on `mode`:
259
+ * - `'strict'` → accept **only** if the relayer's context equals the *current*
260
+ * on-chain context (both `kmsContextId` and `kmsEpochId`); otherwise throw.
261
+ * - `'loose'` → accept **any** on-chain-valid context (non-destroyed, in range),
262
+ * current or not; throw only if destroyed / out of range.
218
263
  *
219
264
  * ### Modes
220
265
  *
221
- * - `'exact'` — Accept only step 1 (byte-for-byte `extraData` equality).
222
- * Rejects any relayer/context drift without parsing or on-chain recovery.
223
- * - `'strict'` — Accept step 1 (exact match) or both `relayerKmsContextId === currentKmsContextId`
224
- * and `relayerKmsEpochId === currentKmsEpochId`. Rejects valid-but-not-current contexts.
225
- * The epoch check is required because RFC 005 introduces same-context epoch rotations
226
- * (new shares, same party set) — a stale epoch must be rejected even if the context matches.
266
+ * - `'exact'` — Accept only step 1 (`extraData` equality). Rejects any
267
+ * relayer/context drift without parsing or on-chain recovery.
268
+ * - `'strict'` — Accept step 1, or a relayer context whose `kmsContextId` **and**
269
+ * `kmsEpochId` equal the current on-chain values. Rejects valid-but-not-current
270
+ * contexts. The epoch check is required because RFC 005 introduces same-context
271
+ * epoch rotations (new shares, same party set) — a stale epoch must be rejected
272
+ * even when the context ID matches.
227
273
  * - `'loose'` — Accept any on-chain valid context (non-destroyed, in range),
228
274
  * regardless of whether it is current. Covers context rotations in either direction.
229
275
  */
230
-
231
- ////////////////////////////////////////////////////////////////////////////////
232
-
233
- export type ReconcileMode = 'exact' | 'strict' | 'loose';
234
-
235
276
  export async function reconcileKmsSignersContext(
236
277
  context: Context,
237
278
  parameters: {
238
279
  readonly kmsVerifierAddress: ChecksummedAddress;
239
280
  readonly protocolConfigAddress: ChecksummedAddress | undefined;
240
281
  readonly requestedKmsSignersContext: KmsSignersContext;
241
- readonly relayerExtraData: BytesHex;
282
+ readonly relayerKmsExtraDataBytesHex: BytesHex;
242
283
  readonly mode: ReconcileMode;
243
284
  },
244
285
  ): Promise<KmsSignersContext> {
245
- const { kmsVerifierAddress, protocolConfigAddress, requestedKmsSignersContext, relayerExtraData, mode } = parameters;
286
+ const { kmsVerifierAddress, protocolConfigAddress, requestedKmsSignersContext, relayerKmsExtraDataBytesHex, mode } =
287
+ parameters;
288
+
289
+ const relayerKmsExtraData = fromKmsExtraDataBytesHex(relayerKmsExtraDataBytesHex);
246
290
 
247
- assertIsKmsExtraData(relayerExtraData, {});
248
291
  assertIsKmsSignersContext(requestedKmsSignersContext, {});
249
292
 
250
- const requestedExtraData = kmsSignersContextToExtraData(requestedKmsSignersContext);
293
+ const requestedKmsExtraData = createKmsExtraData({
294
+ kmsContextId: requestedKmsSignersContext.id,
295
+ kmsEpochId: requestedKmsSignersContext.epochId,
296
+ });
251
297
 
252
298
  // 1. Exact match — the relayer used the same context as the SDK.
253
- if (relayerExtraData === requestedExtraData) {
299
+ if (equalsKmsExtraData(relayerKmsExtraData, requestedKmsExtraData)) {
254
300
  return requestedKmsSignersContext;
255
301
  }
256
302
 
257
303
  if (mode === 'exact') {
258
304
  throw new Error(
259
- `Exact reconciliation failed: relayer extraData ${relayerExtraData} ` +
260
- `does not match requested extraData ${requestedExtraData}.`,
305
+ `Exact reconciliation failed: relayer extraData ${relayerKmsExtraData.toBytesHex()} ` +
306
+ `does not match requested extraData ${requestedKmsExtraData.toBytesHex()}.`,
261
307
  );
262
308
  }
263
309
 
264
- // Bytes differ — extract and compare serialization versions.
265
- const relayerKmsExtraData = fromKmsExtraData(relayerExtraData);
266
- const requestedKmsExtraData = fromKmsExtraData(requestedExtraData);
267
-
268
310
  // Reject if extraData serialization version differs.
269
311
  if (relayerKmsExtraData.version !== requestedKmsExtraData.version) {
270
312
  throw new Error(
@@ -282,7 +324,7 @@ export async function reconcileKmsSignersContext(
282
324
  if (mode === 'strict') {
283
325
  // `readKmsSignersContext` with `forceRefresh` fetches the current context.
284
326
  // If `relayerKmsContextId` matches current, we're good.
285
- const currentContext = await readKmsSignersContext(context, {
327
+ const currentContext = await readCurrentKmsSignersContext(context, {
286
328
  kmsVerifierAddress,
287
329
  protocolConfigAddress,
288
330
  forceRefresh: true,
@@ -301,11 +343,10 @@ export async function reconcileKmsSignersContext(
301
343
  // 3. Loose mode — accept any valid (non-destroyed, in-range) context.
302
344
  // `readKmsSignersContext` with `forceRefresh` + specific `kmsContextId`/`kmsEpochId` will
303
345
  // throw if the context is destroyed or out of range.
304
- return readKmsSignersContext(context, {
346
+ return readKmsSignersContextFromExtraData(context, {
305
347
  kmsVerifierAddress,
306
348
  protocolConfigAddress,
307
- kmsContextId: relayerKmsContextId,
308
- kmsEpochId: relayerKmsEpochId,
309
349
  forceRefresh: true,
350
+ extraData: relayerKmsExtraData,
310
351
  });
311
352
  }
@@ -7,8 +7,37 @@ import type { FhevmChain } from '../types/fhevmChain.js';
7
7
  import type { TkmsVersion } from '../../wasm/tkms/KmsLibApi.js';
8
8
  import { assertIsKmsSignersContext } from '../host-contracts/KmsSignersContext-p.js';
9
9
  import { ensure0x } from '../base/string.js';
10
- import { assertIsKmsExtraData } from './kmsExtraData.js';
11
10
  import { reconcileKmsSignersContext } from '../host-contracts/readKmsSignersContext-p.js';
11
+ import { recoverSigners } from '../utils-p/runtime/recoverSigners.js';
12
+
13
+ ////////////////////////////////////////////////////////////////////////////////
14
+
15
+ /**
16
+ * EIP-712 types for the KMS `UserDecryptResponseVerification` structure that each
17
+ * KMS node signs per response share (see gateway `Decryption.sol`).
18
+ *
19
+ * CRITICAL: field order and types are authoritative — they define the EIP-712
20
+ * type hash and must match the on-chain struct exactly.
21
+ *
22
+ * Note: `ctHandles` is declared `bytes32[]` to match `Decryption.sol` (the tkms
23
+ * WASM doc comments it as `uint256[]`; both encode the same 32 bytes, but the
24
+ * type string participates in the type hash — if verification unexpectedly
25
+ * fails, `uint256[]` is the first thing to try).
26
+ */
27
+ const kmsUserDecryptResponseEip712Types = {
28
+ EIP712Domain: [
29
+ { name: 'name', type: 'string' },
30
+ { name: 'version', type: 'string' },
31
+ { name: 'chainId', type: 'uint256' },
32
+ { name: 'verifyingContract', type: 'address' },
33
+ ],
34
+ UserDecryptResponseVerification: [
35
+ { name: 'publicKey', type: 'bytes' },
36
+ { name: 'ctHandles', type: 'bytes32[]' },
37
+ { name: 'userDecryptedShare', type: 'bytes' },
38
+ { name: 'extraData', type: 'bytes' },
39
+ ],
40
+ } as const;
12
41
 
13
42
  ////////////////////////////////////////////////////////////////////////////////
14
43
 
@@ -103,6 +132,60 @@ function assertUniformExtraData(shares: readonly KmsSigncryptedShare[]): BytesHe
103
132
  return firstExtraData;
104
133
  }
105
134
 
135
+ /**
136
+ * Helper:
137
+ * Verifies the EIP-712 signature of a single KMS signcrypted share.
138
+ *
139
+ * Rebuilds the `UserDecryptResponseVerification` payload the KMS node signed,
140
+ * recovers the signer, and asserts it belongs to the reconciled KMS signers
141
+ * context. This is an independent, JS-only check — the same verification is also
142
+ * performed inside the tkms WASM during reconstruction (`verify=true`), so this
143
+ * is primarily a test/defense-in-depth pass and is not required for correctness.
144
+ *
145
+ * @throws If the signer cannot be recovered, or is not a known KMS signer.
146
+ */
147
+ export async function verifyKmsSigncryptedShare(
148
+ context: Context,
149
+ parameters: {
150
+ readonly share: KmsSigncryptedShare;
151
+ readonly metadata: KmsSigncryptedSharesMetadata;
152
+ readonly transportPublicKey: BytesHex;
153
+ },
154
+ ): Promise<void> {
155
+ const { share, metadata, transportPublicKey } = parameters;
156
+
157
+ // Rebuild the exact EIP-712 message each KMS node signs per response share
158
+ // (gateway Decryption.sol `UserDecryptResponseVerification`). `userDecryptedShare`
159
+ // is the serialized share bytes carried in `share.payload`.
160
+ const message = {
161
+ publicKey: transportPublicKey,
162
+ ctHandles: metadata.handles.map((h) => h.bytes32Hex),
163
+ userDecryptedShare: ensure0x(share.payload),
164
+ // v0 extraData is signed as '0x' (never '0x00').
165
+ extraData: share.extraData === '' || share.extraData === '00' ? '0x' : ensure0x(share.extraData),
166
+ };
167
+
168
+ // Recover the signer of this share. The KMS EIP-712 domain lives in `metadata`.
169
+ const [recoveredAddress] = await recoverSigners(context, {
170
+ domain: metadata.eip712Domain,
171
+ types: kmsUserDecryptResponseEip712Types,
172
+ primaryType: 'UserDecryptResponseVerification',
173
+ signatures: [ensure0x(share.signature)],
174
+ message,
175
+ });
176
+
177
+ if (recoveredAddress === undefined) {
178
+ throw new Error('Failed to recover signer from KMS signcrypted share signature.');
179
+ }
180
+
181
+ // The recovered signer must be one of the reconciled KMS signers (case-insensitive).
182
+ if (!metadata.kmsSignersContext.has(recoveredAddress)) {
183
+ throw new Error(
184
+ `KMS signcrypted share signature was not signed by a known KMS signer (recovered ${recoveredAddress}).`,
185
+ );
186
+ }
187
+ }
188
+
106
189
  /**
107
190
  * Creates a validated {@link KmsSigncryptedShares} instance.
108
191
  *
@@ -121,6 +204,7 @@ export async function createKmsSigncryptedShares(
121
204
  },
122
205
  ): Promise<KmsSigncryptedShares> {
123
206
  const { metadata, shares } = parameters;
207
+
124
208
  /*
125
209
  TODO: add an optional signature verification pass.
126
210
  (13 signatures verifications. Could be CPU costly)
@@ -140,14 +224,13 @@ export async function createKmsSigncryptedShares(
140
224
  assertIsKmsSignersContext(metadata.kmsSignersContext, {});
141
225
 
142
226
  // Extract the common extraData from all shares and validate its format.
143
- const relayerExtraData: BytesHex = ensure0x(assertUniformExtraData(shares));
144
- assertIsKmsExtraData(relayerExtraData, {});
227
+ const relayerKmsExtraDataBytesHex: BytesHex = ensure0x(assertUniformExtraData(shares));
145
228
 
146
229
  // Reconcile KMS signer context using 'loose' mode.
147
230
  const reconciledKmsSignersContext: KmsSignersContext = await reconcileKmsSignersContext(context, {
148
231
  kmsVerifierAddress: context.chain.fhevm.contracts.kmsVerifier.address as ChecksummedAddress,
149
232
  protocolConfigAddress: context.chain.fhevm.contracts.protocolConfig?.address as ChecksummedAddress | undefined,
150
- relayerExtraData,
233
+ relayerKmsExtraDataBytesHex,
151
234
  requestedKmsSignersContext: metadata.kmsSignersContext,
152
235
  mode: 'loose',
153
236
  });
@@ -6,11 +6,13 @@ import type { FhevmRuntime } from '../types/coreFhevmRuntime.js';
6
6
  import type { ClearValueType, SolidityPrimitiveTypeName } from '../types/fheType.js';
7
7
  import type { NonEmptyReadonlyArray } from '../types/utils.js';
8
8
  import type { ClearValue, Handle } from '../types/encryptedTypes-p.js';
9
+ import type { KmsExtraData } from '../types/kms-p.js';
9
10
  import { concatBytesHex } from '../base/bytes.js';
10
11
  import { abiEncodeClearValues, createClearValueArray } from '../handle/ClearValue.js';
11
12
  import { toClearValueType } from '../handle/FheType.js';
12
13
  import { kmsSignersContextToExtraData } from '../host-contracts/KmsSignersContext-p.js';
13
14
  import { verifyKmsPublicDecryptEip712 } from './verifyKmsPublicDecryptEip712-p.js';
15
+ import { EXTRA_DATA_V0 } from './kmsExtraData-p.js';
14
16
 
15
17
  //////////////////////////////////////////////////////////////////////////////
16
18
 
@@ -89,7 +91,7 @@ type Parameters = {
89
91
  readonly originToken: symbol;
90
92
  readonly orderedHandles: readonly Handle[];
91
93
  readonly orderedAbiEncodedClearValues: BytesHex;
92
- readonly kmsPublicDecryptEIP712Signatures: readonly Bytes65Hex[];
94
+ readonly kmsPublicDecryptEip712Signatures: readonly Bytes65Hex[];
93
95
  readonly kmsSignersContext: KmsSignersContext;
94
96
  };
95
97
 
@@ -108,7 +110,7 @@ export async function createPublicDecryptionProof(
108
110
  const {
109
111
  orderedHandles: orderedEncryptedValues,
110
112
  orderedAbiEncodedClearValues,
111
- kmsPublicDecryptEIP712Signatures,
113
+ kmsPublicDecryptEip712Signatures,
112
114
  kmsSignersContext,
113
115
  originToken,
114
116
  } = parameters;
@@ -117,7 +119,7 @@ export async function createPublicDecryptionProof(
117
119
  // Compute extraData using KmsSignersContext
118
120
  //////////////////////////////////////////////////////////////////////////////
119
121
 
120
- const extraData = kmsSignersContextToExtraData(kmsSignersContext);
122
+ const extraData: KmsExtraData = kmsSignersContextToExtraData(kmsSignersContext);
121
123
 
122
124
  ////////////////////////////////////////////////////////////////////////////
123
125
  //
@@ -125,7 +127,7 @@ export async function createPublicDecryptionProof(
125
127
  //
126
128
  ////////////////////////////////////////////////////////////////////////////
127
129
 
128
- const signedExtraData = extraData === ('0x00' as BytesHex) ? ('0x' as BytesHex) : extraData;
130
+ const signedExtraDataBytesHex = extraData.version === EXTRA_DATA_V0 ? ('0x' as BytesHex) : extraData.toBytesHex();
129
131
 
130
132
  //////////////////////////////////////////////////////////////////////////////
131
133
  // Compute the proof as numSigners + KMS signatures + extraData
@@ -133,15 +135,15 @@ export async function createPublicDecryptionProof(
133
135
 
134
136
  const packedNumSigners: BytesHex = context.runtime.ethereum.encodePacked({
135
137
  types: ['uint8'],
136
- values: [kmsPublicDecryptEIP712Signatures.length],
138
+ values: [kmsPublicDecryptEip712Signatures.length],
137
139
  });
138
140
 
139
141
  const packedSignatures = context.runtime.ethereum.encodePacked({
140
- types: Array(kmsPublicDecryptEIP712Signatures.length).fill('bytes') as string[],
141
- values: kmsPublicDecryptEIP712Signatures,
142
+ types: Array(kmsPublicDecryptEip712Signatures.length).fill('bytes') as string[],
143
+ values: kmsPublicDecryptEip712Signatures,
142
144
  });
143
145
 
144
- const decryptionProof: BytesHex = concatBytesHex([packedNumSigners, packedSignatures, signedExtraData]);
146
+ const decryptionProof: BytesHex = concatBytesHex([packedNumSigners, packedSignatures, signedExtraDataBytesHex]);
145
147
 
146
148
  //////////////////////////////////////////////////////////////////////////////
147
149
  // Deserialize ordered decrypted result
@@ -176,6 +178,6 @@ export async function createPublicDecryptionProof(
176
178
  decryptionProof: decryptionProof,
177
179
  orderedClearValues: orderedDecryptedFhevmHandles,
178
180
  orderedAbiEncodedClearValues: orderedAbiEncodedDecryptedFhevmHandles.abiEncodedClearValues,
179
- extraData: signedExtraData,
181
+ extraData: signedExtraDataBytesHex,
180
182
  });
181
183
  }