@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
package/src/types/signatures.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export type PrivateKey = string
|
|
2
|
-
|
|
3
|
-
type Awaitable<T> = T | Promise<T>
|
|
4
|
-
|
|
5
|
-
export type ServiceSignatureProvider = {
|
|
6
|
-
/**
|
|
7
|
-
* Returns public key in compressed (compact) format used in Joclaim RPC calls
|
|
8
|
-
* @param privateKey corresponding private key in raw o hex form
|
|
9
|
-
*/
|
|
10
|
-
getPublicKey(privateKey: PrivateKey): Uint8Array
|
|
11
|
-
/**
|
|
12
|
-
* Returns address corresponding to the provided public key
|
|
13
|
-
* @param publicKey raw o hex form, compressed or uncompressed
|
|
14
|
-
*/
|
|
15
|
-
getAddress(publicKey: Uint8Array): string
|
|
16
|
-
/**
|
|
17
|
-
* Signs data with the provided private key
|
|
18
|
-
* @param data raw data to be signed
|
|
19
|
-
* @param privateKey private key in raw or hex format
|
|
20
|
-
*/
|
|
21
|
-
sign(data: Uint8Array, privateKey: PrivateKey): Awaitable<Uint8Array>
|
|
22
|
-
/**
|
|
23
|
-
* Verifies signature against provided data and an address
|
|
24
|
-
* @param data raw data to be verified. Must be same as used in sign() call
|
|
25
|
-
* @param signature signature bytes or string
|
|
26
|
-
* @param addressBytes address corresponding to a public key
|
|
27
|
-
*/
|
|
28
|
-
verify(data: Uint8Array, signature: Uint8Array | string, addressBytes: Uint8Array | string): Awaitable<boolean>
|
|
29
|
-
}
|
package/src/types/tunnel.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { CreateTunnelRequest } from '#src/proto/api.ts'
|
|
2
|
-
|
|
3
|
-
export type MakeTunnelBaseOpts<O> = O & {
|
|
4
|
-
onClose?(err?: Error): void
|
|
5
|
-
onMessage?(data: Uint8Array): void
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export type Tunnel<E> = E & {
|
|
9
|
-
write(data: Uint8Array): void | Promise<void>
|
|
10
|
-
close(err?: Error): void | Promise<void>
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export type MakeTunnelFn<O, E = {}> = (opts: MakeTunnelBaseOpts<O>) => (
|
|
14
|
-
Tunnel<E> | Promise<Tunnel<E>>
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
export type Transcript<T> = {
|
|
18
|
-
sender: 'client' | 'server'
|
|
19
|
-
message: T
|
|
20
|
-
}[]
|
|
21
|
-
|
|
22
|
-
export type TCPSocketProperties = {
|
|
23
|
-
transcript: Transcript<Uint8Array>
|
|
24
|
-
createRequest: Pick<CreateTunnelRequest, 'host' | 'port' | 'geoLocation' | 'proxySessionId'>
|
|
25
|
-
}
|
package/src/types/zk.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import type { EncryptionAlgorithm, OPRFOperator, ZKEngine, ZKOperator } from '@joclaim/zk-symmetric-crypto'
|
|
2
|
-
|
|
3
|
-
import type { TOPRFPayload } from '#src/proto/api.ts'
|
|
4
|
-
|
|
5
|
-
export type ZKOperators = { [E in EncryptionAlgorithm]?: ZKOperator }
|
|
6
|
-
|
|
7
|
-
export type OPRFOperators = { [E in EncryptionAlgorithm]?: OPRFOperator }
|
|
8
|
-
|
|
9
|
-
export type PrepareZKProofsBaseOpts = {
|
|
10
|
-
/** get ZK operator for specified algorithm */
|
|
11
|
-
zkOperators?: ZKOperators
|
|
12
|
-
|
|
13
|
-
oprfOperators?: OPRFOperators
|
|
14
|
-
/**
|
|
15
|
-
* max number of ZK proofs to generate concurrently
|
|
16
|
-
* @default 10
|
|
17
|
-
*/
|
|
18
|
-
zkProofConcurrency?: number
|
|
19
|
-
zkEngine?: ZKEngine
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export type TOPRFProofParams = TOPRFPayload & {
|
|
23
|
-
mask: Uint8Array
|
|
24
|
-
plaintext: Uint8Array
|
|
25
|
-
|
|
26
|
-
overshoot?: {
|
|
27
|
-
ciphertext: Uint8Array
|
|
28
|
-
iv: Uint8Array
|
|
29
|
-
recordNumber: number
|
|
30
|
-
}
|
|
31
|
-
}
|
package/src/utils/auth.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers'
|
|
2
|
-
|
|
3
|
-
import { DEFAULT_AUTH_EXPIRY_S } from '#src/config/index.ts'
|
|
4
|
-
import type { AuthenticationRequest, ServiceSignatureType } from '#src/proto/api.ts'
|
|
5
|
-
import { AuthenticatedUserData } from '#src/proto/api.ts'
|
|
6
|
-
import { getEnvVariable } from '#src/utils/env.ts'
|
|
7
|
-
import { AttestorError } from '#src/utils/error.ts'
|
|
8
|
-
import { unixTimestampSeconds } from '#src/utils/generics.ts'
|
|
9
|
-
import { SelectedServiceSignature, SIGNATURES } from '#src/utils/signatures/index.ts'
|
|
10
|
-
|
|
11
|
-
export async function assertValidAuthRequest(
|
|
12
|
-
request: AuthenticationRequest | undefined,
|
|
13
|
-
signatureType: ServiceSignatureType
|
|
14
|
-
) {
|
|
15
|
-
const publicKey = getEnvVariable('AUTHENTICATION_PUBLIC_KEY')
|
|
16
|
-
// nothing to verify
|
|
17
|
-
if(!request) {
|
|
18
|
-
// if pub key is provided -- but user didn't attempt to
|
|
19
|
-
// authenticate, then we should throw an error
|
|
20
|
-
if(publicKey) {
|
|
21
|
-
throw new AttestorError(
|
|
22
|
-
'ERROR_AUTHENTICATION_FAILED',
|
|
23
|
-
'User must be authenticated'
|
|
24
|
-
)
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if(!publicKey) {
|
|
31
|
-
throw new AttestorError(
|
|
32
|
-
'ERROR_BAD_REQUEST',
|
|
33
|
-
'The attestor is not configured for authentication'
|
|
34
|
-
)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const { signature, data } = request
|
|
38
|
-
if(!data) {
|
|
39
|
-
throw new AttestorError(
|
|
40
|
-
'ERROR_AUTHENTICATION_FAILED',
|
|
41
|
-
'Missing data in auth request'
|
|
42
|
-
)
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if(data.expiresAt < unixTimestampSeconds()) {
|
|
46
|
-
throw new AttestorError(
|
|
47
|
-
'ERROR_AUTHENTICATION_FAILED',
|
|
48
|
-
'Authentication request has expired'
|
|
49
|
-
)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const proto = AuthenticatedUserData.encode(data).finish()
|
|
53
|
-
const signatureAlg = SIGNATURES[signatureType]
|
|
54
|
-
const address = signatureAlg.getAddress(
|
|
55
|
-
await ethers.utils.arrayify(publicKey)
|
|
56
|
-
)
|
|
57
|
-
const verified = await signatureAlg
|
|
58
|
-
.verify(proto, signature, address)
|
|
59
|
-
if(!verified) {
|
|
60
|
-
throw new AttestorError(
|
|
61
|
-
'ERROR_AUTHENTICATION_FAILED',
|
|
62
|
-
'Signature verification failed'
|
|
63
|
-
)
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Create an authentication request with the given data and private key,
|
|
69
|
-
* which can then be used to authenticate with the service.
|
|
70
|
-
*/
|
|
71
|
-
export async function createAuthRequest(
|
|
72
|
-
_data: Partial<AuthenticatedUserData>,
|
|
73
|
-
privateKey: string
|
|
74
|
-
) {
|
|
75
|
-
const createdAt = unixTimestampSeconds()
|
|
76
|
-
const data: AuthenticatedUserData = {
|
|
77
|
-
createdAt,
|
|
78
|
-
expiresAt: createdAt + DEFAULT_AUTH_EXPIRY_S,
|
|
79
|
-
id: '',
|
|
80
|
-
hostWhitelist: [],
|
|
81
|
-
..._data,
|
|
82
|
-
}
|
|
83
|
-
const proto = AuthenticatedUserData.encode(data).finish()
|
|
84
|
-
const signature = await SelectedServiceSignature
|
|
85
|
-
.sign(proto, privateKey)
|
|
86
|
-
const request: AuthenticationRequest = {
|
|
87
|
-
data,
|
|
88
|
-
signature
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return request
|
|
92
|
-
}
|
package/src/utils/b64-json.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { utils } from 'ethers'
|
|
2
|
-
|
|
3
|
-
export const B64_JSON_REPLACER = (key: string, value: any) => {
|
|
4
|
-
if(
|
|
5
|
-
value instanceof Uint8Array
|
|
6
|
-
|| (
|
|
7
|
-
typeof value === 'object'
|
|
8
|
-
&& value
|
|
9
|
-
&& 'buffer' in value
|
|
10
|
-
&& value.buffer instanceof ArrayBuffer
|
|
11
|
-
)
|
|
12
|
-
) {
|
|
13
|
-
return { type: 'uint8array', value: utils.base64.encode(value) }
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return value
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export const B64_JSON_REVIVER = (key: string, value: any) => {
|
|
20
|
-
if(value?.type === 'uint8array') {
|
|
21
|
-
return utils.base64.decode(value.value)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return value
|
|
25
|
-
}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import CIDR from 'ip-cidr'
|
|
2
|
-
import type { Logger } from 'pino'
|
|
3
|
-
|
|
4
|
-
import { BGP_WS_URL } from '#src/config/index.ts'
|
|
5
|
-
import type { BGPAnnouncementOverlapData, BGPListener } from '#src/types/index.ts'
|
|
6
|
-
import { makeWebSocket } from '#src/utils/ws.ts'
|
|
7
|
-
|
|
8
|
-
const ANNOUNCEMENT_OVERLAP = 'announcement-overlap'
|
|
9
|
-
|
|
10
|
-
class BGPAnnouncementOverlapEvent extends Event {
|
|
11
|
-
|
|
12
|
-
readonly data: BGPAnnouncementOverlapData
|
|
13
|
-
|
|
14
|
-
constructor(data: BGPAnnouncementOverlapData) {
|
|
15
|
-
super(ANNOUNCEMENT_OVERLAP)
|
|
16
|
-
this.data = data
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Listens for BGP announcements and emits events whenever
|
|
22
|
-
* an announcement overlaps with a target IP.
|
|
23
|
-
*/
|
|
24
|
-
export function createBgpListener(logger: Logger): BGPListener {
|
|
25
|
-
let ws: ReturnType<typeof makeWebSocket>
|
|
26
|
-
let closed = false
|
|
27
|
-
|
|
28
|
-
const targetIps = new Set<string>()
|
|
29
|
-
const eventTarget = new EventTarget()
|
|
30
|
-
|
|
31
|
-
openWs()
|
|
32
|
-
|
|
33
|
-
return {
|
|
34
|
-
onOverlap(ips, callback) {
|
|
35
|
-
for(const ip of ips) {
|
|
36
|
-
targetIps.add(ip)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
eventTarget.addEventListener(
|
|
40
|
-
ANNOUNCEMENT_OVERLAP,
|
|
41
|
-
_callback
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
return () => {
|
|
45
|
-
for(const ip of ips) {
|
|
46
|
-
targetIps.delete(ip)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
eventTarget.removeEventListener(
|
|
50
|
-
ANNOUNCEMENT_OVERLAP,
|
|
51
|
-
_callback
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function _callback(event: BGPAnnouncementOverlapEvent) {
|
|
56
|
-
callback(event.data)
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
close() {
|
|
60
|
-
ws.onclose = null
|
|
61
|
-
ws.onerror = null
|
|
62
|
-
ws.close()
|
|
63
|
-
closed = true
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function openWs() {
|
|
68
|
-
logger.debug('connecting to BGP websocket')
|
|
69
|
-
|
|
70
|
-
ws = makeWebSocket(BGP_WS_URL)
|
|
71
|
-
ws.onopen = onOpen
|
|
72
|
-
ws.onerror = (ev) => onClose(ev)
|
|
73
|
-
ws.onclose = () => onClose(new Error('Unexpected close'))
|
|
74
|
-
ws.onmessage = ({ data }) => {
|
|
75
|
-
const str = typeof data === 'string' ? data : data.toString()
|
|
76
|
-
try {
|
|
77
|
-
onMessage(str)
|
|
78
|
-
} catch(err) {
|
|
79
|
-
logger.error({ data, err }, 'error processing BGP message')
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function onOpen(): void {
|
|
85
|
-
const subscriptionMessage = {
|
|
86
|
-
type: 'ris_subscribe',
|
|
87
|
-
data: {
|
|
88
|
-
type: 'UPDATE',
|
|
89
|
-
},
|
|
90
|
-
}
|
|
91
|
-
ws.send(JSON.stringify(subscriptionMessage))
|
|
92
|
-
|
|
93
|
-
logger.info('connected to BGP websocket')
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function onClose(err?: Error | Event) {
|
|
97
|
-
if(closed) {
|
|
98
|
-
return
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
logger.info({ err }, 'BGP websocket closed')
|
|
102
|
-
if(!err) {
|
|
103
|
-
return
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
logger.info('reconnecting to BGP websocket')
|
|
107
|
-
openWs()
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
function onMessage(message: string): void {
|
|
111
|
-
const data = JSON.parse(message)
|
|
112
|
-
const announcements = data?.data?.announcements
|
|
113
|
-
|
|
114
|
-
logger.trace({ data }, 'got BGP update')
|
|
115
|
-
|
|
116
|
-
if(!Array.isArray(announcements)) {
|
|
117
|
-
return
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
const asPath = data?.data?.path
|
|
121
|
-
|
|
122
|
-
for(const announcement of announcements) {
|
|
123
|
-
const prefixes = announcement?.prefixes
|
|
124
|
-
const nextHop = announcement?.['next_hop']
|
|
125
|
-
|
|
126
|
-
const hasPrefixes = prefixes?.length && (nextHop || asPath)
|
|
127
|
-
if(!hasPrefixes) {
|
|
128
|
-
return
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
for(const prefix of prefixes) {
|
|
132
|
-
if(!overlapsTargetIps(prefix)) {
|
|
133
|
-
continue
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// emit event
|
|
137
|
-
eventTarget.dispatchEvent(
|
|
138
|
-
new BGPAnnouncementOverlapEvent({ prefix })
|
|
139
|
-
)
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
function overlapsTargetIps(prefix: string): boolean {
|
|
145
|
-
// ignore all prefixes that end with /0
|
|
146
|
-
if(prefix.endsWith('/0')) {
|
|
147
|
-
return false
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const cidr = new CIDR(prefix)
|
|
151
|
-
for(const ip of targetIps) {
|
|
152
|
-
if(cidr.contains(ip)) {
|
|
153
|
-
return true
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
return false
|
|
158
|
-
}
|
|
159
|
-
}
|
package/src/utils/claims.ts
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import canonicalize from 'canonicalize'
|
|
2
|
-
import { utils } from 'ethers'
|
|
3
|
-
|
|
4
|
-
import { DEFAULT_METADATA } from '#src/config/index.ts'
|
|
5
|
-
import { ClaimTunnelResponse } from '#src/proto/api.ts'
|
|
6
|
-
import type { ClaimID, ClaimInfo, CompleteClaimData, ProviderParams } from '#src/types/index.ts'
|
|
7
|
-
import { SIGNATURES, strToUint8Array } from '#src/utils/index.ts'
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Creates the standard string to sign for a claim.
|
|
11
|
-
* This data is what the attestor will sign when it successfully
|
|
12
|
-
* verifies a claim.
|
|
13
|
-
*/
|
|
14
|
-
export function createSignDataForClaim(data: CompleteClaimData) {
|
|
15
|
-
const identifier = 'identifier' in data
|
|
16
|
-
? data.identifier
|
|
17
|
-
: getIdentifierFromClaimInfo(data)
|
|
18
|
-
const lines = [
|
|
19
|
-
identifier,
|
|
20
|
-
// we lowercase the owner to ensure that the
|
|
21
|
-
// ETH addresses always serialize the same way
|
|
22
|
-
data.owner.toLowerCase(),
|
|
23
|
-
data.timestampS.toString(),
|
|
24
|
-
data.epoch.toString(),
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
return lines.join('\n')
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Verify the claim tunnel response from a attestor.
|
|
32
|
-
*
|
|
33
|
-
* If you'd only like to verify the claim signature, you can
|
|
34
|
-
* optionally only pass "claim" & "signatures.claimSignature"
|
|
35
|
-
* to this function.
|
|
36
|
-
*
|
|
37
|
-
* The successful run of this function means that the claim
|
|
38
|
-
* is valid, and the attestor that signed the claim is valid.
|
|
39
|
-
*/
|
|
40
|
-
export async function assertValidClaimSignatures(
|
|
41
|
-
{
|
|
42
|
-
signatures,
|
|
43
|
-
...res
|
|
44
|
-
}: Partial<ClaimTunnelResponse>,
|
|
45
|
-
metadata = DEFAULT_METADATA
|
|
46
|
-
) {
|
|
47
|
-
if(!signatures) {
|
|
48
|
-
throw new Error('No signatures provided')
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const {
|
|
52
|
-
resultSignature,
|
|
53
|
-
claimSignature,
|
|
54
|
-
attestorAddress
|
|
55
|
-
} = signatures
|
|
56
|
-
|
|
57
|
-
const { verify } = SIGNATURES[metadata.signatureType]
|
|
58
|
-
if(signatures?.resultSignature) {
|
|
59
|
-
const resBytes = ClaimTunnelResponse
|
|
60
|
-
.encode(ClaimTunnelResponse.create(res)).finish()
|
|
61
|
-
const verified
|
|
62
|
-
= await verify(resBytes, resultSignature, attestorAddress)
|
|
63
|
-
if(!verified) {
|
|
64
|
-
throw new Error('Invalid result signature')
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// claim wasn't generated -- i.e. the transcript
|
|
69
|
-
// did not contain the necessary data
|
|
70
|
-
if(!res.claim) {
|
|
71
|
-
return
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const signData = createSignDataForClaim(res.claim)
|
|
75
|
-
const verifiedClaim = await verify(
|
|
76
|
-
strToUint8Array(signData),
|
|
77
|
-
claimSignature,
|
|
78
|
-
attestorAddress
|
|
79
|
-
)
|
|
80
|
-
if(!verifiedClaim) {
|
|
81
|
-
throw new Error('Invalid claim signature')
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Generates a unique identifier for given claim info
|
|
87
|
-
* @param info
|
|
88
|
-
* @returns
|
|
89
|
-
*/
|
|
90
|
-
export function getIdentifierFromClaimInfo(info: ClaimInfo): ClaimID {
|
|
91
|
-
//re-canonicalize context if it's not empty
|
|
92
|
-
if(info.context?.length > 0) {
|
|
93
|
-
try {
|
|
94
|
-
const ctx = JSON.parse(info.context)
|
|
95
|
-
info.context = canonicalStringify(ctx)!
|
|
96
|
-
} catch(e) {
|
|
97
|
-
throw new Error('unable to parse non-empty context. Must be JSON')
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const str = `${info.provider}\n${info.parameters}\n${info.context || ''}`
|
|
102
|
-
//console.log('Identifier: ' + btoa(str))
|
|
103
|
-
return utils.keccak256(strToUint8Array(str)).toLowerCase()
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Canonically stringifies an object, so that the same object will always
|
|
108
|
-
* produce the same string despite the order of keys
|
|
109
|
-
*/
|
|
110
|
-
export function canonicalStringify(params: { [key: string]: any } | undefined) {
|
|
111
|
-
if(!params) {
|
|
112
|
-
return ''
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// have to cast as ESM isn't correctly typing this
|
|
116
|
-
return (canonicalize as unknown as ((p: unknown) => string))(params) || ''
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
export function hashProviderParams(params: ProviderParams<'http'>): string {
|
|
120
|
-
const filteredParams = {
|
|
121
|
-
url:params.url,
|
|
122
|
-
method:params.method,
|
|
123
|
-
body: params.body,
|
|
124
|
-
responseMatches: params.responseMatches,
|
|
125
|
-
responseRedactions: params.responseRedactions
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
const serializedParams = canonicalStringify(filteredParams)
|
|
129
|
-
return utils.keccak256(
|
|
130
|
-
strToUint8Array(serializedParams)
|
|
131
|
-
).toLowerCase()
|
|
132
|
-
}
|
package/src/utils/env.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
export type TransportType = 'node' | 'react-native' | 'browser'
|
|
2
|
-
|
|
3
|
-
export function detectEnvironment(): TransportType {
|
|
4
|
-
if(typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
|
|
5
|
-
return 'react-native'
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
if(typeof window !== 'undefined') {
|
|
9
|
-
return 'browser'
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
return 'node'
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function getEnvVariable(name: string) {
|
|
16
|
-
if(typeof process === 'undefined') {
|
|
17
|
-
return undefined
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return process?.env[name]
|
|
21
|
-
}
|
package/src/utils/error.ts
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { ErrorCode, ErrorData } from '#src/proto/api.ts'
|
|
2
|
-
|
|
3
|
-
const PROTO_ERROR = ErrorData.fromJSON({})
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Represents an error that can be thrown by the Attestor Core
|
|
7
|
-
* or server. Provides a code, and optional data
|
|
8
|
-
* to pass along with the error.
|
|
9
|
-
*/
|
|
10
|
-
export class AttestorError extends Error {
|
|
11
|
-
|
|
12
|
-
readonly name = 'AttestorError'
|
|
13
|
-
readonly code: keyof typeof ErrorCode
|
|
14
|
-
readonly data: { [_: string]: any } | undefined
|
|
15
|
-
|
|
16
|
-
constructor(
|
|
17
|
-
code: keyof typeof ErrorCode,
|
|
18
|
-
message: string,
|
|
19
|
-
data?: { [_: string]: any }
|
|
20
|
-
) {
|
|
21
|
-
super(message)
|
|
22
|
-
this.code = code
|
|
23
|
-
this.data = data
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Encodes the error as a ErrorData
|
|
28
|
-
* protobuf message
|
|
29
|
-
*/
|
|
30
|
-
toProto() {
|
|
31
|
-
return ErrorData.create({
|
|
32
|
-
code: ErrorCode[this.code],
|
|
33
|
-
message: this.message,
|
|
34
|
-
data: JSON.stringify(this.data)
|
|
35
|
-
})
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
static fromProto(data = PROTO_ERROR) {
|
|
39
|
-
return new AttestorError(
|
|
40
|
-
typeof data.code === 'number'
|
|
41
|
-
? getKeyForValue(ErrorCode, data.code) || 'UNRECOGNIZED'
|
|
42
|
-
: data.code,
|
|
43
|
-
data.message,
|
|
44
|
-
data.data ? JSON.parse(data.data) : undefined
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
static fromError(
|
|
49
|
-
err: Error,
|
|
50
|
-
code: keyof typeof ErrorCode = 'ERROR_INTERNAL'
|
|
51
|
-
) {
|
|
52
|
-
if(err instanceof AttestorError) {
|
|
53
|
-
return err
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
return new AttestorError(code, err.message)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
static badRequest(message: string, data?: { [_: string]: any }) {
|
|
60
|
-
return new AttestorError(
|
|
61
|
-
'ERROR_BAD_REQUEST',
|
|
62
|
-
message,
|
|
63
|
-
data
|
|
64
|
-
)
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function getKeyForValue<T>(obj: T, value: T[keyof T]): keyof T | undefined {
|
|
69
|
-
for(const key in obj) {
|
|
70
|
-
if(obj[key] === value) {
|
|
71
|
-
return key as keyof T
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return undefined
|
|
76
|
-
}
|