@fhevm/sdk 1.1.0-alpha.7 → 1.1.0-alpha.9

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 (259) hide show
  1. package/README.md +5 -5
  2. package/_cjs/core/_version.js +1 -1
  3. package/_cjs/core/actions/encrypt/encryptValue.js +2 -1
  4. package/_cjs/core/actions/encrypt/encryptValue.js.map +1 -1
  5. package/_cjs/core/actions/encrypt/encryptValues.js +2 -1
  6. package/_cjs/core/actions/encrypt/encryptValues.js.map +1 -1
  7. package/_cjs/core/actions/encrypt/generateZkProof.js +2 -1
  8. package/_cjs/core/actions/encrypt/generateZkProof.js.map +1 -1
  9. package/_cjs/core/actions/host/readKmsVerifierContractData.js +1 -1
  10. package/_cjs/core/actions/host/readKmsVerifierContractData.js.map +1 -1
  11. package/_cjs/core/base/cachedFetch.js +1 -1
  12. package/_cjs/core/base/cachedFetch.js.map +1 -1
  13. package/_cjs/core/handle/FheType.js +4 -0
  14. package/_cjs/core/handle/FheType.js.map +1 -1
  15. package/_cjs/core/host-contracts/HostContractVersion-p.js +4 -0
  16. package/_cjs/core/host-contracts/HostContractVersion-p.js.map +1 -1
  17. package/_cjs/core/host-contracts/KmsSignersContext-p.js +15 -25
  18. package/_cjs/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  19. package/_cjs/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
  20. package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +7 -6
  21. package/_cjs/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
  22. package/_cjs/core/host-contracts/readKmsSignersContext-p.js +55 -67
  23. package/_cjs/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
  24. package/_cjs/core/kms/KmsSigncryptedShares-p.js +40 -4
  25. package/_cjs/core/kms/KmsSigncryptedShares-p.js.map +1 -1
  26. package/_cjs/core/kms/PublicDecryptionProof-p.js +4 -3
  27. package/_cjs/core/kms/PublicDecryptionProof-p.js.map +1 -1
  28. package/_cjs/core/kms/SignedDecryptionPermitV1-p.js +1 -14
  29. package/_cjs/core/kms/SignedDecryptionPermitV1-p.js.map +1 -1
  30. package/_cjs/core/kms/SignedDecryptionPermitV2-p.js +3 -15
  31. package/_cjs/core/kms/SignedDecryptionPermitV2-p.js.map +1 -1
  32. package/_cjs/core/kms/createKmsDelegatedUserDecryptEip712V1.js +3 -4
  33. package/_cjs/core/kms/createKmsDelegatedUserDecryptEip712V1.js.map +1 -1
  34. package/_cjs/core/kms/createKmsUserDecryptEip712V1.js +6 -5
  35. package/_cjs/core/kms/createKmsUserDecryptEip712V1.js.map +1 -1
  36. package/_cjs/core/kms/createKmsUserDecryptEip712V2.js +4 -5
  37. package/_cjs/core/kms/createKmsUserDecryptEip712V2.js.map +1 -1
  38. package/_cjs/core/kms/fetchKmsSigncryptedSharesV1-p.js +1 -1
  39. package/_cjs/core/kms/fetchKmsSigncryptedSharesV1-p.js.map +1 -1
  40. package/_cjs/core/kms/fetchKmsSigncryptedSharesV2-p.js +1 -1
  41. package/_cjs/core/kms/fetchKmsSigncryptedSharesV2-p.js.map +1 -1
  42. package/_cjs/core/kms/kmsExtraData-p.js +234 -0
  43. package/_cjs/core/kms/kmsExtraData-p.js.map +1 -0
  44. package/_cjs/core/kms/publicDecrypt.js +4 -4
  45. package/_cjs/core/kms/publicDecrypt.js.map +1 -1
  46. package/_cjs/core/kms/verifyKmsPublicDecryptEip712-p.js +5 -4
  47. package/_cjs/core/kms/verifyKmsPublicDecryptEip712-p.js.map +1 -1
  48. package/_cjs/core/modules/decrypt/mock.js +6 -6
  49. package/_cjs/core/modules/decrypt/mock.js.map +1 -1
  50. package/_cjs/core/modules/decrypt/module/api-p.js +7 -7
  51. package/_cjs/core/modules/decrypt/module/api-p.js.map +1 -1
  52. package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +53 -3
  53. package/_cjs/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -1
  54. package/_cjs/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +67 -21
  55. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.js.map +1 -0
  56. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js +61 -4
  57. package/_cjs/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -1
  58. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js +9 -108
  59. package/_cjs/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
  60. package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV1.js +163 -0
  61. package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV1.js.map +1 -0
  62. package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV2.js +7 -0
  63. package/_cjs/core/modules/relayer/cleartext/fetchUserDecryptV2.js.map +1 -0
  64. package/_cjs/core/modules/relayer/cleartext/forgeFhevmV1.js +83 -0
  65. package/_cjs/core/modules/relayer/cleartext/forgeFhevmV1.js.map +1 -0
  66. package/_cjs/core/modules/relayer/cleartext/mock.js +2 -2
  67. package/_cjs/core/modules/relayer/cleartext/mock.js.map +1 -1
  68. package/_cjs/core/modules/relayer/cleartext/signers.js +14 -0
  69. package/_cjs/core/modules/relayer/cleartext/signers.js.map +1 -1
  70. package/_cjs/ethers/internal/ethereum-ct.js +11 -0
  71. package/_cjs/ethers/internal/ethereum-ct.js.map +1 -1
  72. package/_cjs/ethers/internal/runtime-ct.js +9 -7
  73. package/_cjs/ethers/internal/runtime-ct.js.map +1 -1
  74. package/_cjs/viem/internal/ethereum-ct.js +8 -0
  75. package/_cjs/viem/internal/ethereum-ct.js.map +1 -1
  76. package/_cjs/viem/internal/runtime-ct.js +9 -7
  77. package/_cjs/viem/internal/runtime-ct.js.map +1 -1
  78. package/_cjs/wasm/tfhe/loadTfheLib.js.map +1 -1
  79. package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
  80. package/_esm/core/_version.js +1 -1
  81. package/_esm/core/actions/encrypt/encryptValue.js +2 -1
  82. package/_esm/core/actions/encrypt/encryptValue.js.map +1 -1
  83. package/_esm/core/actions/encrypt/encryptValues.js +2 -1
  84. package/_esm/core/actions/encrypt/encryptValues.js.map +1 -1
  85. package/_esm/core/actions/encrypt/generateZkProof.js +2 -1
  86. package/_esm/core/actions/encrypt/generateZkProof.js.map +1 -1
  87. package/_esm/core/actions/host/readKmsVerifierContractData.js +2 -2
  88. package/_esm/core/actions/host/readKmsVerifierContractData.js.map +1 -1
  89. package/_esm/core/base/cachedFetch.js +1 -1
  90. package/_esm/core/base/cachedFetch.js.map +1 -1
  91. package/_esm/core/handle/FheType.js +10 -0
  92. package/_esm/core/handle/FheType.js.map +1 -1
  93. package/_esm/core/host-contracts/HostContractVersion-p.js +6 -0
  94. package/_esm/core/host-contracts/HostContractVersion-p.js.map +1 -1
  95. package/_esm/core/host-contracts/KmsSignersContext-p.js +16 -25
  96. package/_esm/core/host-contracts/KmsSignersContext-p.js.map +1 -1
  97. package/_esm/core/host-contracts/getKmsContextSignersAndThreshold-p.js.map +1 -1
  98. package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js +6 -5
  99. package/_esm/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.js.map +1 -1
  100. package/_esm/core/host-contracts/readKmsSignersContext-p.js +133 -69
  101. package/_esm/core/host-contracts/readKmsSignersContext-p.js.map +1 -1
  102. package/_esm/core/kms/KmsSigncryptedShares-p.js +70 -4
  103. package/_esm/core/kms/KmsSigncryptedShares-p.js.map +1 -1
  104. package/_esm/core/kms/PublicDecryptionProof-p.js +4 -3
  105. package/_esm/core/kms/PublicDecryptionProof-p.js.map +1 -1
  106. package/_esm/core/kms/SignedDecryptionPermitV1-p.js +2 -32
  107. package/_esm/core/kms/SignedDecryptionPermitV1-p.js.map +1 -1
  108. package/_esm/core/kms/SignedDecryptionPermitV2-p.js +4 -16
  109. package/_esm/core/kms/SignedDecryptionPermitV2-p.js.map +1 -1
  110. package/_esm/core/kms/createKmsDelegatedUserDecryptEip712V1.js +3 -4
  111. package/_esm/core/kms/createKmsDelegatedUserDecryptEip712V1.js.map +1 -1
  112. package/_esm/core/kms/createKmsUserDecryptEip712V1.js +7 -6
  113. package/_esm/core/kms/createKmsUserDecryptEip712V1.js.map +1 -1
  114. package/_esm/core/kms/createKmsUserDecryptEip712V2.js +4 -5
  115. package/_esm/core/kms/createKmsUserDecryptEip712V2.js.map +1 -1
  116. package/_esm/core/kms/fetchKmsSigncryptedSharesV1-p.js +26 -2
  117. package/_esm/core/kms/fetchKmsSigncryptedSharesV1-p.js.map +1 -1
  118. package/_esm/core/kms/fetchKmsSigncryptedSharesV2-p.js +2 -2
  119. package/_esm/core/kms/fetchKmsSigncryptedSharesV2-p.js.map +1 -1
  120. package/_esm/core/kms/kmsExtraData-p.js +298 -0
  121. package/_esm/core/kms/kmsExtraData-p.js.map +1 -0
  122. package/_esm/core/kms/publicDecrypt.js +5 -5
  123. package/_esm/core/kms/publicDecrypt.js.map +1 -1
  124. package/_esm/core/kms/verifyKmsPublicDecryptEip712-p.js +5 -4
  125. package/_esm/core/kms/verifyKmsPublicDecryptEip712-p.js.map +1 -1
  126. package/_esm/core/modules/decrypt/mock.js +6 -6
  127. package/_esm/core/modules/decrypt/mock.js.map +1 -1
  128. package/_esm/core/modules/decrypt/module/api-p.js +7 -7
  129. package/_esm/core/modules/decrypt/module/api-p.js.map +1 -1
  130. package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js +69 -12
  131. package/_esm/core/modules/relayer/cleartext/fetchCoprocessorSignatures.js.map +1 -1
  132. package/_esm/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.js → fetchDelegatedUserDecryptV1.js} +76 -22
  133. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.js.map +1 -0
  134. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js +77 -4
  135. package/_esm/core/modules/relayer/cleartext/fetchPublicDecrypt.js.map +1 -1
  136. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js +13 -114
  137. package/_esm/core/modules/relayer/cleartext/fetchUserDecrypt.js.map +1 -1
  138. package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV1.js +173 -0
  139. package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV1.js.map +1 -0
  140. package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV2.js +6 -0
  141. package/_esm/core/modules/relayer/cleartext/fetchUserDecryptV2.js.map +1 -0
  142. package/_esm/core/modules/relayer/cleartext/forgeFhevmV1.js +140 -0
  143. package/_esm/core/modules/relayer/cleartext/forgeFhevmV1.js.map +1 -0
  144. package/_esm/core/modules/relayer/cleartext/mock.js +1 -1
  145. package/_esm/core/modules/relayer/cleartext/mock.js.map +1 -1
  146. package/_esm/core/modules/relayer/cleartext/signers.js +26 -0
  147. package/_esm/core/modules/relayer/cleartext/signers.js.map +1 -1
  148. package/_esm/ethers/internal/ethereum-ct.js +12 -1
  149. package/_esm/ethers/internal/ethereum-ct.js.map +1 -1
  150. package/_esm/ethers/internal/runtime-ct.js +9 -7
  151. package/_esm/ethers/internal/runtime-ct.js.map +1 -1
  152. package/_esm/viem/internal/ethereum-ct.js +10 -2
  153. package/_esm/viem/internal/ethereum-ct.js.map +1 -1
  154. package/_esm/viem/internal/runtime-ct.js +9 -7
  155. package/_esm/viem/internal/runtime-ct.js.map +1 -1
  156. package/_types/core/actions/encrypt/encryptValue.d.ts.map +1 -1
  157. package/_types/core/actions/encrypt/encryptValues.d.ts.map +1 -1
  158. package/_types/core/actions/encrypt/generateZkProof.d.ts.map +1 -1
  159. package/_types/core/base/cachedFetch.d.ts.map +1 -1
  160. package/_types/core/handle/FheType.d.ts +8 -0
  161. package/_types/core/handle/FheType.d.ts.map +1 -1
  162. package/_types/core/host-contracts/HostContractVersion-p.d.ts +8 -0
  163. package/_types/core/host-contracts/HostContractVersion-p.d.ts.map +1 -1
  164. package/_types/core/host-contracts/KmsSignersContext-p.d.ts +3 -2
  165. package/_types/core/host-contracts/KmsSignersContext-p.d.ts.map +1 -1
  166. package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts +3 -2
  167. package/_types/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.d.ts.map +1 -1
  168. package/_types/core/host-contracts/readKmsSignersContext-p.d.ts +43 -26
  169. package/_types/core/host-contracts/readKmsSignersContext-p.d.ts.map +1 -1
  170. package/_types/core/kms/KmsSigncryptedShares-p.d.ts +18 -0
  171. package/_types/core/kms/KmsSigncryptedShares-p.d.ts.map +1 -1
  172. package/_types/core/kms/PublicDecryptionProof-p.d.ts.map +1 -1
  173. package/_types/core/kms/SignedDecryptionPermitV1-p.d.ts.map +1 -1
  174. package/_types/core/kms/SignedDecryptionPermitV2-p.d.ts.map +1 -1
  175. package/_types/core/kms/createKmsDelegatedUserDecryptEip712V1.d.ts +2 -1
  176. package/_types/core/kms/createKmsDelegatedUserDecryptEip712V1.d.ts.map +1 -1
  177. package/_types/core/kms/createKmsUserDecryptEip712V1.d.ts +2 -1
  178. package/_types/core/kms/createKmsUserDecryptEip712V1.d.ts.map +1 -1
  179. package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts +2 -1
  180. package/_types/core/kms/createKmsUserDecryptEip712V2.d.ts.map +1 -1
  181. package/_types/core/kms/fetchKmsSigncryptedSharesV1-p.d.ts.map +1 -1
  182. package/_types/core/kms/kmsExtraData-p.d.ts +66 -0
  183. package/_types/core/kms/kmsExtraData-p.d.ts.map +1 -0
  184. package/_types/core/kms/publicDecrypt.d.ts.map +1 -1
  185. package/_types/core/kms/verifyKmsPublicDecryptEip712-p.d.ts.map +1 -1
  186. package/_types/core/modules/ethereum/types-ct.d.ts +20 -2
  187. package/_types/core/modules/ethereum/types-ct.d.ts.map +1 -1
  188. package/_types/core/modules/relayer/cleartext/fetchCoprocessorSignatures.d.ts.map +1 -1
  189. package/_types/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.d.ts → fetchDelegatedUserDecryptV1.d.ts} +1 -1
  190. package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.d.ts.map +1 -0
  191. package/_types/core/modules/relayer/cleartext/fetchPublicDecrypt.d.ts.map +1 -1
  192. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts +2 -2
  193. package/_types/core/modules/relayer/cleartext/fetchUserDecrypt.d.ts.map +1 -1
  194. package/_types/core/modules/relayer/cleartext/fetchUserDecryptV1.d.ts +3 -0
  195. package/_types/core/modules/relayer/cleartext/fetchUserDecryptV1.d.ts.map +1 -0
  196. package/_types/core/modules/relayer/cleartext/fetchUserDecryptV2.d.ts +3 -0
  197. package/_types/core/modules/relayer/cleartext/fetchUserDecryptV2.d.ts.map +1 -0
  198. package/_types/core/modules/relayer/cleartext/forgeFhevmV1.d.ts +29 -0
  199. package/_types/core/modules/relayer/cleartext/forgeFhevmV1.d.ts.map +1 -0
  200. package/_types/core/modules/relayer/cleartext/signers.d.ts +1 -0
  201. package/_types/core/modules/relayer/cleartext/signers.d.ts.map +1 -1
  202. package/_types/core/types/kms-p.d.ts +7 -1
  203. package/_types/core/types/kms-p.d.ts.map +1 -1
  204. package/_types/ethers/internal/ethereum-ct.d.ts.map +1 -1
  205. package/_types/ethers/internal/runtime-ct.d.ts.map +1 -1
  206. package/_types/viem/internal/ethereum-ct.d.ts.map +1 -1
  207. package/_types/viem/internal/runtime-ct.d.ts.map +1 -1
  208. package/core/_version.ts +1 -1
  209. package/core/actions/encrypt/encryptValue.ts +4 -1
  210. package/core/actions/encrypt/encryptValues.ts +5 -1
  211. package/core/actions/encrypt/generateZkProof.ts +2 -1
  212. package/core/actions/host/readKmsVerifierContractData.ts +2 -2
  213. package/core/base/cachedFetch.ts +1 -1
  214. package/core/handle/FheType.ts +11 -0
  215. package/core/host-contracts/HostContractVersion-p.ts +12 -0
  216. package/core/host-contracts/KmsSignersContext-p.ts +29 -36
  217. package/core/host-contracts/getKmsContextSignersAndThreshold-p.ts +1 -0
  218. package/core/host-contracts/getKmsContextSignersAndThresholdFromExtraData-p.ts +10 -7
  219. package/core/host-contracts/readKmsSignersContext-p.ts +157 -116
  220. package/core/kms/KmsSigncryptedShares-p.ts +87 -4
  221. package/core/kms/PublicDecryptionProof-p.ts +6 -4
  222. package/core/kms/SignedDecryptionPermitV1-p.ts +5 -47
  223. package/core/kms/SignedDecryptionPermitV2-p.ts +8 -25
  224. package/core/kms/createKmsDelegatedUserDecryptEip712V1.ts +5 -5
  225. package/core/kms/createKmsUserDecryptEip712V1.ts +9 -7
  226. package/core/kms/createKmsUserDecryptEip712V2.ts +6 -6
  227. package/core/kms/fetchKmsSigncryptedSharesV1-p.ts +27 -15
  228. package/core/kms/fetchKmsSigncryptedSharesV2-p.ts +2 -2
  229. package/core/kms/kmsExtraData-p.ts +374 -0
  230. package/core/kms/publicDecrypt.ts +8 -7
  231. package/core/kms/verifyKmsPublicDecryptEip712-p.ts +7 -5
  232. package/core/modules/decrypt/mock.ts +6 -6
  233. package/core/modules/decrypt/module/api-p.ts +7 -7
  234. package/core/modules/ethereum/types-ct.ts +25 -2
  235. package/core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts +98 -15
  236. package/core/modules/relayer/cleartext/{fetchDelegatedUserDecrypt.ts → fetchDelegatedUserDecryptV1.ts} +115 -27
  237. package/core/modules/relayer/cleartext/fetchPublicDecrypt.ts +112 -6
  238. package/core/modules/relayer/cleartext/fetchUserDecrypt.ts +24 -132
  239. package/core/modules/relayer/cleartext/fetchUserDecryptV1.ts +229 -0
  240. package/core/modules/relayer/cleartext/fetchUserDecryptV2.ts +11 -0
  241. package/core/modules/relayer/cleartext/forgeFhevmV1.ts +185 -0
  242. package/core/modules/relayer/cleartext/mock.ts +1 -1
  243. package/core/modules/relayer/cleartext/signers.ts +35 -0
  244. package/core/types/kms-p.ts +16 -1
  245. package/ethers/internal/ethereum-ct.ts +15 -1
  246. package/ethers/internal/runtime-ct.ts +9 -7
  247. package/package.json +1 -1
  248. package/viem/internal/ethereum-ct.ts +14 -2
  249. package/viem/internal/runtime-ct.ts +9 -7
  250. package/_cjs/core/kms/kmsExtraData.js +0 -82
  251. package/_cjs/core/kms/kmsExtraData.js.map +0 -1
  252. package/_cjs/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +0 -1
  253. package/_esm/core/kms/kmsExtraData.js +0 -99
  254. package/_esm/core/kms/kmsExtraData.js.map +0 -1
  255. package/_esm/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.js.map +0 -1
  256. package/_types/core/kms/kmsExtraData.d.ts +0 -25
  257. package/_types/core/kms/kmsExtraData.d.ts.map +0 -1
  258. package/_types/core/modules/relayer/cleartext/fetchDelegatedUserDecrypt.d.ts.map +0 -1
  259. package/core/kms/kmsExtraData.ts +0 -127
