@7h3/protocol 0.4.0 → 0.5.1
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 +6 -323
- package/agentAdapter.d.ts +26 -0
- package/auditLog.d.ts +54 -0
- package/capability.d.ts +67 -0
- package/cborCodec.d.ts +34 -0
- package/conformanceVectors.d.ts +20 -0
- package/encryption.d.ts +85 -0
- package/envelopeCbor.d.ts +33 -0
- package/frameworkAdapters.d.ts +72 -0
- package/gateway.d.ts +53 -0
- package/grpcBinding.d.ts +29 -0
- package/httpBinding.d.ts +50 -0
- package/index.d.ts +39 -0
- package/index.js +3662 -0
- package/keyInfra.d.ts +64 -0
- package/keyRegistry.d.ts +9 -0
- package/keyRotation.d.ts +20 -0
- package/mcpGateway.d.ts +37 -0
- package/mcpTransports.d.ts +62 -0
- package/mcpWrapper.d.ts +83 -0
- package/otel.d.ts +65 -0
- package/package.json +13 -79
- package/policyEnforcer.d.ts +50 -0
- package/policyTelemetryFeedback.d.ts +11 -0
- package/protocol.d.ts +66 -0
- package/protocolAgent.d.ts +58 -0
- package/protocolBinary.d.ts +8 -0
- package/protocolCapabilities.d.ts +24 -0
- package/protocolReplay.d.ts +35 -0
- package/protocolTransport.d.ts +73 -0
- package/queueBinding.d.ts +43 -0
- package/rateLimiter.d.ts +18 -0
- package/{src/redisClient.ts → redisClient.d.ts} +25 -75
- package/replayStores.d.ts +98 -0
- package/revocation.d.ts +71 -0
- package/routePolicy.d.ts +30 -0
- package/runtimePolicy.d.ts +24 -0
- package/runtimePolicyManager.d.ts +15 -0
- package/runtimePolicyPresets.d.ts +11 -0
- package/signedResponse.d.ts +21 -0
- package/stream.d.ts +59 -0
- package/telemetry.d.ts +79 -0
- package/webhookBinding.d.ts +30 -0
- package/wsBinding.d.ts +52 -0
- package/.dockerignore +0 -19
- package/.github/dependabot.yml +0 -32
- package/.github/workflows/ci.yml +0 -31
- package/.github/workflows/publish.yml +0 -59
- package/.github/workflows/scorecard.yml +0 -37
- package/7h3.example.yaml +0 -125
- package/CHANGELOG.md +0 -92
- package/CONTRIBUTING.md +0 -82
- package/Dockerfile +0 -73
- package/GOVERNANCE.md +0 -62
- package/SECURITY.md +0 -70
- package/bench-results/replay-cache-full-1777891033256.json +0 -10
- package/bench-results/replay-cache-full-1777896317488.json +0 -10
- package/bench-results/replay-cache-full-1777900993184.json +0 -10
- package/bench-results/replay-cache-full-1777901019285.json +0 -10
- package/bench-results/replay-cache-quick-1777870170126.json +0 -10
- package/bench-results/signature-profiles-quick-1775875160079.json +0 -85
- package/bench-results/signature-profiles-quick-1775983539716.json +0 -85
- package/bench-results/signature-profiles-quick-1776237913190.json +0 -85
- package/bench-results/wire-codecs-full-1777891019803.json +0 -93
- package/bench-results/wire-codecs-full-1777896260964.json +0 -93
- package/bench-results/wire-codecs-full-1777901004247.json +0 -93
- package/bench-results/wire-codecs-quick-1775972879056.json +0 -93
- package/bench-results/wire-codecs-quick-1775983541111.json +0 -93
- package/bench-results/wire-codecs-quick-1776237914299.json +0 -93
- package/bench-results/wire-codecs-quick-1777841285236.json +0 -93
- package/bench-results/wire-codecs-quick-1777841321772.json +0 -93
- package/bench-results/wire-codecs-quick-1777841330408.json +0 -93
- package/bench-results/wire-codecs-quick-1777852886082.json +0 -93
- package/bench-results/wire-codecs-quick-1777852988773.json +0 -93
- package/bench-results/wire-codecs-quick-1777870188095.json +0 -93
- package/bench-results/wire-codecs-quick-1777870263918.json +0 -93
- package/bench-results/wire-codecs-quick-1777870455034.json +0 -93
- package/bench-results/wire-codecs-quick-1778816163081.json +0 -93
- package/bench-results/wire-codecs-quick-1778843936130.json +0 -93
- package/bin/7h3.ts +0 -385
- package/conformance/7h3_v0_1.json +0 -77
- package/conformance/7h3_v0_1_binary.json +0 -20
- package/conformance/aip_v0_1_binary.json +0 -20
- package/docker-compose.yaml +0 -77
- package/docs/ADOPTION_PLAN.md +0 -120
- package/docs/AGENTS.md +0 -77
- package/docs/AIP_RFC_v0.1.md +0 -97
- package/docs/AI_DECISION_CARD.md +0 -122
- package/docs/AI_RUNTIME_POLICY.json +0 -126
- package/docs/AI_RUNTIME_POLICY.yaml +0 -110
- package/docs/BACKPRESSURE_TUNING.md +0 -65
- package/docs/BENCHMARK_CLAIM_MATRIX.md +0 -42
- package/docs/BENCHMARK_REPORT_TEMPLATE.md +0 -169
- package/docs/BINARY_CODEC_BENCH.md +0 -23
- package/docs/CLEAN_CLONE_RUNBOOK.md +0 -36
- package/docs/CLOCK_SKEW_POLICY.md +0 -30
- package/docs/DISTRIBUTED_REPLAY.md +0 -142
- package/docs/FUZZ_CAMPAIGN.md +0 -121
- package/docs/GATEWAY.md +0 -195
- package/docs/KEY_MANAGEMENT_POLICY.md +0 -53
- package/docs/KEY_REVOCATION.md +0 -69
- package/docs/MCP_WRAPPER.md +0 -159
- package/docs/MIGRATION_GUIDE.md +0 -40
- package/docs/OPERATORS.md +0 -184
- package/docs/PERF_REGRESSION_POLICY.md +0 -34
- package/docs/PROJECT_EXAMINATION_2026-05-31.md +0 -219
- package/docs/RELEASE_BENCHMARK_REPORT_2026-05-15.md +0 -135
- package/docs/RELEASE_GATE.md +0 -25
- package/docs/RELEASE_NOTES_v0.1.0.md +0 -54
- package/docs/SECURITY_REVIEW_2026-06-05.md +0 -165
- package/docs/TELEMETRY.md +0 -41
- package/docs/THREAT_MODEL.md +0 -89
- package/docs/VERSIONING_POLICY.md +0 -30
- package/docs/assets/banner.png +0 -0
- package/eslint.config.js +0 -15
- package/fuzz/ts/harness-decode.ts +0 -136
- package/fuzz/ts/harness-verify.ts +0 -121
- package/fuzz/ts/run.ts +0 -35
- package/mcp-server/README.md +0 -38
- package/mcp-server/package-lock.json +0 -1187
- package/mcp-server/package.json +0 -35
- package/mcp-server/src/index.ts +0 -236
- package/mcp-server/tsconfig.json +0 -14
- package/scripts/aip-framework-quickstart.ts +0 -110
- package/scripts/aip-mcp-gateway.ts +0 -38
- package/scripts/aip-mcp-wrap-demo.ts +0 -72
- package/scripts/aip-quickstart.ts +0 -60
- package/scripts/bench-diff.ts +0 -118
- package/scripts/bench-protocol-e2e.ts +0 -937
- package/scripts/bench-protocol-openloop.ts +0 -1397
- package/scripts/bench-replay-cache.ts +0 -76
- package/scripts/bench-signature-profiles.ts +0 -180
- package/scripts/bench-wire-codecs.ts +0 -161
- package/scripts/build-binary-conformance.ts +0 -36
- package/scripts/build-release-dashboard.ts +0 -175
- package/scripts/canary-rollout.ts +0 -38
- package/scripts/mcpGatewayCli.test.ts +0 -116
- package/scripts/prepare-aip-package.ts +0 -88
- package/scripts/regen-conformance-sigs.ts +0 -18
- package/scripts/release-gate.ts +0 -19
- package/scripts/validate-runtime-policy.ts +0 -18
- package/sdk/browser/index.test.ts +0 -162
- package/sdk/browser/index.ts +0 -257
- package/sdk/browser/package.json +0 -13
- package/sdk/go/go.mod +0 -3
- package/sdk/go/http.go +0 -135
- package/sdk/go/protocol.go +0 -324
- package/sdk/go/protocol_test.go +0 -334
- package/sdk/go/webhook.go +0 -136
- package/sdk/python/README.md +0 -18
- package/sdk/python/protocol_7h3/__init__.py +0 -46
- package/sdk/python/protocol_7h3/http.py +0 -212
- package/sdk/python/protocol_7h3/keys.py +0 -149
- package/sdk/python/protocol_7h3/protocol.py +0 -525
- package/sdk/python/protocol_7h3/queue.py +0 -118
- package/sdk/python/protocol_7h3/webhook.py +0 -116
- package/sdk/python/pyproject.toml +0 -40
- package/sdk/python/tests/test_conformance.py +0 -110
- package/sdk/python/tests/test_http.py +0 -305
- package/sdk/python/tests/test_keys.py +0 -417
- package/sdk/python/tests/test_queue.py +0 -120
- package/sdk/python/tests/test_webhook.py +0 -345
- package/sdk/rust/Cargo.lock +0 -371
- package/sdk/rust/Cargo.toml +0 -25
- package/sdk/rust/README.md +0 -31
- package/sdk/rust/fuzz/Cargo.toml +0 -29
- package/sdk/rust/fuzz/fuzz_targets/fuzz_canonicalize.rs +0 -46
- package/sdk/rust/fuzz/fuzz_targets/fuzz_decode.rs +0 -11
- package/sdk/rust/src/bin/aip_mcp_gateway.rs +0 -59
- package/sdk/rust/src/http.rs +0 -145
- package/sdk/rust/src/keys.rs +0 -161
- package/sdk/rust/src/lib.rs +0 -688
- package/sdk/rust/src/queue.rs +0 -79
- package/sdk/rust/src/webhook.rs +0 -86
- package/sdk/rust/tests/conformance.rs +0 -148
- package/sdk/rust/tests/gateway.rs +0 -130
- package/sdk/rust/tests/http_webhook_queue.rs +0 -201
- package/sdk/rust/tests/keys.rs +0 -189
- package/src/agentAdapter.test.ts +0 -48
- package/src/agentAdapter.ts +0 -56
- package/src/auditLog.test.ts +0 -145
- package/src/auditLog.ts +0 -147
- package/src/conformance.test.ts +0 -136
- package/src/conformanceVectors.ts +0 -99
- package/src/frameworkAdapters.test.ts +0 -290
- package/src/frameworkAdapters.ts +0 -261
- package/src/gateway.test.ts +0 -343
- package/src/gateway.ts +0 -171
- package/src/grpcBinding.test.ts +0 -211
- package/src/grpcBinding.ts +0 -103
- package/src/httpBinding.test.ts +0 -376
- package/src/httpBinding.ts +0 -163
- package/src/index.ts +0 -32
- package/src/keyInfra.test.ts +0 -278
- package/src/keyInfra.ts +0 -228
- package/src/keyRegistry.ts +0 -59
- package/src/keyRotation.test.ts +0 -78
- package/src/keyRotation.ts +0 -72
- package/src/mcpGateway.test.ts +0 -129
- package/src/mcpGateway.ts +0 -250
- package/src/mcpTransports.test.ts +0 -92
- package/src/mcpTransports.ts +0 -169
- package/src/mcpWrapper.test.ts +0 -179
- package/src/mcpWrapper.ts +0 -206
- package/src/policyEnforcer.test.ts +0 -99
- package/src/policyEnforcer.ts +0 -169
- package/src/policyTelemetryFeedback.test.ts +0 -25
- package/src/policyTelemetryFeedback.ts +0 -38
- package/src/protocol.bench.ts +0 -37
- package/src/protocol.test.ts +0 -155
- package/src/protocol.ts +0 -413
- package/src/protocolAgent.test.ts +0 -105
- package/src/protocolAgent.ts +0 -169
- package/src/protocolBinary.test.ts +0 -165
- package/src/protocolBinary.ts +0 -312
- package/src/protocolCapabilities.ts +0 -70
- package/src/protocolFuzz.advanced.test.ts +0 -235
- package/src/protocolFuzz.test.ts +0 -111
- package/src/protocolNegative.test.ts +0 -97
- package/src/protocolReplay.test.ts +0 -71
- package/src/protocolReplay.ts +0 -194
- package/src/protocolTransport.test.ts +0 -556
- package/src/protocolTransport.ts +0 -483
- package/src/queueBinding.test.ts +0 -130
- package/src/queueBinding.ts +0 -102
- package/src/rateLimiter.test.ts +0 -96
- package/src/rateLimiter.ts +0 -46
- package/src/redisIntegration.test.ts +0 -134
- package/src/replayStores.test.ts +0 -141
- package/src/replayStores.ts +0 -82
- package/src/revocation.test.ts +0 -98
- package/src/revocation.ts +0 -0
- package/src/routePolicy.test.ts +0 -87
- package/src/routePolicy.ts +0 -72
- package/src/runtimePolicy.test.ts +0 -49
- package/src/runtimePolicy.ts +0 -81
- package/src/runtimePolicyManager.test.ts +0 -29
- package/src/runtimePolicyManager.ts +0 -50
- package/src/runtimePolicyPresets.ts +0 -43
- package/src/signedResponse.test.ts +0 -111
- package/src/signedResponse.ts +0 -83
- package/src/webhookBinding.test.ts +0 -144
- package/src/webhookBinding.ts +0 -115
- package/src/wsBinding.test.ts +0 -221
- package/src/wsBinding.ts +0 -100
- package/tsconfig.json +0 -15
- package/tsconfig.lib.json +0 -23
- package/vite.lib.config.ts +0 -16
package/Dockerfile
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# ---------------------------------------------------------------------------
|
|
2
|
-
# Stage 1 — builder
|
|
3
|
-
# Install all dependencies (including devDeps for the build step) and
|
|
4
|
-
# compile TypeScript sources. The compiled output ends up in /app/dist.
|
|
5
|
-
# ---------------------------------------------------------------------------
|
|
6
|
-
FROM node:22-alpine AS builder
|
|
7
|
-
|
|
8
|
-
WORKDIR /app
|
|
9
|
-
|
|
10
|
-
# Copy manifests first so Docker can cache the install layer separately
|
|
11
|
-
# from source changes.
|
|
12
|
-
COPY package.json package-lock.json ./
|
|
13
|
-
|
|
14
|
-
# Install all deps (dev + prod) needed to build
|
|
15
|
-
RUN npm ci --prefer-offline
|
|
16
|
-
|
|
17
|
-
# Copy the full source tree
|
|
18
|
-
COPY src/ src/
|
|
19
|
-
COPY bin/ bin/
|
|
20
|
-
COPY tsconfig.json tsconfig.lib.json ./
|
|
21
|
-
COPY vite.lib.config.ts ./
|
|
22
|
-
|
|
23
|
-
# Run the build script if it exists; swallow the error gracefully so that
|
|
24
|
-
# repositories that haven't wired up the build step yet still produce a
|
|
25
|
-
# working image. The runtime stage uses tsx to execute TypeScript directly,
|
|
26
|
-
# so a missing dist/ is not fatal.
|
|
27
|
-
RUN npm run build:protocol 2>/dev/null || true
|
|
28
|
-
|
|
29
|
-
# ---------------------------------------------------------------------------
|
|
30
|
-
# Stage 2 — runtime
|
|
31
|
-
# Lean image with only production dependencies.
|
|
32
|
-
# tsx executes TypeScript directly, so we don't strictly need dist/; the
|
|
33
|
-
# builder stage is kept separate to avoid polluting the final image with
|
|
34
|
-
# devDependencies and intermediate build artefacts.
|
|
35
|
-
# ---------------------------------------------------------------------------
|
|
36
|
-
FROM node:22-alpine
|
|
37
|
-
|
|
38
|
-
# Install tsx globally so the ENTRYPOINT can invoke TypeScript files.
|
|
39
|
-
# Pinning via the package.json range is intentional — renovate will keep
|
|
40
|
-
# this in sync with the devDependency version.
|
|
41
|
-
RUN npm install -g tsx
|
|
42
|
-
|
|
43
|
-
WORKDIR /app
|
|
44
|
-
|
|
45
|
-
# Copy manifests for production install
|
|
46
|
-
COPY package.json package-lock.json ./
|
|
47
|
-
|
|
48
|
-
# Production-only install; omits devDependencies such as vitest and vite
|
|
49
|
-
RUN npm ci --omit=dev --prefer-offline
|
|
50
|
-
|
|
51
|
-
# Copy the source files required at runtime
|
|
52
|
-
COPY src/ src/
|
|
53
|
-
COPY bin/ bin/
|
|
54
|
-
|
|
55
|
-
# Copy compiled output from the builder stage (used when tsx is not
|
|
56
|
-
# available or when --no-tsx mode is added in future).
|
|
57
|
-
COPY --from=builder /app/dist/ dist/
|
|
58
|
-
|
|
59
|
-
# The gateway listens on this port by default.
|
|
60
|
-
EXPOSE 8080
|
|
61
|
-
|
|
62
|
-
# Lightweight health check: wget is present on node:alpine; curl is not.
|
|
63
|
-
# This probe hits the /health route which, per the example config, is
|
|
64
|
-
# policy-exempt (require: none) and will pass through to the upstream.
|
|
65
|
-
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
|
|
66
|
-
CMD wget -qO- http://localhost:8080/health || exit 1
|
|
67
|
-
|
|
68
|
-
# Run the gateway sub-command of the 7h3 CLI.
|
|
69
|
-
ENTRYPOINT ["tsx", "bin/7h3.ts", "gateway"]
|
|
70
|
-
|
|
71
|
-
# Default arguments — overridden at runtime via docker-compose environment
|
|
72
|
-
# variables or explicit docker run arguments.
|
|
73
|
-
CMD ["--port", "8080", "--upstream", "http://upstream:3000", "--require", "ed25519"]
|
package/GOVERNANCE.md
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# Governance
|
|
2
|
-
|
|
3
|
-
## Current Stage
|
|
4
|
-
|
|
5
|
-
This project is in single-maintainer, pre-community stage. There is one
|
|
6
|
-
maintainer ([@IceMasterT](https://github.com/IceMasterT)), no formal governance
|
|
7
|
-
board, and no steering committee. That is appropriate for the project's current
|
|
8
|
-
size and maturity, and it is stated clearly here so contributors know what to
|
|
9
|
-
expect.
|
|
10
|
-
|
|
11
|
-
## Decision Making
|
|
12
|
-
|
|
13
|
-
The maintainer makes all final decisions about direction, API shape, release
|
|
14
|
-
timing, and whether to accept a contribution.
|
|
15
|
-
|
|
16
|
-
For significant changes -- anything that touches the wire format, the
|
|
17
|
-
conformance fixture set, or the project's positioning relative to MCP/A2A --
|
|
18
|
-
the maintainer will open a GitHub Issue before deciding, to give the community
|
|
19
|
-
a window to raise concerns or provide context. That window will be at least
|
|
20
|
-
seven days for non-urgent changes.
|
|
21
|
-
|
|
22
|
-
Day-to-day decisions (bug fixes, documentation, minor SDK improvements) do not
|
|
23
|
-
require community input first.
|
|
24
|
-
|
|
25
|
-
## Versioning Policy
|
|
26
|
-
|
|
27
|
-
The wire version `aip/0.1` is frozen. Interoperating implementations can rely
|
|
28
|
-
on it not changing. A new wire version designation (e.g. `aip/0.2`) would be
|
|
29
|
-
introduced in a new package major version and coexist with `aip/0.1` for a
|
|
30
|
-
migration period.
|
|
31
|
-
|
|
32
|
-
The TypeScript API is pre-1.0. Minor version bumps may include breaking API
|
|
33
|
-
changes. Breaking changes will be documented in the changelog with migration
|
|
34
|
-
notes. The `1.0.0` release will signal API stability.
|
|
35
|
-
|
|
36
|
-
The Python and Rust SDKs track the TypeScript wire behavior. Their own version
|
|
37
|
-
numbers are independent of the npm package version.
|
|
38
|
-
|
|
39
|
-
## Path to Co-Maintainership
|
|
40
|
-
|
|
41
|
-
There is no automatic path to co-maintainership based on contribution count.
|
|
42
|
-
The relevant factors are:
|
|
43
|
-
|
|
44
|
-
- Sustained engagement over multiple months
|
|
45
|
-
- Demonstrated familiarity with the threat model (replay attacks, malleability,
|
|
46
|
-
cross-runtime canonicalization edge cases)
|
|
47
|
-
- Good judgment in the review of other contributors' PRs
|
|
48
|
-
- Willingness to own the security disclosure process
|
|
49
|
-
|
|
50
|
-
If you are interested, open a conversation in Discussions rather than raising
|
|
51
|
-
it in a PR.
|
|
52
|
-
|
|
53
|
-
## Standards Body Adoption
|
|
54
|
-
|
|
55
|
-
If this project is accepted into a standards body or foundation, this governance
|
|
56
|
-
document will be replaced by whatever governance model that body requires.
|
|
57
|
-
Community input will be sought before any such transition.
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
Last reviewed: 2026-06-05
|
|
62
|
-
Maintainer: [@IceMasterT](https://github.com/IceMasterT) / tech@mysms.promo
|
package/SECURITY.md
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# Security Policy
|
|
2
|
-
|
|
3
|
-
## Reporting a Vulnerability
|
|
4
|
-
|
|
5
|
-
Please do not open a GitHub Issue for security findings. Use coordinated disclosure instead.
|
|
6
|
-
|
|
7
|
-
**Send private reports to:** tech@mysms.promo
|
|
8
|
-
**Subject line:** `[AIP Security] <brief description>`
|
|
9
|
-
|
|
10
|
-
### What to include
|
|
11
|
-
|
|
12
|
-
A useful report contains:
|
|
13
|
-
|
|
14
|
-
- A clear description of the vulnerability and which component it affects
|
|
15
|
-
- Steps to reproduce, ideally as a minimal test case or fixture
|
|
16
|
-
- Your assessment of the impact (confidentiality, integrity, availability, scope)
|
|
17
|
-
- The affected versions (check `package.json` version and the wire version `aip/0.1`)
|
|
18
|
-
- Any suggested fix or mitigation you have in mind (optional but appreciated)
|
|
19
|
-
|
|
20
|
-
Reports that include a conformance vector demonstrating the issue are especially
|
|
21
|
-
helpful and make the triage process faster.
|
|
22
|
-
|
|
23
|
-
## Response Timeline
|
|
24
|
-
|
|
25
|
-
| Event | Target |
|
|
26
|
-
|---|---|
|
|
27
|
-
| Acknowledgement | 48 hours |
|
|
28
|
-
| Triage and severity assignment | 5 business days |
|
|
29
|
-
| Patch for critical/high severity | 14 days from confirmation |
|
|
30
|
-
| Patch for medium/low severity | 60 days from confirmation |
|
|
31
|
-
| Public disclosure | After patch is released and verified |
|
|
32
|
-
|
|
33
|
-
We ask that reporters hold off on public disclosure until a patch is available.
|
|
34
|
-
If the 14-day critical window is going to slip, we will contact you to agree on
|
|
35
|
-
an extended timeline or coordinated partial disclosure.
|
|
36
|
-
|
|
37
|
-
## Scope
|
|
38
|
-
|
|
39
|
-
The following are in scope:
|
|
40
|
-
|
|
41
|
-
- Envelope signing and verification (`src/aip/`)
|
|
42
|
-
- Canonicalization logic and determinism guarantees
|
|
43
|
-
- Replay-safety (nonce and timestamp validation)
|
|
44
|
-
- Wire format parsing in all three runtimes (TypeScript, Python, Rust)
|
|
45
|
-
- Intent vocabulary validation
|
|
46
|
-
|
|
47
|
-
Out of scope: third-party dependencies (report those upstream), benchmark
|
|
48
|
-
scripts, and documentation typos.
|
|
49
|
-
|
|
50
|
-
## Audit Status
|
|
51
|
-
|
|
52
|
-
No independent third-party security audit has been performed on this codebase
|
|
53
|
-
as of the current release. The protocol design has been reviewed by the
|
|
54
|
-
maintainer against known attack classes for signed messaging systems, but that
|
|
55
|
-
is not a substitute for a formal audit. Reproductions of conformance vectors
|
|
56
|
-
that reveal edge-case signing or deserialization behavior are welcome and
|
|
57
|
-
treated as high-value contributions.
|
|
58
|
-
|
|
59
|
-
## Hall of Thanks
|
|
60
|
-
|
|
61
|
-
Researchers who report valid, confirmed vulnerabilities will be acknowledged
|
|
62
|
-
here (with their permission).
|
|
63
|
-
|
|
64
|
-
_No entries yet._
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
Maintainer: [@IceMasterT](https://github.com/IceMasterT)
|
|
69
|
-
Package: `@7h3/protocol`
|
|
70
|
-
License: MIT
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"generatedAt": "2026-04-11T02:39:20.079Z",
|
|
3
|
-
"profile": "quick",
|
|
4
|
-
"iterations": 2000,
|
|
5
|
-
"payloadSizes": [
|
|
6
|
-
256,
|
|
7
|
-
1024,
|
|
8
|
-
4096,
|
|
9
|
-
16384
|
|
10
|
-
],
|
|
11
|
-
"results": [
|
|
12
|
-
{
|
|
13
|
-
"profile": "quick",
|
|
14
|
-
"payloadBytes": 256,
|
|
15
|
-
"algorithm": "HS256",
|
|
16
|
-
"signUsPerOp": 16.5,
|
|
17
|
-
"verifyUsPerOp": 14.176,
|
|
18
|
-
"signOpsPerSecond": 60606.367,
|
|
19
|
-
"verifyOpsPerSecond": 70539.362
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"profile": "quick",
|
|
23
|
-
"payloadBytes": 256,
|
|
24
|
-
"algorithm": "ED25519",
|
|
25
|
-
"signUsPerOp": 45.6,
|
|
26
|
-
"verifyUsPerOp": 119.231,
|
|
27
|
-
"signOpsPerSecond": 21929.753,
|
|
28
|
-
"verifyOpsPerSecond": 8387.068
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"profile": "quick",
|
|
32
|
-
"payloadBytes": 1024,
|
|
33
|
-
"algorithm": "HS256",
|
|
34
|
-
"signUsPerOp": 23.745,
|
|
35
|
-
"verifyUsPerOp": 18.396,
|
|
36
|
-
"signOpsPerSecond": 42113.324,
|
|
37
|
-
"verifyOpsPerSecond": 54360.747
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"profile": "quick",
|
|
41
|
-
"payloadBytes": 1024,
|
|
42
|
-
"algorithm": "ED25519",
|
|
43
|
-
"signUsPerOp": 51.284,
|
|
44
|
-
"verifyUsPerOp": 106.092,
|
|
45
|
-
"signOpsPerSecond": 19499.138,
|
|
46
|
-
"verifyOpsPerSecond": 9425.777
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"profile": "quick",
|
|
50
|
-
"payloadBytes": 4096,
|
|
51
|
-
"algorithm": "HS256",
|
|
52
|
-
"signUsPerOp": 18.235,
|
|
53
|
-
"verifyUsPerOp": 20.365,
|
|
54
|
-
"signOpsPerSecond": 54839.636,
|
|
55
|
-
"verifyOpsPerSecond": 49103.017
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"profile": "quick",
|
|
59
|
-
"payloadBytes": 4096,
|
|
60
|
-
"algorithm": "ED25519",
|
|
61
|
-
"signUsPerOp": 53.216,
|
|
62
|
-
"verifyUsPerOp": 101.756,
|
|
63
|
-
"signOpsPerSecond": 18791.24,
|
|
64
|
-
"verifyOpsPerSecond": 9827.469
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"profile": "quick",
|
|
68
|
-
"payloadBytes": 16384,
|
|
69
|
-
"algorithm": "HS256",
|
|
70
|
-
"signUsPerOp": 33.59,
|
|
71
|
-
"verifyUsPerOp": 32.805,
|
|
72
|
-
"signOpsPerSecond": 29770.829,
|
|
73
|
-
"verifyOpsPerSecond": 30483.215
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"profile": "quick",
|
|
77
|
-
"payloadBytes": 16384,
|
|
78
|
-
"algorithm": "ED25519",
|
|
79
|
-
"signUsPerOp": 96.924,
|
|
80
|
-
"verifyUsPerOp": 141.141,
|
|
81
|
-
"signOpsPerSecond": 10317.338,
|
|
82
|
-
"verifyOpsPerSecond": 7085.133
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"generatedAt": "2026-04-12T08:45:39.716Z",
|
|
3
|
-
"profile": "quick",
|
|
4
|
-
"iterations": 2000,
|
|
5
|
-
"payloadSizes": [
|
|
6
|
-
256,
|
|
7
|
-
1024,
|
|
8
|
-
4096,
|
|
9
|
-
16384
|
|
10
|
-
],
|
|
11
|
-
"results": [
|
|
12
|
-
{
|
|
13
|
-
"profile": "quick",
|
|
14
|
-
"payloadBytes": 256,
|
|
15
|
-
"algorithm": "HS256",
|
|
16
|
-
"signUsPerOp": 17.09,
|
|
17
|
-
"verifyUsPerOp": 16.676,
|
|
18
|
-
"signOpsPerSecond": 58514.475,
|
|
19
|
-
"verifyOpsPerSecond": 59965.552
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"profile": "quick",
|
|
23
|
-
"payloadBytes": 256,
|
|
24
|
-
"algorithm": "ED25519",
|
|
25
|
-
"signUsPerOp": 48.942,
|
|
26
|
-
"verifyUsPerOp": 129.521,
|
|
27
|
-
"signOpsPerSecond": 20432.528,
|
|
28
|
-
"verifyOpsPerSecond": 7720.783
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"profile": "quick",
|
|
32
|
-
"payloadBytes": 1024,
|
|
33
|
-
"algorithm": "HS256",
|
|
34
|
-
"signUsPerOp": 16.402,
|
|
35
|
-
"verifyUsPerOp": 13.4,
|
|
36
|
-
"signOpsPerSecond": 60968.249,
|
|
37
|
-
"verifyOpsPerSecond": 74629.015
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"profile": "quick",
|
|
41
|
-
"payloadBytes": 1024,
|
|
42
|
-
"algorithm": "ED25519",
|
|
43
|
-
"signUsPerOp": 41.484,
|
|
44
|
-
"verifyUsPerOp": 106.096,
|
|
45
|
-
"signOpsPerSecond": 24105.829,
|
|
46
|
-
"verifyOpsPerSecond": 9425.432
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"profile": "quick",
|
|
50
|
-
"payloadBytes": 4096,
|
|
51
|
-
"algorithm": "HS256",
|
|
52
|
-
"signUsPerOp": 41.471,
|
|
53
|
-
"verifyUsPerOp": 21.896,
|
|
54
|
-
"signOpsPerSecond": 24113.328,
|
|
55
|
-
"verifyOpsPerSecond": 45669.707
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"profile": "quick",
|
|
59
|
-
"payloadBytes": 4096,
|
|
60
|
-
"algorithm": "ED25519",
|
|
61
|
-
"signUsPerOp": 53.73,
|
|
62
|
-
"verifyUsPerOp": 118.702,
|
|
63
|
-
"signOpsPerSecond": 18611.446,
|
|
64
|
-
"verifyOpsPerSecond": 8424.459
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"profile": "quick",
|
|
68
|
-
"payloadBytes": 16384,
|
|
69
|
-
"algorithm": "HS256",
|
|
70
|
-
"signUsPerOp": 37.261,
|
|
71
|
-
"verifyUsPerOp": 39.437,
|
|
72
|
-
"signOpsPerSecond": 26837.366,
|
|
73
|
-
"verifyOpsPerSecond": 25356.841
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"profile": "quick",
|
|
77
|
-
"payloadBytes": 16384,
|
|
78
|
-
"algorithm": "ED25519",
|
|
79
|
-
"signUsPerOp": 120.929,
|
|
80
|
-
"verifyUsPerOp": 163.363,
|
|
81
|
-
"signOpsPerSecond": 8269.337,
|
|
82
|
-
"verifyOpsPerSecond": 6121.336
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"generatedAt": "2026-04-15T07:25:13.190Z",
|
|
3
|
-
"profile": "quick",
|
|
4
|
-
"iterations": 2000,
|
|
5
|
-
"payloadSizes": [
|
|
6
|
-
256,
|
|
7
|
-
1024,
|
|
8
|
-
4096,
|
|
9
|
-
16384
|
|
10
|
-
],
|
|
11
|
-
"results": [
|
|
12
|
-
{
|
|
13
|
-
"profile": "quick",
|
|
14
|
-
"payloadBytes": 256,
|
|
15
|
-
"algorithm": "HS256",
|
|
16
|
-
"signUsPerOp": 22.028,
|
|
17
|
-
"verifyUsPerOp": 16.82,
|
|
18
|
-
"signOpsPerSecond": 45396.554,
|
|
19
|
-
"verifyOpsPerSecond": 59452.295
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"profile": "quick",
|
|
23
|
-
"payloadBytes": 256,
|
|
24
|
-
"algorithm": "ED25519",
|
|
25
|
-
"signUsPerOp": 46.164,
|
|
26
|
-
"verifyUsPerOp": 103.618,
|
|
27
|
-
"signOpsPerSecond": 21662.042,
|
|
28
|
-
"verifyOpsPerSecond": 9650.834
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"profile": "quick",
|
|
32
|
-
"payloadBytes": 1024,
|
|
33
|
-
"algorithm": "HS256",
|
|
34
|
-
"signUsPerOp": 12.433,
|
|
35
|
-
"verifyUsPerOp": 12.785,
|
|
36
|
-
"signOpsPerSecond": 80430.499,
|
|
37
|
-
"verifyOpsPerSecond": 78216.853
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"profile": "quick",
|
|
41
|
-
"payloadBytes": 1024,
|
|
42
|
-
"algorithm": "ED25519",
|
|
43
|
-
"signUsPerOp": 37.853,
|
|
44
|
-
"verifyUsPerOp": 98.984,
|
|
45
|
-
"signOpsPerSecond": 26417.71,
|
|
46
|
-
"verifyOpsPerSecond": 10102.674
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
"profile": "quick",
|
|
50
|
-
"payloadBytes": 4096,
|
|
51
|
-
"algorithm": "HS256",
|
|
52
|
-
"signUsPerOp": 31.288,
|
|
53
|
-
"verifyUsPerOp": 21.144,
|
|
54
|
-
"signOpsPerSecond": 31961.127,
|
|
55
|
-
"verifyOpsPerSecond": 47295.763
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"profile": "quick",
|
|
59
|
-
"payloadBytes": 4096,
|
|
60
|
-
"algorithm": "ED25519",
|
|
61
|
-
"signUsPerOp": 52.753,
|
|
62
|
-
"verifyUsPerOp": 108.71,
|
|
63
|
-
"signOpsPerSecond": 18956.391,
|
|
64
|
-
"verifyOpsPerSecond": 9198.782
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"profile": "quick",
|
|
68
|
-
"payloadBytes": 16384,
|
|
69
|
-
"algorithm": "HS256",
|
|
70
|
-
"signUsPerOp": 36.642,
|
|
71
|
-
"verifyUsPerOp": 32.576,
|
|
72
|
-
"signOpsPerSecond": 27290.862,
|
|
73
|
-
"verifyOpsPerSecond": 30697.597
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"profile": "quick",
|
|
77
|
-
"payloadBytes": 16384,
|
|
78
|
-
"algorithm": "ED25519",
|
|
79
|
-
"signUsPerOp": 93.648,
|
|
80
|
-
"verifyUsPerOp": 140.267,
|
|
81
|
-
"signOpsPerSecond": 10678.28,
|
|
82
|
-
"verifyOpsPerSecond": 7129.262
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"generatedAt": "2026-05-04T10:36:59.803Z",
|
|
3
|
-
"profile": "full",
|
|
4
|
-
"iterations": 100000,
|
|
5
|
-
"payloadSizes": [
|
|
6
|
-
256,
|
|
7
|
-
1024,
|
|
8
|
-
4096,
|
|
9
|
-
16384
|
|
10
|
-
],
|
|
11
|
-
"results": [
|
|
12
|
-
{
|
|
13
|
-
"profile": "full",
|
|
14
|
-
"payloadBytes": 256,
|
|
15
|
-
"format": "compact-json",
|
|
16
|
-
"encodedBytes": 498,
|
|
17
|
-
"encodeUsPerOp": 0.871,
|
|
18
|
-
"decodeUsPerOp": 0.846,
|
|
19
|
-
"encodeOpsPerSecond": 1147888.7,
|
|
20
|
-
"decodeOpsPerSecond": 1182094.018
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"profile": "full",
|
|
24
|
-
"payloadBytes": 256,
|
|
25
|
-
"format": "binary",
|
|
26
|
-
"encodedBytes": 426,
|
|
27
|
-
"encodeUsPerOp": 6.03,
|
|
28
|
-
"decodeUsPerOp": 2.594,
|
|
29
|
-
"encodeOpsPerSecond": 165840.776,
|
|
30
|
-
"decodeOpsPerSecond": 385485.005
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"profile": "full",
|
|
34
|
-
"payloadBytes": 1024,
|
|
35
|
-
"format": "compact-json",
|
|
36
|
-
"encodedBytes": 1269,
|
|
37
|
-
"encodeUsPerOp": 1.011,
|
|
38
|
-
"decodeUsPerOp": 0.979,
|
|
39
|
-
"encodeOpsPerSecond": 989524.233,
|
|
40
|
-
"decodeOpsPerSecond": 1021032.577
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"profile": "full",
|
|
44
|
-
"payloadBytes": 1024,
|
|
45
|
-
"format": "binary",
|
|
46
|
-
"encodedBytes": 1197,
|
|
47
|
-
"encodeUsPerOp": 7.83,
|
|
48
|
-
"decodeUsPerOp": 2.143,
|
|
49
|
-
"encodeOpsPerSecond": 127710.375,
|
|
50
|
-
"decodeOpsPerSecond": 466610.385
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"profile": "full",
|
|
54
|
-
"payloadBytes": 4096,
|
|
55
|
-
"format": "compact-json",
|
|
56
|
-
"encodedBytes": 4341,
|
|
57
|
-
"encodeUsPerOp": 2.405,
|
|
58
|
-
"decodeUsPerOp": 1.454,
|
|
59
|
-
"encodeOpsPerSecond": 415830.048,
|
|
60
|
-
"decodeOpsPerSecond": 687659.376
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"profile": "full",
|
|
64
|
-
"payloadBytes": 4096,
|
|
65
|
-
"format": "binary",
|
|
66
|
-
"encodedBytes": 4269,
|
|
67
|
-
"encodeUsPerOp": 8.232,
|
|
68
|
-
"decodeUsPerOp": 3.499,
|
|
69
|
-
"encodeOpsPerSecond": 121470.1,
|
|
70
|
-
"decodeOpsPerSecond": 285787.277
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"profile": "full",
|
|
74
|
-
"payloadBytes": 16384,
|
|
75
|
-
"format": "compact-json",
|
|
76
|
-
"encodedBytes": 16632,
|
|
77
|
-
"encodeUsPerOp": 7.041,
|
|
78
|
-
"decodeUsPerOp": 6.088,
|
|
79
|
-
"encodeOpsPerSecond": 142021.041,
|
|
80
|
-
"decodeOpsPerSecond": 164249.051
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"profile": "full",
|
|
84
|
-
"payloadBytes": 16384,
|
|
85
|
-
"format": "binary",
|
|
86
|
-
"encodedBytes": 16560,
|
|
87
|
-
"encodeUsPerOp": 12.829,
|
|
88
|
-
"decodeUsPerOp": 4.781,
|
|
89
|
-
"encodeOpsPerSecond": 77948.266,
|
|
90
|
-
"decodeOpsPerSecond": 209141.901
|
|
91
|
-
}
|
|
92
|
-
]
|
|
93
|
-
}
|