@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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type FheKey = number;
|
|
2
|
+
export interface FheWasmModule {
|
|
3
|
+
_malloc(size: number): number;
|
|
4
|
+
_free(ptr: number): void;
|
|
5
|
+
HEAPU8: Uint8Array;
|
|
6
|
+
HEAP32: Int32Array;
|
|
7
|
+
_create_fhe_key(pk: number, len: number): FheKey;
|
|
8
|
+
_create_fhe_key_with_zk(pk: number, pkLen: number, crs: number, crsLen: number): FheKey;
|
|
9
|
+
_free_fhe_key(key: FheKey): void;
|
|
10
|
+
_encrypt_integer(outLen: number, key: FheKey, input: number, inputLen: number): number;
|
|
11
|
+
_encrypt_integer_ex(outLen: number, pk: number, pkLen: number, input: number, inputLen: number): number;
|
|
12
|
+
_encrypt_multi_integers_with_zk(outLen: number, key: FheKey, input: number, inputLen: number, metadata: number, metadataLen: number): number;
|
|
13
|
+
_encrypt_multi_integers_with_zk_ex(outLen: number, pk: number, pkLen: number, crs: number, crsLen: number, input: number, inputLen: number, metadata: number, metadataLen: number): number;
|
|
14
|
+
_free_data(ptr: number): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class FheWasm {
|
|
17
|
+
private wasm;
|
|
18
|
+
constructor(wasm: FheWasmModule);
|
|
19
|
+
/**
|
|
20
|
+
* Write data to WASM heap and return pointer
|
|
21
|
+
*/
|
|
22
|
+
private write;
|
|
23
|
+
/**
|
|
24
|
+
* Execute WASM function and read result from heap
|
|
25
|
+
*/
|
|
26
|
+
private readResult;
|
|
27
|
+
/**
|
|
28
|
+
* Create FHE key from public key
|
|
29
|
+
*/
|
|
30
|
+
createKey(pk: Uint8Array): FheKey;
|
|
31
|
+
/**
|
|
32
|
+
* Create FHE key with zero-knowledge proof
|
|
33
|
+
*/
|
|
34
|
+
createKeyWithZk(pk: Uint8Array, crs: Uint8Array): FheKey;
|
|
35
|
+
/**
|
|
36
|
+
* Free FHE key from WASM memory
|
|
37
|
+
*/
|
|
38
|
+
freeKey(key: FheKey): void;
|
|
39
|
+
/**
|
|
40
|
+
* Encrypt integer using FHE key
|
|
41
|
+
*/
|
|
42
|
+
encryptInteger(key: FheKey, input: Uint8Array): Uint8Array;
|
|
43
|
+
/**
|
|
44
|
+
* Encrypt integer using public key (external)
|
|
45
|
+
*/
|
|
46
|
+
encryptIntegerEx(pk: Uint8Array, input: Uint8Array): Uint8Array;
|
|
47
|
+
/**
|
|
48
|
+
* Encrypt multiple integers with zero-knowledge proof using FHE key
|
|
49
|
+
*/
|
|
50
|
+
encryptMultiWithZk(key: FheKey, input: Uint8Array, metadata: Uint8Array): Uint8Array;
|
|
51
|
+
/**
|
|
52
|
+
* Encrypt multiple integers with zero-knowledge proof using public key and CRS (external)
|
|
53
|
+
*/
|
|
54
|
+
encryptMultiWithZkEx(pk: Uint8Array, crs: Uint8Array, input: Uint8Array, metadata: Uint8Array): Uint8Array;
|
|
55
|
+
/**
|
|
56
|
+
* Free data pointer from WASM memory
|
|
57
|
+
*/
|
|
58
|
+
freeData(dataPtr: number): void;
|
|
59
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { logger } from '../core/logger.js';
|
|
2
|
+
import { FheErrorCode } from '../core/errors/error-codes.js';
|
|
3
|
+
import { FheError } from '../core/errors/fhe-error.js';
|
|
4
|
+
export class FheWasm {
|
|
5
|
+
wasm;
|
|
6
|
+
constructor(wasm) {
|
|
7
|
+
this.wasm = wasm;
|
|
8
|
+
logger.debug('FheWasm instance created');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Write data to WASM heap and return pointer
|
|
12
|
+
*/
|
|
13
|
+
write(data) {
|
|
14
|
+
try {
|
|
15
|
+
const ptr = this.wasm._malloc(data.length);
|
|
16
|
+
this.wasm.HEAPU8.set(data, ptr);
|
|
17
|
+
logger.debug('Data written to WASM heap', { size: data.length, ptr });
|
|
18
|
+
return ptr;
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
logger.error('Failed to write data to WASM heap', { size: data.length, error });
|
|
22
|
+
throw new FheError({
|
|
23
|
+
code: FheErrorCode.EncryptionFailed,
|
|
24
|
+
message: `WASM write failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
25
|
+
cause: error,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Execute WASM function and read result from heap
|
|
31
|
+
*/
|
|
32
|
+
readResult(ptrLen, fn) {
|
|
33
|
+
const outLen = this.wasm._malloc(4);
|
|
34
|
+
try {
|
|
35
|
+
const ptr = fn(outLen);
|
|
36
|
+
const len = this.wasm.HEAP32[outLen >> 2];
|
|
37
|
+
const data = this.wasm.HEAPU8.slice(ptr, ptr + len);
|
|
38
|
+
this.wasm._free_data(ptr);
|
|
39
|
+
logger.debug('Result read from WASM heap', { size: data.length });
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
logger.error('Failed to read result from WASM', { error });
|
|
44
|
+
throw new FheError({
|
|
45
|
+
code: FheErrorCode.EncryptionFailed,
|
|
46
|
+
message: `WASM read result failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
47
|
+
cause: error,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
this.wasm._free(outLen);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create FHE key from public key
|
|
56
|
+
*/
|
|
57
|
+
createKey(pk) {
|
|
58
|
+
logger.debug('Creating FHE key', { pkSize: pk.length });
|
|
59
|
+
const ptr = this.write(pk);
|
|
60
|
+
try {
|
|
61
|
+
const key = this.wasm._create_fhe_key(ptr, pk.length);
|
|
62
|
+
logger.debug('FHE key created', { key });
|
|
63
|
+
return key;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
logger.error('Failed to create FHE key', { error });
|
|
67
|
+
throw new FheError({
|
|
68
|
+
code: FheErrorCode.EncryptionFailed,
|
|
69
|
+
message: `Create key failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
70
|
+
cause: error,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
this.wasm._free(ptr);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Create FHE key with zero-knowledge proof
|
|
79
|
+
*/
|
|
80
|
+
createKeyWithZk(pk, crs) {
|
|
81
|
+
logger.debug('Creating FHE key with ZK', { pkSize: pk.length, crsSize: crs.length });
|
|
82
|
+
const pkPtr = this.write(pk);
|
|
83
|
+
const crsPtr = this.write(crs);
|
|
84
|
+
try {
|
|
85
|
+
const key = this.wasm._create_fhe_key_with_zk(pkPtr, pk.length, crsPtr, crs.length);
|
|
86
|
+
logger.debug('FHE key with ZK created', { key });
|
|
87
|
+
return key;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
logger.error('Failed to create FHE key with ZK', { error });
|
|
91
|
+
throw new FheError({
|
|
92
|
+
code: FheErrorCode.EncryptionFailed,
|
|
93
|
+
message: `Create key with ZK failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
94
|
+
cause: error,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
this.wasm._free(pkPtr);
|
|
99
|
+
this.wasm._free(crsPtr);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Free FHE key from WASM memory
|
|
104
|
+
*/
|
|
105
|
+
freeKey(key) {
|
|
106
|
+
try {
|
|
107
|
+
this.wasm._free_fhe_key(key);
|
|
108
|
+
logger.debug('FHE key freed', { key });
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
logger.error('Failed to free FHE key', { key, error });
|
|
112
|
+
throw new FheError({
|
|
113
|
+
code: FheErrorCode.EncryptionFailed,
|
|
114
|
+
message: `Free key failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
115
|
+
cause: error,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Encrypt integer using FHE key
|
|
121
|
+
*/
|
|
122
|
+
encryptInteger(key, input) {
|
|
123
|
+
logger.debug('Encrypting integer', { key, inputSize: input.length });
|
|
124
|
+
const inputPtr = this.write(input);
|
|
125
|
+
try {
|
|
126
|
+
const result = this.readResult(4, outLen => this.wasm._encrypt_integer(outLen, key, inputPtr, input.length));
|
|
127
|
+
logger.debug('Integer encrypted', { resultSize: result.length });
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
logger.error('Failed to encrypt integer', { key, error });
|
|
132
|
+
throw new FheError({
|
|
133
|
+
code: FheErrorCode.EncryptionFailed,
|
|
134
|
+
message: `Encrypt integer failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
135
|
+
cause: error,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
this.wasm._free(inputPtr);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Encrypt integer using public key (external)
|
|
144
|
+
*/
|
|
145
|
+
encryptIntegerEx(pk, input) {
|
|
146
|
+
logger.debug('Encrypting integer externally', { pkSize: pk.length, inputSize: input.length });
|
|
147
|
+
const pkPtr = this.write(pk);
|
|
148
|
+
const inputPtr = this.write(input);
|
|
149
|
+
try {
|
|
150
|
+
const result = this.readResult(4, outLen => this.wasm._encrypt_integer_ex(outLen, pkPtr, pk.length, inputPtr, input.length));
|
|
151
|
+
logger.debug('Integer encrypted externally', { resultSize: result.length });
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
logger.error('Failed to encrypt integer externally', { error });
|
|
156
|
+
throw new FheError({
|
|
157
|
+
code: FheErrorCode.EncryptionFailed,
|
|
158
|
+
message: `Encrypt integer external failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
159
|
+
cause: error,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
this.wasm._free(pkPtr);
|
|
164
|
+
this.wasm._free(inputPtr);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Encrypt multiple integers with zero-knowledge proof using FHE key
|
|
169
|
+
*/
|
|
170
|
+
encryptMultiWithZk(key, input, metadata) {
|
|
171
|
+
logger.debug('Encrypting multiple integers with ZK', { key, inputSize: input.length, metadataSize: metadata.length });
|
|
172
|
+
const inputPtr = this.write(input);
|
|
173
|
+
const metaPtr = this.write(metadata);
|
|
174
|
+
try {
|
|
175
|
+
const result = this.readResult(4, outLen => this.wasm._encrypt_multi_integers_with_zk(outLen, key, inputPtr, input.length, metaPtr, metadata.length));
|
|
176
|
+
logger.debug('Multiple integers encrypted with ZK', { resultSize: result.length });
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
logger.error('Failed to encrypt multiple integers with ZK', { key, error });
|
|
181
|
+
throw new FheError({
|
|
182
|
+
code: FheErrorCode.EncryptionFailed,
|
|
183
|
+
message: `Encrypt multi with ZK failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
184
|
+
cause: error,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
this.wasm._free(inputPtr);
|
|
189
|
+
this.wasm._free(metaPtr);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Encrypt multiple integers with zero-knowledge proof using public key and CRS (external)
|
|
194
|
+
*/
|
|
195
|
+
encryptMultiWithZkEx(pk, crs, input, metadata) {
|
|
196
|
+
logger.debug('Encrypting multiple integers with ZK externally', {
|
|
197
|
+
pkSize: pk.length,
|
|
198
|
+
crsSize: crs.length,
|
|
199
|
+
inputSize: input.length,
|
|
200
|
+
metadataSize: metadata.length,
|
|
201
|
+
});
|
|
202
|
+
const pkPtr = this.write(pk);
|
|
203
|
+
const crsPtr = this.write(crs);
|
|
204
|
+
const inputPtr = this.write(input);
|
|
205
|
+
const metaPtr = this.write(metadata);
|
|
206
|
+
try {
|
|
207
|
+
const result = this.readResult(4, outLen => this.wasm._encrypt_multi_integers_with_zk_ex(outLen, pkPtr, pk.length, crsPtr, crs.length, inputPtr, input.length, metaPtr, metadata.length));
|
|
208
|
+
logger.debug('Multiple integers encrypted with ZK externally', { resultSize: result.length });
|
|
209
|
+
return result;
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
logger.error('Failed to encrypt multiple integers with ZK externally', { error });
|
|
213
|
+
throw new FheError({
|
|
214
|
+
code: FheErrorCode.EncryptionFailed,
|
|
215
|
+
message: `Encrypt multi with ZK external failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
216
|
+
cause: error,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
finally {
|
|
220
|
+
this.wasm._free(pkPtr);
|
|
221
|
+
this.wasm._free(crsPtr);
|
|
222
|
+
this.wasm._free(inputPtr);
|
|
223
|
+
this.wasm._free(metaPtr);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Free data pointer from WASM memory
|
|
228
|
+
*/
|
|
229
|
+
freeData(dataPtr) {
|
|
230
|
+
try {
|
|
231
|
+
this.wasm._free_data(dataPtr);
|
|
232
|
+
logger.debug('Data freed from WASM', { ptr: dataPtr });
|
|
233
|
+
}
|
|
234
|
+
catch (error) {
|
|
235
|
+
logger.error('Failed to free data from WASM', { ptr: dataPtr, error });
|
|
236
|
+
throw new FheError({
|
|
237
|
+
code: FheErrorCode.EncryptionFailed,
|
|
238
|
+
message: `Free data failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
239
|
+
cause: error,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=fhe-wasm-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fhe-wasm-type.js","sourceRoot":"","sources":["../../src/wasm/fhe-wasm-type.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initializes the KMS WASM module in browser environments.
|
|
3
|
+
* Loads the WebAssembly module from `../native/kms/web/kms_lib` and
|
|
4
|
+
* invokes the default initialization function.
|
|
5
|
+
*
|
|
6
|
+
* @returns A promise that resolves when the module is initialized
|
|
7
|
+
* @throws Error if the module fails to load or initialize
|
|
8
|
+
*/
|
|
9
|
+
export declare function kms_init(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the loaded KMS WASM module instance.
|
|
12
|
+
* Call {@link kms_init} first to ensure the module is loaded and initialized.
|
|
13
|
+
*
|
|
14
|
+
* @returns The KMS module instance, or undefined if not yet initialized
|
|
15
|
+
*/
|
|
16
|
+
export declare function kms_module(): any;
|
|
17
|
+
/**
|
|
18
|
+
* Load and initialize the WASM module instance
|
|
19
|
+
* Handles both factory function and pre-initialized instances
|
|
20
|
+
*/
|
|
21
|
+
export declare function loadWasmModuleInstance(): Promise<any>;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js-specific implementations for KMS, cache, and file operations.
|
|
3
|
+
* These functions are designed to run exclusively in Node.js environments.
|
|
4
|
+
*/
|
|
5
|
+
import { logger } from "../core/logger.js";
|
|
6
|
+
import { FheErrorCode } from "../core/errors/error-codes.js";
|
|
7
|
+
import { FheError } from "../core/errors/fhe-error.js";
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// KMS Module Management
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/** Cached reference to the loaded KMS WASM module */
|
|
12
|
+
let kmsModule;
|
|
13
|
+
/**
|
|
14
|
+
* Initializes the KMS WASM module in browser environments.
|
|
15
|
+
* Loads the WebAssembly module from `../native/kms/web/kms_lib` and
|
|
16
|
+
* invokes the default initialization function.
|
|
17
|
+
*
|
|
18
|
+
* @returns A promise that resolves when the module is initialized
|
|
19
|
+
* @throws Error if the module fails to load or initialize
|
|
20
|
+
*/
|
|
21
|
+
export async function kms_init() {
|
|
22
|
+
// Check if already initialized
|
|
23
|
+
if (kmsModule) {
|
|
24
|
+
logger.trace('[kms_init] KMS module already initialized, skipping');
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Enter method
|
|
28
|
+
logger.debug('[kms_init] Initializing KMS module (Browser)');
|
|
29
|
+
try {
|
|
30
|
+
// Dynamically import the WebAssembly KMS library
|
|
31
|
+
logger.trace('[kms_init] Loading KMS WASM module from ../native/kms/web/kms_lib');
|
|
32
|
+
kmsModule = await import("../native/kms/web/kms_lib");
|
|
33
|
+
// Invoke default initialization function (WASM instantiation)
|
|
34
|
+
logger.trace('[kms_init] Invoking default initialization');
|
|
35
|
+
await kmsModule.default();
|
|
36
|
+
logger.info('[kms_init] KMS module initialized successfully (Browser)', {
|
|
37
|
+
moduleType: typeof kmsModule,
|
|
38
|
+
hasDefaultExport: !!kmsModule?.default,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
// Log error with full context
|
|
43
|
+
logger.error('[kms_init] Failed to initialize KMS module (Browser)', {
|
|
44
|
+
error: error.message,
|
|
45
|
+
stack: error.stack,
|
|
46
|
+
});
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns the loaded KMS WASM module instance.
|
|
52
|
+
* Call {@link kms_init} first to ensure the module is loaded and initialized.
|
|
53
|
+
*
|
|
54
|
+
* @returns The KMS module instance, or undefined if not yet initialized
|
|
55
|
+
*/
|
|
56
|
+
export function kms_module() {
|
|
57
|
+
// Log access attempt
|
|
58
|
+
logger.trace('[kms_module] Returning KMS module reference', {
|
|
59
|
+
isLoaded: !!kmsModule,
|
|
60
|
+
});
|
|
61
|
+
if (!kmsModule) {
|
|
62
|
+
logger.warn('[kms_module] KMS module accessed but not initialized. Call kms_init() first.');
|
|
63
|
+
}
|
|
64
|
+
return kmsModule;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Load and initialize the WASM module instance
|
|
68
|
+
* Handles both factory function and pre-initialized instances
|
|
69
|
+
*/
|
|
70
|
+
export async function loadWasmModuleInstance() {
|
|
71
|
+
try {
|
|
72
|
+
logger.debug('Loading WASM module instance...');
|
|
73
|
+
// @ts-ignore - dynamic import of native module
|
|
74
|
+
const mod = await import("../native/fhe-api.js");
|
|
75
|
+
const factory = mod.default ?? mod;
|
|
76
|
+
if (!factory) {
|
|
77
|
+
throw new FheError({ code: FheErrorCode.WasmNotInitialized, message: 'WASM module factory not found' });
|
|
78
|
+
}
|
|
79
|
+
let instance;
|
|
80
|
+
// Handle factory function pattern
|
|
81
|
+
if (typeof factory === "function") {
|
|
82
|
+
logger.debug('WASM factory function detected, initializing...');
|
|
83
|
+
try {
|
|
84
|
+
instance = await factory({
|
|
85
|
+
locateFile(path) {
|
|
86
|
+
const fullPath = `/native/${path}`;
|
|
87
|
+
logger.debug('WASM locateFile', { path, resolved: fullPath });
|
|
88
|
+
return fullPath;
|
|
89
|
+
},
|
|
90
|
+
print(...args) {
|
|
91
|
+
logger.info("[wasm]", ...args);
|
|
92
|
+
},
|
|
93
|
+
printErr(...args) {
|
|
94
|
+
logger.error("[wasm:error]", ...args);
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
logger.debug('WASM instance created via factory');
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
logger.error('Failed to create WASM instance via factory', { error });
|
|
101
|
+
throw new FheError({
|
|
102
|
+
code: FheErrorCode.WasmNotInitialized,
|
|
103
|
+
message: `WASM factory initialization failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
104
|
+
cause: error,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Use pre-initialized instance
|
|
110
|
+
logger.debug('Using pre-initialized WASM instance');
|
|
111
|
+
instance = factory;
|
|
112
|
+
}
|
|
113
|
+
if (!instance) {
|
|
114
|
+
throw new FheError({ code: FheErrorCode.WasmNotInitialized, message: 'WASM instance is null or undefined after initialization' });
|
|
115
|
+
}
|
|
116
|
+
// Call init method if available
|
|
117
|
+
if (typeof instance.init === "function") {
|
|
118
|
+
try {
|
|
119
|
+
logger.debug('Calling WASM init method...');
|
|
120
|
+
await instance.init();
|
|
121
|
+
logger.info('WASM module initialized successfully');
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
logger.error('WASM init method failed', { error });
|
|
125
|
+
throw new FheError({
|
|
126
|
+
code: FheErrorCode.WasmNotInitialized,
|
|
127
|
+
message: `WASM init failed: ${error instanceof Error ? error.message : String(error)}`,
|
|
128
|
+
cause: error,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
logger.debug('WASM instance has no init method, skipping');
|
|
134
|
+
}
|
|
135
|
+
logger.info('WASM module instance loaded successfully');
|
|
136
|
+
return instance;
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
logger.error('Failed to load WASM module instance', { error });
|
|
140
|
+
throw error;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=wasm-loader.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-loader.browser.js","sourceRoot":"","sources":["../../src/wasm/wasm-loader.browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Initializes the KMS WASM module in Node.js environments.
|
|
3
|
+
* Loads the native module directly from `../native/kms/node/kms_lib`.
|
|
4
|
+
*
|
|
5
|
+
* @returns A promise that resolves when the module is loaded
|
|
6
|
+
* @throws Error if the module fails to load or import
|
|
7
|
+
*/
|
|
8
|
+
export declare function kms_init(): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Returns the loaded KMS module instance.
|
|
11
|
+
* Call {@link kms_init} first to ensure the module is loaded.
|
|
12
|
+
*
|
|
13
|
+
* @returns The KMS module instance, or undefined if not yet initialized
|
|
14
|
+
*/
|
|
15
|
+
export declare function kms_module(): any;
|
|
16
|
+
/**
|
|
17
|
+
* Loads the WASM module in a Node.js environment.
|
|
18
|
+
* Dynamically imports the CommonJS module from `../native/fhe-api.cjs`
|
|
19
|
+
* and instantiates it using the factory function.
|
|
20
|
+
*
|
|
21
|
+
* @returns The instantiated WASM module instance
|
|
22
|
+
* @throws Error if the module cannot be imported or the factory is invalid
|
|
23
|
+
*/
|
|
24
|
+
export declare function loadWasmModuleInstance(): Promise<any>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node.js-specific implementations for KMS, cache, and file operations.
|
|
3
|
+
* These functions are designed to run exclusively in Node.js environments.
|
|
4
|
+
*/
|
|
5
|
+
import { logger } from "../core/logger.js";
|
|
6
|
+
import { FheErrorCode } from "../core/errors/error-codes.js";
|
|
7
|
+
import { FheError } from "../core/errors/fhe-error.js";
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// KMS Module Management
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/** Cached reference to the loaded KMS WASM module */
|
|
12
|
+
let kmsModule;
|
|
13
|
+
/**
|
|
14
|
+
* Initializes the KMS WASM module in Node.js environments.
|
|
15
|
+
* Loads the native module directly from `../native/kms/node/kms_lib`.
|
|
16
|
+
*
|
|
17
|
+
* @returns A promise that resolves when the module is loaded
|
|
18
|
+
* @throws Error if the module fails to load or import
|
|
19
|
+
*/
|
|
20
|
+
export async function kms_init() {
|
|
21
|
+
// Check if already initialized
|
|
22
|
+
if (kmsModule) {
|
|
23
|
+
logger.trace('[kms_init] KMS module already initialized, skipping');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// Enter method
|
|
27
|
+
logger.debug('[kms_init] Initializing KMS module (Node.js)');
|
|
28
|
+
try {
|
|
29
|
+
// Dynamically import the native KMS library
|
|
30
|
+
logger.trace('[kms_init] Loading KMS native module from ../native/kms/node/kms_lib');
|
|
31
|
+
kmsModule = await import("../native/kms/node/kms_lib");
|
|
32
|
+
logger.info('[kms_init] KMS module loaded successfully (Node.js)', {
|
|
33
|
+
moduleType: typeof kmsModule,
|
|
34
|
+
hasDefaultExport: !!kmsModule?.default,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
// Log error with full context
|
|
39
|
+
logger.error('[kms_init] Failed to load KMS module (Node.js)', {
|
|
40
|
+
error: error.message,
|
|
41
|
+
code: error.code,
|
|
42
|
+
stack: error.stack,
|
|
43
|
+
});
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns the loaded KMS module instance.
|
|
49
|
+
* Call {@link kms_init} first to ensure the module is loaded.
|
|
50
|
+
*
|
|
51
|
+
* @returns The KMS module instance, or undefined if not yet initialized
|
|
52
|
+
*/
|
|
53
|
+
export function kms_module() {
|
|
54
|
+
// Log access attempt
|
|
55
|
+
logger.trace('[kms_module] Returning KMS module reference', {
|
|
56
|
+
isLoaded: !!kmsModule,
|
|
57
|
+
});
|
|
58
|
+
if (!kmsModule) {
|
|
59
|
+
logger.warn('[kms_module] KMS module accessed but not initialized. Call kms_init() first.');
|
|
60
|
+
}
|
|
61
|
+
return kmsModule;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Loads the WASM module in a Node.js environment.
|
|
65
|
+
* Dynamically imports the CommonJS module from `../native/fhe-api.cjs`
|
|
66
|
+
* and instantiates it using the factory function.
|
|
67
|
+
*
|
|
68
|
+
* @returns The instantiated WASM module instance
|
|
69
|
+
* @throws Error if the module cannot be imported or the factory is invalid
|
|
70
|
+
*/
|
|
71
|
+
export async function loadWasmModuleInstance() {
|
|
72
|
+
// Enter method
|
|
73
|
+
logger.debug('[loadWasmModule] Loading WASM in Node.js environment');
|
|
74
|
+
try {
|
|
75
|
+
// Dynamically import the CommonJS module.
|
|
76
|
+
// Note: In an ESM project, dynamic import() works for both ESM and CJS.
|
|
77
|
+
// The factory is exported as the default export (or as the module itself).
|
|
78
|
+
logger.trace('[loadWasmModule] Importing CommonJS module from ../native/fhe-api.cjs');
|
|
79
|
+
// @ts-ignore - CJS module may not have type definitions
|
|
80
|
+
const module = await import('../native/fhe-api.node.cjs');
|
|
81
|
+
logger.debug('[loadWasmModule] WASM module imported successfully', {
|
|
82
|
+
moduleType: typeof module,
|
|
83
|
+
hasDefault: !!module.default,
|
|
84
|
+
});
|
|
85
|
+
// Handle various export formats: default export, or direct export (for CJS)
|
|
86
|
+
const factory = module.default ?? module;
|
|
87
|
+
if (typeof factory !== 'function') {
|
|
88
|
+
logger.error('[loadWasmModule] Invalid factory type', {
|
|
89
|
+
factoryType: typeof factory,
|
|
90
|
+
expected: 'function',
|
|
91
|
+
});
|
|
92
|
+
throw new FheError({ code: FheErrorCode.WasmNotInitialized, message: 'WASM factory is not a function' });
|
|
93
|
+
}
|
|
94
|
+
logger.debug('[loadWasmModule] WASM factory validated, calling to instantiate');
|
|
95
|
+
// Instantiate the module. No locateFile needed in Node (file system is used).
|
|
96
|
+
logger.trace('[loadWasmModule] Instantiating WASM module with empty options');
|
|
97
|
+
const instance = await factory({});
|
|
98
|
+
logger.info('[loadWasmModule] WASM loaded successfully in Node.js', {
|
|
99
|
+
instanceType: typeof instance,
|
|
100
|
+
hasExports: !!instance && typeof instance === 'object',
|
|
101
|
+
});
|
|
102
|
+
return instance;
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
// Log error with full context
|
|
106
|
+
logger.error('[loadWasmModule] Failed to load WASM module', {
|
|
107
|
+
error: error.message,
|
|
108
|
+
code: error.code,
|
|
109
|
+
stack: error.stack,
|
|
110
|
+
});
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=wasm-loader.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wasm-loader.node.js","sourceRoot":"","sources":["../../src/wasm/wasm-loader.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BrowserWorkerSideTransport } from "./worker-transport.browser.js";
|
|
2
|
+
import { FheWasmClient } from "./fhe-wasm-client.js";
|
|
3
|
+
export declare function getWorkerTransport(): BrowserWorkerSideTransport;
|
|
4
|
+
export declare function createFheWasmClient(options?: {
|
|
5
|
+
useWorker?: boolean;
|
|
6
|
+
}): FheWasmClient;
|