Skip to content

build: follow libid-rs to the head of feat/ceremony-constructions - #8

Closed
xgreenx wants to merge 1 commit into
feat/jwks-ceremony-attestationfrom
chore/libid-rs-ceremony-constructions-head
Closed

xgreenx wants to merge 1 commit into
feat/jwks-ceremony-attestationfrom
chore/libid-rs-ceremony-constructions-head

Conversation

@xgreenx

@xgreenx xgreenx commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Stacked on #7. The five libid-rs pins move from 391078f (the head of fix/origin-form-request-target while libid-rs#5 was open) to cc40b0c, the head of feat/ceremony-constructions that #5 merged into. That head adds the reveal layouts that match what the verifier matches (libid-rs#8), the refusal of a member that chunk framing runs through (libid-rs#9), and removes libid-attestations (libid-rs#6), which nothing here used. The upstream tlsn pin is unchanged, so the [patch] entry stays as it is. The manifest comment now names the branch the rev sits on.

Verified locally: cargo +nightly-2026-08-10 fmt --check, cargo clippy --locked --all-targets --all-features -- -D warnings, cargo test --locked --all: 13 unit tests plus the smoke and driver-leak integration tests pass, including the JWKS record tests (the_request_is_the_line_the_contract_pins, chunked_framing_round_trips_the_body, content_length_framing_carries_the_body_verbatim) that sit on the changed transcript code.

keeper follows this rev in libid-org/keeper#6, since its libid-crypto/libid-signer pins must equal this crate's.

The five libid-rs pins move from 391078f, the head of fix/origin-form-
request-target when libid-rs#5 was open, to cc40b0c, the head of
feat/ceremony-constructions that #5 merged into. The new head carries the
reveal layouts that match what the verifier matches (libid-rs#8), the
refusal of a member that chunk framing runs through (#9), and drops
libid-attestations (#6), which nothing here used. The upstream tlsn pin is
unchanged, so the [patch] entry stays.

Verified: nightly fmt, clippy -D warnings, cargo test --all (13 unit, the
smoke and driver-leak integration tests), including the JWKS record tests
and the chunked-framing round trip the transcript fixes touch.

Assisted-by: Claude Fable 5.1
Signed-off-by: xgreenx <xgreenx9999@gmail.com>
@xgreenx xgreenx closed this Sep 14, 2026
xgreenx added a commit that referenced this pull request Sep 15, 2026
The notary used to dispatch on the TLS-verified server name and answer
`www.googleapis.com` with a Merkle proof of its own shape, signed over a
digest of its own design, for the legacy `JwksOracle`. That was the notary
deciding what a session was for -- the profile-specific decision
REQ-COMMON-33 forbids it from making -- and a second wire format kept in
step with a second contract. `GoogleJwtRoots` now verifies through
`NotaryService` like every Platform Verifier, so the second format has no
reader.

Delete the JWKS duty and everything only it used: `src/jwks/` (the Merkle
path, the prover helpers and the mock), the `jwks_enabled` flag, the
dispatch in `handle_verified_session`, the `Jwks`/`Http`/`Base64` error
variants, and the `alloy-*`, `serde_with`, `base64`, `k256` and non-test
`reqwest` dependencies. The notary signs the section 9.1 record for every
session; which host it observed is in the record, and the contract that
reads it pins the host.

The prover-side helpers were only ever keeper code hosted here for reuse,
and hosting them here made the keeper depend on this whole crate and match
its libid-rs revision exactly. They move to the keeper, on libid-rs's
primitives (`libid_tlsn::prover_generic`, `libid_transcript`). The notary
crate still builds as a library so the smoke tests can embed `run`.

Supersedes #7, whose branch carried pre-force-push copies of #6, and #8.

Assisted-by: Claude Fable 5.1
Signed-off-by: xgreenx <xgreenx9999@gmail.com>
xgreenx added a commit that referenced this pull request Sep 15, 2026
The notary used to dispatch on the TLS-verified server name and answer
`www.googleapis.com` with a Merkle proof of its own shape, signed over a
digest of its own design, for the legacy `JwksOracle`. That was the notary
deciding what a session was for -- the profile-specific decision
REQ-COMMON-33 forbids it from making -- and a second wire format kept in
step with a second contract. `GoogleJwtRoots` now verifies through
`NotaryService` like every Platform Verifier, so the second format has no
reader.

Delete the JWKS duty and everything only it used: `src/jwks/` (the Merkle
path, the prover helpers and the mock), the `jwks_enabled` flag, the
dispatch in `handle_verified_session`, the `Jwks`/`Http`/`Base64` error
variants, and the `alloy-*`, `serde_with`, `base64`, `k256` and non-test
`reqwest` dependencies. The notary signs the section 9.1 record for every
session; which host it observed is in the record, and the contract that
reads it pins the host.

The prover-side helpers were only ever keeper code hosted here for reuse,
and hosting them here made the keeper depend on this whole crate and match
its libid-rs revision exactly. They move to the keeper, on libid-rs's
primitives (`libid_tlsn::prover_generic`, `libid_transcript`). The notary
crate still builds as a library so the smoke tests can embed `run`.

Supersedes #7, whose branch carried pre-force-push copies of #6, and #8.

Assisted-by: Claude Fable 5.1
Signed-off-by: xgreenx <xgreenx9999@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant