@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,121 +0,0 @@
|
|
|
1
|
-
import { readdir, readFile, writeFile } from 'fs/promises'
|
|
2
|
-
import { compile } from 'json-schema-to-typescript'
|
|
3
|
-
import { parse } from 'yaml'
|
|
4
|
-
|
|
5
|
-
const PROVIDER_SCHEMAS_PATH = './provider-schemas'
|
|
6
|
-
const GEN_TS_FILENAME = './src/types/providers.gen.ts'
|
|
7
|
-
const BinaryDataType = 'BinaryData'
|
|
8
|
-
|
|
9
|
-
async function main() {
|
|
10
|
-
const folders = await findAllProviderFolders()
|
|
11
|
-
|
|
12
|
-
console.log(`Generating for ${folders.length} provider folders`)
|
|
13
|
-
|
|
14
|
-
let ts = '/* eslint-disable */\n/* Generated file. Do not edit */'
|
|
15
|
-
// json-schema nor ajv support uint8array formats,
|
|
16
|
-
// so we define a custom type for binary data
|
|
17
|
-
// and use it in the generated types
|
|
18
|
-
ts += `\n\ntype ${BinaryDataType} = Uint8Array | string\n`
|
|
19
|
-
// type map of each provider to its parameters and secret parameters
|
|
20
|
-
let providerTypeMap = '\nexport interface ProvidersConfig {\n'
|
|
21
|
-
// schema map of each provider to its parameters and secret parameters
|
|
22
|
-
// storing the JSON schema in the map
|
|
23
|
-
// lets us validate the parameters and secret parameters
|
|
24
|
-
let providerSchemaMap = '\nexport const PROVIDER_SCHEMAS = {\n'
|
|
25
|
-
|
|
26
|
-
for(const folder of folders) {
|
|
27
|
-
const {
|
|
28
|
-
schemaTitle: paramsSchemaTitle,
|
|
29
|
-
ts: paramsSchemaTs,
|
|
30
|
-
jsonTitle: paramsJsonTitle
|
|
31
|
-
} = await generateTsFromYamlSchema(folder, 'parameters')
|
|
32
|
-
const {
|
|
33
|
-
schemaTitle: secretParamsSchemaTitle,
|
|
34
|
-
ts: secretParamsSchemaTs,
|
|
35
|
-
jsonTitle: secretParamsJsonTitle
|
|
36
|
-
} = await generateTsFromYamlSchema(
|
|
37
|
-
folder,
|
|
38
|
-
'secret-parameters'
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
ts += `\n${paramsSchemaTs}\n${secretParamsSchemaTs}`
|
|
42
|
-
providerTypeMap += ` ${folder}: {\n`
|
|
43
|
-
providerTypeMap += ` parameters: ${paramsSchemaTitle}\n`
|
|
44
|
-
providerTypeMap += ` secretParameters: ${secretParamsSchemaTitle}\n`
|
|
45
|
-
providerTypeMap += ' }\n'
|
|
46
|
-
|
|
47
|
-
providerSchemaMap += ` ${folder}: {\n`
|
|
48
|
-
providerSchemaMap += ` parameters: ${paramsJsonTitle},\n`
|
|
49
|
-
providerSchemaMap += ` secretParameters: ${secretParamsJsonTitle}\n`
|
|
50
|
-
providerSchemaMap += ' },\n'
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
providerTypeMap += '}\n'
|
|
54
|
-
providerSchemaMap += '}\n'
|
|
55
|
-
ts += providerTypeMap
|
|
56
|
-
ts += providerSchemaMap
|
|
57
|
-
|
|
58
|
-
await writeFile(GEN_TS_FILENAME, ts)
|
|
59
|
-
console.log(`Wrote to ${GEN_TS_FILENAME}`)
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async function getJsonSchemaForProvider(
|
|
63
|
-
name: string,
|
|
64
|
-
type: 'parameters' | 'secret-parameters'
|
|
65
|
-
) {
|
|
66
|
-
const paramsYaml = await readFile(
|
|
67
|
-
`${PROVIDER_SCHEMAS_PATH}/${name}/${type}.yaml`,
|
|
68
|
-
{ encoding: 'utf-8' }
|
|
69
|
-
)
|
|
70
|
-
const paramsJson = parse(paramsYaml)
|
|
71
|
-
return paramsJson
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export async function generateTsFromYamlSchema(
|
|
75
|
-
name: string,
|
|
76
|
-
type: 'parameters' | 'secret-parameters'
|
|
77
|
-
) {
|
|
78
|
-
const paramsJson = await getJsonSchemaForProvider(name, type)
|
|
79
|
-
let paramsSchemaTs = await compile(
|
|
80
|
-
paramsJson,
|
|
81
|
-
'',
|
|
82
|
-
{
|
|
83
|
-
additionalProperties: false,
|
|
84
|
-
bannerComment: '',
|
|
85
|
-
ignoreMinAndMaxItems: true,
|
|
86
|
-
declareExternallyReferenced: false,
|
|
87
|
-
customName({ type, format }) {
|
|
88
|
-
if(type === 'string' && format === 'binary') {
|
|
89
|
-
return BinaryDataType
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return undefined
|
|
93
|
-
},
|
|
94
|
-
}
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
const jsonTitle = `${paramsJson.title}Json`
|
|
98
|
-
paramsSchemaTs += `\nexport const ${jsonTitle} = ${JSON.stringify(paramsJson)}`
|
|
99
|
-
|
|
100
|
-
return {
|
|
101
|
-
ts: paramsSchemaTs,
|
|
102
|
-
schemaTitle: paramsJson.title,
|
|
103
|
-
jsonTitle
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Find all provider folders in the provider-schemas directory
|
|
109
|
-
* @returns {Promise<string[]>} List of provider folder names
|
|
110
|
-
*/
|
|
111
|
-
async function findAllProviderFolders() {
|
|
112
|
-
const providerFolders = await readdir(
|
|
113
|
-
PROVIDER_SCHEMAS_PATH,
|
|
114
|
-
{ withFileTypes: true }
|
|
115
|
-
)
|
|
116
|
-
return providerFolders
|
|
117
|
-
.filter(p => p.isDirectory())
|
|
118
|
-
.map(p => p.name)
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
void main()
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { setCryptoImplementation } from '@joclaim/tls'
|
|
2
|
-
import { webcryptoCrypto } from '@joclaim/tls/webcrypto'
|
|
3
|
-
import { readFile } from 'fs/promises'
|
|
4
|
-
import type { WebSocketServer } from 'ws'
|
|
5
|
-
import '#src/server/utils/config-env.ts'
|
|
6
|
-
|
|
7
|
-
import type {
|
|
8
|
-
ProviderName,
|
|
9
|
-
ProviderParams,
|
|
10
|
-
ProviderSecretParams } from '#src/index.ts'
|
|
11
|
-
import {
|
|
12
|
-
API_SERVER_PORT,
|
|
13
|
-
createClaimOnAttestor,
|
|
14
|
-
getAttestorClientFromPool,
|
|
15
|
-
getTranscriptString,
|
|
16
|
-
logger,
|
|
17
|
-
providers,
|
|
18
|
-
WS_PATHNAME,
|
|
19
|
-
} from '#src/index.ts'
|
|
20
|
-
import { getCliArgument } from '#src/scripts/utils.ts'
|
|
21
|
-
import { createServer, decryptTranscript } from '#src/server/index.ts'
|
|
22
|
-
import { assertValidateProviderParams } from '#src/server/utils/validation.ts'
|
|
23
|
-
import { getEnvVariable } from '#src/utils/env.ts'
|
|
24
|
-
|
|
25
|
-
setCryptoImplementation(webcryptoCrypto)
|
|
26
|
-
|
|
27
|
-
type ProviderReceiptGenerationParams<P extends ProviderName> = {
|
|
28
|
-
name: P
|
|
29
|
-
params: ProviderParams<P>
|
|
30
|
-
secretParams: ProviderSecretParams<P>
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// tmp change till we move OPRF attestor to prod
|
|
34
|
-
const DEFAULT_ATTESTOR_HOST_PORT = 'ws://localhost:8001/ws'
|
|
35
|
-
const PRIVATE_KEY_HEX = getEnvVariable('PRIVATE_KEY_HEX')
|
|
36
|
-
// demo private key
|
|
37
|
-
|| '0x0123788edad59d7c013cdc85e4372f350f828e2cec62d9a2de4560e69aec7f89'
|
|
38
|
-
|
|
39
|
-
let server: WebSocketServer | undefined
|
|
40
|
-
|
|
41
|
-
export async function main<T extends ProviderName>(
|
|
42
|
-
receiptParams?: ProviderReceiptGenerationParams<T>
|
|
43
|
-
) {
|
|
44
|
-
const paramsJson = receiptParams ?? (await getInputParameters())
|
|
45
|
-
if(!(paramsJson.name in providers)) {
|
|
46
|
-
throw new Error(`Unknown provider "${paramsJson.name}"`)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
assertValidateProviderParams<'http'>(paramsJson.name, paramsJson.params)
|
|
50
|
-
|
|
51
|
-
let attestorHostPort = getCliArgument('attestor')
|
|
52
|
-
|| DEFAULT_ATTESTOR_HOST_PORT
|
|
53
|
-
if(attestorHostPort === 'local') {
|
|
54
|
-
console.log('starting local attestor server...')
|
|
55
|
-
server = await createServer()
|
|
56
|
-
attestorHostPort = `ws://localhost:${API_SERVER_PORT}${WS_PATHNAME}`
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const zkEngine = getCliArgument('zk') === 'gnark' ? 'gnark' : 'snarkjs'
|
|
60
|
-
const { request, error, claim } = await createClaimOnAttestor({
|
|
61
|
-
name: paramsJson.name,
|
|
62
|
-
secretParams: paramsJson.secretParams,
|
|
63
|
-
params: paramsJson.params,
|
|
64
|
-
ownerPrivateKey: PRIVATE_KEY_HEX,
|
|
65
|
-
client: { url: attestorHostPort },
|
|
66
|
-
logger,
|
|
67
|
-
zkEngine
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
if(error) {
|
|
71
|
-
console.error('claim creation failed:', error)
|
|
72
|
-
} else {
|
|
73
|
-
const ctx = claim?.context
|
|
74
|
-
? JSON.parse(claim.context)
|
|
75
|
-
: {}
|
|
76
|
-
console.log(`receipt is valid for ${paramsJson.name} provider`)
|
|
77
|
-
if(ctx.extractedParameters) {
|
|
78
|
-
console.log('extracted params:', ctx.extractedParameters)
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if(!request) {
|
|
84
|
-
throw new Error('Missing request in claim')
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const decTranscript = await decryptTranscript(
|
|
88
|
-
request?.transcript,
|
|
89
|
-
logger,
|
|
90
|
-
zkEngine,
|
|
91
|
-
request?.fixedServerIV,
|
|
92
|
-
request?.fixedClientIV
|
|
93
|
-
)
|
|
94
|
-
const transcriptStr = getTranscriptString(decTranscript)
|
|
95
|
-
console.log('receipt:\n', transcriptStr)
|
|
96
|
-
console.log('claim:\n', claim)
|
|
97
|
-
|
|
98
|
-
const client = getAttestorClientFromPool(attestorHostPort)
|
|
99
|
-
await client.terminateConnection()
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
104
|
-
async function getInputParameters(): Promise<ProviderReceiptGenerationParams<any>> {
|
|
105
|
-
const paramsJsonFile = getCliArgument('json')
|
|
106
|
-
if(!paramsJsonFile) {
|
|
107
|
-
const name = getCliArgument('name')
|
|
108
|
-
const paramsStr = getCliArgument('params')
|
|
109
|
-
const secretParamsStr = getCliArgument('secretParams')
|
|
110
|
-
if(!name || !paramsStr || !secretParamsStr) {
|
|
111
|
-
throw new Error('Either provide --json argument for parameters JSON or provide separately with --name, --params & --secretParams')
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return {
|
|
115
|
-
name,
|
|
116
|
-
params: JSON.parse(paramsStr),
|
|
117
|
-
secretParams: JSON.parse(secretParamsStr)
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
let fileContents = await readFile(paramsJsonFile, 'utf8')
|
|
122
|
-
for(const variable in process.env) {
|
|
123
|
-
fileContents = fileContents.replace(
|
|
124
|
-
`{{${variable}}}`,
|
|
125
|
-
process.env[variable]!
|
|
126
|
-
)
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return JSON.parse(fileContents)
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
main()
|
|
133
|
-
.catch(err => {
|
|
134
|
-
console.error('error in receipt gen', err)
|
|
135
|
-
})
|
|
136
|
-
.finally(() => {
|
|
137
|
-
server?.close()
|
|
138
|
-
})
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers'
|
|
2
|
-
|
|
3
|
-
import { logger, makeDefaultOPRFOperator } from '#src/utils/index.ts'
|
|
4
|
-
|
|
5
|
-
const ENGINE = 'gnark'
|
|
6
|
-
const TOTAL_KEYS = 10
|
|
7
|
-
const THRESHOLD = 1
|
|
8
|
-
|
|
9
|
-
async function main() {
|
|
10
|
-
const op = makeDefaultOPRFOperator('chacha20', ENGINE, logger)
|
|
11
|
-
const {
|
|
12
|
-
publicKey,
|
|
13
|
-
privateKey,
|
|
14
|
-
shares
|
|
15
|
-
} = await op.generateThresholdKeys(TOTAL_KEYS, THRESHOLD)
|
|
16
|
-
logEnvValue('TOPRF_PUBLIC_KEY', publicKey)
|
|
17
|
-
logEnvValue('TOPRF_PRIVATE_KEY', privateKey)
|
|
18
|
-
|
|
19
|
-
for(const [i, share] of shares.entries()) {
|
|
20
|
-
console.log(`# Share ${i}`)
|
|
21
|
-
logEnvValue('TOPRF_SHARE_PUBLIC_KEY', share.publicKey)
|
|
22
|
-
logEnvValue('TOPRF_SHARE_PRIVATE_KEY', share.privateKey)
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function logEnvValue(name: string, value: Uint8Array) {
|
|
27
|
-
console.log(`${name}=${ethers.utils.hexlify(value)}`)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
void main()
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// eslint-disable-next-line simple-import-sort/imports
|
|
2
|
-
import '#src/external-rpc/jsc-polyfills/index.ts'
|
|
3
|
-
|
|
4
|
-
import { setCryptoImplementation } from '@joclaim/tls'
|
|
5
|
-
import { pureJsCrypto } from '@joclaim/tls/purejs-crypto'
|
|
6
|
-
|
|
7
|
-
import { handleIncomingMessage } from '#src/external-rpc/index.ts'
|
|
8
|
-
import { B64_JSON_REVIVER } from '#src/utils/b64-json.ts'
|
|
9
|
-
|
|
10
|
-
function readIncomingMsg(): JSCIncomingMsg {
|
|
11
|
-
const cmd = readline()
|
|
12
|
-
return JSON.parse(cmd, B64_JSON_REVIVER)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
setCryptoImplementation(pureJsCrypto)
|
|
16
|
-
|
|
17
|
-
print('Input base URL for attestor')
|
|
18
|
-
const initCmd = readIncomingMsg()
|
|
19
|
-
if(initCmd.type !== 'init') {
|
|
20
|
-
throw new Error('Expected init command')
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
globalThis.RPC_CHANNEL_NAME = 'cli'
|
|
24
|
-
globalThis.ATTESTOR_BASE_URL = initCmd.attestorBaseUrl
|
|
25
|
-
const channel: AttestorRPCChannel = {
|
|
26
|
-
postMessage(message) {
|
|
27
|
-
print(message)
|
|
28
|
-
},
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
globalThis[RPC_CHANNEL_NAME] = channel
|
|
32
|
-
|
|
33
|
-
print('reading RPC messages...')
|
|
34
|
-
|
|
35
|
-
let cmd: JSCIncomingMsg
|
|
36
|
-
while(cmd = readIncomingMsg(), cmd.type !== 'quit') {
|
|
37
|
-
if(cmd.type === 'init') {
|
|
38
|
-
continue
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
handleIncomingMessage(cmd)
|
|
42
|
-
// give 500ms to do some async work
|
|
43
|
-
await new Promise((resolve) => {
|
|
44
|
-
setTimeout(resolve, 500)
|
|
45
|
-
})
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
print('done')
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { setCryptoImplementation } from '@joclaim/tls'
|
|
2
|
-
import { webcryptoCrypto } from '@joclaim/tls/webcrypto'
|
|
3
|
-
import '#src/server/utils/config-env.ts'
|
|
4
|
-
|
|
5
|
-
import { getApm } from '#src/server/utils/apm.ts'
|
|
6
|
-
getApm()
|
|
7
|
-
|
|
8
|
-
setCryptoImplementation(webcryptoCrypto)
|
|
9
|
-
|
|
10
|
-
async function main() {
|
|
11
|
-
// importing dynamically to allow APM to inject
|
|
12
|
-
// into modules before they are used
|
|
13
|
-
const { createServer } = await import('#src/server/index.ts')
|
|
14
|
-
return createServer()
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
main()
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// eslint-disable-next-line simple-import-sort/imports
|
|
2
|
-
import 'src/server/utils/config-env'
|
|
3
|
-
import { getContracts } from '#src/avs/utils/contracts.ts'
|
|
4
|
-
import { getCliArgument } from '#src/scripts/utils.ts'
|
|
5
|
-
|
|
6
|
-
async function main() {
|
|
7
|
-
const { contract } = getContracts()
|
|
8
|
-
|
|
9
|
-
const minSignaturesPerTask = getCliArgument('minSignaturesPerTask')
|
|
10
|
-
if(!minSignaturesPerTask) {
|
|
11
|
-
throw new Error(
|
|
12
|
-
'Provide operator address via --minSignaturesPerTask <num>'
|
|
13
|
-
)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const tx = await contract.updateTaskCreationMetadata({
|
|
17
|
-
minSignaturesPerTask: +(minSignaturesPerTask || 0),
|
|
18
|
-
maxTaskCreationDelayS: 0,
|
|
19
|
-
maxTaskLifetimeS: 0,
|
|
20
|
-
})
|
|
21
|
-
await tx.wait()
|
|
22
|
-
|
|
23
|
-
console.log('Updated task creation metadata')
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
void main()
|
package/src/scripts/utils.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// eslint-disable-next-line simple-import-sort/imports
|
|
2
|
-
import 'src/server/utils/config-env'
|
|
3
|
-
import { getContracts } from '#src/avs/utils/contracts.ts'
|
|
4
|
-
import { getCliArgument } from '#src/scripts/utils.ts'
|
|
5
|
-
|
|
6
|
-
async function main() {
|
|
7
|
-
const { contract } = getContracts()
|
|
8
|
-
|
|
9
|
-
const address = getCliArgument('address')
|
|
10
|
-
if(!address) {
|
|
11
|
-
throw new Error(
|
|
12
|
-
'Provide operator address via --address <addr>'
|
|
13
|
-
)
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
const tx = await contract.whitelistAddressAsOperator(address, true)
|
|
17
|
-
await tx.wait()
|
|
18
|
-
|
|
19
|
-
console.log('Whitelisted address:', address)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
void main()
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage } from 'http'
|
|
2
|
-
import { createServer as createHttpServer } from 'http'
|
|
3
|
-
import serveStatic from 'serve-static'
|
|
4
|
-
import type { Duplex } from 'stream'
|
|
5
|
-
import type { WebSocket } from 'ws'
|
|
6
|
-
import { WebSocketServer } from 'ws'
|
|
7
|
-
|
|
8
|
-
import { API_SERVER_PORT, BROWSER_RPC_PATHNAME, WS_PATHNAME } from '#src/config/index.ts'
|
|
9
|
-
import { handleProviderApiRequest } from '#src/server/provider-api.ts'
|
|
10
|
-
import { handleSessionApiRequest } from '#src/server/session-api.ts'
|
|
11
|
-
import { AttestorServerSocket } from '#src/server/socket.ts'
|
|
12
|
-
import { getAttestorAddress } from '#src/server/utils/generics.ts'
|
|
13
|
-
import { addKeepAlive } from '#src/server/utils/keep-alive.ts'
|
|
14
|
-
import type { BGPListener } from '#src/types/index.ts'
|
|
15
|
-
import { createBgpListener } from '#src/utils/bgp-listener.ts'
|
|
16
|
-
import { getEnvVariable } from '#src/utils/env.ts'
|
|
17
|
-
import { logger as LOGGER } from '#src/utils/index.ts'
|
|
18
|
-
import { SelectedServiceSignatureType } from '#src/utils/signatures/index.ts'
|
|
19
|
-
import { promisifySend } from '#src/utils/ws.ts'
|
|
20
|
-
|
|
21
|
-
const PORT = +(getEnvVariable('PORT') || API_SERVER_PORT)
|
|
22
|
-
const DISABLE_BGP_CHECKS = getEnvVariable('DISABLE_BGP_CHECKS') === '1'
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Creates the WebSocket API server,
|
|
26
|
-
* creates a fileserver to serve the browser RPC client,
|
|
27
|
-
* and listens on the given port.
|
|
28
|
-
*/
|
|
29
|
-
export async function createServer(port = PORT) {
|
|
30
|
-
const http = createHttpServer()
|
|
31
|
-
const serveBrowserRpc = serveStatic(
|
|
32
|
-
'browser',
|
|
33
|
-
{
|
|
34
|
-
index: ['index.html'],
|
|
35
|
-
setHeaders(res) {
|
|
36
|
-
res.setHeader('Access-Control-Allow-Origin', '*')
|
|
37
|
-
},
|
|
38
|
-
}
|
|
39
|
-
)
|
|
40
|
-
const bgpListener = !DISABLE_BGP_CHECKS
|
|
41
|
-
? createBgpListener(LOGGER.child({ service: 'bgp-listener' }))
|
|
42
|
-
: undefined
|
|
43
|
-
|
|
44
|
-
const wss = new WebSocketServer({ noServer: true })
|
|
45
|
-
http.on('upgrade', handleUpgrade.bind(wss))
|
|
46
|
-
http.on('request', (req, res) => {
|
|
47
|
-
// CORS headers for all requests
|
|
48
|
-
res.setHeader('Access-Control-Allow-Origin', '*')
|
|
49
|
-
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
|
|
50
|
-
res.setHeader('Access-Control-Allow-Headers', 'Content-Type')
|
|
51
|
-
|
|
52
|
-
// Handle CORS preflight
|
|
53
|
-
if(req.method === 'OPTIONS') {
|
|
54
|
-
res.statusCode = 204
|
|
55
|
-
res.end()
|
|
56
|
-
return
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Session API routes
|
|
60
|
-
if(req.url?.startsWith('/api/sdk/') || req.url?.startsWith('/session/')) {
|
|
61
|
-
handleSessionApiRequest(req, res)
|
|
62
|
-
return
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// Logs endpoint (accepts POST, returns 200)
|
|
66
|
-
if(req.url?.startsWith('/api/logs')) {
|
|
67
|
-
const chunks: Buffer[] = []
|
|
68
|
-
req.on('data', (chunk: Buffer) => chunks.push(chunk))
|
|
69
|
-
req.on('end', () => {
|
|
70
|
-
LOGGER.debug({ source: 'sdk-logs' }, 'received sdk log dump')
|
|
71
|
-
res.statusCode = 200
|
|
72
|
-
res.setHeader('Content-Type', 'application/json')
|
|
73
|
-
res.end('{"success":true}')
|
|
74
|
-
})
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Provider API routes
|
|
79
|
-
if(req.url?.startsWith('/api/providers')) {
|
|
80
|
-
handleProviderApiRequest(req, res)
|
|
81
|
-
return
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// simple way to serve files at the browser RPC path
|
|
85
|
-
if(!req.url?.startsWith(BROWSER_RPC_PATHNAME)) {
|
|
86
|
-
res.statusCode = 404
|
|
87
|
-
res.end('Not found')
|
|
88
|
-
return
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
req.url = req.url.slice(BROWSER_RPC_PATHNAME.length) || '/'
|
|
92
|
-
|
|
93
|
-
serveBrowserRpc(req, res, (err) => {
|
|
94
|
-
if(err) {
|
|
95
|
-
LOGGER.error(
|
|
96
|
-
{ err, url: req.url },
|
|
97
|
-
'Failed to serve file'
|
|
98
|
-
)
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
res.statusCode = err?.statusCode ?? 404
|
|
102
|
-
res.end(err?.message ?? 'Not found')
|
|
103
|
-
})
|
|
104
|
-
})
|
|
105
|
-
|
|
106
|
-
// wait for us to start listening
|
|
107
|
-
http.listen(port)
|
|
108
|
-
await new Promise<void>((resolve, reject) => {
|
|
109
|
-
http.once('listening', () => resolve())
|
|
110
|
-
http.once('error', reject)
|
|
111
|
-
})
|
|
112
|
-
|
|
113
|
-
wss.on('connection', (ws, req) => handleNewClient(ws, req, bgpListener))
|
|
114
|
-
|
|
115
|
-
LOGGER.info(
|
|
116
|
-
{
|
|
117
|
-
port,
|
|
118
|
-
apiPath: WS_PATHNAME,
|
|
119
|
-
browserRpcPath: BROWSER_RPC_PATHNAME,
|
|
120
|
-
signerAddress: getAttestorAddress(SelectedServiceSignatureType)
|
|
121
|
-
},
|
|
122
|
-
'WS server listening'
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
const wssClose = wss.close.bind(wss)
|
|
126
|
-
wss.close = (cb) => {
|
|
127
|
-
wssClose(() => http.close(cb))
|
|
128
|
-
bgpListener?.close()
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return wss
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
async function handleNewClient(
|
|
135
|
-
ws: WebSocket,
|
|
136
|
-
req: IncomingMessage,
|
|
137
|
-
bgpListener: BGPListener | undefined
|
|
138
|
-
) {
|
|
139
|
-
promisifySend(ws)
|
|
140
|
-
const client = await AttestorServerSocket.acceptConnection(
|
|
141
|
-
ws,
|
|
142
|
-
{ req, bgpListener, logger: LOGGER }
|
|
143
|
-
)
|
|
144
|
-
// if initialisation fails, don't store the client
|
|
145
|
-
if(!client) {
|
|
146
|
-
return
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
ws.serverSocket = client
|
|
150
|
-
addKeepAlive(ws, LOGGER.child({ sessionId: client.sessionId }))
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
function handleUpgrade(
|
|
154
|
-
this: WebSocketServer,
|
|
155
|
-
request: IncomingMessage,
|
|
156
|
-
socket: Duplex,
|
|
157
|
-
head: Buffer
|
|
158
|
-
) {
|
|
159
|
-
const { pathname } = new URL(request.url!, 'wss://base.url')
|
|
160
|
-
|
|
161
|
-
if(pathname === WS_PATHNAME) {
|
|
162
|
-
this.handleUpgrade(request, socket, head, (ws) => {
|
|
163
|
-
this.emit('connection', ws, request)
|
|
164
|
-
})
|
|
165
|
-
return
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
socket.destroy()
|
|
169
|
-
}
|