@fhevm/sdk 1.0.0-alpha.2 → 1.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/_cjs/core/_version.js +1 -1
  2. package/_cjs/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  3. package/_cjs/core/actions/host/getUserDecryptionDelegationExpirationDate.js +12 -14
  4. package/_cjs/core/actions/host/getUserDecryptionDelegationExpirationDate.js.map +1 -1
  5. package/_cjs/core/host-contracts/checkDelegation.js +74 -0
  6. package/_cjs/core/host-contracts/checkDelegation.js.map +1 -0
  7. package/_cjs/core/host-contracts/getUserDecryptionDelegationExpirationDate.js +21 -0
  8. package/_cjs/core/host-contracts/getUserDecryptionDelegationExpirationDate.js.map +1 -0
  9. package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +33 -0
  10. package/_cjs/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -0
  11. package/_cjs/core/host-contracts/persistAllowed.js +1 -1
  12. package/_cjs/core/host-contracts/persistAllowed.js.map +1 -1
  13. package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js +16 -5
  14. package/_cjs/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
  15. package/_esm/core/_version.js +1 -1
  16. package/_esm/core/actions/chain/parseSignedDecryptionPermit.js.map +1 -1
  17. package/_esm/core/actions/host/getUserDecryptionDelegationExpirationDate.js +13 -14
  18. package/_esm/core/actions/host/getUserDecryptionDelegationExpirationDate.js.map +1 -1
  19. package/_esm/core/host-contracts/checkDelegation.js +81 -0
  20. package/_esm/core/host-contracts/checkDelegation.js.map +1 -0
  21. package/_esm/core/host-contracts/getUserDecryptionDelegationExpirationDate.js +19 -0
  22. package/_esm/core/host-contracts/getUserDecryptionDelegationExpirationDate.js.map +1 -0
  23. package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js +32 -0
  24. package/_esm/core/host-contracts/isHandleDelegatedForUserDecryption-p.js.map +1 -0
  25. package/_esm/core/host-contracts/persistAllowed.js +1 -1
  26. package/_esm/core/host-contracts/persistAllowed.js.map +1 -1
  27. package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js +16 -5
  28. package/_esm/core/kms/fetchKmsSignedcryptedShares-p.js.map +1 -1
  29. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts +6 -2
  30. package/_types/core/actions/chain/parseSignedDecryptionPermit.d.ts.map +1 -1
  31. package/_types/core/actions/host/getUserDecryptionDelegationExpirationDate.d.ts +5 -2
  32. package/_types/core/actions/host/getUserDecryptionDelegationExpirationDate.d.ts.map +1 -1
  33. package/_types/core/host-contracts/checkDelegation.d.ts +22 -0
  34. package/_types/core/host-contracts/checkDelegation.d.ts.map +1 -0
  35. package/_types/core/host-contracts/getUserDecryptionDelegationExpirationDate.d.ts +19 -0
  36. package/_types/core/host-contracts/getUserDecryptionDelegationExpirationDate.d.ts.map +1 -0
  37. package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts +20 -0
  38. package/_types/core/host-contracts/isHandleDelegatedForUserDecryption-p.d.ts.map +1 -0
  39. package/_types/core/kms/fetchKmsSignedcryptedShares-p.d.ts.map +1 -1
  40. package/_types/core/types/index.d.ts +1 -0
  41. package/_types/core/types/index.d.ts.map +1 -1
  42. package/_types/core/types/kms.d.ts +21 -0
  43. package/_types/core/types/kms.d.ts.map +1 -1
  44. package/core/_version.ts +1 -1
  45. package/core/actions/chain/parseSignedDecryptionPermit.ts +6 -2
  46. package/core/actions/host/getUserDecryptionDelegationExpirationDate.ts +22 -18
  47. package/core/host-contracts/checkDelegation.ts +114 -0
  48. package/core/host-contracts/getUserDecryptionDelegationExpirationDate.ts +45 -0
  49. package/core/host-contracts/isHandleDelegatedForUserDecryption-p.ts +77 -0
  50. package/core/host-contracts/persistAllowed.ts +1 -1
  51. package/core/kms/fetchKmsSignedcryptedShares-p.ts +15 -5
  52. package/core/types/index.ts +1 -0
  53. package/core/types/kms.ts +19 -0
  54. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sdkName = exports.version = void 0;
4
- exports.version = '1.0.0-alpha.2';
4
+ exports.version = '1.0.0-alpha.3';
5
5
  exports.sdkName = '@fhevm/sdk';
6
6
  //# sourceMappingURL=_version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseSignedDecryptionPermit.js","sourceRoot":"","sources":["../../../../core/actions/chain/parseSignedDecryptionPermit.ts"],"names":[],"mappings":";;AA0BA,kEAOC;AA5BD,uFAAoH;AAqB7G,KAAK,UAAU,2BAA2B,CAC/C,KAAwB,EACxB,UAAiD;IAEjD,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC;IAE1D,OAAO,IAAA,yDAA4B,EAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"parseSignedDecryptionPermit.js","sourceRoot":"","sources":["../../../../core/actions/chain/parseSignedDecryptionPermit.ts"],"names":[],"mappings":";;AA8BA,kEAOC;AAhCD,uFAAoH;AAyB7G,KAAK,UAAU,2BAA2B,CAC/C,KAAwB,EACxB,UAAiD;IAEjD,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC;IAE1D,OAAO,IAAA,yDAA4B,EAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AACjF,CAAC"}
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUserDecryptionDelegationExpirationDate = getUserDecryptionDelegationExpirationDate;
4
- const uint_js_1 = require("../../base/uint.js");
5
- const fragments_js_1 = require("../../host-contracts/abi-fragments/fragments.js");
6
- const CoreFhevm_p_js_1 = require("../../runtime/CoreFhevm-p.js");
4
+ const address_js_1 = require("../../base/address.js");
5
+ const getUserDecryptionDelegationExpirationDate_js_1 = require("../../host-contracts/getUserDecryptionDelegationExpirationDate.js");
7
6
  async function getUserDecryptionDelegationExpirationDate(fhevm, parameters) {
8
- const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(fhevm);
9
- const address = parameters.address;
10
- const res = await fhevm.runtime.ethereum.readContract(trustedClient, {
11
- address: address,
12
- abi: fragments_js_1.getUserDecryptionDelegationExpirationDateAbi,
13
- args: [],
14
- functionName: fragments_js_1.getUserDecryptionDelegationExpirationDateAbi[0].name,
7
+ const { address, delegate, delegator, contractAddress } = parameters;
8
+ (0, address_js_1.assertIsAddress)(address, {});
9
+ (0, address_js_1.assertIsAddress)(delegate, {});
10
+ (0, address_js_1.assertIsAddress)(delegator, {});
11
+ (0, address_js_1.assertIsAddress)(contractAddress, {});
12
+ return (0, getUserDecryptionDelegationExpirationDate_js_1.getUserDecryptionDelegationExpirationDate)(fhevm, {
13
+ address: (0, address_js_1.addressToChecksummedAddress)(address),
14
+ delegate: (0, address_js_1.addressToChecksummedAddress)(delegate),
15
+ delegator: (0, address_js_1.addressToChecksummedAddress)(delegator),
16
+ contractAddress: (0, address_js_1.addressToChecksummedAddress)(contractAddress),
15
17
  });
16
- if (!(0, uint_js_1.isUint64)(res)) {
17
- throw new Error(`Invalid expiration date.`);
18
- }
19
- return BigInt(res);
20
18
  }
21
19
  //# sourceMappingURL=getUserDecryptionDelegationExpirationDate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDecryptionDelegationExpirationDate.js","sourceRoot":"","sources":["../../../../core/actions/host/getUserDecryptionDelegationExpirationDate.ts"],"names":[],"mappings":";;AAYA,8FAmBC;AA7BD,gDAA8C;AAC9C,kFAA+G;AAC/G,iEAAgE;AAQzD,KAAK,UAAU,yCAAyC,CAC7D,KAAY,EACZ,UAA+D;IAE/D,MAAM,aAAa,GAAG,IAAA,iCAAgB,EAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACnE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,2DAA4C;QACjD,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,2DAA4C,CAAC,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC,CAAC;IAEH,IAAI,CAAC,IAAA,kBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAiB,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"getUserDecryptionDelegationExpirationDate.js","sourceRoot":"","sources":["../../../../core/actions/host/getUserDecryptionDelegationExpirationDate.ts"],"names":[],"mappings":";;AAkBA,8FAiBC;AAjCD,sDAAqF;AACrF,oIAA4K;AAerK,KAAK,UAAU,yCAAyC,CAC7D,KAAY,EACZ,UAA+D;IAE/D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;IAErE,IAAA,4BAAe,EAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7B,IAAA,4BAAe,EAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9B,IAAA,4BAAe,EAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/B,IAAA,4BAAe,EAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,IAAA,wFAA0C,EAAC,KAAK,EAAE;QACvD,OAAO,EAAE,IAAA,wCAA2B,EAAC,OAAO,CAAC;QAC7C,QAAQ,EAAE,IAAA,wCAA2B,EAAC,QAAQ,CAAC;QAC/C,SAAS,EAAE,IAAA,wCAA2B,EAAC,SAAS,CAAC;QACjD,eAAe,EAAE,IAAA,wCAA2B,EAAC,eAAe,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkDelegation = checkDelegation;
4
+ const AclError_js_1 = require("../errors/AclError.js");
5
+ const isHandleDelegatedForUserDecryption_p_js_1 = require("./isHandleDelegatedForUserDecryption-p.js");
6
+ async function checkDelegation(context, parameters) {
7
+ const { address, delegator, delegate, handleContractPairs } = parameters;
8
+ if (handleContractPairs.length === 0) {
9
+ throw new Error('checkDelegation requires at least one (handle, contractAddress) pair');
10
+ }
11
+ function getKey(addr, handleBytes32Hex) {
12
+ return `${addr}:${handleBytes32Hex}`.toLowerCase();
13
+ }
14
+ if (delegator.toLowerCase() === delegate.toLowerCase()) {
15
+ throw new AclError_js_1.AclUserDecryptionError({
16
+ contractAddress: address,
17
+ message: `delegator ${delegator} cannot be equal to delegate`,
18
+ });
19
+ }
20
+ for (const pair of handleContractPairs) {
21
+ if (delegator.toLowerCase() === pair.contractAddress.toLowerCase()) {
22
+ throw new AclError_js_1.AclUserDecryptionError({
23
+ contractAddress: address,
24
+ message: `delegator ${delegator} cannot be equal to contractAddress`,
25
+ });
26
+ }
27
+ if (delegate.toLowerCase() === pair.contractAddress.toLowerCase()) {
28
+ throw new AclError_js_1.AclUserDecryptionError({
29
+ contractAddress: address,
30
+ message: `delegate ${delegate} cannot be equal to contractAddress`,
31
+ });
32
+ }
33
+ }
34
+ const allChecks = [];
35
+ const seenKeys = new Set();
36
+ for (const pair of handleContractPairs) {
37
+ const key = getKey(pair.contractAddress, pair.handle.bytes32Hex);
38
+ if (!seenKeys.has(key)) {
39
+ seenKeys.add(key);
40
+ allChecks.push({
41
+ handle: pair.handle,
42
+ contractAddress: pair.contractAddress,
43
+ });
44
+ }
45
+ }
46
+ if (allChecks.length === 0) {
47
+ throw new Error('checkDelegation: no delegation checks to perform (unexpected empty dedup result)');
48
+ }
49
+ const allResults = await (0, isHandleDelegatedForUserDecryption_p_js_1.isHandleDelegatedForUserDecryption)(context, {
50
+ address,
51
+ delegator,
52
+ delegate,
53
+ pairs: allChecks,
54
+ });
55
+ const resultMap = new Map();
56
+ for (const [i, check] of allChecks.entries()) {
57
+ const result = allResults[i];
58
+ if (result === undefined) {
59
+ throw new Error(`Missing result at index ${i}`);
60
+ }
61
+ const key = getKey(check.contractAddress, check.handle.bytes32Hex);
62
+ resultMap.set(key, result);
63
+ }
64
+ for (const pair of handleContractPairs) {
65
+ const key = getKey(pair.contractAddress, pair.handle.bytes32Hex);
66
+ if (resultMap.get(key) !== true) {
67
+ throw new AclError_js_1.AclUserDecryptionError({
68
+ contractAddress: address,
69
+ message: `Delegate ${delegate} is not delegated by ${delegator} to user decrypt handle ${pair.handle.bytes32Hex} on contract ${pair.contractAddress}!`,
70
+ });
71
+ }
72
+ }
73
+ }
74
+ //# sourceMappingURL=checkDelegation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkDelegation.js","sourceRoot":"","sources":["../../../core/host-contracts/checkDelegation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUserDecryptionDelegationExpirationDate = getUserDecryptionDelegationExpirationDate;
4
+ const uint_js_1 = require("../base/uint.js");
5
+ const fragments_js_1 = require("../host-contracts/abi-fragments/fragments.js");
6
+ const CoreFhevm_p_js_1 = require("../runtime/CoreFhevm-p.js");
7
+ async function getUserDecryptionDelegationExpirationDate(context, parameters) {
8
+ const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(context);
9
+ const address = parameters.address;
10
+ const res = await context.runtime.ethereum.readContract(trustedClient, {
11
+ address: address,
12
+ abi: fragments_js_1.getUserDecryptionDelegationExpirationDateAbi,
13
+ args: [parameters.delegator, parameters.delegate, parameters.contractAddress],
14
+ functionName: fragments_js_1.getUserDecryptionDelegationExpirationDateAbi[0].name,
15
+ });
16
+ if (!(0, uint_js_1.isUint64)(res)) {
17
+ throw new Error(`Invalid expiration date.`);
18
+ }
19
+ return BigInt(res);
20
+ }
21
+ //# sourceMappingURL=getUserDecryptionDelegationExpirationDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUserDecryptionDelegationExpirationDate.js","sourceRoot":"","sources":["../../../core/host-contracts/getUserDecryptionDelegationExpirationDate.ts"],"names":[],"mappings":";;AAyBA,8FAmBC;AA1CD,6CAA2C;AAC3C,+EAA4G;AAC5G,8DAA6D;AAqBtD,KAAK,UAAU,yCAAyC,CAC7D,OAAgB,EAChB,UAAsB;IAEtB,MAAM,aAAa,GAAG,IAAA,iCAAgB,EAAC,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEnC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACrE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,2DAA4C;QACjD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC;QAC7E,YAAY,EAAE,2DAA4C,CAAC,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC,CAAC;IAEH,IAAI,CAAC,IAAA,kBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAiB,CAAC;AACrC,CAAC"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isHandleDelegatedForUserDecryption = isHandleDelegatedForUserDecryption;
4
+ const fragments_js_1 = require("./abi-fragments/fragments.js");
5
+ const CoreFhevm_p_js_1 = require("../runtime/CoreFhevm-p.js");
6
+ const promise_js_1 = require("../base/promise.js");
7
+ async function isHandleDelegatedForUserDecryption(context, parameters) {
8
+ const { address, delegate, delegator, pairs } = parameters;
9
+ const rpcCalls = pairs.map((pair) => () => _isHandleDelegatedForUserDecryption(context, {
10
+ address,
11
+ delegate,
12
+ delegator,
13
+ handle: pair.handle,
14
+ contractAddress: pair.contractAddress,
15
+ }));
16
+ const results = await (0, promise_js_1.executeWithBatching)(rpcCalls, context.options.batchRpcCalls);
17
+ return results;
18
+ }
19
+ async function _isHandleDelegatedForUserDecryption(context, parameters) {
20
+ const { address, delegator, delegate, contractAddress, handle } = parameters;
21
+ const trustedClient = (0, CoreFhevm_p_js_1.getTrustedClient)(context);
22
+ const res = await context.runtime.ethereum.readContract(trustedClient, {
23
+ address: address,
24
+ abi: fragments_js_1.isHandleDelegatedForUserDecryptionAbi,
25
+ args: [delegator, delegate, contractAddress, handle.bytes32Hex],
26
+ functionName: fragments_js_1.isHandleDelegatedForUserDecryptionAbi[0].name,
27
+ });
28
+ if (typeof res !== 'boolean') {
29
+ throw new Error(`Invalid isHandleDelegatedForUserDecryptionAbi result.`);
30
+ }
31
+ return res;
32
+ }
33
+ //# sourceMappingURL=isHandleDelegatedForUserDecryption-p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isHandleDelegatedForUserDecryption-p.js","sourceRoot":"","sources":["../../../core/host-contracts/isHandleDelegatedForUserDecryption-p.ts"],"names":[],"mappings":";;AA2BA,gFAoBC;AA3CD,+DAAqF;AACrF,8DAA6D;AAC7D,mDAAyD;AAqBlD,KAAK,UAAU,kCAAkC,CACtD,OAAgB,EAChB,UAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAE3D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CACb,mCAAmC,CAAC,OAAO,EAAE;QAC3C,OAAO;QACP,QAAQ;QACR,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC,CACL,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEnF,OAAO,OAAO,CAAC;AACjB,CAAC;AAID,KAAK,UAAU,mCAAmC,CAChD,OAAgB,EAChB,UAMC;IAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC7E,MAAM,aAAa,GAAG,IAAA,iCAAgB,EAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACrE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,oDAAqC;QAC1C,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC;QAC/D,YAAY,EAAE,oDAAqC,CAAC,CAAC,CAAC,CAAC,IAAI;KAC5D,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -24,7 +24,7 @@ async function _persistAllowed(context, parameters) {
24
24
  functionName: fragments_js_1.persistAllowedAbi[0].name,
25
25
  });
