@primuslabs/fhetransform-sdk 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +198 -0
- package/dist/abis/acl.abi.d.ts +379 -0
- package/dist/abis/acl.abi.js +495 -0
- package/dist/abis/acl.abi.js.map +1 -0
- package/dist/abis/alphatrion_reward.abi.d.ts +407 -0
- package/dist/abis/alphatrion_reward.abi.js +532 -0
- package/dist/abis/alphatrion_reward.abi.js.map +1 -0
- package/dist/abis/ciphertext_digests.abi.d.ts +336 -0
- package/dist/abis/ciphertext_digests.abi.js +444 -0
- package/dist/abis/ciphertext_digests.abi.js.map +1 -0
- package/dist/abis/ciphertext_verification.abi.d.ts +637 -0
- package/dist/abis/ciphertext_verification.abi.js +830 -0
- package/dist/abis/ciphertext_verification.abi.js.map +1 -0
- package/dist/abis/convert_token.abi.d.ts +922 -0
- package/dist/abis/convert_token.abi.js +1208 -0
- package/dist/abis/convert_token.abi.js.map +1 -0
- package/dist/abis/decryption.abi.d.ts +956 -0
- package/dist/abis/decryption.abi.js +1244 -0
- package/dist/abis/decryption.abi.js.map +1 -0
- package/dist/abis/erc20.abi.d.ts +265 -0
- package/dist/abis/erc20.abi.js +350 -0
- package/dist/abis/erc20.abi.js.map +1 -0
- package/dist/abis/fhe_executor.abi.d.ts +1535 -0
- package/dist/abis/fhe_executor.abi.js +1962 -0
- package/dist/abis/fhe_executor.abi.js.map +1 -0
- package/dist/abis/space_bridge_config.abi.d.ts +792 -0
- package/dist/abis/space_bridge_config.abi.js +1032 -0
- package/dist/abis/space_bridge_config.abi.js.map +1 -0
- package/dist/abis/token.abi.d.ts +630 -0
- package/dist/abis/token.abi.js +828 -0
- package/dist/abis/token.abi.js.map +1 -0
- package/dist/cli/eusdc.d.ts +2 -0
- package/dist/cli/eusdc.js +41 -0
- package/dist/cli/eusdc.js.map +1 -0
- package/dist/contract/callbacks.d.ts +59 -0
- package/dist/contract/callbacks.js +2 -0
- package/dist/contract/callbacks.js.map +1 -0
- package/dist/contract/convert-token.d.ts +107 -0
- package/dist/contract/convert-token.js +249 -0
- package/dist/contract/convert-token.js.map +1 -0
- package/dist/contract/token.d.ts +167 -0
- package/dist/contract/token.js +404 -0
- package/dist/contract/token.js.map +1 -0
- package/dist/contract/transaction.d.ts +29 -0
- package/dist/contract/transaction.js +2 -0
- package/dist/contract/transaction.js.map +1 -0
- package/dist/core/address.d.ts +118 -0
- package/dist/core/address.js +200 -0
- package/dist/core/address.js.map +1 -0
- package/dist/core/auth.d.ts +68 -0
- package/dist/core/auth.js +58 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/bytes.d.ts +48 -0
- package/dist/core/bytes.js +117 -0
- package/dist/core/bytes.js.map +1 -0
- package/dist/core/cache-manager.d.ts +138 -0
- package/dist/core/cache-manager.js +440 -0
- package/dist/core/cache-manager.js.map +1 -0
- package/dist/core/chain.d.ts +41 -0
- package/dist/core/chain.js +59 -0
- package/dist/core/chain.js.map +1 -0
- package/dist/core/constants.d.ts +24 -0
- package/dist/core/constants.js +25 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/error.d.ts +2 -0
- package/dist/core/error.js +14 -0
- package/dist/core/error.js.map +1 -0
- package/dist/core/errors/error-catalog.d.ts +29 -0
- package/dist/core/errors/error-catalog.js +84 -0
- package/dist/core/errors/error-catalog.js.map +1 -0
- package/dist/core/errors/error-codes.d.ts +52 -0
- package/dist/core/errors/error-codes.js +61 -0
- package/dist/core/errors/error-codes.js.map +1 -0
- package/dist/core/errors/error-utils.d.ts +27 -0
- package/dist/core/errors/error-utils.js +110 -0
- package/dist/core/errors/error-utils.js.map +1 -0
- package/dist/core/errors/fhe-error.d.ts +98 -0
- package/dist/core/errors/fhe-error.js +190 -0
- package/dist/core/errors/fhe-error.js.map +1 -0
- package/dist/core/errors/index.d.ts +4 -0
- package/dist/core/errors/index.js +5 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/estimate.d.ts +39 -0
- package/dist/core/estimate.js +111 -0
- package/dist/core/estimate.js.map +1 -0
- package/dist/core/event.d.ts +212 -0
- package/dist/core/event.js +42 -0
- package/dist/core/event.js.map +1 -0
- package/dist/core/fhe-type.d.ts +75 -0
- package/dist/core/fhe-type.js +115 -0
- package/dist/core/fhe-type.js.map +1 -0
- package/dist/core/fhe.d.ts +11 -0
- package/dist/core/fhe.js +23 -0
- package/dist/core/fhe.js.map +1 -0
- package/dist/core/handle.d.ts +42 -0
- package/dist/core/handle.js +99 -0
- package/dist/core/handle.js.map +1 -0
- package/dist/core/json-utils.d.ts +18 -0
- package/dist/core/json-utils.js +37 -0
- package/dist/core/json-utils.js.map +1 -0
- package/dist/core/kms.d.ts +42 -0
- package/dist/core/kms.js +70 -0
- package/dist/core/kms.js.map +1 -0
- package/dist/core/logger.d.ts +3 -0
- package/dist/core/logger.js +11 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/pretty-print.d.ts +18 -0
- package/dist/core/pretty-print.js +84 -0
- package/dist/core/pretty-print.js.map +1 -0
- package/dist/core/primitives.d.ts +22 -0
- package/dist/core/primitives.js +2 -0
- package/dist/core/primitives.js.map +1 -0
- package/dist/core/retryable-handler.d.ts +74 -0
- package/dist/core/retryable-handler.js +227 -0
- package/dist/core/retryable-handler.js.map +1 -0
- package/dist/core/signer-address-info.d.ts +15 -0
- package/dist/core/signer-address-info.js +33 -0
- package/dist/core/signer-address-info.js.map +1 -0
- package/dist/core/string.d.ts +28 -0
- package/dist/core/string.js +33 -0
- package/dist/core/string.js.map +1 -0
- package/dist/core/swallow.d.ts +23 -0
- package/dist/core/swallow.js +37 -0
- package/dist/core/swallow.js.map +1 -0
- package/dist/core/system-contract-info.d.ts +17 -0
- package/dist/core/system-contract-info.js +41 -0
- package/dist/core/system-contract-info.js.map +1 -0
- package/dist/core/ttl-cache.d.ts +81 -0
- package/dist/core/ttl-cache.js +113 -0
- package/dist/core/ttl-cache.js.map +1 -0
- package/dist/core/tx-error-parser.d.ts +40 -0
- package/dist/core/tx-error-parser.js +83 -0
- package/dist/core/tx-error-parser.js.map +1 -0
- package/dist/core/utils.d.ts +62 -0
- package/dist/core/utils.js +143 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/jazz/encrypt-key-p.d.ts +65 -0
- package/dist/jazz/encrypt-key-p.js +283 -0
- package/dist/jazz/encrypt-key-p.js.map +1 -0
- package/dist/jazz/encrypt-p.d.ts +82 -0
- package/dist/jazz/encrypt-p.js +139 -0
- package/dist/jazz/encrypt-p.js.map +1 -0
- package/dist/jazz/encrypt.d.ts +58 -0
- package/dist/jazz/encrypt.js +155 -0
- package/dist/jazz/encrypt.js.map +1 -0
- package/dist/jazz/input-proof-p.d.ts +122 -0
- package/dist/jazz/input-proof-p.js +265 -0
- package/dist/jazz/input-proof-p.js.map +1 -0
- package/dist/jazz/jazz-client-i.d.ts +16 -0
- package/dist/jazz/jazz-client-i.js +2 -0
- package/dist/jazz/jazz-client-i.js.map +1 -0
- package/dist/jazz/jazz-client.d.ts +18 -0
- package/dist/jazz/jazz-client.js +24 -0
- package/dist/jazz/jazz-client.js.map +1 -0
- package/dist/jazz/key-pair.d.ts +50 -0
- package/dist/jazz/key-pair.js +166 -0
- package/dist/jazz/key-pair.js.map +1 -0
- package/dist/jazz/mock/fake.d.ts +3 -0
- package/dist/jazz/mock/fake.js +23 -0
- package/dist/jazz/mock/fake.js.map +1 -0
- package/dist/jazz/mock/fetch-input-proof.d.ts +4 -0
- package/dist/jazz/mock/fetch-input-proof.js +63 -0
- package/dist/jazz/mock/fetch-input-proof.js.map +1 -0
- package/dist/jazz/mock/fetch-key-url.d.ts +3 -0
- package/dist/jazz/mock/fetch-key-url.js +15 -0
- package/dist/jazz/mock/fetch-key-url.js.map +1 -0
- package/dist/jazz/mock/fetch-public-decrypt.d.ts +3 -0
- package/dist/jazz/mock/fetch-public-decrypt.js +81 -0
- package/dist/jazz/mock/fetch-public-decrypt.js.map +1 -0
- package/dist/jazz/mock/fetch-user-decrypt.d.ts +4 -0
- package/dist/jazz/mock/fetch-user-decrypt.js +174 -0
- package/dist/jazz/mock/fetch-user-decrypt.js.map +1 -0
- package/dist/jazz/module/fetch-input-proof.d.ts +19 -0
- package/dist/jazz/module/fetch-input-proof.js +72 -0
- package/dist/jazz/module/fetch-input-proof.js.map +1 -0
- package/dist/jazz/module/fetch-key-url.d.ts +17 -0
- package/dist/jazz/module/fetch-key-url.js +46 -0
- package/dist/jazz/module/fetch-key-url.js.map +1 -0
- package/dist/jazz/module/fetch-public-decrypt.d.ts +19 -0
- package/dist/jazz/module/fetch-public-decrypt.js +65 -0
- package/dist/jazz/module/fetch-public-decrypt.js.map +1 -0
- package/dist/jazz/module/fetch-user-decrypt.d.ts +19 -0
- package/dist/jazz/module/fetch-user-decrypt.js +109 -0
- package/dist/jazz/module/fetch-user-decrypt.js.map +1 -0
- package/dist/jazz/module/jazz-async-request.d.ts +102 -0
- package/dist/jazz/module/jazz-async-request.js +515 -0
- package/dist/jazz/module/jazz-async-request.js.map +1 -0
- package/dist/jazz/module/jazz-p.d.ts +61 -0
- package/dist/jazz/module/jazz-p.js +33 -0
- package/dist/jazz/module/jazz-p.js.map +1 -0
- package/dist/jazz/module/s3-download.d.ts +85 -0
- package/dist/jazz/module/s3-download.js +293 -0
- package/dist/jazz/module/s3-download.js.map +1 -0
- package/dist/jazz/permit.d.ts +200 -0
- package/dist/jazz/permit.js +319 -0
- package/dist/jazz/permit.js.map +1 -0
- package/dist/jazz/public-decrypt-p.d.ts +96 -0
- package/dist/jazz/public-decrypt-p.js +258 -0
- package/dist/jazz/public-decrypt-p.js.map +1 -0
- package/dist/jazz/public-decrypt.d.ts +48 -0
- package/dist/jazz/public-decrypt.js +156 -0
- package/dist/jazz/public-decrypt.js.map +1 -0
- package/dist/jazz/read-contract.d.ts +81 -0
- package/dist/jazz/read-contract.js +125 -0
- package/dist/jazz/read-contract.js.map +1 -0
- package/dist/jazz/types/common.d.ts +17 -0
- package/dist/jazz/types/common.js +2 -0
- package/dist/jazz/types/common.js.map +1 -0
- package/dist/jazz/types/input-proof.d.ts +76 -0
- package/dist/jazz/types/input-proof.js +2 -0
- package/dist/jazz/types/input-proof.js.map +1 -0
- package/dist/jazz/types/key-url.d.ts +68 -0
- package/dist/jazz/types/key-url.js +5 -0
- package/dist/jazz/types/key-url.js.map +1 -0
- package/dist/jazz/types/public-decrypt.d.ts +61 -0
- package/dist/jazz/types/public-decrypt.js +2 -0
- package/dist/jazz/types/public-decrypt.js.map +1 -0
- package/dist/jazz/types/user-decrypt.d.ts +123 -0
- package/dist/jazz/types/user-decrypt.js +2 -0
- package/dist/jazz/types/user-decrypt.js.map +1 -0
- package/dist/jazz/user-decrypt-p.d.ts +111 -0
- package/dist/jazz/user-decrypt-p.js +280 -0
- package/dist/jazz/user-decrypt-p.js.map +1 -0
- package/dist/jazz/user-decrypt.d.ts +74 -0
- package/dist/jazz/user-decrypt.js +143 -0
- package/dist/jazz/user-decrypt.js.map +1 -0
- package/dist/native/fhe-api.js +5959 -0
- package/dist/native/fhe-api.node.cjs +6167 -0
- package/dist/native/fhe-api.node.worker.cjs +210 -0
- package/dist/native/fhe-api.wasm +0 -0
- package/dist/native/fhe-api.worker.js +164 -0
- package/dist/native/kms/node/kms_lib.d.ts +38 -0
- package/dist/native/kms/node/kms_lib.js +356 -0
- package/dist/native/kms/node/kms_lib_bg.wasm +0 -0
- package/dist/native/kms/node/kms_lib_bg.wasm.d.ts +21 -0
- package/dist/native/kms/node/package.json +11 -0
- package/dist/native/kms/web/kms_lib.d.ts +84 -0
- package/dist/native/kms/web/kms_lib.js +443 -0
- package/dist/native/kms/web/kms_lib_bg.wasm +0 -0
- package/dist/native/kms/web/kms_lib_bg.wasm.d.ts +21 -0
- package/dist/native/kms/web/package.json +15 -0
- package/dist/runtime/browser.d.ts +36 -0
- package/dist/runtime/browser.js +115 -0
- package/dist/runtime/browser.js.map +1 -0
- package/dist/runtime/node.d.ts +30 -0
- package/dist/runtime/node.js +95 -0
- package/dist/runtime/node.js.map +1 -0
- package/dist/sdk/fhetransform-sdk-b.d.ts +102 -0
- package/dist/sdk/fhetransform-sdk-b.js +294 -0
- package/dist/sdk/fhetransform-sdk-b.js.map +1 -0
- package/dist/sdk/fhetransform-sdk.d.ts +87 -0
- package/dist/sdk/fhetransform-sdk.js +135 -0
- package/dist/sdk/fhetransform-sdk.js.map +1 -0
- package/dist/sdk/jazz-service.d.ts +13 -0
- package/dist/sdk/jazz-service.js +58 -0
- package/dist/sdk/jazz-service.js.map +1 -0
- package/dist/sdk/permit-service.d.ts +45 -0
- package/dist/sdk/permit-service.js +144 -0
- package/dist/sdk/permit-service.js.map +1 -0
- package/dist/wasm/fhe-wasm-client.d.ts +19 -0
- package/dist/wasm/fhe-wasm-client.js +23 -0
- package/dist/wasm/fhe-wasm-client.js.map +1 -0
- package/dist/wasm/fhe-wasm-module.d.ts +24 -0
- package/dist/wasm/fhe-wasm-module.js +141 -0
- package/dist/wasm/fhe-wasm-module.js.map +1 -0
- package/dist/wasm/fhe-wasm-type.d.ts +59 -0
- package/dist/wasm/fhe-wasm-type.js +244 -0
- package/dist/wasm/fhe-wasm-type.js.map +1 -0
- package/dist/wasm/wasm-loader.browser.d.ts +21 -0
- package/dist/wasm/wasm-loader.browser.js +143 -0
- package/dist/wasm/wasm-loader.browser.js.map +1 -0
- package/dist/wasm/wasm-loader.node.d.ts +24 -0
- package/dist/wasm/wasm-loader.node.js +114 -0
- package/dist/wasm/wasm-loader.node.js.map +1 -0
- package/dist/wasm/worker-client.browser.d.ts +6 -0
- package/dist/wasm/worker-client.browser.js +21 -0
- package/dist/wasm/worker-client.browser.js.map +1 -0
- package/dist/wasm/worker-client.d.ts +34 -0
- package/dist/wasm/worker-client.js +160 -0
- package/dist/wasm/worker-client.js.map +1 -0
- package/dist/wasm/worker-client.node.d.ts +6 -0
- package/dist/wasm/worker-client.node.js +20 -0
- package/dist/wasm/worker-client.node.js.map +1 -0
- package/dist/wasm/worker-message.d.ts +61 -0
- package/dist/wasm/worker-message.js +2 -0
- package/dist/wasm/worker-message.js.map +1 -0
- package/dist/wasm/worker-transport.browser.d.ts +15 -0
- package/dist/wasm/worker-transport.browser.js +35 -0
- package/dist/wasm/worker-transport.browser.js.map +1 -0
- package/dist/wasm/worker-transport.d.ts +6 -0
- package/dist/wasm/worker-transport.js +2 -0
- package/dist/wasm/worker-transport.js.map +1 -0
- package/dist/wasm/worker-transport.node.d.ts +17 -0
- package/dist/wasm/worker-transport.node.js +39 -0
- package/dist/wasm/worker-transport.node.js.map +1 -0
- package/dist/wasm/worker.d.ts +1 -0
- package/dist/wasm/worker.js +69 -0
- package/dist/wasm/worker.js.map +1 -0
- package/package.json +81 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Core types
|
|
3
|
+
// ============================================================================
|
|
4
|
+
export { FheType, Operator } from "./core/fhe-type.js";
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// SDK
|
|
7
|
+
// ============================================================================
|
|
8
|
+
export { FheTransformSDK } from "./sdk/fhetransform-sdk.js";
|
|
9
|
+
export { PermitService } from "./sdk/permit-service.js";
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Contract wrappers and transaction types
|
|
12
|
+
// ============================================================================
|
|
13
|
+
export { ConvertToken } from "./contract/convert-token.js";
|
|
14
|
+
export { Token, TokenBase } from "./contract/token.js";
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Events
|
|
17
|
+
// ============================================================================
|
|
18
|
+
export { FheTransformSDKEvents } from "./core/event.js";
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Address helpers
|
|
21
|
+
// ============================================================================
|
|
22
|
+
export { ADDRESS_ZERO, areEqualAddresses, assertChecksumAddress, ChecksumAddressError, isChecksumAddress, isValidAddress, isZeroAddress, toChecksumAddress, toChecksumAddresses, toChecksumAddressesFiltered, toChecksumAddressesSafe, } from "./core/address.js";
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Chain & system information
|
|
25
|
+
// ============================================================================
|
|
26
|
+
export { buildSetChainKeysArgs, CHAINS, getChainKey } from "./core/chain.js";
|
|
27
|
+
export { getSystemContractInfo } from "./core/system-contract-info.js";
|
|
28
|
+
export { getSignerAddressInfo } from "./core/signer-address-info.js";
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Fee estimation
|
|
31
|
+
// ============================================================================
|
|
32
|
+
export { estimateFheFee } from "./core/estimate.js";
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Authentication
|
|
35
|
+
// ============================================================================
|
|
36
|
+
export { setAxiosAuth } from "./core/auth.js";
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Error parsing
|
|
39
|
+
// ============================================================================
|
|
40
|
+
export { ErrorParser } from "./core/tx-error-parser.js";
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Unified errors
|
|
43
|
+
// ============================================================================
|
|
44
|
+
export { FheError } from "./core/errors/fhe-error.js";
|
|
45
|
+
export { FheErrorCode } from "./core/errors/error-codes.js";
|
|
46
|
+
export { formatMessage, getErrorCatalogEntry } from "./core/errors/error-catalog.js";
|
|
47
|
+
export { getErrorCode, getErrorMessage, getErrorRetryPolicy, isFheError, toFheError, withFheError, } from "./core/errors/error-utils.js";
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAgBvD,+EAA+E;AAC/E,MAAM;AACN,+EAA+E;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAU3D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAuCvD,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAOxD,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAG3B,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACrF,OAAO,EACL,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { IJazzClient } from "./jazz-client-i.js";
|
|
2
|
+
/**
|
|
3
|
+
* Public key types supported by the FHE encryption backend.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum PkType {
|
|
6
|
+
/** Unspecified/unknown key type */
|
|
7
|
+
PK_TYPE_UNSPECIFIED = 0,
|
|
8
|
+
/** V1 public key type */
|
|
9
|
+
PK_TYPE_V1 = 1,
|
|
10
|
+
/** V2 public key type */
|
|
11
|
+
PK_TYPE_V2 = 2,
|
|
12
|
+
/** ZK CRS (Common Reference String) type */
|
|
13
|
+
ZK_CRS = 3
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Public key item containing the key data and its type.
|
|
17
|
+
*/
|
|
18
|
+
export interface PublicKeyItem {
|
|
19
|
+
/** Public key bytes as Uint8Array */
|
|
20
|
+
data: Uint8Array;
|
|
21
|
+
/** Type of public key (V1, V2, or ZK_CRS) */
|
|
22
|
+
type: PkType;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Container object for both public key and CRS.
|
|
26
|
+
*/
|
|
27
|
+
export interface PublickeyItemObject {
|
|
28
|
+
/** Public key item (V1 or V2) */
|
|
29
|
+
pk: PublicKeyItem;
|
|
30
|
+
/** CRS item (ZK_CRS) */
|
|
31
|
+
crs: PublicKeyItem;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Options for fetching public keys.
|
|
35
|
+
*/
|
|
36
|
+
export interface GetOrFetchPublickeyOptions {
|
|
37
|
+
/** Whether to use mock/local files instead of remote S3 URLs */
|
|
38
|
+
isMock?: boolean;
|
|
39
|
+
/** Force refresh of cached keys */
|
|
40
|
+
refresh?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parameters for fetching public keys from URLs.
|
|
44
|
+
*/
|
|
45
|
+
export interface GetPublickeyParameters {
|
|
46
|
+
/** URL to fetch the public key from */
|
|
47
|
+
pkUrl: string;
|
|
48
|
+
/** URL to fetch the CRS from */
|
|
49
|
+
crsUrl: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gets or fetches the FHE public key and CRS.
|
|
53
|
+
*
|
|
54
|
+
* This function implements a caching strategy:
|
|
55
|
+
* 1. Checks if keys are already in the in-memory cache
|
|
56
|
+
* 2. If not, or if refresh is requested or TTL expired, fetches from source
|
|
57
|
+
* 3. Saves fetched keys to both in-memory and persistent cache
|
|
58
|
+
* 4. Returns the keys
|
|
59
|
+
*
|
|
60
|
+
* @param client - The Jazz client instance
|
|
61
|
+
* @param options - Configuration options (mock mode, refresh)
|
|
62
|
+
* @returns Promise resolving to PublickeyItemObject containing pk and crs
|
|
63
|
+
* @throws Error if fetching fails
|
|
64
|
+
*/
|
|
65
|
+
export declare function getOrFetchPublickey(client: IJazzClient, options?: GetOrFetchPublickeyOptions): Promise<PublickeyItemObject>;
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { fetchKeyUrl as fetchKeyUrlMock } from "./mock/fetch-key-url.js";
|
|
2
|
+
import { fetchKeyUrl } from "./module/fetch-key-url.js";
|
|
3
|
+
import { logger } from "../core/logger.js";
|
|
4
|
+
import { S3Downloader } from "./module/s3-download.js";
|
|
5
|
+
import { DEFAULT_PUBLIC_KEY_TTL_SECONDS } from "../core/constants.js";
|
|
6
|
+
import { readLocalFile } from "#runtime";
|
|
7
|
+
import { FheErrorCode } from "../core/errors/error-codes.js";
|
|
8
|
+
import { FheError } from "../core/errors/fhe-error.js";
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Enums and Types
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Public key types supported by the FHE encryption backend.
|
|
14
|
+
*/
|
|
15
|
+
export var PkType;
|
|
16
|
+
(function (PkType) {
|
|
17
|
+
/** Unspecified/unknown key type */
|
|
18
|
+
PkType[PkType["PK_TYPE_UNSPECIFIED"] = 0] = "PK_TYPE_UNSPECIFIED";
|
|
19
|
+
/** V1 public key type */
|
|
20
|
+
PkType[PkType["PK_TYPE_V1"] = 1] = "PK_TYPE_V1";
|
|
21
|
+
/** V2 public key type */
|
|
22
|
+
PkType[PkType["PK_TYPE_V2"] = 2] = "PK_TYPE_V2";
|
|
23
|
+
/** ZK CRS (Common Reference String) type */
|
|
24
|
+
PkType[PkType["ZK_CRS"] = 3] = "ZK_CRS";
|
|
25
|
+
})(PkType || (PkType = {}));
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Private Helpers
|
|
28
|
+
// ============================================================================
|
|
29
|
+
/**
|
|
30
|
+
* Loads a local file and returns it as a PublicKeyItem.
|
|
31
|
+
*
|
|
32
|
+
* @param filepath - Path to the local file
|
|
33
|
+
* @param pk_type - Type of the public key being loaded
|
|
34
|
+
* @returns PublicKeyItem containing the loaded data
|
|
35
|
+
* @throws Error if the file cannot be read or is empty
|
|
36
|
+
*/
|
|
37
|
+
async function loadLocalFile(filepath, pk_type) {
|
|
38
|
+
logger.debug('[loadLocalFile] Loading local file', {
|
|
39
|
+
filepath,
|
|
40
|
+
pkType: pk_type,
|
|
41
|
+
});
|
|
42
|
+
try {
|
|
43
|
+
const pkBytes = await readLocalFile(filepath);
|
|
44
|
+
if (pkBytes.length <= 0) {
|
|
45
|
+
logger.error('[loadLocalFile] File is empty', {
|
|
46
|
+
filepath,
|
|
47
|
+
size: pkBytes.length,
|
|
48
|
+
});
|
|
49
|
+
throw new FheError({ code: FheErrorCode.InvalidArgument, message: 'pkBytes.length is 0' });
|
|
50
|
+
}
|
|
51
|
+
const result = {
|
|
52
|
+
data: pkBytes,
|
|
53
|
+
type: pk_type,
|
|
54
|
+
};
|
|
55
|
+
logger.debug('[loadLocalFile] Local file loaded successfully', {
|
|
56
|
+
filepath,
|
|
57
|
+
size: pkBytes.length,
|
|
58
|
+
pkType: pk_type,
|
|
59
|
+
});
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
logger.error('[loadLocalFile] Failed to load local file', {
|
|
64
|
+
filepath,
|
|
65
|
+
error: error.message,
|
|
66
|
+
stack: error.stack,
|
|
67
|
+
});
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Fetches public key and CRS from local files (mock mode).
|
|
73
|
+
*
|
|
74
|
+
* @param parameters - URLs to the local files
|
|
75
|
+
* @returns PublickeyItemObject containing both pk and crs
|
|
76
|
+
*/
|
|
77
|
+
async function _getPublickeyMock(parameters) {
|
|
78
|
+
logger.debug('[_getPublickeyMock] Fetching public keys from local files', {
|
|
79
|
+
pkUrl: parameters.pkUrl,
|
|
80
|
+
crsUrl: parameters.crsUrl,
|
|
81
|
+
});
|
|
82
|
+
// Load both files in parallel for better performance
|
|
83
|
+
const [pk, crs] = await Promise.all([
|
|
84
|
+
loadLocalFile(parameters.pkUrl, PkType.PK_TYPE_V1),
|
|
85
|
+
loadLocalFile(parameters.crsUrl, PkType.ZK_CRS),
|
|
86
|
+
]);
|
|
87
|
+
logger.debug('[_getPublickeyMock] Public keys loaded from local files', {
|
|
88
|
+
pkSize: pk.data.length,
|
|
89
|
+
crsSize: crs.data.length,
|
|
90
|
+
});
|
|
91
|
+
return { pk, crs };
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Fetches public key and CRS from remote S3 URLs.
|
|
95
|
+
*
|
|
96
|
+
* @param parameters - URLs to fetch from S3
|
|
97
|
+
* @returns PublickeyItemObject containing both pk and crs
|
|
98
|
+
*/
|
|
99
|
+
async function _getPublickey(parameters) {
|
|
100
|
+
logger.debug('[_getPublickey] Fetching public keys from S3 URLs', {
|
|
101
|
+
pkUrl: parameters.pkUrl,
|
|
102
|
+
crsUrl: parameters.crsUrl,
|
|
103
|
+
});
|
|
104
|
+
const s3Downloader = new S3Downloader();
|
|
105
|
+
// Download both files in parallel for better performance
|
|
106
|
+
const [pkBinary, crsBinary] = await Promise.all([
|
|
107
|
+
s3Downloader.downloadBinary({ url: parameters.pkUrl }),
|
|
108
|
+
s3Downloader.downloadBinary({ url: parameters.crsUrl }),
|
|
109
|
+
]);
|
|
110
|
+
const pk = {
|
|
111
|
+
data: pkBinary.data,
|
|
112
|
+
type: PkType.PK_TYPE_V1,
|
|
113
|
+
};
|
|
114
|
+
const crs = {
|
|
115
|
+
data: crsBinary.data,
|
|
116
|
+
type: PkType.ZK_CRS,
|
|
117
|
+
};
|
|
118
|
+
logger.debug('[_getPublickey] Public keys downloaded from S3', {
|
|
119
|
+
pkSize: pk.data.length,
|
|
120
|
+
crsSize: crs.data.length,
|
|
121
|
+
});
|
|
122
|
+
return { pk, crs };
|
|
123
|
+
}
|
|
124
|
+
// ============================================================================
|
|
125
|
+
// Public API
|
|
126
|
+
// ============================================================================
|
|
127
|
+
/** Cache for public keys (scoped to module) */
|
|
128
|
+
let pks = null; // TODO: Scope to chainId and contract address
|
|
129
|
+
let pksPromise = null;
|
|
130
|
+
/**
|
|
131
|
+
* Cache key for the FHE public key in the cache manager.
|
|
132
|
+
* TODO: Make chainId and contract address aware for multi-chain support.
|
|
133
|
+
*/
|
|
134
|
+
const PK_STORE_KEY = 'fhekey:pk_mcl_snark1';
|
|
135
|
+
/**
|
|
136
|
+
* Cache key for the CRS in the cache manager.
|
|
137
|
+
* TODO: Make chainId and contract address aware for multi-chain support.
|
|
138
|
+
*/
|
|
139
|
+
const CRS_STORE_KEY = 'fhekey:crs_mcl_snark1';
|
|
140
|
+
/**
|
|
141
|
+
* Gets or fetches the FHE public key and CRS.
|
|
142
|
+
*
|
|
143
|
+
* This function implements a caching strategy:
|
|
144
|
+
* 1. Checks if keys are already in the in-memory cache
|
|
145
|
+
* 2. If not, or if refresh is requested or TTL expired, fetches from source
|
|
146
|
+
* 3. Saves fetched keys to both in-memory and persistent cache
|
|
147
|
+
* 4. Returns the keys
|
|
148
|
+
*
|
|
149
|
+
* @param client - The Jazz client instance
|
|
150
|
+
* @param options - Configuration options (mock mode, refresh)
|
|
151
|
+
* @returns Promise resolving to PublickeyItemObject containing pk and crs
|
|
152
|
+
* @throws Error if fetching fails
|
|
153
|
+
*/
|
|
154
|
+
export async function getOrFetchPublickey(client, options) {
|
|
155
|
+
if (pks)
|
|
156
|
+
return pks;
|
|
157
|
+
if (pksPromise)
|
|
158
|
+
return pksPromise;
|
|
159
|
+
pksPromise = (async () => {
|
|
160
|
+
try {
|
|
161
|
+
// Enter method
|
|
162
|
+
const isMock = options?.isMock ?? false;
|
|
163
|
+
const refresh = options?.refresh ?? false;
|
|
164
|
+
logger.debug('[getOrFetchPublickey] Enter', {
|
|
165
|
+
isMock,
|
|
166
|
+
refresh,
|
|
167
|
+
hasCachedKeys: !!pks,
|
|
168
|
+
});
|
|
169
|
+
// ============================================================================
|
|
170
|
+
// Step 1: Check Cache Expiration
|
|
171
|
+
// ============================================================================
|
|
172
|
+
// Check if cached keys have expired
|
|
173
|
+
const shouldRefreshPk = await client.sdk.cacheManager.shouldRefresh(PK_STORE_KEY, DEFAULT_PUBLIC_KEY_TTL_SECONDS);
|
|
174
|
+
const shouldRefreshCrs = await client.sdk.cacheManager.shouldRefresh(CRS_STORE_KEY, DEFAULT_PUBLIC_KEY_TTL_SECONDS);
|
|
175
|
+
logger.debug('[getOrFetchPublickey] Cache status', {
|
|
176
|
+
refresh,
|
|
177
|
+
pkExpired: shouldRefreshPk,
|
|
178
|
+
crsExpired: shouldRefreshCrs,
|
|
179
|
+
ttlSeconds: DEFAULT_PUBLIC_KEY_TTL_SECONDS,
|
|
180
|
+
});
|
|
181
|
+
// ============================================================================
|
|
182
|
+
// Step 2: Fetch Keys (if refresh requested or cache expired)
|
|
183
|
+
// ============================================================================
|
|
184
|
+
const needsRefresh = refresh || shouldRefreshPk || shouldRefreshCrs;
|
|
185
|
+
if (needsRefresh) {
|
|
186
|
+
logger.debug('[getOrFetchPublickey] Fetching fresh keys from source', {
|
|
187
|
+
reason: refresh ? 'user requested refresh' : 'cache expired',
|
|
188
|
+
});
|
|
189
|
+
// Fetch key URLs from Jazz service
|
|
190
|
+
let fetchKeyUrlResult;
|
|
191
|
+
if (isMock) {
|
|
192
|
+
logger.trace('[getOrFetchPublickey] Using mock mode for key URL fetch');
|
|
193
|
+
fetchKeyUrlResult = await fetchKeyUrlMock(client, {});
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
logger.trace('[getOrFetchPublickey] Using production mode for key URL fetch');
|
|
197
|
+
fetchKeyUrlResult = await fetchKeyUrl(client, {});
|
|
198
|
+
}
|
|
199
|
+
logger.debug('[getOrFetchPublickey] Key URLs fetched', {
|
|
200
|
+
publicKeyId: fetchKeyUrlResult.publicKeySource.id,
|
|
201
|
+
publicKeyUrl: fetchKeyUrlResult.publicKeySource.url,
|
|
202
|
+
crsId: fetchKeyUrlResult.crsSource.id,
|
|
203
|
+
crsUrl: fetchKeyUrlResult.crsSource.url,
|
|
204
|
+
});
|
|
205
|
+
// Build parameters for fetching the actual key data
|
|
206
|
+
const getPublickeyParameters = {
|
|
207
|
+
pkUrl: fetchKeyUrlResult.publicKeySource.url,
|
|
208
|
+
crsUrl: fetchKeyUrlResult.crsSource.url,
|
|
209
|
+
};
|
|
210
|
+
// Fetch the actual key data (from local files in mock mode, or S3 in production)
|
|
211
|
+
if (isMock) {
|
|
212
|
+
logger.debug('[getOrFetchPublickey] Fetching keys from local files (mock)');
|
|
213
|
+
pks = await _getPublickeyMock(getPublickeyParameters);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
logger.debug('[getOrFetchPublickey] Fetching keys from S3 (production)');
|
|
217
|
+
pks = await _getPublickey(getPublickeyParameters);
|
|
218
|
+
}
|
|
219
|
+
logger.debug('[getOrFetchPublickey] Keys fetched successfully', {
|
|
220
|
+
pkSize: pks.pk.data.length,
|
|
221
|
+
crsSize: pks.crs.data.length,
|
|
222
|
+
});
|
|
223
|
+
// ============================================================================
|
|
224
|
+
// Step 3: Save to Persistent Cache
|
|
225
|
+
// ============================================================================
|
|
226
|
+
// Save to persistent cache for future use
|
|
227
|
+
await Promise.all([
|
|
228
|
+
client.sdk.cacheManager.save(PK_STORE_KEY, pks.pk.data),
|
|
229
|
+
client.sdk.cacheManager.save(CRS_STORE_KEY, pks.crs.data),
|
|
230
|
+
]);
|
|
231
|
+
logger.debug('[getOrFetchPublickey] Keys saved to persistent cache', {
|
|
232
|
+
pkStoreKey: PK_STORE_KEY,
|
|
233
|
+
crsStoreKey: CRS_STORE_KEY,
|
|
234
|
+
pkSize: pks.pk.data.length,
|
|
235
|
+
crsSize: pks.crs.data.length,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
logger.trace('[getOrFetchPublickey] Cache is fresh, no refresh needed');
|
|
240
|
+
}
|
|
241
|
+
// ============================================================================
|
|
242
|
+
// Step 4: Load from Cache (if not already in memory)
|
|
243
|
+
// ============================================================================
|
|
244
|
+
if (!pks) {
|
|
245
|
+
logger.debug('[getOrFetchPublickey] Loading keys from persistent cache');
|
|
246
|
+
// Load from persistent cache
|
|
247
|
+
const [pkData, crsData] = await Promise.all([
|
|
248
|
+
client.sdk.cacheManager.load(PK_STORE_KEY),
|
|
249
|
+
client.sdk.cacheManager.load(CRS_STORE_KEY),
|
|
250
|
+
]);
|
|
251
|
+
if (!pkData || !crsData) {
|
|
252
|
+
logger.error('[getOrFetchPublickey] Cache miss - keys not found in persistent cache');
|
|
253
|
+
throw new FheError({ code: FheErrorCode.CacheMiss, message: 'Failed to load public keys from cache' });
|
|
254
|
+
}
|
|
255
|
+
pks = {
|
|
256
|
+
pk: {
|
|
257
|
+
data: pkData,
|
|
258
|
+
type: PkType.PK_TYPE_V1,
|
|
259
|
+
},
|
|
260
|
+
crs: {
|
|
261
|
+
data: crsData,
|
|
262
|
+
type: PkType.ZK_CRS,
|
|
263
|
+
},
|
|
264
|
+
};
|
|
265
|
+
logger.debug('[getOrFetchPublickey] Keys loaded from persistent cache', {
|
|
266
|
+
pkSize: pks.pk.data.length,
|
|
267
|
+
crsSize: pks.crs.data.length,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
logger.debug('[getOrFetchPublickey] Public keys ready', {
|
|
271
|
+
pkSize: pks.pk.data.length,
|
|
272
|
+
crsSize: pks.crs.data.length,
|
|
273
|
+
fromCache: !needsRefresh,
|
|
274
|
+
});
|
|
275
|
+
return pks;
|
|
276
|
+
}
|
|
277
|
+
finally {
|
|
278
|
+
pksPromise = null;
|
|
279
|
+
}
|
|
280
|
+
})();
|
|
281
|
+
return pksPromise;
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=encrypt-key-p.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encrypt-key-p.js","sourceRoot":"","sources":["../../src/jazz/encrypt-key-p.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { EncryptPayloadItem } from "./encrypt.js";
|
|
2
|
+
import { PublickeyItemObject } from "./encrypt-key-p.js";
|
|
3
|
+
/**
|
|
4
|
+
* Parameters for encrypting with zero-knowledge proof support.
|
|
5
|
+
*/
|
|
6
|
+
export type EncryptWithZkParameters = {
|
|
7
|
+
/** List of payload items to encrypt (value + FHE type) */
|
|
8
|
+
readonly payloads: EncryptPayloadItem[];
|
|
9
|
+
/** Public key and CRS for encryption */
|
|
10
|
+
readonly pks: PublickeyItemObject;
|
|
11
|
+
/** Additional metadata for the ZK proof */
|
|
12
|
+
readonly metadata: Uint8Array;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Result of ZK encryption operation.
|
|
16
|
+
*/
|
|
17
|
+
export type EncryptWithZkResult = Uint8Array;
|
|
18
|
+
/**
|
|
19
|
+
* Encrypts a batch of values with zero-knowledge proof generation.
|
|
20
|
+
* This provides verifiable encryption for multiple values in one call.
|
|
21
|
+
*
|
|
22
|
+
* The input format for the WASM module:
|
|
23
|
+
* - 8 bytes: number of elements
|
|
24
|
+
* - For each element:
|
|
25
|
+
* - 8 bytes: length of the value in bytes
|
|
26
|
+
* - N bytes: value bytes (padded to FHE type length)
|
|
27
|
+
*
|
|
28
|
+
* @param parameters - Encryption parameters including payloads, keys, and metadata
|
|
29
|
+
* @returns Combined ciphertext with ZK proof as Uint8Array
|
|
30
|
+
* @throws Error if encryption fails
|
|
31
|
+
*/
|
|
32
|
+
export declare function encryptWithZk(parameters: EncryptWithZkParameters): Promise<EncryptWithZkResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Result of encoding a value with both hex and buffer representations.
|
|
35
|
+
*/
|
|
36
|
+
export interface EncodedData {
|
|
37
|
+
/** Hex string representation with 0x prefix */
|
|
38
|
+
hex: string;
|
|
39
|
+
/** Buffer representation as Uint8Array */
|
|
40
|
+
buf: Uint8Array;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Encodes a bigint or number to a fixed-size buffer with hex representation.
|
|
44
|
+
*
|
|
45
|
+
* @param data - The value to encode (bigint or number)
|
|
46
|
+
* @param size - The desired output size in bytes (hex characters = size * 2)
|
|
47
|
+
* @returns EncodedData containing hex string and buffer
|
|
48
|
+
*/
|
|
49
|
+
export declare function encodeData(data: bigint | number, size: number): EncodedData;
|
|
50
|
+
/**
|
|
51
|
+
* Encodes an Ethereum address to a buffer with hex representation.
|
|
52
|
+
*
|
|
53
|
+
* @param address - Ethereum address (with or without 0x prefix)
|
|
54
|
+
* @returns EncodedData containing hex string and buffer
|
|
55
|
+
*/
|
|
56
|
+
export declare function encodeAddress(address: string): EncodedData;
|
|
57
|
+
/**
|
|
58
|
+
* Metadata information required for ZK proof generation.
|
|
59
|
+
*/
|
|
60
|
+
export interface MetadataInfo {
|
|
61
|
+
/** Chain ID */
|
|
62
|
+
chainId: bigint;
|
|
63
|
+
/** ACL contract address (with 0x prefix) */
|
|
64
|
+
aclAddress: string;
|
|
65
|
+
/** Target contract address (with 0x prefix) */
|
|
66
|
+
contractAddress: string;
|
|
67
|
+
/** User address (with 0x prefix) */
|
|
68
|
+
userAddress: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Generates metadata buffer for ZK proof from metadata information.
|
|
72
|
+
*
|
|
73
|
+
* The metadata is concatenated in the following order:
|
|
74
|
+
* 1. contractAddress (20 bytes)
|
|
75
|
+
* 2. userAddress (20 bytes)
|
|
76
|
+
* 3. aclAddress (20 bytes)
|
|
77
|
+
* 4. chainId (8 bytes)
|
|
78
|
+
*
|
|
79
|
+
* @param metadataInfo - Metadata information for the ZK proof
|
|
80
|
+
* @returns Metadata buffer as Uint8Array
|
|
81
|
+
*/
|
|
82
|
+
export declare function getMetadata(metadataInfo: MetadataInfo): Uint8Array;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
import { fromHexString } from "../core/bytes.js";
|
|
3
|
+
import { getTypeLength } from "../core/fhe-type.js";
|
|
4
|
+
import { logger } from "../core/logger.js";
|
|
5
|
+
import { concatUint8Arrays } from "../core/utils.js";
|
|
6
|
+
import { encryptIntegerWithZkProof } from "../core/fhe.js";
|
|
7
|
+
import { formatValue } from "../core/pretty-print.js";
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Main Encryption Function
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Encrypts a batch of values with zero-knowledge proof generation.
|
|
13
|
+
* This provides verifiable encryption for multiple values in one call.
|
|
14
|
+
*
|
|
15
|
+
* The input format for the WASM module:
|
|
16
|
+
* - 8 bytes: number of elements
|
|
17
|
+
* - For each element:
|
|
18
|
+
* - 8 bytes: length of the value in bytes
|
|
19
|
+
* - N bytes: value bytes (padded to FHE type length)
|
|
20
|
+
*
|
|
21
|
+
* @param parameters - Encryption parameters including payloads, keys, and metadata
|
|
22
|
+
* @returns Combined ciphertext with ZK proof as Uint8Array
|
|
23
|
+
* @throws Error if encryption fails
|
|
24
|
+
*/
|
|
25
|
+
export async function encryptWithZk(parameters) {
|
|
26
|
+
// Enter method
|
|
27
|
+
logger.debug(() => ['[encryptWithZk] Enter', formatValue({ parameters })]);
|
|
28
|
+
const { payloads, pks, metadata } = parameters;
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Step 1: Build Input Buffer
|
|
31
|
+
// ============================================================================
|
|
32
|
+
// Build input: [num_elements (8 bytes), [length (8 bytes), value_bytes, ...]]
|
|
33
|
+
const inputs = [];
|
|
34
|
+
// Add number of elements as 8-byte
|
|
35
|
+
const elems = payloads.length;
|
|
36
|
+
const elemsBytes = fromHexString(elems.toString(16).padStart(16, '0'));
|
|
37
|
+
inputs.push(elemsBytes);
|
|
38
|
+
// Encode each payload item
|
|
39
|
+
for (let i = 0; i < payloads.length; i++) {
|
|
40
|
+
const payload = payloads[i];
|
|
41
|
+
const { value, fheType } = payload;
|
|
42
|
+
// Convert value to bytes (64 hex chars = 32 bytes for uint256)
|
|
43
|
+
const valueBytes = fromHexString(value.toString(16).padStart(64, '0'));
|
|
44
|
+
// Get the correct byte length for the FHE type
|
|
45
|
+
const typeLength = getTypeLength(fheType);
|
|
46
|
+
// Extract the rightmost bytes (matching the FHE type length)
|
|
47
|
+
const inputBytes = valueBytes.subarray(valueBytes.length - typeLength);
|
|
48
|
+
// Encode the length as 8-byte
|
|
49
|
+
const inputLengthBytes = fromHexString(inputBytes.length.toString(16).padStart(16, '0'));
|
|
50
|
+
// Append length and value to the input buffer
|
|
51
|
+
inputs.push(inputLengthBytes, inputBytes);
|
|
52
|
+
logger.debug(() => ['[encryptWithZk] Payload encoded', formatValue({
|
|
53
|
+
index: i, fheType, value, valueBytes,
|
|
54
|
+
typeLength, inputBytes, inputLengthBytes,
|
|
55
|
+
})]);
|
|
56
|
+
}
|
|
57
|
+
// Concatenate all input parts into a single Uint8Array
|
|
58
|
+
const input = concatUint8Arrays(inputs);
|
|
59
|
+
logger.debug(() => ['[encryptWithZk] Input buffer built', formatValue({ input })]);
|
|
60
|
+
// ============================================================================
|
|
61
|
+
// Step 2: Perform ZK Encryption
|
|
62
|
+
// ============================================================================
|
|
63
|
+
// Encrypt the plaintext with the current public key and CRS for ZK proof
|
|
64
|
+
const ciphertextWithZKProof = await encryptIntegerWithZkProof(input, pks.pk.data, pks.crs.data, metadata);
|
|
65
|
+
logger.debug('[encryptWithZk] ZK encryption completed', {
|
|
66
|
+
inputSize: input.length,
|
|
67
|
+
outputSize: ciphertextWithZKProof.length,
|
|
68
|
+
payloadCount: payloads.length,
|
|
69
|
+
});
|
|
70
|
+
return ciphertextWithZKProof;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Encodes a bigint or number to a fixed-size buffer with hex representation.
|
|
74
|
+
*
|
|
75
|
+
* @param data - The value to encode (bigint or number)
|
|
76
|
+
* @param size - The desired output size in bytes (hex characters = size * 2)
|
|
77
|
+
* @returns EncodedData containing hex string and buffer
|
|
78
|
+
*/
|
|
79
|
+
export function encodeData(data, size) {
|
|
80
|
+
// Convert to hex and pad to the specified size
|
|
81
|
+
const hex = data.toString(16).padStart(size, '0');
|
|
82
|
+
const bytes = fromHexString(hex);
|
|
83
|
+
logger.trace('[encodeData] Data encoded', {
|
|
84
|
+
data: data.toString(),
|
|
85
|
+
size,
|
|
86
|
+
hexLength: hex.length,
|
|
87
|
+
bytesLength: bytes.length,
|
|
88
|
+
});
|
|
89
|
+
return { hex: `0x${hex}`, buf: bytes };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Encodes an Ethereum address to a buffer with hex representation.
|
|
93
|
+
*
|
|
94
|
+
* @param address - Ethereum address (with or without 0x prefix)
|
|
95
|
+
* @returns EncodedData containing hex string and buffer
|
|
96
|
+
*/
|
|
97
|
+
export function encodeAddress(address) {
|
|
98
|
+
// Remove 0x prefix if present
|
|
99
|
+
const hex = address.replace(/^0x/, '');
|
|
100
|
+
const bytes = fromHexString(hex);
|
|
101
|
+
logger.trace('[encodeAddress] Address encoded', {
|
|
102
|
+
address,
|
|
103
|
+
hexLength: hex.length,
|
|
104
|
+
bytesLength: bytes.length,
|
|
105
|
+
});
|
|
106
|
+
return { hex: `0x${hex}`, buf: bytes };
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Generates metadata buffer for ZK proof from metadata information.
|
|
110
|
+
*
|
|
111
|
+
* The metadata is concatenated in the following order:
|
|
112
|
+
* 1. contractAddress (20 bytes)
|
|
113
|
+
* 2. userAddress (20 bytes)
|
|
114
|
+
* 3. aclAddress (20 bytes)
|
|
115
|
+
* 4. chainId (8 bytes)
|
|
116
|
+
*
|
|
117
|
+
* @param metadataInfo - Metadata information for the ZK proof
|
|
118
|
+
* @returns Metadata buffer as Uint8Array
|
|
119
|
+
*/
|
|
120
|
+
export function getMetadata(metadataInfo) {
|
|
121
|
+
logger.debug('[getMetadata] Generating metadata buffer:', metadataInfo);
|
|
122
|
+
// Encode each field
|
|
123
|
+
const chainIdBuffer = encodeData(metadataInfo.chainId, 16).buf;
|
|
124
|
+
const aclAddressBuffer = encodeAddress(metadataInfo.aclAddress).buf;
|
|
125
|
+
const contractAddressBuffer = encodeAddress(metadataInfo.contractAddress).buf;
|
|
126
|
+
const userAddressBuffer = encodeAddress(metadataInfo.userAddress).buf;
|
|
127
|
+
// Concatenate in order: contractAddress + userAddress + aclAddress + chainId
|
|
128
|
+
const metadata = ethers.concat([
|
|
129
|
+
contractAddressBuffer,
|
|
130
|
+
userAddressBuffer,
|
|
131
|
+
aclAddressBuffer,
|
|
132
|
+
chainIdBuffer,
|
|
133
|
+
]);
|
|
134
|
+
// Convert to Uint8Array and log
|
|
135
|
+
const result = fromHexString(metadata);
|
|
136
|
+
logger.debug('[getMetadata] Metadata generated', { metadataInfo, metadata });
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=encrypt-p.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encrypt-p.js","sourceRoot":"","sources":["../../src/jazz/encrypt-p.ts"],"names":[],"mappings":"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"}
|