@@ -4,6 +4,10 @@ exports.fetchCoprocessorSignatures = fetchCoprocessorSignatures;
4
4
  const uint_js_1 = require("../../../base/uint.js");
5
5
  const CoreFhevm_p_js_1 = require("../../../runtime/CoreFhevm-p.js");
6
6
  const signers_js_1 = require("./signers.js");
7
+ const forgeFhevmV1_js_1 = require("./forgeFhevmV1.js");
8
+ const createCoprocessorEip712Domain_js_1 = require("../../../coprocessor/createCoprocessorEip712Domain.js");
9
+ const coprocessorEip712Types_js_1 = require("../../../coprocessor/coprocessorEip712Types.js");
10
+ const readCoprocessorSignersContext_p_js_1 = require("../../../host-contracts/readCoprocessorSignersContext-p.js");
7
11
  const inputProofAbi = [
8
12
  {
9
13
  type: 'function',
@@ -30,9 +34,7 @@ const inputProofAbi = [
30
34
  stateMutability: 'view',
31
35
  },
32
36
  ];
33
- async function fetchCoprocessorSignatures(relayerClient, parameters) {
34
- const cleartextEthereumModule = relayerClient.runtime.ethereum;
35
- const { payload } = parameters;
37
+ async function runInputProofOnChain(relayerClient, payload) {
36
38
  const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(relayerClient);
37
39
  const res = (await relayerClient.runtime.ethereum.readContract(trustedClient, {
38
40
  abi: inputProofAbi,
@@ -48,6 +50,54 @@ async function fetchCoprocessorSignatures(relayerClient, parameters) {
48
50
  const digest = res[0];
49
51
  const signersAddress = res[1];
50
52
  const threshold = (0, uint_js_1.asUint32BigInt)(res[2]);
53
+ return {
54
+ digest,
55
+ signersAddress,
56
+ threshold,
57
+ };
58
+ }
59
+ async function runInputProofOffChain(relayerClient, payload) {
60
+ const cleartextEthereumModule = relayerClient.runtime.ethereum;
61
+ const { zkProof } = payload;
62
+ const coprocessorSignersContext = await (0, readCoprocessorSignersContext_p_js_1.readCoprocessorSignersContext)(relayerClient, {
63
+ address: relayerClient.chain.fhevm.contracts.inputVerifier.address,
64
+ });
65
+ const domain = (0, createCoprocessorEip712Domain_js_1.createCoprocessorEip712Domain)({
66
+ gatewayChainId: relayerClient.chain.fhevm.gateway.id,
67
+ verifyingContractAddressInputVerification: relayerClient.chain.fhevm.gateway.contracts.inputVerification.address,
68
+ });
69
+ const digest = cleartextEthereumModule.hashTypedData({
70
+ domain,
71
+ types: coprocessorEip712Types_js_1.coprocessorEip712Types,
72
+ primaryType: coprocessorEip712Types_js_1.coprocessorEip712PrimaryType,
73
+ message: {
74
+ ctHandles: zkProof.getInputHandles().map((h) => h.bytes32Hex),
75
+ userAddress: zkProof.userAddress,
76
+ contractAddress: zkProof.contractAddress,
77
+ contractChainId: (0, uint_js_1.asUint64BigInt)(BigInt(relayerClient.chain.id)),
78
+ extraData: zkProof.getExtraData(),
79
+ },
80
+ });
81
+ return {
82
+ digest,
83
+ signersAddress: coprocessorSignersContext.signers,
84
+ threshold: (0, uint_js_1.asUint32BigInt)(BigInt(coprocessorSignersContext.threshold)),
85
+ };
86
+ }
87
+ async function fetchCoprocessorSignatures(relayerClient, parameters) {
88
+ const cleartextEthereumModule = relayerClient.runtime.ethereum;
89
+ const { payload } = parameters;
90
+ const offChain = await (0, forgeFhevmV1_js_1.isForgeFhevmV1)(relayerClient);
91
+ let res;
92
+ if (offChain) {
93
+ res = await runInputProofOffChain(relayerClient, payload);
94
+ }
95
+ else {
96
+ res = await runInputProofOnChain(relayerClient, payload);
97
+ }
98
+ const digest = res.digest;
99
+ const signersAddress = res.signersAddress;
100
+ const threshold = res.threshold;
51
101
  const signers = (0, signers_js_1.getCoprocessorSignersPrivateKeyMap)(relayerClient);
52
102
  const randomSignersAddress = (0, uint_js_1.randomUniqueUints)(signersAddress.length, Number(threshold)).map((i) => signersAddress[i]);
53
103
  const coprocessorEip712Signatures = [];
@@ -1 +1 @@
1
- {"version":3,"file":"fetchCoprocessorSignatures.js","sourceRoot":"","sources":["../../../../../core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetchCoprocessorSignatures.js","sourceRoot":"","sources":["../../../../../core/modules/relayer/cleartext/fetchCoprocessorSignatures.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,32 @@ const uint_js_1 = require("../../../base/uint.js");
6
6
  const CoreFhevm_p_js_1 = require("../../../runtime/CoreFhevm-p.js");
7
7
  const utils_js_1 = require("../utils.js");
8
8
  const signers_js_1 = require("./signers.js");
9
+ const forgeFhevmV1_js_1 = require("./forgeFhevmV1.js");
10
+ const readKmsSignersContext_p_js_1 = require("../../../host-contracts/readKmsSignersContext-p.js");
11
+ async function runDelegatedUserDecryptOffChain(relayerClient, payload) {
12
+ const { kmsDecryptEip712Message } = payload;
13
+ const pairs = payload.handleContractPairs;
14
+ const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(relayerClient);
15
+ const rawCleartexts = await (0, forgeFhevmV1_js_1.readPlaintexts)(relayerClient, trustedClient, pairs.map((p) => p.handle));
16
+ const currentKmsSignersContext = await (0, readKmsSignersContext_p_js_1.readCurrentKmsSignersContext)(relayerClient, {
17
+ kmsVerifierAddress: relayerClient.chain.fhevm.contracts.kmsVerifier.address,
18
+ protocolConfigAddress: relayerClient.chain.fhevm.contracts.protocolConfig?.address,
19
+ });
20
+ const signersAddress = currentKmsSignersContext.signers;
21
+ const threshold = currentKmsSignersContext.threshold;
22
+ const maskedCleartexts = (0, forgeFhevmV1_js_1.xorMaskWithPublicKey)(kmsDecryptEip712Message.publicKey, rawCleartexts);
23
+ const extraData = kmsDecryptEip712Message.extraData;
24
+ const commonKmsSigncryptedSharePayload = relayerClient.runtime.ethereum.encode({
25
+ types: ['uint256[]', 'bytes'],
26
+ values: [maskedCleartexts, extraData],
27
+ });
28
+ return {
29
+ signersAddress,
30
+ threshold: BigInt(threshold),
31
+ commonKmsSigncryptedSharePayload,
32
+ extraData,
33
+ };
34
+ }
9
35
  const delegatedUserDecryptAbi = [
10
36
  {
11
37
  type: 'function',
@@ -53,25 +79,9 @@ const delegatedUserDecryptAbi = [
53
79
  stateMutability: 'view',
54
80
  },
55
81
  ];
56
- async function fetchDelegatedUserDecrypt(relayerClient, parameters) {
57
- const cleartextEthereumModule = relayerClient.runtime.ethereum;
58
- const { payload } = parameters;
59
- const pairs = payload.handleContractPairs;
60
- const contractAddresses = payload.kmsDecryptEip712Message.contractAddresses;
61
- const authCount = contractAddresses.length;
62
- for (const { contractAddress: c } of pairs) {
63
- let authorized = false;
64
- for (let i = 0; i < authCount; ++i) {
65
- if (contractAddresses[i] == c) {
66
- authorized = true;
67
- break;
68
- }
69
- }
70
- if (!authorized) {
71
- throw new Error(`ContractAddressNotAuthorized: ${c} is not in the EIP-712 authorized contractAddresses list.`);
72
- }
73
- }
82
+ async function runDelegatedUserDecryptOnChain(relayerClient, payload) {
74
83
  const { kmsDecryptEip712Message, kmsDecryptEip712Signer, kmsDecryptEip712Signature } = payload;
84
+ const pairs = payload.handleContractPairs;
75
85
  const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(relayerClient);
76
86
  const res = (await relayerClient.runtime.ethereum.readContract(trustedClient, {
77
87
  abi: delegatedUserDecryptAbi,
@@ -92,10 +102,46 @@ async function fetchDelegatedUserDecrypt(relayerClient, parameters) {
92
102
  functionName: delegatedUserDecryptAbi[0].name,
93
103
  }));
94
104
  const commonKmsSigncryptedSharePayload = res[0];
95
- const commonKmsSigncryptedSharePayloadNo0x = (0, string_js_1.remove0x)(commonKmsSigncryptedSharePayload);
96
105
  const signersAddress = res[1];
97
106
  const threshold = (0, uint_js_1.asUint32BigInt)(res[2]);
98
107
  const extraData = res[3];
108
+ return {
109
+ commonKmsSigncryptedSharePayload,
110
+ signersAddress,
111
+ threshold,
112
+ extraData,
113
+ };
114
+ }
115
+ async function fetchDelegatedUserDecrypt(relayerClient, parameters) {
116
+ const cleartextEthereumModule = relayerClient.runtime.ethereum;
117
+ const { payload } = parameters;
118
+ const pairs = payload.handleContractPairs;
119
+ const contractAddresses = payload.kmsDecryptEip712Message.contractAddresses;
120
+ const authCount = contractAddresses.length;
121
+ for (const { contractAddress: c } of pairs) {
122
+ let authorized = false;
123
+ for (let i = 0; i < authCount; ++i) {
124
+ if (contractAddresses[i] == c) {
125
+ authorized = true;
126
+ break;
127
+ }
128
+ }
129
+ if (!authorized) {
130
+ throw new Error(`ContractAddressNotAuthorized: ${c} is not in the EIP-712 authorized contractAddresses list.`);
131
+ }
132
+ }
133
+ const offChain = await (0, forgeFhevmV1_js_1.isForgeFhevmV1)(relayerClient);
134
+ let res;
135
+ if (offChain) {
136
+ res = await runDelegatedUserDecryptOffChain(relayerClient, payload);
137
+ }
138
+ else {
139
+ res = await runDelegatedUserDecryptOnChain(relayerClient, payload);
140
+ }
141
+ const commonKmsSigncryptedSharePayload = res.commonKmsSigncryptedSharePayload;
142
+ const extraData = res.extraData;
143
+ const threshold = res.threshold;
144
+ const signersAddress = res.signersAddress;
99
145
  const signers = (0, signers_js_1.getKmsSignersPrivateKeyMap)(relayerClient);
100
146
  const randomSignersAddress = (0, uint_js_1.randomUniqueUints)(signersAddress.length, Number(threshold)).map((i) => signersAddress[i]);
101
147
  const result = [];
@@ -105,7 +151,7 @@ async function fetchDelegatedUserDecrypt(relayerClient, parameters) {
105
151
  throw new Error(`Unable to find KMS signer for address ${signerAddress}`);
106
152
  }
107
153
  const signature = await cleartextEthereumModule.sign({ hash: commonKmsSigncryptedSharePayload, privateKey });
108
- result.push({ signature: (0, string_js_1.remove0x)(signature), payload: commonKmsSigncryptedSharePayloadNo0x, extraData });
154
+ result.push({ signature: (0, string_js_1.remove0x)(signature), payload: (0, string_js_1.remove0x)(commonKmsSigncryptedSharePayload), extraData });
109
155
  }
110
156
  return (0, utils_js_1.userDecryptResultToKmsSigncryptedShares)(result);
111
157
  }
@@ -116,4 +162,4 @@ function _parseUintBigIntString(label, value) {
116
162
  }
117
163
  return bn;
118
164
  }
119
- //# sourceMappingURL=fetchDelegatedUserDecrypt.js.map
165
+ //# sourceMappingURL=fetchDelegatedUserDecryptV1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchDelegatedUserDecryptV1.js","sourceRoot":"","sources":["../../../../../core/modules/relayer/cleartext/fetchDelegatedUserDecryptV1.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fetchPublicDecrypt = fetchPublicDecrypt;
4
4
  const CoreFhevm_p_js_1 = require("../../../runtime/CoreFhevm-p.js");
5
5
  const signers_js_1 = require("./signers.js");
6
+ const forgeFhevmV1_js_1 = require("./forgeFhevmV1.js");
7
+ const createKmsEip712Domain_js_1 = require("../../../kms/createKmsEip712Domain.js");
8
+ const readKmsSignersContext_p_js_1 = require("../../../host-contracts/readKmsSignersContext-p.js");
9
+ const kmsPublicDecryptEip712Types_js_1 = require("../../../kms/kmsPublicDecryptEip712Types.js");
6
10
  const publicDecryptAbi = [
7
11
  {
8
12
  type: 'function',
@@ -22,17 +26,70 @@ const publicDecryptAbi = [
22
26
  stateMutability: 'view',
23
27
  },
24
28
  ];
25
- async function fetchPublicDecrypt(relayerClient, parameters) {
29
+ async function runPublicDecryptOffChain(relayerClient, payload) {
26
30
  const cleartextEthereumModule = relayerClient.runtime.ethereum;
31
+ const { orderedHandles } = payload;
32
+ const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(relayerClient);
33
+ const cleartexts = await (0, forgeFhevmV1_js_1.readPlaintexts)(relayerClient, trustedClient, orderedHandles);
34
+ const orderedAbiEncodedClearValues = (0, forgeFhevmV1_js_1.encodeTypedCleartexts)(cleartextEthereumModule, orderedHandles, cleartexts);
35
+ const extraData = payload.extraData;
36
+ const signedExtraData = extraData === '0x00' ? '0x' : extraData;
37
+ const domain = (0, createKmsEip712Domain_js_1.createKmsEip712Domain)({
38
+ chainId: relayerClient.chain.fhevm.gateway.id,
39
+ verifyingContractAddressDecryption: relayerClient.chain.fhevm.gateway.contracts.decryption.address,
40
+ });
41
+ const currentKmsSignersContext = await (0, readKmsSignersContext_p_js_1.readCurrentKmsSignersContext)(relayerClient, {
42
+ kmsVerifierAddress: relayerClient.chain.fhevm.contracts.kmsVerifier.address,
43
+ protocolConfigAddress: relayerClient.chain.fhevm.contracts.protocolConfig?.address,
44
+ });
45
+ const digest = cleartextEthereumModule.hashTypedData({
46
+ domain,
47
+ types: kmsPublicDecryptEip712Types_js_1.kmsPublicDecryptEip712Types,
48
+ primaryType: 'PublicDecryptVerification',
49
+ message: {
50
+ ctHandles: orderedHandles.map((h) => h.bytes32Hex),
51
+ decryptedResult: orderedAbiEncodedClearValues,
52
+ extraData: signedExtraData,
53
+ },
54
+ });
55
+ return {
56
+ orderedAbiEncodedClearValues,
57
+ digest,
58
+ signersAddress: currentKmsSignersContext.signers,
59
+ extraData,
60
+ };
61
+ }
62
+ async function runPublicDecryptOnChain(relayerClient, payload) {
27
63
  const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(relayerClient);
28
64
  const res = (await relayerClient.runtime.ethereum.readContract(trustedClient, {
29
65
  abi: publicDecryptAbi,
30
66
  address: relayerClient.chain.fhevm.contracts.kmsVerifier.address,
31
- args: [parameters.payload.orderedHandles.map((h) => h.bytes32Hex)],
67
+ args: [payload.orderedHandles.map((h) => h.bytes32Hex)],
32
68
  functionName: publicDecryptAbi[0].name,
33
69
  }));
70
+ const orderedAbiEncodedClearValues = res[0];
34
71
  const digest = res[1];
35
72
  const signersAddress = res[2];
73
+ const extraData = res[4];
74
+ return {
75
+ orderedAbiEncodedClearValues,
76
+ digest,
77
+ signersAddress,
78
+ extraData,
79
+ };
80
+ }
81
+ async function fetchPublicDecrypt(relayerClient, parameters) {
82
+ const cleartextEthereumModule = relayerClient.runtime.ethereum;
83
+ const offChain = await (0, forgeFhevmV1_js_1.isForgeFhevmV1)(relayerClient);
84
+ let res;
85
+ if (offChain) {
86
+ res = await runPublicDecryptOffChain(relayerClient, parameters.payload);
87
+ }
88
+ else {
89
+ res = await runPublicDecryptOnChain(relayerClient, parameters.payload);
90
+ }
91
+ const digest = res.digest;
92
+ const signersAddress = res.signersAddress;
36
93
  const signers = (0, signers_js_1.getKmsSignersPrivateKeyMap)(relayerClient);
37
94
  const kmsPublicDecryptEip712Signatures = [];
38
95
  for (let i = 0; i < signersAddress.length; ++i) {
@@ -44,9 +101,9 @@ async function fetchPublicDecrypt(relayerClient, parameters) {
44
101
  kmsPublicDecryptEip712Signatures.push(signature);
45
102
  }
46
103
  return {
47
- orderedAbiEncodedClearValues: res[0],
104
+ orderedAbiEncodedClearValues: res.orderedAbiEncodedClearValues,
48
105
  kmsPublicDecryptEip712Signatures,
49
- extraData: res[4],
106
+ extraData: res.extraData,
50
107
  };
51
108
  }
52
109
  //# sourceMappingURL=fetchPublicDecrypt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetchPublicDecrypt.js","sourceRoot":"","sources":["../../../../../core/modules/relayer/cleartext/fetchPublicDecrypt.ts"],"names":[],"mappings":";;AA8BA,gDAoCC;AA/DD,oEAAmE;AACnE,6CAA0D;AAI1D,MAAM,gBAAgB,GAAG;IACvB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,eAAe;QACrB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;QAC3E,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,OAAO;aACtB;YACD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC5D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE;YACjE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC/D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE;SAC5D;QACD,eAAe,EAAE,MAAM;KACxB;CACO,CAAC;AAIJ,KAAK,UAAU,kBAAkB,CACtC,aAAuC,EACvC,UAAwC;IAExC,MAAM,uBAAuB,GAAG,aAAa,CAAC,OAAO,CAAC,QAAmC,CAAC;IAE1F,MAAM,aAAa,GAAG,IAAA,iCAAgB,EAAC,aAAa,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QAC5E,GAAG,EAAE,gBAAgB;QACrB,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAA6B;QACtF,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAClE,YAAY,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI;KACvC,CAAC,CAAc,CAAC;IAEjB,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAe,CAAC;IACpC,MAAM,cAAc,GAAG,GAAG,CAAC,CAAC,CAAkC,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAA,uCAA0B,EAAC,aAAa,CAAC,CAAC;IAE1D,MAAM,gCAAgC,GAAiB,EAAE,CAAC;IAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAE/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,CAAC;QACnD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACnF,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,OAAO;QACL,4BAA4B,EAAE,GAAG,CAAC,CAAC,CAAa;QAChD,gCAAgC;QAChC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAa;KAC9B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fetchPublicDecrypt.js","sourceRoot":"","sources":["../../../../../core/modules/relayer/cleartext/fetchPublicDecrypt.ts"],"names":[],"mappings":"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"}
@@ -1,117 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fetchUserDecrypt = fetchUserDecrypt;
4
- const string_js_1 = require("../../../base/string.js");
5
- const uint_js_1 = require("../../../base/uint.js");
6
4
  const CoreFhevm_p_js_1 = require("../../../runtime/CoreFhevm-p.js");
7
- const utils_js_1 = require("../utils.js");
8
- const signers_js_1 = require("./signers.js");
9
- const userDecryptAbi = [
10
- {
11
- type: 'function',
12
- name: 'userDecrypt',
13
- inputs: [
14
- {
15
- name: 'pairs',
16
- type: 'tuple[]',
17
- internalType: 'struct HandleContractPair[]',
18
- components: [
19
- { name: 'handle', type: 'bytes32', internalType: 'bytes32' },
20
- {
21
- name: 'contractAddress',
22
- type: 'address',
23
- internalType: 'address',
24
- },
25
- ],
26
- },
27
- { name: 'userAddress', type: 'address', internalType: 'address' },
28
- { name: 'publicKey', type: 'bytes', internalType: 'bytes' },
29
- {
30
- name: 'contractAddresses',
31
- type: 'address[]',
32
- internalType: 'address[]',
33
- },
34
- {
35
- name: 'startTimestamp',
36
- type: 'uint256',
37
- internalType: 'uint256',
38
- },
39
- {
40
- name: 'durationDays',
41
- type: 'uint256',
42
- internalType: 'uint256',
43
- },
44
- { name: 'userSignature', type: 'bytes', internalType: 'bytes' },
45
- ],
46
- outputs: [
47
- { name: 'payload', type: 'bytes', internalType: 'bytes' },
48
- { name: 'signers', type: 'address[]', internalType: 'address[]' },
49
- { name: 'threshold', type: 'uint256', internalType: 'uint256' },
50
- { name: 'extraData', type: 'bytes', internalType: 'bytes' },
51
- ],
52
- stateMutability: 'view',
53
- },
54
- ];
5
+ const semver_js_1 = require("../../../base/semver.js");
6
+ const fetchUserDecryptV1_js_1 = require("./fetchUserDecryptV1.js");
7
+ const fetchUserDecryptV2_js_1 = require("./fetchUserDecryptV2.js");
55
8
  async function fetchUserDecrypt(relayerClient, parameters) {
56
- const cleartextEthereumModule = relayerClient.runtime.ethereum;
57
- const { payload } = parameters;
58
- const pairs = payload.handleContractPairs;
59
- const contractAddresses = payload.kmsDecryptEip712Message.contractAddresses;
60
- const authCount = contractAddresses.length;
61
- for (const { contractAddress: c } of pairs) {
62
- let authorized = false;
63
- for (let i = 0; i < authCount; ++i) {
64
- if (contractAddresses[i] == c) {
65
- authorized = true;
66
- break;
67
- }
68
- }
69
- if (!authorized) {
70
- throw new Error(`ContractAddressNotAuthorized: ${c} is not in the EIP-712 authorized contractAddresses list.`);
71
- }
9
+ const protocolVersion = (0, CoreFhevm_p_js_1.getResolvedProtocolVersion)(relayerClient);
10
+ if (protocolVersion === undefined) {
11
+ throw new Error('Unable to resolve protocol version from context, ensure proper initialization of the FhevmRuntime and FhevmChain.');
72
12
  }
73
- const { kmsDecryptEip712Message, kmsDecryptEip712Signer, kmsDecryptEip712Signature } = payload;
74
- const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(relayerClient);
75
- const res = (await relayerClient.runtime.ethereum.readContract(trustedClient, {
76
- abi: userDecryptAbi,
77
- address: relayerClient.chain.fhevm.contracts.kmsVerifier.address,
78
- args: [
79
- pairs.map((p) => ({
80
- handle: p.handle.bytes32Hex,
81
- contractAddress: p.contractAddress,
82
- })),
83
- kmsDecryptEip712Signer,
84
- kmsDecryptEip712Message.publicKey,
85
- kmsDecryptEip712Message.contractAddresses,
86
- _parseUintBigIntString('kmsDecryptEip712Message.startTimestamp', kmsDecryptEip712Message.startTimestamp),
87
- _parseUintBigIntString('kmsDecryptEip712Message.durationDays', kmsDecryptEip712Message.durationDays),
88
- kmsDecryptEip712Signature,
89
- ],
90
- functionName: userDecryptAbi[0].name,
91
- }));
92
- const commonKmsSigncryptedSharePayload = res[0];
93
- const commonKmsSigncryptedSharePayloadNo0x = (0, string_js_1.remove0x)(commonKmsSigncryptedSharePayload);
94
- const signersAddress = res[1];
95
- const threshold = (0, uint_js_1.asUint32BigInt)(res[2]);
96
- const extraData = res[3];
97
- const signers = (0, signers_js_1.getKmsSignersPrivateKeyMap)(relayerClient);
98
- const randomSignersAddress = (0, uint_js_1.randomUniqueUints)(signersAddress.length, Number(threshold)).map((i) => signersAddress[i]);
99
- const result = [];
100
- for (const signerAddress of randomSignersAddress) {
101
- const privateKey = signers.get(signerAddress);
102
- if (privateKey === undefined) {
103
- throw new Error(`Unable to find KMS signer for address ${signerAddress}`);
104
- }
105
- const signature = await cleartextEthereumModule.sign({ hash: commonKmsSigncryptedSharePayload, privateKey });
106
- result.push({ signature: (0, string_js_1.remove0x)(signature), payload: commonKmsSigncryptedSharePayloadNo0x, extraData });
13
+ if ((0, semver_js_1.isSemverStrictlyBefore)(protocolVersion.version, '0.14.0')) {
14
+ return await (0, fetchUserDecryptV1_js_1.fetchUserDecryptV1)(relayerClient, parameters);
107
15
  }
108
- return (0, utils_js_1.userDecryptResultToKmsSigncryptedShares)(result);
109
- }
110
- function _parseUintBigIntString(label, value) {
111
- const bn = (0, uint_js_1.tryParseUintBigIntString)(value);
112
- if (bn === undefined) {
113
- throw new Error(`${label} is not a valid uint string, got ${JSON.stringify(value)}`);
114
- }
115
- return bn;
16
+ return await (0, fetchUserDecryptV2_js_1.fetchUserDecryptV2)(relayerClient, parameters);
116
17
  }
117
18
  //# sourceMappingURL=fetchUserDecrypt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetchUserDecrypt.js","sourceRoot":"","sources":["../../../../../core/modules/relayer/cleartext/fetchUserDecrypt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetchUserDecrypt.js","sourceRoot":"","sources":["../../../../../core/modules/relayer/cleartext/fetchUserDecrypt.ts"],"names":[],"mappings":";;AAgBA,4CAgBC;AAzBD,oEAA6E;AAC7E,uDAAiE;AACjE,mEAA6D;AAC7D,mEAA6D;AAMtD,KAAK,UAAU,gBAAgB,CACpC,aAAuC,EACvC,UAAsC;IAEtC,MAAM,eAAe,GAAG,IAAA,2CAA0B,EAAC,aAAa,CAAC,CAAC;IAClE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;IACJ,CAAC;IAED,IAAI,IAAA,kCAAsB,EAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9D,OAAO,MAAM,IAAA,0CAAkB,EAAC,aAAa,EAAE,UAA0C,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,MAAM,IAAA,0CAAkB,EAAC,aAAa,EAAE,UAA0C,CAAC,CAAC;AAC7F,CAAC"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchUserDecryptV1 = fetchUserDecryptV1;
4
+ const string_js_1 = require("../../../base/string.js");
5
+ const uint_js_1 = require("../../../base/uint.js");
6
+ const CoreFhevm_p_js_1 = require("../../../runtime/CoreFhevm-p.js");
7
+ const utils_js_1 = require("../utils.js");
8
+ const signers_js_1 = require("./signers.js");
9
+ const readKmsSignersContext_p_js_1 = require("../../../host-contracts/readKmsSignersContext-p.js");
10
+ const forgeFhevmV1_js_1 = require("./forgeFhevmV1.js");
11
+ async function runUserDecryptOffChain(relayerClient, payload) {
12
+ const { kmsDecryptEip712Message } = payload;
13
+ const pairs = payload.handleContractPairs;
14
+ const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(relayerClient);
15
+ const rawCleartexts = await (0, forgeFhevmV1_js_1.readPlaintexts)(relayerClient, trustedClient, pairs.map((p) => p.handle));
16
+ const currentKmsSignersContext = await (0, readKmsSignersContext_p_js_1.readCurrentKmsSignersContext)(relayerClient, {
17
+ kmsVerifierAddress: relayerClient.chain.fhevm.contracts.kmsVerifier.address,
18
+ protocolConfigAddress: relayerClient.chain.fhevm.contracts.protocolConfig?.address,
19
+ });
20
+ const signersAddress = currentKmsSignersContext.signers;
21
+ const threshold = currentKmsSignersContext.threshold;
22
+ const maskedCleartexts = (0, forgeFhevmV1_js_1.xorMaskWithPublicKey)(kmsDecryptEip712Message.publicKey, rawCleartexts);
23
+ const extraData = kmsDecryptEip712Message.extraData;
24
+ const commonKmsSigncryptedSharePayload = relayerClient.runtime.ethereum.encode({
25
+ types: ['uint256[]', 'bytes'],
26
+ values: [maskedCleartexts, extraData],
27
+ });
28
+ return {
29
+ signersAddress,
30
+ threshold: BigInt(threshold),
31
+ commonKmsSigncryptedSharePayload,
32
+ extraData,
33
+ };
34
+ }
35
+ const userDecryptAbi = [
36
+ {
37
+ type: 'function',
38
+ name: 'userDecrypt',
39
+ inputs: [
40
+ {
41
+ name: 'pairs',
42
+ type: 'tuple[]',
43
+ internalType: 'struct HandleContractPair[]',
44
+ components: [
45
+ { name: 'handle', type: 'bytes32', internalType: 'bytes32' },
46
+ {
47
+ name: 'contractAddress',
48
+ type: 'address',
49
+ internalType: 'address',
50
+ },
51
+ ],
52
+ },
53
+ { name: 'userAddress', type: 'address', internalType: 'address' },
54
+ { name: 'publicKey', type: 'bytes', internalType: 'bytes' },
55
+ {
56
+ name: 'contractAddresses',
57
+ type: 'address[]',
58
+ internalType: 'address[]',
59
+ },
60
+ {
61
+ name: 'startTimestamp',
62
+ type: 'uint256',
63
+ internalType: 'uint256',
64
+ },
65
+ {
66
+ name: 'durationDays',
67
+ type: 'uint256',
68
+ internalType: 'uint256',
69
+ },
70
+ { name: 'userSignature', type: 'bytes', internalType: 'bytes' },
71
+ ],
72
+ outputs: [
73
+ { name: 'payload', type: 'bytes', internalType: 'bytes' },
74
+ { name: 'signers', type: 'address[]', internalType: 'address[]' },
75
+ { name: 'threshold', type: 'uint256', internalType: 'uint256' },
76
+ { name: 'extraData', type: 'bytes', internalType: 'bytes' },
77
+ ],
78
+ stateMutability: 'view',
79
+ },
80
+ ];
81
+ async function runUserDecryptOnChain(relayerClient, payload) {
82
+ const { kmsDecryptEip712Message, kmsDecryptEip712Signer, kmsDecryptEip712Signature } = payload;
83
+ const pairs = payload.handleContractPairs;
84
+ const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(relayerClient);
85
+ const res = (await relayerClient.runtime.ethereum.readContract(trustedClient, {
86
+ abi: userDecryptAbi,
87
+ address: relayerClient.chain.fhevm.contracts.kmsVerifier.address,
88
+ args: [
89
+ pairs.map((p) => ({
90
+ handle: p.handle.bytes32Hex,
91
+ contractAddress: p.contractAddress,
92
+ })),
93
+ kmsDecryptEip712Signer,
94
+ kmsDecryptEip712Message.publicKey,
95
+ kmsDecryptEip712Message.contractAddresses,
96
+ _parseUintBigIntString('kmsDecryptEip712Message.startTimestamp', kmsDecryptEip712Message.startTimestamp),
97
+ _parseUintBigIntString('kmsDecryptEip712Message.durationDays', kmsDecryptEip712Message.durationDays),
98
+ kmsDecryptEip712Signature,
99
+ ],
100
+ functionName: userDecryptAbi[0].name,
101
+ }));
102
+ const commonKmsSigncryptedSharePayload = res[0];
103
+ const signersAddress = res[1];
104
+ const threshold = (0, uint_js_1.asUint32BigInt)(res[2]);
105
+ const extraData = res[3];
106
+ return {
107
+ commonKmsSigncryptedSharePayload,
108
+ signersAddress,
109
+ threshold,
110
+ extraData,
111
+ };
112
+ }
113
+ async function fetchUserDecryptV1(relayerClient, parameters) {
114
+ const cleartextEthereumModule = relayerClient.runtime.ethereum;
115
+ const { payload } = parameters;
116
+ const pairs = payload.handleContractPairs;
117
+ const contractAddresses = payload.kmsDecryptEip712Message.contractAddresses;
118
+ const authCount = contractAddresses.length;
119
+ for (const { contractAddress: c } of pairs) {
120
+ let authorized = false;
121
+ for (let i = 0; i < authCount; ++i) {
122
+ if (contractAddresses[i] == c) {
123
+ authorized = true;
124
+ break;
125
+ }
126
+ }
127
+ if (!authorized) {
128
+ throw new Error(`ContractAddressNotAuthorized: ${c} is not in the EIP-712 authorized contractAddresses list.`);
129
+ }
130
+ }
131
+ const offChain = await (0, forgeFhevmV1_js_1.isForgeFhevmV1)(relayerClient);
132
+ let res;
133
+ if (offChain) {
134
+ res = await runUserDecryptOffChain(relayerClient, payload);
135
+ }
136
+ else {
137
+ res = await runUserDecryptOnChain(relayerClient, payload);
138
+ }
139
+ const commonKmsSigncryptedSharePayload = res.commonKmsSigncryptedSharePayload;
140
+ const extraData = res.extraData;
141
+ const threshold = res.threshold;
142
+ const signersAddress = res.signersAddress;
143
+ const signers = (0, signers_js_1.getKmsSignersPrivateKeyMap)(relayerClient);
144
+ const randomSignersAddress = (0, uint_js_1.randomUniqueUints)(signersAddress.length, Number(threshold)).map((i) => signersAddress[i]);
145
+ const result = [];
146
+ for (const signerAddress of randomSignersAddress) {
147
+ const privateKey = signers.get(signerAddress);
148
+ if (privateKey === undefined) {
149
+ throw new Error(`Unable to find KMS signer for address ${signerAddress}`);
150
+ }
151
+ const signature = await cleartextEthereumModule.sign({ hash: commonKmsSigncryptedSharePayload, privateKey });
152
+ result.push({ signature: (0, string_js_1.remove0x)(signature), payload: (0, string_js_1.remove0x)(commonKmsSigncryptedSharePayload), extraData });
153
+ }
154
+ return (0, utils_js_1.userDecryptResultToKmsSigncryptedShares)(result);
155
+ }
156
+ function _parseUintBigIntString(label, value) {
157
+ const bn = (0, uint_js_1.tryParseUintBigIntString)(value);
158
+ if (bn === undefined) {
159
+ throw new Error(`${label} is not a valid uint string, got ${JSON.stringify(value)}`);
160
+ }
161
+ return bn;
162
+ }
163
+ //# sourceMappingURL=fetchUserDecryptV1.js.map