@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,66 +0,0 @@
|
|
|
1
|
-
import { concatenateUint8Arrays, loadX509FromPem } from '@joclaim/tls'
|
|
2
|
-
|
|
3
|
-
import { CERT_ALLOWED_MIMETYPES, MAX_CERT_SIZE_BYTES } from '#src/config/index.ts'
|
|
4
|
-
import type { RPCHandler } from '#src/types/handlers.ts'
|
|
5
|
-
import { AttestorError } from '#src/utils/error.ts'
|
|
6
|
-
|
|
7
|
-
export const fetchCertificateBytes: RPCHandler<'fetchCertificateBytes'> = async(
|
|
8
|
-
{ url },
|
|
9
|
-
) => {
|
|
10
|
-
const res = await fetch(url, {
|
|
11
|
-
redirect: 'follow',
|
|
12
|
-
signal: AbortSignal.timeout(10_000)
|
|
13
|
-
})
|
|
14
|
-
if(!res.ok) {
|
|
15
|
-
res.body?.cancel('Not ok')
|
|
16
|
-
throw new AttestorError(
|
|
17
|
-
'ERROR_CERTIFICATE_FETCH_FAILED',
|
|
18
|
-
`Failed to fetch certificate from URL: ${url}, status: ${res.status}`
|
|
19
|
-
)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const contentType = res.headers.get('content-type')
|
|
23
|
-
if(!contentType || !CERT_ALLOWED_MIMETYPES.includes(contentType)) {
|
|
24
|
-
res.body?.cancel('Mismatch')
|
|
25
|
-
throw new AttestorError(
|
|
26
|
-
'ERROR_CERTIFICATE_FETCH_FAILED',
|
|
27
|
-
`Invalid content-type when fetching certificate from URL: ${url},`
|
|
28
|
-
+ ` content-type: ${contentType}`
|
|
29
|
-
)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if(!res.body) {
|
|
33
|
-
throw new AttestorError(
|
|
34
|
-
'ERROR_CERTIFICATE_FETCH_FAILED',
|
|
35
|
-
`No body in response when fetching certificate from URL: ${url}`
|
|
36
|
-
)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
let total = 0
|
|
40
|
-
const byteArr: Uint8Array[] = []
|
|
41
|
-
for await (const chunk of res.body) {
|
|
42
|
-
total += chunk.length
|
|
43
|
-
if(total > MAX_CERT_SIZE_BYTES) {
|
|
44
|
-
res.body.cancel('Too many bytes')
|
|
45
|
-
throw new AttestorError(
|
|
46
|
-
'ERROR_CERTIFICATE_FETCH_FAILED',
|
|
47
|
-
`Certificate size exceeds maximum limit of ${MAX_CERT_SIZE_BYTES}b`
|
|
48
|
-
)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
byteArr.push(chunk)
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const bytes = concatenateUint8Arrays(byteArr)
|
|
55
|
-
try {
|
|
56
|
-
const cert = loadX509FromPem(bytes)
|
|
57
|
-
TLS_INTERMEDIATE_CA_CACHE[url] = cert
|
|
58
|
-
} catch(err) {
|
|
59
|
-
throw new AttestorError(
|
|
60
|
-
'ERROR_CERTIFICATE_FETCH_FAILED',
|
|
61
|
-
`Failed to parse certificate, error: ${err.message}`
|
|
62
|
-
)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return { bytes: concatenateUint8Arrays(byteArr) }
|
|
66
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { claimTeeBundle } from '#src/server/handlers/claimTeeBundle.ts'
|
|
2
|
-
import { claimTunnel } from '#src/server/handlers/claimTunnel.ts'
|
|
3
|
-
import { completeClaimOnChain } from '#src/server/handlers/completeClaimOnChain.ts'
|
|
4
|
-
import { createClaimOnChain } from '#src/server/handlers/createClaimOnChain.ts'
|
|
5
|
-
import { createTaskOnMechain } from '#src/server/handlers/createTaskOnMechain.ts'
|
|
6
|
-
import { createTunnel } from '#src/server/handlers/createTunnel.ts'
|
|
7
|
-
import { disconnectTunnel } from '#src/server/handlers/disconnectTunnel.ts'
|
|
8
|
-
import { fetchCertificateBytes } from '#src/server/handlers/fetchCertificateBytes.ts'
|
|
9
|
-
import { init } from '#src/server/handlers/init.ts'
|
|
10
|
-
import { toprf } from '#src/server/handlers/toprf.ts'
|
|
11
|
-
import type { RPCHandler, RPCType } from '#src/types/index.ts'
|
|
12
|
-
|
|
13
|
-
export const HANDLERS: { [T in RPCType]: RPCHandler<T> } = {
|
|
14
|
-
createTunnel,
|
|
15
|
-
disconnectTunnel,
|
|
16
|
-
claimTunnel,
|
|
17
|
-
claimTeeBundle,
|
|
18
|
-
init,
|
|
19
|
-
createClaimOnChain,
|
|
20
|
-
completeClaimOnChain,
|
|
21
|
-
toprf,
|
|
22
|
-
createTaskOnMechain,
|
|
23
|
-
fetchCertificateBytes
|
|
24
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers'
|
|
2
|
-
|
|
3
|
-
import type { RPCHandler } from '#src/types/index.ts'
|
|
4
|
-
import { assertValidAuthRequest } from '#src/utils/auth.ts'
|
|
5
|
-
import { getEnvVariable } from '#src/utils/env.ts'
|
|
6
|
-
import { AttestorError } from '#src/utils/index.ts'
|
|
7
|
-
import { SIGNATURES } from '#src/utils/signatures/index.ts'
|
|
8
|
-
|
|
9
|
-
const TOPRF_PUBLIC_KEY = getEnvVariable('TOPRF_PUBLIC_KEY')
|
|
10
|
-
|
|
11
|
-
export const init: RPCHandler<'init'> = async(
|
|
12
|
-
initRequest,
|
|
13
|
-
{ client }
|
|
14
|
-
) => {
|
|
15
|
-
if(client.isInitialised) {
|
|
16
|
-
throw AttestorError.badRequest('Client already initialised')
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
if(!SIGNATURES[initRequest.signatureType]) {
|
|
20
|
-
throw AttestorError.badRequest('Unsupported signature type')
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
if(initRequest.clientVersion <= 0) {
|
|
24
|
-
throw AttestorError.badRequest('Unsupported client version')
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
await assertValidAuthRequest(
|
|
28
|
-
initRequest.auth,
|
|
29
|
-
initRequest.signatureType
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
if(initRequest.auth?.data) {
|
|
33
|
-
client.logger = client.logger.child({
|
|
34
|
-
userId: initRequest.auth.data.id
|
|
35
|
-
})
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
client.metadata = initRequest
|
|
39
|
-
client.isInitialised = true
|
|
40
|
-
|
|
41
|
-
return {
|
|
42
|
-
toprfPublicKey: TOPRF_PUBLIC_KEY
|
|
43
|
-
? ethers.utils.arrayify(TOPRF_PUBLIC_KEY)
|
|
44
|
-
: new Uint8Array()
|
|
45
|
-
}
|
|
46
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers'
|
|
2
|
-
|
|
3
|
-
import type { RPCHandler } from '#src/types/index.ts'
|
|
4
|
-
import { getEnvVariable } from '#src/utils/env.ts'
|
|
5
|
-
import { getEngineString, makeDefaultOPRFOperator } from '#src/utils/index.ts'
|
|
6
|
-
|
|
7
|
-
export const toprf: RPCHandler<'toprf'> = async(
|
|
8
|
-
{ maskedData, engine },
|
|
9
|
-
{ logger }
|
|
10
|
-
) => {
|
|
11
|
-
const PRIVATE_KEY_STR = getEnvVariable('TOPRF_SHARE_PRIVATE_KEY')
|
|
12
|
-
const PUBLIC_KEY_STR = getEnvVariable('TOPRF_SHARE_PUBLIC_KEY')
|
|
13
|
-
if(!PRIVATE_KEY_STR || !PUBLIC_KEY_STR) {
|
|
14
|
-
throw new Error('private/public keys not set. Cannot execute OPRF')
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const PRIVATE_KEY = ethers.utils.arrayify(PRIVATE_KEY_STR)
|
|
18
|
-
const PUBLIC_KEY = ethers.utils.arrayify(PUBLIC_KEY_STR)
|
|
19
|
-
|
|
20
|
-
const engineStr = getEngineString(engine)
|
|
21
|
-
const operator = makeDefaultOPRFOperator('chacha20', engineStr, logger)
|
|
22
|
-
const res = await operator.evaluateOPRF(PRIVATE_KEY, maskedData)
|
|
23
|
-
|
|
24
|
-
return { ...res, publicKeyShare: PUBLIC_KEY }
|
|
25
|
-
}
|
package/src/server/index.ts
DELETED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from 'http'
|
|
2
|
-
import { getProviderList, getProviderById, saveProvider, deleteProvider } from '#src/server/provider-store.ts'
|
|
3
|
-
import { logger as LOGGER } from '#src/utils/index.ts'
|
|
4
|
-
|
|
5
|
-
const logger = LOGGER.child({ module: 'provider-api' })
|
|
6
|
-
|
|
7
|
-
function sendJson(res: ServerResponse, statusCode: number, data: unknown) {
|
|
8
|
-
res.statusCode = statusCode
|
|
9
|
-
res.setHeader('Content-Type', 'application/json')
|
|
10
|
-
res.end(JSON.stringify(data))
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function readBody(req: IncomingMessage): Promise<string> {
|
|
14
|
-
return new Promise((resolve, reject) => {
|
|
15
|
-
const chunks: Buffer[] = []
|
|
16
|
-
req.on('data', (chunk: Buffer) => chunks.push(chunk))
|
|
17
|
-
req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')))
|
|
18
|
-
req.on('error', reject)
|
|
19
|
-
})
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Handle provider API requests:
|
|
24
|
-
* GET /api/providers — list all providers (summary)
|
|
25
|
-
* GET /api/providers/:id — get full provider config
|
|
26
|
-
* POST /api/providers — create/update a provider
|
|
27
|
-
* DELETE /api/providers/:id — delete a provider
|
|
28
|
-
*/
|
|
29
|
-
export async function handleProviderApiRequest(
|
|
30
|
-
req: IncomingMessage,
|
|
31
|
-
res: ServerResponse
|
|
32
|
-
) {
|
|
33
|
-
const url = new URL(req.url!, `http://${req.headers.host}`)
|
|
34
|
-
const path = url.pathname
|
|
35
|
-
const method = req.method?.toUpperCase()
|
|
36
|
-
|
|
37
|
-
try {
|
|
38
|
-
// GET /api/providers
|
|
39
|
-
if(path === '/api/providers' && method === 'GET') {
|
|
40
|
-
const list = getProviderList()
|
|
41
|
-
sendJson(res, 200, { providers: list })
|
|
42
|
-
return
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Match /api/providers/:id/custom-injection
|
|
46
|
-
const injectionMatch = path.match(/^\/api\/providers\/(.+)\/custom-injection$/)
|
|
47
|
-
if(injectionMatch && method === 'GET') {
|
|
48
|
-
const providerId = decodeURIComponent(injectionMatch[1])
|
|
49
|
-
const provider = getProviderById(providerId)
|
|
50
|
-
if(!provider) {
|
|
51
|
-
sendJson(res, 404, { error: `Provider '${providerId}' not found` })
|
|
52
|
-
return
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if(!provider.customInjection) {
|
|
56
|
-
res.statusCode = 404
|
|
57
|
-
res.setHeader('Content-Type', 'text/plain')
|
|
58
|
-
res.end('No custom injection script for this provider')
|
|
59
|
-
return
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
res.statusCode = 200
|
|
63
|
-
res.setHeader('Content-Type', 'text/plain')
|
|
64
|
-
res.end(provider.customInjection)
|
|
65
|
-
return
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Match /api/providers/:id
|
|
69
|
-
const match = path.match(/^\/api\/providers\/(.+)$/)
|
|
70
|
-
|
|
71
|
-
if(match) {
|
|
72
|
-
const providerId = decodeURIComponent(match[1])
|
|
73
|
-
|
|
74
|
-
// GET /api/providers/:id
|
|
75
|
-
if(method === 'GET') {
|
|
76
|
-
const provider = getProviderById(providerId)
|
|
77
|
-
if(!provider) {
|
|
78
|
-
sendJson(res, 404, { error: `Provider '${providerId}' not found` })
|
|
79
|
-
return
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
sendJson(res, 200, { providers: provider })
|
|
83
|
-
return
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// DELETE /api/providers/:id
|
|
87
|
-
if(method === 'DELETE') {
|
|
88
|
-
const deleted = deleteProvider(providerId)
|
|
89
|
-
if(!deleted) {
|
|
90
|
-
sendJson(res, 404, { error: `Provider '${providerId}' not found` })
|
|
91
|
-
return
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
sendJson(res, 200, { message: 'Provider deleted' })
|
|
95
|
-
return
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// POST /api/providers — create or update
|
|
100
|
-
if(path === '/api/providers' && method === 'POST') {
|
|
101
|
-
const body = await readBody(req)
|
|
102
|
-
const provider = JSON.parse(body)
|
|
103
|
-
if(!provider.providerId) {
|
|
104
|
-
sendJson(res, 400, { error: 'Missing required field: providerId' })
|
|
105
|
-
return
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
saveProvider(provider)
|
|
109
|
-
sendJson(res, 200, { message: 'Provider saved', providerId: provider.providerId })
|
|
110
|
-
return
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
sendJson(res, 404, { error: 'Not found' })
|
|
114
|
-
} catch(err) {
|
|
115
|
-
logger.error({ err, path, method }, 'Provider API error')
|
|
116
|
-
sendJson(res, 500, { error: 'Internal server error' })
|
|
117
|
-
}
|
|
118
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { readFileSync, readdirSync, writeFileSync, unlinkSync, existsSync, mkdirSync } from 'fs'
|
|
2
|
-
import { join, resolve } from 'path'
|
|
3
|
-
import { logger as LOGGER } from '#src/utils/index.ts'
|
|
4
|
-
|
|
5
|
-
const logger = LOGGER.child({ module: 'provider-store' })
|
|
6
|
-
|
|
7
|
-
export interface ProviderConfig {
|
|
8
|
-
id: string
|
|
9
|
-
providerId: string
|
|
10
|
-
httpProviderId: string
|
|
11
|
-
name: string
|
|
12
|
-
description: string
|
|
13
|
-
logoUrl: string
|
|
14
|
-
loginUrl: string
|
|
15
|
-
geoLocation: string
|
|
16
|
-
injectionType: string
|
|
17
|
-
disableRequestReplay: boolean
|
|
18
|
-
verificationType: string
|
|
19
|
-
requestData: unknown[]
|
|
20
|
-
useIncognitoWebview: boolean
|
|
21
|
-
customInjection: string
|
|
22
|
-
userAgent: { ios: string; android: string }
|
|
23
|
-
metadata: Record<string, unknown>
|
|
24
|
-
version: { major: number; minor: number; patch: number }
|
|
25
|
-
[key: string]: unknown
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface ProviderSummary {
|
|
29
|
-
providerId: string
|
|
30
|
-
name: string
|
|
31
|
-
description: string
|
|
32
|
-
logoUrl: string
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const DATA_DIR = resolve('data/providers')
|
|
36
|
-
|
|
37
|
-
function ensureDataDir() {
|
|
38
|
-
if(!existsSync(DATA_DIR)) {
|
|
39
|
-
mkdirSync(DATA_DIR, { recursive: true })
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Load all providers from JSON files in data/providers/
|
|
45
|
-
*/
|
|
46
|
-
export function getAllProviders(): ProviderConfig[] {
|
|
47
|
-
ensureDataDir()
|
|
48
|
-
const files = readdirSync(DATA_DIR).filter(f => f.endsWith('.json'))
|
|
49
|
-
const providers: ProviderConfig[] = []
|
|
50
|
-
for(const file of files) {
|
|
51
|
-
try {
|
|
52
|
-
const content = readFileSync(join(DATA_DIR, file), 'utf-8')
|
|
53
|
-
providers.push(JSON.parse(content))
|
|
54
|
-
} catch(err) {
|
|
55
|
-
logger.error({ err, file }, 'Failed to load provider file')
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return providers
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Get provider summaries (id, name, description, logoUrl)
|
|
64
|
-
*/
|
|
65
|
-
export function getProviderList(): ProviderSummary[] {
|
|
66
|
-
return getAllProviders().map(p => ({
|
|
67
|
-
providerId: p.providerId,
|
|
68
|
-
name: p.name,
|
|
69
|
-
description: p.description,
|
|
70
|
-
logoUrl: p.logoUrl,
|
|
71
|
-
}))
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Get a single provider by providerId
|
|
76
|
-
*/
|
|
77
|
-
export function getProviderById(providerId: string): ProviderConfig | undefined {
|
|
78
|
-
ensureDataDir()
|
|
79
|
-
// Try direct file lookup first (filename = providerId.json)
|
|
80
|
-
const directPath = join(DATA_DIR, `${providerId}.json`)
|
|
81
|
-
if(existsSync(directPath)) {
|
|
82
|
-
try {
|
|
83
|
-
const content = readFileSync(directPath, 'utf-8')
|
|
84
|
-
return JSON.parse(content)
|
|
85
|
-
} catch(err) {
|
|
86
|
-
logger.error({ err, providerId }, 'Failed to load provider file')
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// Fallback: scan all files, match by providerId or httpProviderId
|
|
91
|
-
const all = getAllProviders()
|
|
92
|
-
return all.find(p => p.providerId === providerId || p.httpProviderId === providerId)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Save or update a provider
|
|
97
|
-
*/
|
|
98
|
-
export function saveProvider(provider: ProviderConfig): void {
|
|
99
|
-
ensureDataDir()
|
|
100
|
-
const filePath = join(DATA_DIR, `${provider.providerId}.json`)
|
|
101
|
-
writeFileSync(filePath, JSON.stringify(provider, null, 2), 'utf-8')
|
|
102
|
-
logger.info({ providerId: provider.providerId }, 'Provider saved')
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Delete a provider by providerId
|
|
107
|
-
*/
|
|
108
|
-
export function deleteProvider(providerId: string): boolean {
|
|
109
|
-
const filePath = join(DATA_DIR, `${providerId}.json`)
|
|
110
|
-
if(existsSync(filePath)) {
|
|
111
|
-
unlinkSync(filePath)
|
|
112
|
-
logger.info({ providerId }, 'Provider deleted')
|
|
113
|
-
return true
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
return false
|
|
117
|
-
}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from 'http'
|
|
2
|
-
import { createSession, getSession, updateSessionStatus, submitProof } from '#src/server/session-store.ts'
|
|
3
|
-
import { logger as LOGGER } from '#src/utils/index.ts'
|
|
4
|
-
|
|
5
|
-
const logger = LOGGER.child({ module: 'session-api' })
|
|
6
|
-
|
|
7
|
-
function sendJson(res: ServerResponse, statusCode: number, data: unknown) {
|
|
8
|
-
res.statusCode = statusCode
|
|
9
|
-
res.setHeader('Content-Type', 'application/json')
|
|
10
|
-
res.end(JSON.stringify(data))
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function readBody(req: IncomingMessage): Promise<string> {
|
|
14
|
-
return new Promise((resolve, reject) => {
|
|
15
|
-
const chunks: Buffer[] = []
|
|
16
|
-
req.on('data', (chunk: Buffer) => chunks.push(chunk))
|
|
17
|
-
req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')))
|
|
18
|
-
req.on('error', reject)
|
|
19
|
-
})
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Handle session API requests:
|
|
24
|
-
* POST /api/sdk/init/session/ — create a new session
|
|
25
|
-
* POST /api/sdk/update/session/ — update session status
|
|
26
|
-
* GET /api/sdk/session/:id — get session data
|
|
27
|
-
* POST /session/:id/proof — submit proof
|
|
28
|
-
*/
|
|
29
|
-
export async function handleSessionApiRequest(
|
|
30
|
-
req: IncomingMessage,
|
|
31
|
-
res: ServerResponse
|
|
32
|
-
) {
|
|
33
|
-
const url = new URL(req.url!, `http://${req.headers.host}`)
|
|
34
|
-
const path = url.pathname
|
|
35
|
-
const method = req.method?.toUpperCase()
|
|
36
|
-
|
|
37
|
-
try {
|
|
38
|
-
// POST /api/sdk/init/session/
|
|
39
|
-
if(path === '/api/sdk/init/session/' && method === 'POST') {
|
|
40
|
-
const body = JSON.parse(await readBody(req))
|
|
41
|
-
const { appId, providerId, timestamp, signature } = body
|
|
42
|
-
|
|
43
|
-
if(!appId || !providerId) {
|
|
44
|
-
sendJson(res, 400, { error: 'Missing required fields: appId, providerId' })
|
|
45
|
-
return
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const session = createSession(appId, providerId, timestamp || '', signature || '')
|
|
49
|
-
logger.info({ sessionId: session.sessionId, providerId }, 'Session created')
|
|
50
|
-
sendJson(res, 200, {
|
|
51
|
-
sessionId: session.sessionId,
|
|
52
|
-
resolvedProviderVersion: '',
|
|
53
|
-
})
|
|
54
|
-
return
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// POST /api/sdk/update/session/
|
|
58
|
-
if(path === '/api/sdk/update/session/' && method === 'POST') {
|
|
59
|
-
const body = JSON.parse(await readBody(req))
|
|
60
|
-
const { sessionId, status } = body
|
|
61
|
-
|
|
62
|
-
if(!sessionId || !status) {
|
|
63
|
-
sendJson(res, 400, { error: 'Missing required fields: sessionId, status' })
|
|
64
|
-
return
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const ok = updateSessionStatus(sessionId, status)
|
|
68
|
-
if(!ok) {
|
|
69
|
-
sendJson(res, 404, { error: `Session '${sessionId}' not found` })
|
|
70
|
-
return
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
logger.info({ sessionId, status }, 'Session status updated')
|
|
74
|
-
sendJson(res, 200, { success: true })
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// GET /api/sdk/session/:id
|
|
79
|
-
const sessionMatch = path.match(/^\/api\/sdk\/session\/(.+)$/)
|
|
80
|
-
if(sessionMatch && method === 'GET') {
|
|
81
|
-
const sessionId = decodeURIComponent(sessionMatch[1])
|
|
82
|
-
const session = getSession(sessionId)
|
|
83
|
-
if(!session) {
|
|
84
|
-
sendJson(res, 404, { error: `Session '${sessionId}' not found` })
|
|
85
|
-
return
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
sendJson(res, 200, session)
|
|
89
|
-
return
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// POST /session/:id/proof
|
|
93
|
-
const proofMatch = path.match(/^\/session\/(.+)\/proof$/)
|
|
94
|
-
if(proofMatch && method === 'POST') {
|
|
95
|
-
const sessionId = decodeURIComponent(proofMatch[1])
|
|
96
|
-
const body = JSON.parse(await readBody(req))
|
|
97
|
-
const proofs = body.proofs || body
|
|
98
|
-
|
|
99
|
-
const ok = submitProof(sessionId, Array.isArray(proofs) ? proofs : [proofs])
|
|
100
|
-
if(!ok) {
|
|
101
|
-
sendJson(res, 404, { error: `Session '${sessionId}' not found` })
|
|
102
|
-
return
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
logger.info({ sessionId }, 'Proof submitted')
|
|
106
|
-
sendJson(res, 200, { success: true })
|
|
107
|
-
return
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
sendJson(res, 404, { error: 'Not found' })
|
|
111
|
-
} catch(err) {
|
|
112
|
-
logger.error({ err, path, method }, 'Session API error')
|
|
113
|
-
sendJson(res, 500, { error: 'Internal server error' })
|
|
114
|
-
}
|
|
115
|
-
}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'crypto'
|
|
2
|
-
|
|
3
|
-
export interface Session {
|
|
4
|
-
sessionId: string
|
|
5
|
-
appId: string
|
|
6
|
-
providerId: string
|
|
7
|
-
timestamp: string
|
|
8
|
-
signature: string
|
|
9
|
-
status: string
|
|
10
|
-
proofs?: unknown[]
|
|
11
|
-
createdAt: number
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const sessions = new Map<string, Session>()
|
|
15
|
-
|
|
16
|
-
export function createSession(
|
|
17
|
-
appId: string,
|
|
18
|
-
providerId: string,
|
|
19
|
-
timestamp: string,
|
|
20
|
-
signature: string
|
|
21
|
-
): Session {
|
|
22
|
-
const sessionId = randomUUID()
|
|
23
|
-
const session: Session = {
|
|
24
|
-
sessionId,
|
|
25
|
-
appId,
|
|
26
|
-
providerId,
|
|
27
|
-
timestamp,
|
|
28
|
-
signature,
|
|
29
|
-
status: 'SESSION_INIT',
|
|
30
|
-
createdAt: Date.now(),
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
sessions.set(sessionId, session)
|
|
34
|
-
return session
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export function getSession(sessionId: string): Session | undefined {
|
|
38
|
-
return sessions.get(sessionId)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function updateSessionStatus(sessionId: string, status: string): boolean {
|
|
42
|
-
const session = sessions.get(sessionId)
|
|
43
|
-
if(!session) {
|
|
44
|
-
return false
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
session.status = status
|
|
48
|
-
return true
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function submitProof(sessionId: string, proofs: unknown[]): boolean {
|
|
52
|
-
const session = sessions.get(sessionId)
|
|
53
|
-
if(!session) {
|
|
54
|
-
return false
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
session.proofs = proofs
|
|
58
|
-
session.status = 'PROOF_SUBMITTED'
|
|
59
|
-
return true
|
|
60
|
-
}
|