@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/utils/redactions.ts
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
import { base64Encode } from '@bufbuild/protobuf/wire'
|
|
2
|
-
import { concatenateUint8Arrays } from '@joclaim/tls'
|
|
3
|
-
|
|
4
|
-
import type { ArraySlice, RedactedOrHashedArraySlice, TOPRFProofParams } from '#src/types/index.ts'
|
|
5
|
-
|
|
6
|
-
export const REDACTION_CHAR = '*'
|
|
7
|
-
export const REDACTION_CHAR_CODE = REDACTION_CHAR.charCodeAt(0)
|
|
8
|
-
|
|
9
|
-
type SliceWithReveal<T> = {
|
|
10
|
-
block: T
|
|
11
|
-
redactedPlaintext: Uint8Array
|
|
12
|
-
/**
|
|
13
|
-
* If the block has some TOPRF claims -- they'll be set here
|
|
14
|
-
*/
|
|
15
|
-
toprfs?: TOPRFProofParams[]
|
|
16
|
-
/**
|
|
17
|
-
* If text was replaced in the previous block w TOPRF but
|
|
18
|
-
* it overshot into this block. The "length" specifies how much
|
|
19
|
-
* of it got overshot into this block
|
|
20
|
-
*/
|
|
21
|
-
overshotToprfFromPrevBlock?: { length: number }
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export type RevealedSlices<T> = 'all' | SliceWithReveal<T>[]
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Check if a redacted string is congruent with the original string.
|
|
28
|
-
* @param redacted the redacted content, redacted content is replaced by '*'
|
|
29
|
-
* @param original the original content
|
|
30
|
-
*/
|
|
31
|
-
export function isRedactionCongruent<T extends string | Uint8Array>(
|
|
32
|
-
redacted: T,
|
|
33
|
-
original: T
|
|
34
|
-
): boolean {
|
|
35
|
-
// eslint-disable-next-line unicorn/no-for-loop
|
|
36
|
-
for(let i = 0;i < redacted.length;i++) {
|
|
37
|
-
const element = redacted[i]
|
|
38
|
-
const areSame = element === original[i]
|
|
39
|
-
|| (typeof element === 'string' && element === REDACTION_CHAR)
|
|
40
|
-
|| (typeof element === 'number' && element === REDACTION_CHAR_CODE)
|
|
41
|
-
if(!areSame) {
|
|
42
|
-
return false
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return true
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Is the string fully redacted?
|
|
51
|
-
*/
|
|
52
|
-
export function isFullyRedacted<T extends string | Uint8Array>(
|
|
53
|
-
redacted: T
|
|
54
|
-
): boolean {
|
|
55
|
-
for(const element of redacted) {
|
|
56
|
-
if(
|
|
57
|
-
element !== REDACTION_CHAR
|
|
58
|
-
&& element !== REDACTION_CHAR_CODE
|
|
59
|
-
) {
|
|
60
|
-
return false
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return true
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Given some plaintext blocks and a redaction function, return the blocks that
|
|
69
|
-
* need to be revealed to the other party
|
|
70
|
-
*
|
|
71
|
-
* Use case: we get the response for a request in several blocks, and want to redact
|
|
72
|
-
* pieces that go through multiple blocks. We can use this function to get the
|
|
73
|
-
* blocks that need to be revealed to the other party
|
|
74
|
-
*
|
|
75
|
-
* @example if we received ["secret is 12","345","678. Thanks"]. We'd want
|
|
76
|
-
* to redact the "12345678" and reveal the rest. We'd pass in the blocks and
|
|
77
|
-
* the redact function will return the redactions, namely [10,19].
|
|
78
|
-
* The function will return the blocks ["secret is **","***. Thanks"].
|
|
79
|
-
* The middle block is fully redacted, so it's not returned
|
|
80
|
-
*
|
|
81
|
-
* @param blocks blocks to reveal
|
|
82
|
-
* @param redact function that returns the redactions
|
|
83
|
-
* @returns blocks to reveal
|
|
84
|
-
*/
|
|
85
|
-
export async function getBlocksToReveal<T extends { plaintext: Uint8Array }>(
|
|
86
|
-
blocks: T[],
|
|
87
|
-
redact: (total: Uint8Array) => RedactedOrHashedArraySlice[],
|
|
88
|
-
performOprf: (plaintext: Uint8Array) => Promise<TOPRFProofParams>
|
|
89
|
-
) {
|
|
90
|
-
const slicesWithReveal: SliceWithReveal<T>[] = blocks.map(block => ({
|
|
91
|
-
block,
|
|
92
|
-
// copy the plaintext to avoid mutating the original
|
|
93
|
-
redactedPlaintext: new Uint8Array(block.plaintext)
|
|
94
|
-
}))
|
|
95
|
-
const total = concatenateUint8Arrays(blocks.map(b => b.plaintext))
|
|
96
|
-
const redactions = redact(total)
|
|
97
|
-
|
|
98
|
-
if(!redactions.length) {
|
|
99
|
-
return 'all'
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
let blockIdx = 0
|
|
103
|
-
let cursorInBlock = 0
|
|
104
|
-
let cursor = 0
|
|
105
|
-
|
|
106
|
-
for(const redaction of redactions) {
|
|
107
|
-
await redactBlocks(redaction)
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// only reveal blocks that have some data to reveal,
|
|
111
|
-
// or are completely plaintext
|
|
112
|
-
return slicesWithReveal
|
|
113
|
-
.filter(s => !isFullyRedacted(s.redactedPlaintext))
|
|
114
|
-
|
|
115
|
-
async function redactBlocks(slice: RedactedOrHashedArraySlice) {
|
|
116
|
-
while(cursor < slice.fromIndex) {
|
|
117
|
-
advance()
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if(slice.hash) {
|
|
121
|
-
const plaintext = total.slice(slice.fromIndex, slice.toIndex)
|
|
122
|
-
const { nullifier, responses, mask } = await performOprf(plaintext)
|
|
123
|
-
|
|
124
|
-
// set the TOPRF claim on the first blocks this
|
|
125
|
-
// redaction covers
|
|
126
|
-
const toprf: TOPRFProofParams = {
|
|
127
|
-
nullifier,
|
|
128
|
-
responses,
|
|
129
|
-
dataLocation: {
|
|
130
|
-
fromIndex: cursorInBlock,
|
|
131
|
-
length: slice.toIndex - slice.fromIndex
|
|
132
|
-
},
|
|
133
|
-
mask,
|
|
134
|
-
plaintext
|
|
135
|
-
}
|
|
136
|
-
const startBlockIdx = blockIdx
|
|
137
|
-
const block = slicesWithReveal[blockIdx]
|
|
138
|
-
block.toprfs ||= []
|
|
139
|
-
block.toprfs.push(toprf)
|
|
140
|
-
|
|
141
|
-
const nullifierStr
|
|
142
|
-
= binaryHashToStr(nullifier, toprf.dataLocation!.length)
|
|
143
|
-
|
|
144
|
-
let i = 0
|
|
145
|
-
let overshootLen = 0
|
|
146
|
-
while(cursor < slice.toIndex) {
|
|
147
|
-
if(blockIdx !== startBlockIdx) {
|
|
148
|
-
overshootLen += 1
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
slicesWithReveal[blockIdx].redactedPlaintext[cursorInBlock]
|
|
152
|
-
= nullifierStr.charCodeAt(i)
|
|
153
|
-
advance()
|
|
154
|
-
|
|
155
|
-
i += 1
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if(overshootLen) {
|
|
159
|
-
slicesWithReveal[blockIdx]
|
|
160
|
-
.overshotToprfFromPrevBlock = { length: overshootLen }
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
while(cursor < slice.toIndex) {
|
|
165
|
-
slicesWithReveal[blockIdx]
|
|
166
|
-
.redactedPlaintext[cursorInBlock] = REDACTION_CHAR_CODE
|
|
167
|
-
advance()
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
function advance() {
|
|
172
|
-
cursor += 1
|
|
173
|
-
cursorInBlock += 1
|
|
174
|
-
if(cursorInBlock >= blocks[blockIdx].plaintext.length) {
|
|
175
|
-
blockIdx += 1
|
|
176
|
-
cursorInBlock = 0
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Redact the following slices from the total
|
|
183
|
-
*/
|
|
184
|
-
export function redactSlices(total: Uint8Array, slices: ArraySlice[]) {
|
|
185
|
-
const redacted = new Uint8Array(total)
|
|
186
|
-
|
|
187
|
-
for(const slice of slices) {
|
|
188
|
-
for(let i = slice.fromIndex;i < slice.toIndex;i++) {
|
|
189
|
-
redacted[i] = REDACTION_CHAR_CODE
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
return redacted
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Converts the binary hash to an ASCII string of the expected length.
|
|
198
|
-
* If the hash is shorter than the expected length, it will be padded with
|
|
199
|
-
* '0' characters. If it's longer, it will be truncated.
|
|
200
|
-
*/
|
|
201
|
-
export function binaryHashToStr(hash: Uint8Array, expLength: number) {
|
|
202
|
-
return base64Encode(hash).padEnd(expLength, '0').slice(0, expLength)
|
|
203
|
-
}
|
package/src/utils/retries.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { Logger } from '#src/types/index.ts'
|
|
2
|
-
|
|
3
|
-
type RetryLoopOptions = {
|
|
4
|
-
maxRetries?: number
|
|
5
|
-
logger: Logger
|
|
6
|
-
shouldRetry: (error: Error) => boolean
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Execute a function, and upon failure -- retry
|
|
11
|
-
* based on specified options.
|
|
12
|
-
*/
|
|
13
|
-
export async function executeWithRetries<T>(
|
|
14
|
-
code: (attempt: number) => Promise<T>,
|
|
15
|
-
{
|
|
16
|
-
maxRetries = 3,
|
|
17
|
-
shouldRetry,
|
|
18
|
-
logger,
|
|
19
|
-
}: RetryLoopOptions
|
|
20
|
-
) {
|
|
21
|
-
let retries = 0
|
|
22
|
-
while(retries < maxRetries) {
|
|
23
|
-
try {
|
|
24
|
-
const result = await code(retries)
|
|
25
|
-
return result
|
|
26
|
-
} catch(err) {
|
|
27
|
-
retries += 1
|
|
28
|
-
if(retries >= maxRetries) {
|
|
29
|
-
throw err
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if(!shouldRetry(err)) {
|
|
33
|
-
throw err
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
logger.info({ err, retries }, 'retrying failed operation')
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
throw new Error('retries exhausted')
|
|
41
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { utils, Wallet } from 'ethers'
|
|
2
|
-
|
|
3
|
-
import type { ServiceSignatureProvider } from '#src/types/index.ts'
|
|
4
|
-
|
|
5
|
-
const { computeAddress, computePublicKey } = utils
|
|
6
|
-
|
|
7
|
-
export const ETH_SIGNATURE_PROVIDER: ServiceSignatureProvider = {
|
|
8
|
-
getPublicKey(privateKey) {
|
|
9
|
-
const pub = computePublicKey(privateKey, true)
|
|
10
|
-
return utils.arrayify(pub)
|
|
11
|
-
},
|
|
12
|
-
getAddress(publicKey) {
|
|
13
|
-
return computeAddress(publicKey).toLowerCase()
|
|
14
|
-
},
|
|
15
|
-
async sign(data, privateKey) {
|
|
16
|
-
const wallet = getEthWallet(privateKey)
|
|
17
|
-
const signature = await wallet.signMessage(data)
|
|
18
|
-
return utils.arrayify(signature)
|
|
19
|
-
},
|
|
20
|
-
async verify(data, signature, addressBytes) {
|
|
21
|
-
const address = typeof addressBytes === 'string'
|
|
22
|
-
? addressBytes
|
|
23
|
-
: utils.hexlify(addressBytes)
|
|
24
|
-
const signerAddress = utils.verifyMessage(data, signature)
|
|
25
|
-
return signerAddress.toLowerCase() === address.toLowerCase()
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function getEthWallet(privateKey: string) {
|
|
30
|
-
if(!privateKey) {
|
|
31
|
-
throw new Error('Private key missing')
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return new Wallet(privateKey)
|
|
35
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ServiceSignatureType } from '#src/proto/api.ts'
|
|
2
|
-
import type { ServiceSignatureProvider } from '#src/types/index.ts'
|
|
3
|
-
import { ETH_SIGNATURE_PROVIDER } from '#src/utils/signatures/eth.ts'
|
|
4
|
-
|
|
5
|
-
export const SIGNATURES = {
|
|
6
|
-
[ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH]: ETH_SIGNATURE_PROVIDER,
|
|
7
|
-
} as { [key in ServiceSignatureType]: ServiceSignatureProvider }
|
|
8
|
-
|
|
9
|
-
export const SelectedServiceSignatureType = ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH
|
|
10
|
-
|
|
11
|
-
export const SelectedServiceSignature = SIGNATURES[SelectedServiceSignatureType]
|
package/src/utils/socket-base.ts
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import type { WebSocket as WSWebSocket } from 'ws'
|
|
2
|
-
|
|
3
|
-
import { wsMessageHandler } from '#src/client/utils/message-handler.ts'
|
|
4
|
-
import type { InitRequest, RPCMessage } from '#src/proto/api.ts'
|
|
5
|
-
import { RPCMessages } from '#src/proto/api.ts'
|
|
6
|
-
import type { IAttestorSocket, Logger, RPCEvent, RPCEventMap } from '#src/types/index.ts'
|
|
7
|
-
import { AttestorError, makeRpcEvent, packRpcMessages } from '#src/utils/index.ts'
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Common AttestorSocket class used on the client & server side as the
|
|
11
|
-
* base for their respective socket implementations.
|
|
12
|
-
*/
|
|
13
|
-
export class AttestorSocket implements IAttestorSocket {
|
|
14
|
-
|
|
15
|
-
private eventTarget = new EventTarget()
|
|
16
|
-
protected socket: WebSocket | WSWebSocket
|
|
17
|
-
readonly logger: Logger
|
|
18
|
-
readonly metadata: InitRequest
|
|
19
|
-
|
|
20
|
-
isInitialised = false
|
|
21
|
-
|
|
22
|
-
constructor(
|
|
23
|
-
socket: WebSocket | WSWebSocket,
|
|
24
|
-
metadata: InitRequest,
|
|
25
|
-
logger: Logger
|
|
26
|
-
) {
|
|
27
|
-
this.socket = socket
|
|
28
|
-
this.metadata = metadata
|
|
29
|
-
this.logger = logger
|
|
30
|
-
|
|
31
|
-
socket.addEventListener('error', (event) => {
|
|
32
|
-
const witErr = AttestorError.fromError(
|
|
33
|
-
event.error || new Error(event.message),
|
|
34
|
-
'ERROR_NETWORK_ERROR'
|
|
35
|
-
)
|
|
36
|
-
|
|
37
|
-
this.dispatchRPCEvent('connection-terminated', witErr)
|
|
38
|
-
})
|
|
39
|
-
|
|
40
|
-
socket.addEventListener('close', () => (
|
|
41
|
-
this.dispatchRPCEvent(
|
|
42
|
-
'connection-terminated',
|
|
43
|
-
new AttestorError(
|
|
44
|
-
'ERROR_NO_ERROR',
|
|
45
|
-
'connection closed'
|
|
46
|
-
)
|
|
47
|
-
)
|
|
48
|
-
))
|
|
49
|
-
|
|
50
|
-
socket.addEventListener('message', async({ data }) => {
|
|
51
|
-
try {
|
|
52
|
-
await wsMessageHandler.call(this, data)
|
|
53
|
-
} catch(err) {
|
|
54
|
-
this.logger.error({ err }, 'error processing message')
|
|
55
|
-
}
|
|
56
|
-
})
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
get isOpen() {
|
|
60
|
-
return this.socket.readyState === this.socket.OPEN
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
get isClosed() {
|
|
64
|
-
return this.socket.readyState === this.socket.CLOSED
|
|
65
|
-
|| this.socket.readyState === this.socket.CLOSING
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
async sendMessage(...msgs: Partial<RPCMessage>[]) {
|
|
69
|
-
if(this.isClosed) {
|
|
70
|
-
throw new AttestorError(
|
|
71
|
-
'ERROR_NETWORK_ERROR',
|
|
72
|
-
'Connection closed, cannot send message'
|
|
73
|
-
)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if(!this.isOpen) {
|
|
77
|
-
throw new AttestorError(
|
|
78
|
-
'ERROR_NETWORK_ERROR',
|
|
79
|
-
'Wait for connection to open before sending message'
|
|
80
|
-
)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
const msg = packRpcMessages(...msgs)
|
|
84
|
-
const bytes = RPCMessages.encode(msg).finish()
|
|
85
|
-
|
|
86
|
-
this.logger.trace({ msg }, 'sending messages')
|
|
87
|
-
|
|
88
|
-
if('sendPromise' in this.socket && this.socket.sendPromise) {
|
|
89
|
-
await this.socket.sendPromise(bytes)
|
|
90
|
-
} else {
|
|
91
|
-
this.socket.send(bytes)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return msg
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
dispatchRPCEvent<K extends keyof RPCEventMap>(type: K, data: RPCEventMap[K]) {
|
|
98
|
-
const event = makeRpcEvent(type, data)
|
|
99
|
-
this.eventTarget.dispatchEvent(event)
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
addEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void {
|
|
103
|
-
this.eventTarget.addEventListener(type, listener)
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
removeEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void {
|
|
107
|
-
this.eventTarget.removeEventListener(type, listener)
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
async terminateConnection(err?: Error) {
|
|
111
|
-
// connection already closed
|
|
112
|
-
if(this.isClosed) {
|
|
113
|
-
return
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
try {
|
|
117
|
-
const witErr = err
|
|
118
|
-
? AttestorError.fromError(err)
|
|
119
|
-
: new AttestorError('ERROR_NO_ERROR', '')
|
|
120
|
-
this.dispatchRPCEvent('connection-terminated', witErr)
|
|
121
|
-
if(this.isOpen) {
|
|
122
|
-
await this.sendMessage({
|
|
123
|
-
connectionTerminationAlert: witErr.toProto()
|
|
124
|
-
})
|
|
125
|
-
}
|
|
126
|
-
} catch(err) {
|
|
127
|
-
this.logger?.error({ err }, 'error terminating connection')
|
|
128
|
-
} finally {
|
|
129
|
-
this.socket.close()
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
package/src/utils/ws.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { WebSocket as WSWebSocket } from 'ws'
|
|
2
|
-
|
|
3
|
-
export function makeWebSocket(url: string) {
|
|
4
|
-
return new WebSocket(url)
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Adds the "sendPromise" fn to the given WebSocket instance,
|
|
9
|
-
* if not already present.
|
|
10
|
-
*/
|
|
11
|
-
export function promisifySend(ws: WSWebSocket) {
|
|
12
|
-
if(ws.sendPromise) {
|
|
13
|
-
return ws
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
ws.sendPromise = (data) => (
|
|
17
|
-
new Promise((resolve, reject) => {
|
|
18
|
-
ws.send(data, err => {
|
|
19
|
-
if(err) {
|
|
20
|
-
reject(err)
|
|
21
|
-
return
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
resolve()
|
|
25
|
-
})
|
|
26
|
-
})
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
return ws
|
|
30
|
-
}
|