26
26
  if (typeof res !== 'boolean') {
27
- throw new Error(`Invalid isAllowedForDecryption result.`);
27
+ throw new Error(`Invalid persistAllowed result.`);
28
28
  }
29
29
  return res;
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"persistAllowed.js","sourceRoot":"","sources":["../../../core/host-contracts/persistAllowed.ts"],"names":[],"mappings":";;AAyBA,wCAeC;AApCD,+DAAiE;AACjE,8DAA6D;AAC7D,mDAAyD;AAmBlD,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,UAAsB;IAC3E,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAEtC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CACb,eAAe,CAAC,OAAO,EAAE;QACvB,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CACL,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEnF,OAAO,OAAO,CAAC;AACjB,CAAC;AAID,KAAK,UAAU,eAAe,CAC5B,OAAgB,EAChB,UAIC;IAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAChD,MAAM,aAAa,GAAG,IAAA,iCAAgB,EAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACrE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,gCAAiB;QACtB,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAClC,YAAY,EAAE,gCAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;KACxC,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"persistAllowed.js","sourceRoot":"","sources":["../../../core/host-contracts/persistAllowed.ts"],"names":[],"mappings":";;AAyBA,wCAeC;AApCD,+DAAiE;AACjE,8DAA6D;AAC7D,mDAAyD;AAmBlD,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,UAAsB;IAC3E,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAEtC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CACb,eAAe,CAAC,OAAO,EAAE;QACvB,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CACL,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEnF,OAAO,OAAO,CAAC;AACjB,CAAC;AAID,KAAK,UAAU,eAAe,CAC5B,OAAgB,EAChB,UAIC;IAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAChD,MAAM,aAAa,GAAG,IAAA,iCAAgB,EAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACrE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,gCAAiB;QACtB,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAClC,YAAY,EAAE,gCAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;KACxC,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -9,6 +9,7 @@ const utils_js_1 = require("./utils.js");
9
9
  const checkPersistAllowed_js_1 = require("../host-contracts/checkPersistAllowed.js");
