@joclaim/attestor-core 0.2.0 → 0.2.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.
- package/README.md +21 -15
- package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
- package/lib/avs/abis/avsDirectoryABI.js +340 -0
- package/lib/avs/abis/delegationABI.d.ts +126 -0
- package/lib/avs/abis/delegationABI.js +1 -0
- package/lib/avs/abis/registryABI.d.ts +136 -0
- package/lib/avs/abis/registryABI.js +725 -0
- package/lib/avs/client/create-claim-on-avs.d.ts +12 -0
- package/lib/avs/client/create-claim-on-avs.js +138 -0
- package/lib/avs/config.d.ts +7 -0
- package/lib/avs/config.js +20 -0
- package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
- package/lib/avs/contracts/ReclaimServiceManager.js +1 -0
- package/lib/avs/contracts/common.d.ts +21 -0
- package/lib/avs/contracts/common.js +1 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
- package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1169 -0
- package/lib/avs/contracts/factories/index.d.ts +1 -0
- package/{src/avs/contracts/factories/index.ts → lib/avs/contracts/factories/index.js} +1 -1
- package/{src/avs/contracts/index.ts → lib/avs/contracts/index.d.ts} +0 -3
- package/lib/avs/contracts/index.js +2 -0
- package/lib/avs/types/index.d.ts +55 -0
- package/lib/avs/types/index.js +1 -0
- package/lib/avs/utils/contracts.d.ts +21 -0
- package/lib/avs/utils/contracts.js +33 -0
- package/lib/avs/utils/register.d.ts +27 -0
- package/lib/avs/utils/register.js +78 -0
- package/lib/avs/utils/tasks.d.ts +22 -0
- package/lib/avs/utils/tasks.js +40 -0
- package/lib/client/create-claim.d.ts +5 -0
- package/lib/client/create-claim.js +437 -0
- package/lib/client/index.d.ts +3 -0
- package/lib/client/index.js +3 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
- package/lib/client/tunnels/make-rpc-tcp-tunnel.js +51 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +26 -0
- package/lib/client/tunnels/make-rpc-tls-tunnel.js +131 -0
- package/lib/client/utils/attestor-pool.d.ts +8 -0
- package/lib/client/utils/attestor-pool.js +25 -0
- package/lib/client/utils/client-socket.d.ts +11 -0
- package/lib/client/utils/client-socket.js +98 -0
- package/lib/client/utils/message-handler.d.ts +4 -0
- package/lib/client/utils/message-handler.js +87 -0
- package/lib/config/index.d.ts +30 -0
- package/lib/config/index.js +43 -0
- package/lib/external-rpc/benchmark.d.ts +1 -0
- package/lib/external-rpc/benchmark.js +69 -0
- package/lib/external-rpc/event-bus.d.ts +7 -0
- package/lib/external-rpc/event-bus.js +14 -0
- package/lib/external-rpc/handle-incoming-msg.d.ts +2 -0
- package/lib/external-rpc/handle-incoming-msg.js +233 -0
- package/lib/external-rpc/index.d.ts +3 -0
- package/lib/external-rpc/index.js +3 -0
- package/lib/external-rpc/jsc-polyfills/1.d.ts +14 -0
- package/lib/external-rpc/jsc-polyfills/1.js +82 -0
- package/lib/external-rpc/jsc-polyfills/2.d.ts +1 -0
- package/lib/external-rpc/jsc-polyfills/2.js +20 -0
- package/lib/external-rpc/jsc-polyfills/event.d.ts +10 -0
- package/lib/external-rpc/jsc-polyfills/event.js +14 -0
- package/lib/external-rpc/jsc-polyfills/index.d.ts +2 -0
- package/lib/external-rpc/jsc-polyfills/index.js +2 -0
- package/lib/external-rpc/jsc-polyfills/ws.d.ts +21 -0
- package/lib/external-rpc/jsc-polyfills/ws.js +81 -0
- package/lib/external-rpc/setup-browser.d.ts +6 -0
- package/lib/external-rpc/setup-browser.js +33 -0
- package/lib/external-rpc/setup-jsc.d.ts +24 -0
- package/lib/external-rpc/setup-jsc.js +22 -0
- package/lib/external-rpc/types.d.ts +213 -0
- package/lib/external-rpc/types.js +1 -0
- package/lib/external-rpc/utils.d.ts +20 -0
- package/lib/external-rpc/utils.js +100 -0
- package/lib/external-rpc/zk.d.ts +14 -0
- package/lib/external-rpc/zk.js +63 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.js +9 -0
- package/lib/mechain/abis/governanceABI.d.ts +50 -0
- package/lib/mechain/abis/governanceABI.js +458 -0
- package/lib/mechain/abis/taskABI.d.ts +157 -0
- package/lib/mechain/abis/taskABI.js +509 -0
- package/lib/mechain/client/create-claim-on-mechain.d.ts +10 -0
- package/lib/mechain/client/create-claim-on-mechain.js +28 -0
- package/lib/mechain/client/index.d.ts +1 -0
- package/lib/mechain/client/index.js +1 -0
- package/lib/mechain/constants/index.d.ts +3 -0
- package/{src/mechain/constants/index.ts → lib/mechain/constants/index.js} +3 -5
- package/lib/mechain/index.d.ts +2 -0
- package/lib/mechain/index.js +2 -0
- package/lib/mechain/types/index.d.ts +23 -0
- package/lib/mechain/types/index.js +1 -0
- package/lib/proto/api.d.ts +633 -0
- package/lib/proto/api.js +4258 -0
- package/lib/proto/tee-bundle.d.ts +135 -0
- package/lib/proto/tee-bundle.js +1161 -0
- package/lib/providers/http/index.d.ts +18 -0
- package/lib/providers/http/index.js +658 -0
- package/lib/providers/http/patch-parse5-tree.d.ts +6 -0
- package/lib/providers/http/patch-parse5-tree.js +33 -0
- package/lib/providers/http/utils.d.ts +77 -0
- package/lib/providers/http/utils.js +324 -0
- package/lib/providers/index.d.ts +4 -0
- package/lib/providers/index.js +4 -0
- package/lib/scripts/build-browser.d.ts +1 -0
- package/lib/scripts/build-browser.js +37 -0
- package/lib/scripts/build-jsc.d.ts +1 -0
- package/lib/scripts/build-jsc.js +49 -0
- package/lib/scripts/check-avs-registration.d.ts +1 -0
- package/lib/scripts/check-avs-registration.js +26 -0
- package/lib/scripts/fallbacks/crypto.d.ts +1 -0
- package/lib/scripts/fallbacks/crypto.js +1 -0
- package/lib/scripts/fallbacks/empty.d.ts +3 -0
- package/lib/scripts/fallbacks/empty.js +1 -0
- package/lib/scripts/fallbacks/re2.d.ts +1 -0
- package/lib/scripts/fallbacks/re2.js +4 -0
- package/lib/scripts/fallbacks/snarkjs.d.ts +1 -0
- package/lib/scripts/fallbacks/snarkjs.js +1 -0
- package/lib/scripts/generate-provider-types.d.ts +5 -0
- package/lib/scripts/generate-provider-types.js +78 -0
- package/lib/scripts/generate-receipt.d.ts +9 -0
- package/lib/scripts/generate-receipt.js +90 -0
- package/lib/scripts/generate-toprf-keys.d.ts +1 -0
- package/lib/scripts/generate-toprf-keys.js +20 -0
- package/lib/scripts/jsc-cli-rpc.d.ts +1 -0
- package/lib/scripts/jsc-cli-rpc.js +37 -0
- package/lib/scripts/register-avs-operator.d.ts +1 -0
- package/lib/scripts/register-avs-operator.js +4 -0
- package/lib/scripts/start-server.d.ts +1 -0
- package/lib/scripts/start-server.js +13 -0
- package/lib/scripts/update-avs-metadata.d.ts +1 -0
- package/lib/scripts/update-avs-metadata.js +19 -0
- package/lib/scripts/utils.d.ts +1 -0
- package/lib/scripts/utils.js +7 -0
- package/lib/scripts/whitelist-operator.d.ts +1 -0
- package/lib/scripts/whitelist-operator.js +15 -0
- package/lib/server/create-server.d.ts +7 -0
- package/lib/server/create-server.js +122 -0
- package/lib/server/handlers/claimTeeBundle.d.ts +6 -0
- package/lib/server/handlers/claimTeeBundle.js +206 -0
- package/lib/server/handlers/claimTunnel.d.ts +2 -0
- package/lib/server/handlers/claimTunnel.js +73 -0
- package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
- package/lib/server/handlers/completeClaimOnChain.js +22 -0
- package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
- package/lib/server/handlers/createClaimOnChain.js +26 -0
- package/lib/server/handlers/createTaskOnMechain.d.ts +2 -0
- package/lib/server/handlers/createTaskOnMechain.js +47 -0
- package/lib/server/handlers/createTunnel.d.ts +2 -0
- package/lib/server/handlers/createTunnel.js +93 -0
- package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
- package/lib/server/handlers/disconnectTunnel.js +5 -0
- package/lib/server/handlers/fetchCertificateBytes.d.ts +2 -0
- package/lib/server/handlers/fetchCertificateBytes.js +41 -0
- package/lib/server/handlers/index.d.ts +4 -0
- package/lib/server/handlers/index.js +22 -0
- package/lib/server/handlers/init.d.ts +2 -0
- package/lib/server/handlers/init.js +30 -0
- package/lib/server/handlers/toprf.d.ts +2 -0
- package/lib/server/handlers/toprf.js +16 -0
- package/lib/server/index.d.ts +4 -0
- package/lib/server/index.js +4 -0
- package/lib/server/provider-api.d.ts +9 -0
- package/lib/server/provider-api.js +98 -0
- package/lib/server/provider-store.d.ts +53 -0
- package/lib/server/provider-store.js +80 -0
- package/lib/server/session-api.d.ts +9 -0
- package/lib/server/session-api.js +95 -0
- package/lib/server/session-store.d.ts +14 -0
- package/lib/server/session-store.js +36 -0
- package/lib/server/socket.d.ts +13 -0
- package/lib/server/socket.js +109 -0
- package/lib/server/tunnels/make-tcp-tunnel.d.ts +22 -0
- package/lib/server/tunnels/make-tcp-tunnel.js +177 -0
- package/lib/server/utils/apm.d.ts +11 -0
- package/lib/server/utils/apm.js +36 -0
- package/lib/server/utils/assert-valid-claim-request.d.ts +31 -0
- package/lib/server/utils/assert-valid-claim-request.js +229 -0
- package/lib/server/utils/config-env.d.ts +1 -0
- package/lib/server/utils/config-env.js +4 -0
- package/lib/server/utils/dns.d.ts +1 -0
- package/lib/server/utils/dns.js +18 -0
- package/lib/server/utils/gcp-attestation.d.ts +17 -0
- package/lib/server/utils/gcp-attestation.js +289 -0
- package/lib/server/utils/generics.d.ts +22 -0
- package/lib/server/utils/generics.js +51 -0
- package/lib/server/utils/iso.d.ts +1 -0
- package/lib/server/utils/iso.js +256 -0
- package/lib/server/utils/keep-alive.d.ts +7 -0
- package/lib/server/utils/keep-alive.js +38 -0
- package/lib/server/utils/nitro-attestation.d.ts +33 -0
- package/lib/server/utils/nitro-attestation.js +325 -0
- package/lib/server/utils/process-handshake.d.ts +13 -0
- package/lib/server/utils/process-handshake.js +214 -0
- package/lib/server/utils/proxy-session.d.ts +1 -0
- package/lib/server/utils/proxy-session.js +6 -0
- package/lib/server/utils/tee-oprf-verification.d.ts +22 -0
- package/lib/server/utils/tee-oprf-verification.js +160 -0
- package/lib/server/utils/tee-transcript-reconstruction.d.ts +24 -0
- package/lib/server/utils/tee-transcript-reconstruction.js +187 -0
- package/lib/server/utils/tee-verification.d.ts +27 -0
- package/lib/server/utils/tee-verification.js +365 -0
- package/lib/server/utils/validation.d.ts +2 -0
- package/lib/server/utils/validation.js +38 -0
- package/lib/types/bgp.d.ts +11 -0
- package/lib/types/bgp.js +1 -0
- package/lib/types/claims.d.ts +73 -0
- package/lib/types/claims.js +1 -0
- package/lib/types/client.d.ts +163 -0
- package/lib/types/client.js +1 -0
- package/lib/types/general.d.ts +54 -0
- package/lib/types/general.js +1 -0
- package/lib/types/handlers.d.ts +10 -0
- package/lib/types/handlers.js +1 -0
- package/lib/types/index.d.ts +10 -0
- package/lib/types/index.js +10 -0
- package/lib/types/providers.d.ts +161 -0
- package/lib/types/providers.gen.d.ts +443 -0
- package/lib/types/providers.gen.js +10 -0
- package/lib/types/providers.js +1 -0
- package/lib/types/rpc.d.ts +35 -0
- package/lib/types/rpc.js +1 -0
- package/lib/types/signatures.d.ts +28 -0
- package/lib/types/signatures.js +1 -0
- package/lib/types/tunnel.d.ts +18 -0
- package/lib/types/tunnel.js +1 -0
- package/lib/types/zk.d.ts +28 -0
- package/lib/types/zk.js +1 -0
- package/lib/utils/auth.d.ts +8 -0
- package/lib/utils/auth.js +59 -0
- package/lib/utils/b64-json.d.ts +2 -0
- package/lib/utils/b64-json.js +17 -0
- package/lib/utils/bgp-listener.d.ts +7 -0
- package/lib/utils/bgp-listener.js +119 -0
- package/lib/utils/claims.d.ts +33 -0
- package/lib/utils/claims.js +101 -0
- package/lib/utils/env.d.ts +3 -0
- package/lib/utils/env.js +15 -0
- package/lib/utils/error.d.ts +26 -0
- package/lib/utils/error.js +50 -0
- package/lib/utils/generics.d.ts +114 -0
- package/lib/utils/generics.js +317 -0
- package/lib/utils/http-parser.d.ts +59 -0
- package/lib/utils/http-parser.js +246 -0
- package/lib/utils/index.d.ts +13 -0
- package/lib/utils/index.js +13 -0
- package/lib/utils/logger.d.ts +13 -0
- package/lib/utils/logger.js +91 -0
- package/lib/utils/prepare-packets.d.ts +16 -0
- package/lib/utils/prepare-packets.js +62 -0
- package/lib/utils/redactions.d.ts +62 -0
- package/lib/utils/redactions.js +148 -0
- package/lib/utils/retries.d.ts +12 -0
- package/lib/utils/retries.js +24 -0
- package/lib/utils/signatures/eth.d.ts +2 -0
- package/lib/utils/signatures/eth.js +29 -0
- package/lib/utils/signatures/index.d.ts +5 -0
- package/lib/utils/signatures/index.js +7 -0
- package/lib/utils/socket-base.d.ts +23 -0
- package/lib/utils/socket-base.js +90 -0
- package/lib/utils/tls.d.ts +2 -0
- package/{src/utils/tls.ts → lib/utils/tls.js} +28 -35
- package/lib/utils/ws.d.ts +7 -0
- package/lib/utils/ws.js +22 -0
- package/lib/utils/zk.d.ts +70 -0
- package/lib/utils/zk.js +572 -0
- package/package.json +19 -12
- package/src/avs/abis/avsDirectoryABI.ts +0 -340
- package/src/avs/abis/delegationABI.ts +0 -1
- package/src/avs/abis/registryABI.ts +0 -725
- package/src/avs/client/create-claim-on-avs.ts +0 -206
- package/src/avs/config.ts +0 -25
- package/src/avs/contracts/ReclaimServiceManager.ts +0 -1457
- package/src/avs/contracts/common.ts +0 -44
- package/src/avs/contracts/factories/ReclaimServiceManager__factory.ts +0 -1213
- package/src/avs/tests/test.operator.ts +0 -413
- package/src/avs/tests/utils.ts +0 -51
- package/src/avs/types/index.ts +0 -60
- package/src/avs/utils/contracts.ts +0 -66
- package/src/avs/utils/register.ts +0 -125
- package/src/avs/utils/tasks.ts +0 -76
- package/src/client/create-claim.ts +0 -626
- package/src/client/index.ts +0 -3
- package/src/client/tunnels/make-rpc-tcp-tunnel.ts +0 -78
- package/src/client/tunnels/make-rpc-tls-tunnel.ts +0 -172
- package/src/client/utils/attestor-pool.ts +0 -35
- package/src/client/utils/client-socket.ts +0 -160
- package/src/client/utils/message-handler.ts +0 -116
- package/src/config/index.ts +0 -65
- package/src/external-rpc/benchmark.ts +0 -102
- package/src/external-rpc/event-bus.ts +0 -19
- package/src/external-rpc/global.d.ts +0 -20
- package/src/external-rpc/handle-incoming-msg.ts +0 -308
- package/src/external-rpc/index.ts +0 -3
- package/src/external-rpc/jsc-polyfills/1.ts +0 -117
- package/src/external-rpc/jsc-polyfills/2.ts +0 -24
- package/src/external-rpc/jsc-polyfills/event.ts +0 -16
- package/src/external-rpc/jsc-polyfills/index.ts +0 -2
- package/src/external-rpc/jsc-polyfills/ws.ts +0 -105
- package/src/external-rpc/setup-browser.ts +0 -42
- package/src/external-rpc/setup-jsc.ts +0 -48
- package/src/external-rpc/types.ts +0 -289
- package/src/external-rpc/utils.ts +0 -126
- package/src/external-rpc/zk.ts +0 -79
- package/src/index.ts +0 -9
- package/src/mechain/abis/governanceABI.ts +0 -458
- package/src/mechain/abis/taskABI.ts +0 -509
- package/src/mechain/client/create-claim-on-mechain.ts +0 -52
- package/src/mechain/client/index.ts +0 -1
- package/src/mechain/index.ts +0 -2
- package/src/mechain/types/index.ts +0 -29
- package/src/proto/api.ts +0 -5285
- package/src/proto/tee-bundle.ts +0 -1413
- package/src/providers/http/index.ts +0 -873
- package/src/providers/http/patch-parse5-tree.ts +0 -49
- package/src/providers/http/utils.ts +0 -439
- package/src/providers/index.ts +0 -8
- package/src/scripts/build-browser.sh +0 -9
- package/src/scripts/build-browser.ts +0 -40
- package/src/scripts/build-jsc.ts +0 -55
- package/src/scripts/check-avs-registration.ts +0 -38
- package/src/scripts/contract-data-gen.sh +0 -8
- package/src/scripts/fallbacks/crypto.ts +0 -1
- package/src/scripts/fallbacks/empty.ts +0 -2
- package/src/scripts/fallbacks/re2.ts +0 -5
- package/src/scripts/fallbacks/snarkjs.ts +0 -5
- package/src/scripts/generate-certs.sh +0 -11
- package/src/scripts/generate-proto.sh +0 -5
- package/src/scripts/generate-provider-types.ts +0 -121
- package/src/scripts/generate-receipt.ts +0 -138
- package/src/scripts/generate-toprf-keys.ts +0 -30
- package/src/scripts/jsc-cli-rpc.ts +0 -48
- package/src/scripts/register-avs-operator.ts +0 -5
- package/src/scripts/start-server.ts +0 -17
- package/src/scripts/update-avs-metadata.ts +0 -26
- package/src/scripts/utils.ts +0 -8
- package/src/scripts/whitelist-operator.ts +0 -22
- package/src/server/create-server.ts +0 -169
- package/src/server/handlers/claimTeeBundle.ts +0 -308
- package/src/server/handlers/claimTunnel.ts +0 -106
- package/src/server/handlers/completeClaimOnChain.ts +0 -36
- package/src/server/handlers/createClaimOnChain.ts +0 -39
- package/src/server/handlers/createTaskOnMechain.ts +0 -80
- package/src/server/handlers/createTunnel.ts +0 -128
- package/src/server/handlers/disconnectTunnel.ts +0 -11
- package/src/server/handlers/fetchCertificateBytes.ts +0 -66
- package/src/server/handlers/index.ts +0 -24
- package/src/server/handlers/init.ts +0 -46
- package/src/server/handlers/toprf.ts +0 -25
- package/src/server/index.ts +0 -4
- package/src/server/provider-api.ts +0 -118
- package/src/server/provider-store.ts +0 -117
- package/src/server/session-api.ts +0 -115
- package/src/server/session-store.ts +0 -60
- package/src/server/socket.ts +0 -156
- package/src/server/tunnels/make-tcp-tunnel.ts +0 -275
- package/src/server/utils/apm.ts +0 -49
- package/src/server/utils/assert-valid-claim-request.ts +0 -375
- package/src/server/utils/config-env.ts +0 -6
- package/src/server/utils/dns.ts +0 -25
- package/src/server/utils/gcp-attestation.ts +0 -415
- package/src/server/utils/generics.ts +0 -68
- package/src/server/utils/iso.ts +0 -258
- package/src/server/utils/keep-alive.ts +0 -50
- package/src/server/utils/nitro-attestation.ts +0 -396
- package/src/server/utils/process-handshake.ts +0 -311
- package/src/server/utils/proxy-session.ts +0 -6
- package/src/server/utils/tee-oprf-verification.ts +0 -231
- package/src/server/utils/tee-transcript-reconstruction.ts +0 -254
- package/src/server/utils/tee-verification.ts +0 -513
- package/src/server/utils/validation.ts +0 -57
- package/src/tests/auth.test.ts +0 -105
- package/src/tests/bgp-listener.test.ts +0 -193
- package/src/tests/claim-creation.test.ts +0 -415
- package/src/tests/describe-with-server.ts +0 -94
- package/src/tests/gcp-attestation.test.ts +0 -206
- package/src/tests/http-parser.test.ts +0 -135
- package/src/tests/http-provider-utils.test.ts +0 -3306
- package/src/tests/http-provider.test.ts +0 -125
- package/src/tests/jsc.test_mac.ts +0 -296
- package/src/tests/mock-provider-server.ts +0 -106
- package/src/tests/mocks.ts +0 -25
- package/src/tests/proof_bundle.bin +0 -0
- package/src/tests/rpc-communication.test.ts +0 -115
- package/src/tests/rpc-tunnel.test.ts +0 -239
- package/src/tests/signatures.test.ts +0 -37
- package/src/tests/tcp-tunnel.test.ts +0 -154
- package/src/tests/tee-bundle.test.ts +0 -321
- package/src/tests/tee-signatures.test.ts +0 -81
- package/src/tests/utils.ts +0 -108
- package/src/tests/verification_bundle.pb +0 -0
- package/src/tests/verification_bundle_tee.pb +0 -0
- package/src/tests/zk.test.ts +0 -453
- package/src/types/bgp.ts +0 -17
- package/src/types/claims.ts +0 -79
- package/src/types/client.ts +0 -205
- package/src/types/general.ts +0 -61
- package/src/types/handlers.ts +0 -16
- package/src/types/index.ts +0 -10
- package/src/types/providers.gen.ts +0 -135
- package/src/types/providers.ts +0 -203
- package/src/types/rpc.ts +0 -46
- package/src/types/signatures.ts +0 -29
- package/src/types/tunnel.ts +0 -25
- package/src/types/zk.ts +0 -31
- package/src/utils/auth.ts +0 -92
- package/src/utils/b64-json.ts +0 -25
- package/src/utils/bgp-listener.ts +0 -159
- package/src/utils/claims.ts +0 -132
- package/src/utils/env.ts +0 -21
- package/src/utils/error.ts +0 -76
- package/src/utils/generics.ts +0 -429
- package/src/utils/http-parser.ts +0 -312
- package/src/utils/index.ts +0 -13
- package/src/utils/logger.ts +0 -114
- package/src/utils/prepare-packets.ts +0 -98
- package/src/utils/redactions.ts +0 -203
- package/src/utils/retries.ts +0 -41
- package/src/utils/signatures/eth.ts +0 -35
- package/src/utils/signatures/index.ts +0 -11
- package/src/utils/socket-base.ts +0 -132
- package/src/utils/ws.ts +0 -30
- package/src/utils/zk.ts +0 -908
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import type { ExternalRPCIncomingMsg } from '#src/external-rpc/types.ts'
|
|
2
|
-
import { RPC_MSG_BRIDGE, rpcRequest } from '#src/external-rpc/utils.ts'
|
|
3
|
-
|
|
4
|
-
export class RPCWebSocket extends EventTarget implements WebSocket {
|
|
5
|
-
|
|
6
|
-
readonly CONNECTING: 0 = 0
|
|
7
|
-
readonly OPEN: 1 = 1
|
|
8
|
-
readonly CLOSING: 2 = 2
|
|
9
|
-
readonly CLOSED: 3 = 3
|
|
10
|
-
|
|
11
|
-
readonly id = `ws_${Date.now()}`
|
|
12
|
-
readonly binaryType: BinaryType = 'arraybuffer'
|
|
13
|
-
readonly bufferedAmount: number = 0
|
|
14
|
-
readonly extensions: string = ''
|
|
15
|
-
readonly url: string
|
|
16
|
-
readonly protocol: string
|
|
17
|
-
readyState: number = this.CONNECTING
|
|
18
|
-
|
|
19
|
-
onopen: ((this: WebSocket, ev: Event) => any) | null
|
|
20
|
-
onerror: ((this: WebSocket, ev: Event) => any) | null
|
|
21
|
-
onclose: ((this: WebSocket, ev: CloseEvent) => any) | null
|
|
22
|
-
onmessage: ((this: WebSocket, ev: MessageEvent<any>) => any) | null
|
|
23
|
-
|
|
24
|
-
#cancelRpcBridge?: (() => void)
|
|
25
|
-
|
|
26
|
-
constructor(url: string) {
|
|
27
|
-
super()
|
|
28
|
-
this.url = url
|
|
29
|
-
this.protocol = ''
|
|
30
|
-
this.#onMessage = this.#onMessage.bind(this)
|
|
31
|
-
|
|
32
|
-
rpcRequest({
|
|
33
|
-
type: 'connectWs',
|
|
34
|
-
request: { id: this.id, url }
|
|
35
|
-
})
|
|
36
|
-
.then(() => this.#callOpen(new Event('open')))
|
|
37
|
-
.catch(error => this.#callError(new ErrorEvent('error', { error })))
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void {
|
|
41
|
-
if(
|
|
42
|
-
typeof data !== 'string'
|
|
43
|
-
&& !ArrayBuffer.isView(data)
|
|
44
|
-
) {
|
|
45
|
-
throw new TypeError('Data must be a string, Uint8Array or ArrayBuffer')
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
rpcRequest({ type: 'sendWsMessage', request: { id: this.id, data: data } })
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
close(code?: number, reason?: string): void {
|
|
52
|
-
this.readyState = this.CLOSING
|
|
53
|
-
rpcRequest({
|
|
54
|
-
type: 'disconnectWs',
|
|
55
|
-
request: { id: this.id, code, reason }
|
|
56
|
-
})
|
|
57
|
-
.then(() => this.#callClose(new CloseEvent('close', { code, reason })))
|
|
58
|
-
.catch(error => this.#callError(new ErrorEvent('error', { error })))
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
#callOpen(ev: Event): void {
|
|
62
|
-
this.readyState = this.OPEN
|
|
63
|
-
this.onopen?.call(this, ev)
|
|
64
|
-
this.dispatchEvent(ev)
|
|
65
|
-
|
|
66
|
-
this.#cancelRpcBridge?.()
|
|
67
|
-
this.#cancelRpcBridge = RPC_MSG_BRIDGE.addListener(this.#onMessage)
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
#callError(ev: ErrorEvent): void {
|
|
71
|
-
this.readyState = this.CLOSED
|
|
72
|
-
this.onerror?.call(this, ev)
|
|
73
|
-
this.dispatchEvent(ev)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
#callClose(ev: CloseEvent): void {
|
|
77
|
-
this.readyState = this.CLOSED
|
|
78
|
-
this.onclose?.call(this, ev)
|
|
79
|
-
this.dispatchEvent(ev)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
#onMessage = (msg: ExternalRPCIncomingMsg) => {
|
|
83
|
-
if(msg.type === 'sendWsMessage' && msg.request.id === this.id) {
|
|
84
|
-
const data = msg.request.data
|
|
85
|
-
const event = new MessageEvent('message', { data })
|
|
86
|
-
this.onmessage?.call(this, event)
|
|
87
|
-
this.dispatchEvent(event)
|
|
88
|
-
return
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if(msg.type === 'disconnectWs' && msg.request.id === this.id) {
|
|
92
|
-
if(!msg.request.err) {
|
|
93
|
-
this.#callClose(
|
|
94
|
-
new CloseEvent('close', { code: 1000, reason: 'Normal Closure' })
|
|
95
|
-
)
|
|
96
|
-
return
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
this.#callError(
|
|
100
|
-
new ErrorEvent('error', { error: new Error(msg.request.err) })
|
|
101
|
-
)
|
|
102
|
-
return
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { setCryptoImplementation } from '@joclaim/tls'
|
|
2
|
-
import { webcryptoCrypto } from '@joclaim/tls/webcrypto'
|
|
3
|
-
|
|
4
|
-
import { handleIncomingMessage } from '#src/external-rpc/handle-incoming-msg.ts'
|
|
5
|
-
import { getWsApiUrlFromBaseUrl } from '#src/external-rpc/utils.ts'
|
|
6
|
-
import { logger, makeLogger } from '#src/utils/index.ts'
|
|
7
|
-
|
|
8
|
-
makeLogger(true)
|
|
9
|
-
|
|
10
|
-
setCryptoImplementation(webcryptoCrypto)
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* For browsers only. Sets up the current window to listen for RPC requests
|
|
14
|
-
* from React Native or other windows
|
|
15
|
-
*/
|
|
16
|
-
export function setupWindowRpc(baseUrl?: string, channel = 'attestor-core') {
|
|
17
|
-
if(baseUrl) {
|
|
18
|
-
globalThis.ATTESTOR_BASE_URL = baseUrl
|
|
19
|
-
} else if(typeof window !== 'undefined' && window.location) {
|
|
20
|
-
globalThis.ATTESTOR_BASE_URL = window.location.toString()
|
|
21
|
-
} else {
|
|
22
|
-
throw new Error('No base URL provided and window.location unavailable')
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if(channel) {
|
|
26
|
-
globalThis.RPC_CHANNEL_NAME = channel
|
|
27
|
-
} else if(!globalThis.RPC_CHANNEL_NAME) {
|
|
28
|
-
throw new Error('No channel name provided and globalThis.RPC_CHANNEL_NAME unavailable')
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if(typeof window !== 'undefined') {
|
|
32
|
-
window.addEventListener(
|
|
33
|
-
'message',
|
|
34
|
-
ev => handleIncomingMessage(ev.data),
|
|
35
|
-
false
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
logger.info({ defaultUrl: getWsApiUrlFromBaseUrl() }, 'window RPC setup')
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export * from '#src/index.ts'
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import '#src/external-rpc/jsc-polyfills/index.ts'
|
|
2
|
-
1 // done to avoid eslint rule
|
|
3
|
-
|
|
4
|
-
import { setCryptoImplementation } from '@joclaim/tls'
|
|
5
|
-
import { pureJsCrypto } from '@joclaim/tls/purejs-crypto'
|
|
6
|
-
|
|
7
|
-
import * as AttestorRPCImport from '#src/external-rpc/index.ts'
|
|
8
|
-
import { makeLogger } from '#src/utils/logger.ts'
|
|
9
|
-
|
|
10
|
-
declare global {
|
|
11
|
-
/**
|
|
12
|
-
* `sendMessage` function should be provided by the host of the JS environment for sending messages to host
|
|
13
|
-
*/
|
|
14
|
-
function sendMessage(channelName: string, message: any): void | Promise<void>
|
|
15
|
-
|
|
16
|
-
var AttestorRPC: typeof AttestorRPCImport & {
|
|
17
|
-
/**
|
|
18
|
-
* Sets up the library to run in JS environments like QuickJS or JavascriptCore.
|
|
19
|
-
*
|
|
20
|
-
* RPC will communicate with user by sending messages using `AttestorRPCChannel` by `<channel>.postMessage(message: string)`,
|
|
21
|
-
* for example: `globalThis['attestor-core'].postMessage(message: string)`.
|
|
22
|
-
*
|
|
23
|
-
* @param baseUrl
|
|
24
|
-
* @param channel The name of the channel for sending messages. Default channel is 'attestor-core'.
|
|
25
|
-
*/
|
|
26
|
-
setupJsRpc(baseUrl: string, channel?: string): void
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
setCryptoImplementation(pureJsCrypto)
|
|
31
|
-
makeLogger(true)
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Sets up the library to run in JS environments like QuickJS or JavascriptCore.
|
|
35
|
-
*/
|
|
36
|
-
export function setupJsRpc(baseUrl: string, channel = 'attestor-core') {
|
|
37
|
-
globalThis.ATTESTOR_BASE_URL = baseUrl
|
|
38
|
-
globalThis.RPC_CHANNEL_NAME = channel
|
|
39
|
-
const rpcChannel: AttestorRPCChannel = {
|
|
40
|
-
postMessage(message) {
|
|
41
|
-
return globalThis.sendMessage(channel, message)
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
globalThis[channel] = rpcChannel
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
globalThis.AttestorRPC = { ...AttestorRPCImport, setupJsRpc }
|
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
import type { OPRFOperator, ZKEngine, ZKOperator } from '@joclaim/zk-symmetric-crypto'
|
|
2
|
-
import '#src/external-rpc/global.d.ts'
|
|
3
|
-
|
|
4
|
-
import type { TaskCompletedEventObject } from '#src/avs/contracts/ReclaimServiceManager.ts'
|
|
5
|
-
import type { CreateClaimOnAvsOpts, CreateClaimOnAvsStep } from '#src/avs/types/index.ts'
|
|
6
|
-
import type { CreateClaimOnMechainStep } from '#src/mechain/types/index.ts'
|
|
7
|
-
import type { AuthenticationRequest } from '#src/proto/api.ts'
|
|
8
|
-
import type { extractHTMLElement, extractJSONValueIndex } from '#src/providers/http/utils.ts'
|
|
9
|
-
import type {
|
|
10
|
-
AttestorData,
|
|
11
|
-
CompleteClaimData,
|
|
12
|
-
CreateClaimOnAttestorOpts,
|
|
13
|
-
LogLevel,
|
|
14
|
-
ProofGenerationStep,
|
|
15
|
-
ProviderName,
|
|
16
|
-
ProviderParams,
|
|
17
|
-
ProviderSecretParams,
|
|
18
|
-
} from '#src/types/index.ts'
|
|
19
|
-
import type { HttpRequest, HttpResponse } from '#src/utils/index.ts'
|
|
20
|
-
|
|
21
|
-
type IdentifiedMessage = {
|
|
22
|
-
id: string
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
type CreateClaimRPCBaseOpts = {
|
|
26
|
-
/**
|
|
27
|
-
* Specify the mode for the ZK & OPRF operator,
|
|
28
|
-
* 'default' -> will use the default ZK operator included in the SDK
|
|
29
|
-
* (presently that's SnarkJS supported by FFs running on WASM)
|
|
30
|
-
* 'rpc' -> if you've access to a native ZK operator, you can use this mode
|
|
31
|
-
* For eg. on React Native
|
|
32
|
-
*/
|
|
33
|
-
zkOperatorMode?: 'default' | 'rpc'
|
|
34
|
-
context?: string
|
|
35
|
-
zkEngine?: ZKEngine
|
|
36
|
-
updateProviderParams?: boolean
|
|
37
|
-
authRequest?: AuthenticationRequest
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export type RPCCreateClaimOptions<N extends ProviderName = any> = Omit<
|
|
41
|
-
CreateClaimOnAttestorOpts<N>,
|
|
42
|
-
'zkOperators' | 'context' | 'client'
|
|
43
|
-
> & CreateClaimRPCBaseOpts
|
|
44
|
-
|
|
45
|
-
export type RPCCreateClaimOnAvsOptions<N extends ProviderName = any> = Omit<
|
|
46
|
-
CreateClaimOnAvsOpts<N>,
|
|
47
|
-
'zkOperators' | 'context' | 'payer'
|
|
48
|
-
> & {
|
|
49
|
-
payer?: 'attestor'
|
|
50
|
-
} & CreateClaimRPCBaseOpts
|
|
51
|
-
|
|
52
|
-
export type RPCCreateClaimOnMechainOptions<N extends ProviderName = any> = Omit<
|
|
53
|
-
CreateClaimOnAvsOpts<N>,
|
|
54
|
-
'zkOperators' | 'context'
|
|
55
|
-
> & CreateClaimRPCBaseOpts
|
|
56
|
-
|
|
57
|
-
type ExtractHTMLElementOptions = {
|
|
58
|
-
html: string
|
|
59
|
-
xpathExpression: string
|
|
60
|
-
contentsOnly: boolean
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
type ExtractJSONValueIndexOptions = {
|
|
64
|
-
json: string
|
|
65
|
-
jsonPath: string
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
type UpdateProviderParamsOpts = {
|
|
69
|
-
request: Omit<HttpRequest, 'body'> & { body: string | undefined }
|
|
70
|
-
response: Omit<HttpResponse, 'body'> & { body: string | undefined }
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
type LogLevelOptions = {
|
|
74
|
-
logLevel: LogLevel
|
|
75
|
-
/**
|
|
76
|
-
* If true, log messages will be sent back to the app
|
|
77
|
-
* via postMessage
|
|
78
|
-
*/
|
|
79
|
-
sendLogsToApp: boolean
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
type AVSCreateResult = {
|
|
83
|
-
object: TaskCompletedEventObject
|
|
84
|
-
txHash: string
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
type MechainCreateResult = {
|
|
88
|
-
taskId: number
|
|
89
|
-
data: CreateClaimResponse[]
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Legacy V1 create claim response
|
|
94
|
-
*/
|
|
95
|
-
export type CreateClaimResponse = {
|
|
96
|
-
identifier: string
|
|
97
|
-
claimData: CompleteClaimData
|
|
98
|
-
signatures: string[]
|
|
99
|
-
/**
|
|
100
|
-
* @deprecated no longer valid
|
|
101
|
-
*/
|
|
102
|
-
witnesses: AttestorData[]
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Fns the app calls on the attestor.
|
|
107
|
-
* These are things done inside the attestor
|
|
108
|
-
*/
|
|
109
|
-
export type ExternalRPCClient = {
|
|
110
|
-
/**
|
|
111
|
-
* Create a claim on the attestor where the RPC SDK is hosted.
|
|
112
|
-
*/
|
|
113
|
-
createClaim(options: RPCCreateClaimOptions): Promise<CreateClaimResponse>
|
|
114
|
-
/**
|
|
115
|
-
* Create a claim on the AVS
|
|
116
|
-
*/
|
|
117
|
-
createClaimOnAvs(opts: RPCCreateClaimOnAvsOptions): Promise<AVSCreateResult>
|
|
118
|
-
/**
|
|
119
|
-
* Create a claim on Mechain
|
|
120
|
-
*/
|
|
121
|
-
createClaimOnMechain(opts: RPCCreateClaimOnMechainOptions): Promise<MechainCreateResult>
|
|
122
|
-
/**
|
|
123
|
-
* Extract an HTML element from a string of HTML
|
|
124
|
-
*/
|
|
125
|
-
extractHtmlElement(options: ExtractHTMLElementOptions): Promise<ReturnType<typeof extractHTMLElement>>
|
|
126
|
-
extractJSONValueIndex(options: ExtractJSONValueIndexOptions): Promise<ReturnType<typeof extractJSONValueIndex>>
|
|
127
|
-
getCurrentMemoryUsage(): Promise<{
|
|
128
|
-
available: boolean
|
|
129
|
-
content: string
|
|
130
|
-
}>
|
|
131
|
-
/**
|
|
132
|
-
* Set the log level for the attestor,
|
|
133
|
-
* optionally set "sendLogsToApp" to true to send logs
|
|
134
|
-
* back to the app
|
|
135
|
-
*/
|
|
136
|
-
setLogLevel(options: LogLevelOptions): Promise<void>
|
|
137
|
-
|
|
138
|
-
benchmarkZK(): Promise<string>
|
|
139
|
-
|
|
140
|
-
ping(): Promise<{ pong: string }>
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
type AsFunction<K> = K extends (...args: any[]) => any ? K : never
|
|
144
|
-
|
|
145
|
-
type FunctionalOperator<T, K extends keyof T> = {
|
|
146
|
-
fn: K
|
|
147
|
-
args: Parameters<AsFunction<T[K]>>
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
export type ExecuteZKOpts<T extends keyof ZKOperator = keyof ZKOperator>
|
|
151
|
-
= FunctionalOperator<ZKOperator, T>
|
|
152
|
-
|
|
153
|
-
export type ExecuteOPRFOpts<T extends keyof OPRFOperator = keyof OPRFOperator>
|
|
154
|
-
= FunctionalOperator<OPRFOperator, T>
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Fns the attestor calls on the app
|
|
158
|
-
*/
|
|
159
|
-
export type ExternalRPCAppClient = {
|
|
160
|
-
executeZkFunctionV3(opts: ExecuteZKOpts): Promise<any>
|
|
161
|
-
executeOprfFunctionV3(opts: ExecuteOPRFOpts): Promise<any>
|
|
162
|
-
|
|
163
|
-
updateProviderParams(opts: UpdateProviderParamsOpts): Promise<{
|
|
164
|
-
params: Partial<ProviderParams<'http'>>
|
|
165
|
-
secretParams: Partial<ProviderSecretParams<'http'>>
|
|
166
|
-
}>
|
|
167
|
-
/**
|
|
168
|
-
* The runtime needs to open a WebSocket connection. Is required for
|
|
169
|
-
* runtimes that do not support WebSockets natively.
|
|
170
|
-
*
|
|
171
|
-
* The app should facilitate this by opening a WebSocket connection
|
|
172
|
-
* to the given URL.
|
|
173
|
-
* "id" is a unique identifier for the WebSocket connection.
|
|
174
|
-
*/
|
|
175
|
-
connectWs(opts: { id: string, url: string }): Promise<{}>
|
|
176
|
-
/**
|
|
177
|
-
* Runtime wants to disconnect a WebSocket connection.
|
|
178
|
-
* "code" is an optional close code,
|
|
179
|
-
* and "reason" is an optional reason for closing.
|
|
180
|
-
*/
|
|
181
|
-
disconnectWs(opts: { id: string, code?: number, reason?: any }): Promise<{}>
|
|
182
|
-
/**
|
|
183
|
-
* Runtime wants to send a message over a WebSocket connection.
|
|
184
|
-
*/
|
|
185
|
-
sendWsMessage(opts: { id: string, data: ArrayBufferView | string }): Promise<{}>
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
type AnyRPCClient = { [_: string]: (opts: any) => any }
|
|
189
|
-
|
|
190
|
-
export type ExternalRPCRequest<T extends AnyRPCClient, K extends keyof T> = {
|
|
191
|
-
type: K
|
|
192
|
-
request: Parameters<T[K]>[0]
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
export type ExternalRPCResponse<T extends AnyRPCClient, K extends (keyof T) & string> = {
|
|
196
|
-
type: `${K}Done`
|
|
197
|
-
response: Awaited<ReturnType<T[K]>>
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
export type ExternalRPCErrorResponse = {
|
|
201
|
-
type: 'error'
|
|
202
|
-
data: {
|
|
203
|
-
message: string
|
|
204
|
-
stack: string
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
type AsResponse<T> = T & { isResponse: true }
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Data sent to the attestor from the window/application
|
|
212
|
-
*/
|
|
213
|
-
// spread out each key because TS can't handle
|
|
214
|
-
export type ExternalRPCIncomingMsg = (
|
|
215
|
-
ExternalRPCRequest<ExternalRPCClient, 'createClaim'>
|
|
216
|
-
| ExternalRPCRequest<ExternalRPCClient, 'createClaimOnAvs'>
|
|
217
|
-
| ExternalRPCRequest<ExternalRPCClient, 'createClaimOnMechain'>
|
|
218
|
-
| ExternalRPCRequest<ExternalRPCClient, 'extractHtmlElement'>
|
|
219
|
-
| ExternalRPCRequest<ExternalRPCClient, 'extractJSONValueIndex'>
|
|
220
|
-
| ExternalRPCRequest<ExternalRPCClient, 'getCurrentMemoryUsage'>
|
|
221
|
-
| ExternalRPCRequest<ExternalRPCClient, 'setLogLevel'>
|
|
222
|
-
| ExternalRPCRequest<ExternalRPCClient, 'benchmarkZK'>
|
|
223
|
-
| ExternalRPCRequest<ExternalRPCClient, 'ping'>
|
|
224
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'executeZkFunctionV3'>>
|
|
225
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'executeOprfFunctionV3'>>
|
|
226
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'updateProviderParams'>>
|
|
227
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'connectWs'>>
|
|
228
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'disconnectWs'>>
|
|
229
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCAppClient, 'sendWsMessage'>>
|
|
230
|
-
| AsResponse<ExternalRPCErrorResponse>
|
|
231
|
-
| ExternalRPCRequest<ExternalRPCAppClient, 'sendWsMessage'>
|
|
232
|
-
| {
|
|
233
|
-
type: 'disconnectWs'
|
|
234
|
-
request: {
|
|
235
|
-
id: string
|
|
236
|
-
err?: string
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
) & IdentifiedMessage
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Data sent back from the attestor to
|
|
243
|
-
* the window/application containing the attestor
|
|
244
|
-
*/
|
|
245
|
-
export type ExternalRPCOutgoingMsg = (
|
|
246
|
-
AsResponse<ExternalRPCResponse<ExternalRPCClient, 'createClaim'>>
|
|
247
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCClient, 'createClaimOnAvs'>>
|
|
248
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCClient, 'extractHtmlElement'>>
|
|
249
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCClient, 'extractJSONValueIndex'>>
|
|
250
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCClient, 'getCurrentMemoryUsage'>>
|
|
251
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCClient, 'setLogLevel'>>
|
|
252
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCClient, 'benchmarkZK'>>
|
|
253
|
-
| AsResponse<ExternalRPCResponse<ExternalRPCClient, 'ping'>>
|
|
254
|
-
| ExternalRPCRequest<ExternalRPCAppClient, 'executeZkFunctionV3'>
|
|
255
|
-
| ExternalRPCRequest<ExternalRPCAppClient, 'executeOprfFunctionV3'>
|
|
256
|
-
| ExternalRPCRequest<ExternalRPCAppClient, 'updateProviderParams'>
|
|
257
|
-
| ExternalRPCRequest<ExternalRPCAppClient, 'connectWs'>
|
|
258
|
-
| ExternalRPCRequest<ExternalRPCAppClient, 'disconnectWs'>
|
|
259
|
-
| ExternalRPCRequest<ExternalRPCAppClient, 'sendWsMessage'>
|
|
260
|
-
| (
|
|
261
|
-
{
|
|
262
|
-
type: 'createClaimStep'
|
|
263
|
-
step: {
|
|
264
|
-
name: 'attestor-progress'
|
|
265
|
-
step: ProofGenerationStep
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
)
|
|
269
|
-
| (
|
|
270
|
-
{
|
|
271
|
-
type: 'createClaimOnAvsStep'
|
|
272
|
-
step: CreateClaimOnAvsStep
|
|
273
|
-
}
|
|
274
|
-
)
|
|
275
|
-
| (
|
|
276
|
-
{
|
|
277
|
-
type: 'createClaimOnMechainStep'
|
|
278
|
-
step: CreateClaimOnMechainStep
|
|
279
|
-
}
|
|
280
|
-
)
|
|
281
|
-
| (
|
|
282
|
-
{
|
|
283
|
-
type: 'log'
|
|
284
|
-
level: LogLevelOptions['logLevel']
|
|
285
|
-
message: object
|
|
286
|
-
}
|
|
287
|
-
)
|
|
288
|
-
| AsResponse<ExternalRPCErrorResponse>
|
|
289
|
-
) & IdentifiedMessage
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { WS_PATHNAME } from '#src/config/index.ts'
|
|
2
|
-
import { EventBus } from '#src/external-rpc/event-bus.ts'
|
|
3
|
-
import type { ExternalRPCAppClient, ExternalRPCIncomingMsg, ExternalRPCOutgoingMsg, ExternalRPCRequest, ExternalRPCResponse } from '#src/external-rpc/types.ts'
|
|
4
|
-
import { B64_JSON_REPLACER } from '#src/utils/b64-json.ts'
|
|
5
|
-
import { AttestorError } from '#src/utils/error.ts'
|
|
6
|
-
|
|
7
|
-
export const RPC_MSG_BRIDGE = new EventBus<ExternalRPCIncomingMsg>()
|
|
8
|
-
|
|
9
|
-
// track memory usage
|
|
10
|
-
export async function getCurrentMemoryUsage() {
|
|
11
|
-
if(!window.crossOriginIsolated) {
|
|
12
|
-
return {
|
|
13
|
-
available: false,
|
|
14
|
-
content: 'N/A (page not cross-origin-isolated)'
|
|
15
|
-
}
|
|
16
|
-
} else if(!performance.measureUserAgentSpecificMemory) {
|
|
17
|
-
return {
|
|
18
|
-
available: false,
|
|
19
|
-
content: 'N/A (performance.measureUserAgentSpecificMemory() is not available)',
|
|
20
|
-
}
|
|
21
|
-
} else {
|
|
22
|
-
try {
|
|
23
|
-
const result = performance.measureUserAgentSpecificMemory()
|
|
24
|
-
const totalmb = Math.round(result.bytes / 1024 / 1024)
|
|
25
|
-
|
|
26
|
-
return { available: true, content: `${totalmb}mb` }
|
|
27
|
-
} catch(error) {
|
|
28
|
-
if(error instanceof DOMException && error.name === 'SecurityError') {
|
|
29
|
-
return { available: false, content: `N/A (${error.message})` }
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
throw error
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export function generateRpcRequestId() {
|
|
38
|
-
return Math.random().toString(36).slice(2)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* The window RPC will be served from the same origin as the API server.
|
|
43
|
-
* so we can get the API server's origin from the location.
|
|
44
|
-
*/
|
|
45
|
-
export function getWsApiUrlFromBaseUrl() {
|
|
46
|
-
if(typeof ATTESTOR_BASE_URL !== 'string') {
|
|
47
|
-
throw new Error('ATTESTOR_BASE_URL is not set')
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const parsed = new URL(ATTESTOR_BASE_URL)
|
|
51
|
-
const { host, protocol } = parsed
|
|
52
|
-
const wsProtocol = protocol === 'https:' ? 'wss:' : 'ws:'
|
|
53
|
-
return `${wsProtocol}//${host}${WS_PATHNAME}`
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export function rpcRequest<T extends keyof ExternalRPCAppClient>(
|
|
57
|
-
opts: ExternalRPCRequest<ExternalRPCAppClient, T>
|
|
58
|
-
): Promise<ExternalRPCResponse<ExternalRPCAppClient, T>['response']> {
|
|
59
|
-
const id = generateRpcRequestId()
|
|
60
|
-
const waitForRes = waitForResponse(opts.type, id)
|
|
61
|
-
|
|
62
|
-
// @ts-expect-error
|
|
63
|
-
sendMessageToApp({
|
|
64
|
-
id,
|
|
65
|
-
type: opts.type,
|
|
66
|
-
request: opts.request,
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
return waitForRes
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function waitForResponse<T extends keyof ExternalRPCAppClient>(
|
|
73
|
-
type: T,
|
|
74
|
-
requestId: string,
|
|
75
|
-
timeoutMs = 60_000
|
|
76
|
-
) {
|
|
77
|
-
type R = Awaited<ReturnType<ExternalRPCAppClient[T]>>
|
|
78
|
-
const returnType = `${type}Done` as const
|
|
79
|
-
return new Promise<R>((resolve, reject) => {
|
|
80
|
-
const timeout = setTimeout(() => {
|
|
81
|
-
reject(
|
|
82
|
-
new AttestorError(
|
|
83
|
-
'ERROR_INTERNAL',
|
|
84
|
-
`Timeout waiting for response: ${type}`,
|
|
85
|
-
{ requestId }
|
|
86
|
-
)
|
|
87
|
-
)
|
|
88
|
-
cancel()
|
|
89
|
-
}, timeoutMs)
|
|
90
|
-
|
|
91
|
-
const cancel = RPC_MSG_BRIDGE.addListener(msg => {
|
|
92
|
-
if(msg.id !== requestId) {
|
|
93
|
-
return
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if(msg.type === 'error') {
|
|
97
|
-
reject(new Error(msg.data.message))
|
|
98
|
-
} else if(msg.type === returnType) {
|
|
99
|
-
resolve(msg.response as R)
|
|
100
|
-
} else {
|
|
101
|
-
return
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
clearTimeout(timeout)
|
|
105
|
-
cancel()
|
|
106
|
-
})
|
|
107
|
-
})
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Sends a message back to the host app
|
|
112
|
-
* @param data
|
|
113
|
-
*/
|
|
114
|
-
export function sendMessageToApp(data: ExternalRPCOutgoingMsg) {
|
|
115
|
-
const str = JSON.stringify(data, B64_JSON_REPLACER)
|
|
116
|
-
if(!RPC_CHANNEL_NAME) {
|
|
117
|
-
throw new Error('global RPC_CHANNEL_NAME is not set')
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const channel = globalThis[RPC_CHANNEL_NAME] as AttestorRPCChannel
|
|
121
|
-
if(!channel) {
|
|
122
|
-
throw new Error(`RPC channel ${RPC_CHANNEL_NAME} not set on globalThis`)
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
channel.postMessage(str)
|
|
126
|
-
}
|
package/src/external-rpc/zk.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { EncryptionAlgorithm, OPRFOperator, ZKEngine, ZKOperator } from '@joclaim/zk-symmetric-crypto'
|
|
2
|
-
|
|
3
|
-
import type { ExecuteOPRFOpts, ExecuteZKOpts } from '#src/external-rpc/types.ts'
|
|
4
|
-
import { rpcRequest } from '#src/external-rpc/utils.ts'
|
|
5
|
-
import { logger, makeDefaultZkOperator } from '#src/utils/index.ts'
|
|
6
|
-
|
|
7
|
-
export const ALL_ENC_ALGORITHMS: EncryptionAlgorithm[] = [
|
|
8
|
-
'aes-256-ctr',
|
|
9
|
-
'aes-128-ctr',
|
|
10
|
-
'chacha20',
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* The goal of this RPC operator is if the attestor client
|
|
15
|
-
* is running in a WebView, it can call the native
|
|
16
|
-
* application to perform the ZK operations
|
|
17
|
-
*/
|
|
18
|
-
export function makeExternalRpcZkOperator(
|
|
19
|
-
algorithm: EncryptionAlgorithm,
|
|
20
|
-
zkEngine: ZKEngine = 'snarkjs'
|
|
21
|
-
): ZKOperator {
|
|
22
|
-
return {
|
|
23
|
-
async generateWitness(input) {
|
|
24
|
-
const operator = await makeDefaultZkOperator(algorithm, zkEngine, logger)
|
|
25
|
-
return operator.generateWitness(input)
|
|
26
|
-
},
|
|
27
|
-
groth16Prove(input) {
|
|
28
|
-
return callFnZk({ fn: 'groth16Prove', args: [input] })
|
|
29
|
-
},
|
|
30
|
-
groth16Verify(publicSignals, proof) {
|
|
31
|
-
return callFnZk({ fn: 'groth16Verify', args: [publicSignals, proof] })
|
|
32
|
-
},
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
function callFnZk(request: ExecuteZKOpts) {
|
|
38
|
-
return rpcRequest({ type: 'executeZkFunctionV3', request })
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* The goal of this RPC operator is if the attestor client
|
|
44
|
-
* is running in a WebView, it can call the native
|
|
45
|
-
* application to perform the OPRF operations
|
|
46
|
-
*/
|
|
47
|
-
export function makeExternalRpcOprfOperator(
|
|
48
|
-
algorithm: EncryptionAlgorithm,
|
|
49
|
-
zkEngine: ZKEngine = 'snarkjs'
|
|
50
|
-
): OPRFOperator {
|
|
51
|
-
return {
|
|
52
|
-
async generateWitness(input) {
|
|
53
|
-
const operator = await makeDefaultZkOperator(algorithm, zkEngine, logger)
|
|
54
|
-
return operator.generateWitness(input)
|
|
55
|
-
},
|
|
56
|
-
groth16Prove(input) {
|
|
57
|
-
return callFnOprf({ fn: 'groth16Prove', args: [input] })
|
|
58
|
-
},
|
|
59
|
-
groth16Verify(publicSignals, proof) {
|
|
60
|
-
return callFnOprf({ fn: 'groth16Verify', args: [publicSignals, proof] })
|
|
61
|
-
},
|
|
62
|
-
generateThresholdKeys(total, threshold) {
|
|
63
|
-
return callFnOprf({ fn: 'generateThresholdKeys', args: [total, threshold] })
|
|
64
|
-
},
|
|
65
|
-
generateOPRFRequestData(data, domainSeparator) {
|
|
66
|
-
return callFnOprf({ fn: 'generateOPRFRequestData', args: [data, domainSeparator] })
|
|
67
|
-
},
|
|
68
|
-
finaliseOPRF(serverPublicKey, request, responses) {
|
|
69
|
-
return callFnOprf({ fn: 'finaliseOPRF', args: [serverPublicKey, request, responses] })
|
|
70
|
-
},
|
|
71
|
-
evaluateOPRF(serverPrivateKey, request) {
|
|
72
|
-
return callFnOprf({ fn: 'evaluateOPRF', args: [serverPrivateKey, request] })
|
|
73
|
-
},
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function callFnOprf(request: ExecuteOPRFOpts) {
|
|
78
|
-
return rpcRequest({ type: 'executeOprfFunctionV3', request })
|
|
79
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export * as tls from '@joclaim/tls'
|
|
2
|
-
export * from './client/utils/client-socket.ts'
|
|
3
|
-
export * from './config/index.ts'
|
|
4
|
-
export * from './types/index.ts'
|
|
5
|
-
export * from './utils/index.ts'
|
|
6
|
-
export * from './providers/index.ts'
|
|
7
|
-
export * as proto from './proto/api.ts'
|
|
8
|
-
export * from './client/index.ts'
|
|
9
|
-
export * from './mechain/index.ts'
|