10
10
  const KmsSignersContext_p_js_1 = require("../host-contracts/KmsSignersContext-p.js");
11
11
  const createKmsEip712Domain_js_1 = require("./createKmsEip712Domain.js");
12
+ const checkDelegation_js_1 = require("../host-contracts/checkDelegation.js");
12
13
  const MAX_USER_DECRYPT_CONTRACT_ADDRESSES = 10;
13
14
  async function fetchKmsSignedcryptedShares(context, parameters) {
14
15
  const { signedPermit, options, pairs } = parameters;
@@ -35,11 +36,21 @@ async function fetchKmsSignedcryptedShares(context, parameters) {
35
36
  (0, FhevmHandle_js_1.assertHandlesBelongToSameChainId)(handles, BigInt(context.chain.id));
36
37
  (0, utils_js_1.assertKmsDecryptionBitLimit)(handles);
37
38
  signedPermit.assertNotExpired();
38
- await (0, checkPersistAllowed_js_1.checkPersistAllowed)(context, {
39
- address: context.chain.fhevm.contracts.acl.address,
40
- userAddress: encryptedDataOwnerAddress,
41
- handleContractPairs,
42
- });
39
+ if (signedPermit.isDelegated) {
40
+ await (0, checkDelegation_js_1.checkDelegation)(context, {
41
+ address: context.chain.fhevm.contracts.acl.address,
42
+ delegate: signerAddress,
43
+ delegator: encryptedDataOwnerAddress,
44
+ handleContractPairs,
45
+ });
46
+ }
47
+ else {
48
+ await (0, checkPersistAllowed_js_1.checkPersistAllowed)(context, {
49
+ address: context.chain.fhevm.contracts.acl.address,
50
+ userAddress: encryptedDataOwnerAddress,
51
+ handleContractPairs,
52
+ });
53
+ }
43
54
  const requestedKmsSignersContext = await (0, readKmsSignersContext_p_js_1.readKmsSignersContext)(context, {
44
55
  address: context.chain.fhevm.contracts.kmsVerifier.address,
45
56
  });
@@ -1 +1 @@
1
- {"version":3,"file":"fetchKmsSignedcryptedShares-p.js","sourceRoot":"","sources":["../../../core/kms/fetchKmsSignedcryptedShares-p.ts"],"names":[],"mappings":";;AAoEA,kEAsIC;AAjMD,6DAA4E;AAC5E,gFAA8E;AAC9E,6FAAqF;AACrF,+EAAsH;AACtH,yCAAyD;AACzD,qFAA+E;AAC/E,qFAAmG;AACnG,yEAAmE;AA8CnE,MAAM,mCAAmC,GAAG,EAAE,CAAC;AAMxC,KAAK,UAAU,2BAA2B,CAAC,OAAgB,EAAE,UAAsB;IACxF,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAGpD,IAAA,mEAAqC,EACnC,YAAY,EACZ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CACpC,CAAC;IAGF,MAAM,cAAc,GAAG;QACrB,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI;QACjC,GAAG,OAAO;KACX,CAAC;IAEF,IAAA,4DAA8B,EAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAGjD,MAAM,EAAE,yBAAyB,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC;IAG7E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,CACT,0GAA0G,CAC3G,CAAC;IACJ,CAAC;IAGD,MAAM,uBAAuB,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC;IACrF,IAAI,uBAAuB,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAGD,IAAI,uBAAuB,GAAG,mCAAmC,EAAE,CAAC;QAClE,MAAM,KAAK,CAAC,mCAAmC,mCAAmC,WAAW,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,mBAAmB,GAAG,KAAK,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAGvB,IAAA,iDAAgC,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAiB,CAAC,CAAC;IAGpF,IAAA,sCAA2B,EAAC,OAAO,CAAC,CAAC;IAGrC,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAGhC,MAAM,IAAA,4CAAmB,EAAC,OAAO,EAAE;QACjC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,OAA6B;QACxE,WAAW,EAAE,yBAAyB;QACtC,mBAAmB;KACpB,CAAC,CAAC;IAmBH,MAAM,0BAA0B,GAAsB,MAAM,IAAA,kDAAqB,EAAC,OAAO,EAAE;QACzF,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,OAA6B;KACjF,CAAC,CAAC;IAEH,IAAA,gEAAuC,EACrC;QACE,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS;QAChD,iBAAiB,EAAE,0BAA0B;KAC9C,EACD,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAC9B,CAAC;IAMF,IAAI,MAAsC,CAAC;IAE3C,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,OAAO,EAAE;YACxE,OAAO,EAAE;gBACP,mBAAmB;gBACnB,sBAAsB,EAAE,aAAa;gBACrC,uBAAuB,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO;gBACpD,yBAAyB,EAAE,SAAS;aACrC;YACD,OAAO,EAAE,cAAoD;SAC9D,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC/D,OAAO,EAAE;gBACP,mBAAmB;gBACnB,sBAAsB,EAAE,aAAa;gBACrC,uBAAuB,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO;gBACpD,yBAAyB,EAAE,SAAS;aACrC;YACD,OAAO,EAAE,cAA2C;SACrD,CAAC,CAAC;IACL,CAAC;IAGD,MAAM,cAAc,GAAiC;QACnD,iBAAiB,EAAE,0BAA0B;QAC7C,YAAY,EAAE,IAAA,gDAAqB,EAAC;YAClC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YACvC,kCAAkC,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO;SAC7F,CAAC;QACF,eAAe,EAAE,SAAS;QAC1B,mBAAmB,EAAE,aAAa;QAClC,OAAO;KACR,CAAC;IAKF,OAAO,MAAM,IAAA,sDAA0B,EAAC,OAAO,EAAE;QAC/C,QAAQ,EAAE,cAAc;QACxB,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"fetchKmsSignedcryptedShares-p.js","sourceRoot":"","sources":["../../../core/kms/fetchKmsSignedcryptedShares-p.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  // This file is auto-generated
2
- export const version = '1.0.0-alpha.2';
2
+ export const version = '1.0.0-alpha.3';
3
3
  export const sdkName = '@fhevm/sdk';
4
4
  //# sourceMappingURL=_version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseSignedDecryptionPermit.js","sourceRoot":"","sources":["../../../../core/actions/chain/parseSignedDecryptionPermit.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,2BAA2B,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAapH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAwB,EACxB,UAAiD;IAEjD,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC;IAE1D,OAAO,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"parseSignedDecryptionPermit.js","sourceRoot":"","sources":["../../../../core/actions/chain/parseSignedDecryptionPermit.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,2BAA2B,IAAI,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAiBpH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAwB,EACxB,UAAiD;IAEjD,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAAC;IAE1D,OAAO,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AACjF,CAAC"}
@@ -1,18 +1,17 @@
1
- import { isUint64 } from '../../base/uint.js';
2
- import { getUserDecryptionDelegationExpirationDateAbi } from '../../host-contracts/abi-fragments/fragments.js';
3
- import { getTrustedClient } from '../../runtime/CoreFhevm-p.js';
1
+ import { addressToChecksummedAddress, assertIsAddress } from '../../base/address.js';
2
+ import { getUserDecryptionDelegationExpirationDate as getUserDecryptionDelegationExpirationDate_ } from '../../host-contracts/getUserDecryptionDelegationExpirationDate.js';
3
+ ////////////////////////////////////////////////////////////////////////////////
4
4
  export async function getUserDecryptionDelegationExpirationDate(fhevm, parameters) {
5
- const trustedClient = getTrustedClient(fhevm);
6
- const address = parameters.address;
7
- const res = await fhevm.runtime.ethereum.readContract(trustedClient, {
8
- address: address,
9
- abi: getUserDecryptionDelegationExpirationDateAbi,
10
- args: [],
11
- functionName: getUserDecryptionDelegationExpirationDateAbi[0].name,
5
+ const { address, delegate, delegator, contractAddress } = parameters;
6
+ assertIsAddress(address, {});
7
+ assertIsAddress(delegate, {});
8
+ assertIsAddress(delegator, {});
9
+ assertIsAddress(contractAddress, {});
10
+ return getUserDecryptionDelegationExpirationDate_(fhevm, {
11
+ address: addressToChecksummedAddress(address),
12
+ delegate: addressToChecksummedAddress(delegate),
13
+ delegator: addressToChecksummedAddress(delegator),
14
+ contractAddress: addressToChecksummedAddress(contractAddress),
12
15
  });
13
- if (!isUint64(res)) {
14
- throw new Error(`Invalid expiration date.`);
15
- }
16
- return BigInt(res);
17
16
  }
18
17
  //# sourceMappingURL=getUserDecryptionDelegationExpirationDate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getUserDecryptionDelegationExpirationDate.js","sourceRoot":"","sources":["../../../../core/actions/host/getUserDecryptionDelegationExpirationDate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,4CAA4C,EAAE,MAAM,iDAAiD,CAAC;AAC/G,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAQhE,MAAM,CAAC,KAAK,UAAU,yCAAyC,CAC7D,KAAY,EACZ,UAA+D;IAE/D,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACnE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,4CAA4C;QACjD,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,4CAA4C,CAAC,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAiB,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"getUserDecryptionDelegationExpirationDate.js","sourceRoot":"","sources":["../../../../core/actions/host/getUserDecryptionDelegationExpirationDate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,yCAAyC,IAAI,0CAA0C,EAAE,MAAM,mEAAmE,CAAC;AAa5K,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,yCAAyC,CAC7D,KAAY,EACZ,UAA+D;IAE/D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;IAErE,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7B,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9B,eAAe,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC/B,eAAe,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAErC,OAAO,0CAA0C,CAAC,KAAK,EAAE;QACvD,OAAO,EAAE,2BAA2B,CAAC,OAAO,CAAC;QAC7C,QAAQ,EAAE,2BAA2B,CAAC,QAAQ,CAAC;QAC/C,SAAS,EAAE,2BAA2B,CAAC,SAAS,CAAC;QACjD,eAAe,EAAE,2BAA2B,CAAC,eAAe,CAAC;KAC9D,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { AclUserDecryptionError } from '../errors/AclError.js';
2
+ import { isHandleDelegatedForUserDecryption } from './isHandleDelegatedForUserDecryption-p.js';
3
+ ////////////////////////////////////////////////////////////////////////////////
4
+ export async function checkDelegation(context, parameters) {
5
+ const { address, delegator, delegate, handleContractPairs } = parameters;
6
+ if (handleContractPairs.length === 0) {
7
+ throw new Error('checkDelegation requires at least one (handle, contractAddress) pair');
8
+ }
9
+ // runtime defensive check, use lowercase
10
+ function getKey(addr, handleBytes32Hex) {
11
+ return `${addr}:${handleBytes32Hex}`.toLowerCase();
12
+ }
13
+ // 1. Verify rule: delegator !== delegate
14
+ if (delegator.toLowerCase() === delegate.toLowerCase()) {
15
+ throw new AclUserDecryptionError({
16
+ contractAddress: address,
17
+ message: `delegator ${delegator} cannot be equal to delegate`,
18
+ });
19
+ }
20
+ // 2. Verify rules: delegator !== contractAddress & delegate !== contractAddress
21
+ for (const pair of handleContractPairs) {
22
+ if (delegator.toLowerCase() === pair.contractAddress.toLowerCase()) {
23
+ throw new AclUserDecryptionError({
24
+ contractAddress: address,
25
+ message: `delegator ${delegator} cannot be equal to contractAddress`,
26
+ });
27
+ }
28
+ if (delegate.toLowerCase() === pair.contractAddress.toLowerCase()) {
29
+ throw new AclUserDecryptionError({
30
+ contractAddress: address,
31
+ message: `delegate ${delegate} cannot be equal to contractAddress`,
32
+ });
33
+ }
34
+ }
35
+ // 3. Collect all unique (contractAddress, handle) pairs to avoid duplicate RPC calls
36
+ const allChecks = [];
37
+ const seenKeys = new Set();
38
+ for (const pair of handleContractPairs) {
39
+ // runtime defensive check, use lowercase
40
+ const key = getKey(pair.contractAddress, pair.handle.bytes32Hex);
41
+ if (!seenKeys.has(key)) {
42
+ seenKeys.add(key);
43
+ allChecks.push({
44
+ handle: pair.handle,
45
+ contractAddress: pair.contractAddress,
46
+ });
47
+ }
48
+ }
49
+ if (allChecks.length === 0) {
50
+ throw new Error('checkDelegation: no delegation checks to perform (unexpected empty dedup result)');
51
+ }
52
+ // 4. Single batched RPC call for all unique checks
53
+ const allResults = await isHandleDelegatedForUserDecryption(context, {
54
+ address,
55
+ delegator,
56
+ delegate,
57
+ pairs: allChecks,
58
+ });
59
+ // 5. Build result map for lookup
60
+ const resultMap = new Map();
61
+ for (const [i, check] of allChecks.entries()) {
62
+ const result = allResults[i];
63
+ // tsc: noUncheckedIndexedAccess
64
+ if (result === undefined) {
65
+ throw new Error(`Missing result at index ${i}`);
66
+ }
67
+ const key = getKey(check.contractAddress, check.handle.bytes32Hex);
68
+ resultMap.set(key, result);
69
+ }
70
+ // 6. Verify delegation for each requested pair
71
+ for (const pair of handleContractPairs) {
72
+ const key = getKey(pair.contractAddress, pair.handle.bytes32Hex);
73
+ if (resultMap.get(key) !== true) {
74
+ throw new AclUserDecryptionError({
75
+ contractAddress: address,
76
+ message: `Delegate ${delegate} is not delegated by ${delegator} to user decrypt handle ${pair.handle.bytes32Hex} on contract ${pair.contractAddress}!`,
77
+ });
78
+ }
79
+ }
80
+ }
81
+ //# sourceMappingURL=checkDelegation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkDelegation.js","sourceRoot":"","sources":["../../../core/host-contracts/checkDelegation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { isUint64 } from '../base/uint.js';
2
+ import { getUserDecryptionDelegationExpirationDateAbi } from '../host-contracts/abi-fragments/fragments.js';
3
+ import { getTrustedClient } from '../runtime/CoreFhevm-p.js';
4
+ ////////////////////////////////////////////////////////////////////////////////
5
+ export async function getUserDecryptionDelegationExpirationDate(context, parameters) {
6
+ const trustedClient = getTrustedClient(context);
7
+ const address = parameters.address;
8
+ const res = await context.runtime.ethereum.readContract(trustedClient, {
9
+ address: address,
10
+ abi: getUserDecryptionDelegationExpirationDateAbi,
11
+ args: [parameters.delegator, parameters.delegate, parameters.contractAddress],
12
+ functionName: getUserDecryptionDelegationExpirationDateAbi[0].name,
13
+ });
14
+ if (!isUint64(res)) {
15
+ throw new Error(`Invalid expiration date.`);
16
+ }
17
+ return BigInt(res);
18
+ }
19
+ //# sourceMappingURL=getUserDecryptionDelegationExpirationDate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getUserDecryptionDelegationExpirationDate.js","sourceRoot":"","sources":["../../../core/host-contracts/getUserDecryptionDelegationExpirationDate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,4CAA4C,EAAE,MAAM,8CAA8C,CAAC;AAC5G,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAmB7D,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,yCAAyC,CAC7D,OAAgB,EAChB,UAAsB;IAEtB,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAEnC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACrE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,4CAA4C;QACjD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,eAAe,CAAC;QAC7E,YAAY,EAAE,4CAA4C,CAAC,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CAAiB,CAAC;AACrC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { isHandleDelegatedForUserDecryptionAbi } from './abi-fragments/fragments.js';
2
+ import { getTrustedClient } from '../runtime/CoreFhevm-p.js';
3
+ import { executeWithBatching } from '../base/promise.js';
4
+ ////////////////////////////////////////////////////////////////////////////////
5
+ export async function isHandleDelegatedForUserDecryption(context, parameters) {
6
+ const { address, delegate, delegator, pairs } = parameters;
7
+ const rpcCalls = pairs.map((pair) => () => _isHandleDelegatedForUserDecryption(context, {
8
+ address,
9
+ delegate,
10
+ delegator,
11
+ handle: pair.handle,
12
+ contractAddress: pair.contractAddress,
13
+ }));
14
+ const results = await executeWithBatching(rpcCalls, context.options.batchRpcCalls);
15
+ return results;
16
+ }
17
+ ////////////////////////////////////////////////////////////////////////////////
18
+ async function _isHandleDelegatedForUserDecryption(context, parameters) {
19
+ const { address, delegator, delegate, contractAddress, handle } = parameters;
20
+ const trustedClient = getTrustedClient(context);
21
+ const res = await context.runtime.ethereum.readContract(trustedClient, {
22
+ address: address,
23
+ abi: isHandleDelegatedForUserDecryptionAbi,
24
+ args: [delegator, delegate, contractAddress, handle.bytes32Hex],
25
+ functionName: isHandleDelegatedForUserDecryptionAbi[0].name,
26
+ });
27
+ if (typeof res !== 'boolean') {
28
+ throw new Error(`Invalid isHandleDelegatedForUserDecryptionAbi result.`);
29
+ }
30
+ return res;
31
+ }
32
+ //# sourceMappingURL=isHandleDelegatedForUserDecryption-p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isHandleDelegatedForUserDecryption-p.js","sourceRoot":"","sources":["../../../core/host-contracts/isHandleDelegatedForUserDecryption-p.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qCAAqC,EAAE,MAAM,8BAA8B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAmBzD,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,OAAgB,EAChB,UAAsB;IAEtB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAE3D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CACb,mCAAmC,CAAC,OAAO,EAAE;QAC3C,OAAO;QACP,QAAQ;QACR,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC,CACL,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEnF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAEhF,KAAK,UAAU,mCAAmC,CAChD,OAAgB,EAChB,UAMC;IAED,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAC7E,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACrE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,qCAAqC;QAC1C,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC;QAC/D,YAAY,EAAE,qCAAqC,CAAC,CAAC,CAAC,CAAC,IAAI;KAC5D,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -23,7 +23,7 @@ async function _persistAllowed(context, parameters) {
23
23
  functionName: persistAllowedAbi[0].name,
24
24
  });
25
25
  if (typeof res !== 'boolean') {
26
- throw new Error(`Invalid isAllowedForDecryption result.`);
26
+ throw new Error(`Invalid persistAllowed result.`);
27
27
  }
28
28
  return res;
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"persistAllowed.js","sourceRoot":"","sources":["../../../core/host-contracts/persistAllowed.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAiBzD,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,UAAsB;IAC3E,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAEtC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CACb,eAAe,CAAC,OAAO,EAAE;QACvB,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CACL,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEnF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAEhF,KAAK,UAAU,eAAe,CAC5B,OAAgB,EAChB,UAIC;IAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAChD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACrE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,iBAAiB;QACtB,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAClC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;KACxC,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"persistAllowed.js","sourceRoot":"","sources":["../../../core/host-contracts/persistAllowed.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAiBzD,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,UAAsB;IAC3E,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAEtC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CACxB,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,CACb,eAAe,CAAC,OAAO,EAAE;QACvB,OAAO;QACP,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CACL,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAEnF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAEhF,KAAK,UAAU,eAAe,CAC5B,OAAgB,EAChB,UAIC;IAED,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IAChD,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE;QACrE,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,iBAAiB;QACtB,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAClC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;KACxC,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -6,6 +6,7 @@ import { assertKmsDecryptionBitLimit } from './utils.js';
6
6
  import { checkPersistAllowed } from '../host-contracts/checkPersistAllowed.js';
7
7
  import { assertExtraDataMatchesKmsSingersContext } from '../host-contracts/KmsSignersContext-p.js';
8
8
  import { createKmsEip712Domain } from './createKmsEip712Domain.js';
9
+ import { checkDelegation } from '../host-contracts/checkDelegation.js';
9
10
  ////////////////////////////////////////////////////////////////////////////////
10
11
  const MAX_USER_DECRYPT_CONTRACT_ADDRESSES = 10;
11
12
  ////////////////////////////////////////////////////////////////////////////////
@@ -46,11 +47,21 @@ export async function fetchKmsSignedcryptedShares(context, parameters) {
46
47
  // 6. Check: Expiration date
47
48
  signedPermit.assertNotExpired();
48
49
  // 7. Check: ACL permissions (user is signer or delegatorAddress)
49
- await checkPersistAllowed(context, {
50
- address: context.chain.fhevm.contracts.acl.address,
51
- userAddress: encryptedDataOwnerAddress,
52
- handleContractPairs,
53
- });
50
+ if (signedPermit.isDelegated) {
51
+ await checkDelegation(context, {
52
+ address: context.chain.fhevm.contracts.acl.address,
53
+ delegate: signerAddress,
54
+ delegator: encryptedDataOwnerAddress,
55
+ handleContractPairs,
56
+ });
57
+ }
58
+ else {
59
+ await checkPersistAllowed(context, {
60
+ address: context.chain.fhevm.contracts.acl.address,
61
+ userAddress: encryptedDataOwnerAddress,
62
+ handleContractPairs,
63
+ });
64
+ }
54
65
  // 8. Verify the EIP712 signature
55
66
  // Not required because a signedPermit is guaranteed to be verified.
56
67
  // 9. Fetch `KmsSignersContext` on-chain (cached)
@@ -1 +1 @@
1
- {"version":3,"file":"fetchKmsSignedcryptedShares-p.js","sourceRoot":"","sources":["../../../core/kms/fetchKmsSignedcryptedShares-p.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetchKmsSignedcryptedShares-p.js","sourceRoot":"","sources":["../../../core/kms/fetchKmsSignedcryptedShares-p.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,14 @@ import type { Fhevm } from '../../types/coreFhevmClient.js';
2
2
  import type { FhevmChain } from '../../types/fhevmChain.js';
3
3
  import type { SignedDecryptionPermit } from '../../types/signedDecryptionPermit.js';
4
4
  import type { TransportKeypair } from '../../kms/TransportKeypair-p.js';
5
- import type { SerializeSignedDecryptionPermitReturnType } from './serializeSignedDecryptionPermit.js';
5
+ import type { KmsDecryptEip712Like } from '../../types/kms.js';
6
6
  export type ParseSignedDecryptionPermitParameters = {
7
7
  /** The serialized permit — a previously parsed permit object. */
8
- readonly serializedPermit: SerializeSignedDecryptionPermitReturnType;
8
+ readonly serializedPermit: {
9
+ readonly eip712: KmsDecryptEip712Like;
10
+ readonly signature: string;
11
+ readonly signerAddress: string;
12
+ };
9
13
  /** The transport keypair that was used when signing the permit. */
10
14
  readonly transportKeypair: TransportKeypair;
11
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parseSignedDecryptionPermit.d.ts","sourceRoot":"","sources":["../../../../core/actions/chain/parseSignedDecryptionPermit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,sCAAsC,CAAC;AAKtG,MAAM,MAAM,qCAAqC,GAAG;IAClD,iEAAiE;IACjE,QAAQ,CAAC,gBAAgB,EAAE,yCAAyC,CAAC;IACrE,mEAAmE;IACnE,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,qCAAqC,GAAG,sBAAsB,CAAC;AAE3E;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EACxB,UAAU,EAAE,qCAAqC,GAChD,OAAO,CAAC,qCAAqC,CAAC,CAIhD"}
1
+ {"version":3,"file":"parseSignedDecryptionPermit.d.ts","sourceRoot":"","sources":["../../../../core/actions/chain/parseSignedDecryptionPermit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,MAAM,MAAM,qCAAqC,GAAG;IAClD,iEAAiE;IACjE,QAAQ,CAAC,gBAAgB,EAAE;QACzB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;QACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,CAAC;IACF,mEAAmE;IACnE,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,qCAAqC,GAAG,sBAAsB,CAAC;AAE3E;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,EACxB,UAAU,EAAE,qCAAqC,GAChD,OAAO,CAAC,qCAAqC,CAAC,CAIhD"}
@@ -1,7 +1,10 @@
1
1
  import type { Fhevm } from '../../types/coreFhevmClient.js';
2
- import type { ChecksummedAddress, Uint64BigInt } from '../../types/primitives.js';
2
+ import type { Uint64BigInt } from '../../types/primitives.js';
3
3
  export type GetUserDecryptionDelegationExpirationDateParameters = {
4
- readonly address: ChecksummedAddress;
4
+ readonly address: string;
5
+ readonly delegator: string;
6
+ readonly delegate: string;
7
+ readonly contractAddress: string;
5
8
  };
6
9
  export type GetUserDecryptionDelegationExpirationDateReturnType = Uint64BigInt;
7
10
  export declare function getUserDecryptionDelegationExpirationDate(fhevm: Fhevm, parameters: GetUserDecryptionDelegationExpirationDateParameters): Promise<GetUserDecryptionDelegationExpirationDateReturnType>;