You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Continues the module split landed in #106. That PR moved the provider's config, wire types, prose and tests into crates/dpp-seal/src/eideasy/, but two files still name the provider and both need a structural change rather than a text edit.
Remaining, measured
File
Mentions
What they are
src/adapter.rs
19
Backend::Eideasy, QtspSealAdapter::eideasy(), use crate::eideasy::client::EideasyClient
src/error.rs
11
variants encoding provider behaviour: five-minute HMAC skew window, rate-limit wording, "host is not this provider"
src/lib.rs
2
pub mod eideasy; and its doc link — structural, and the intended end state
src/config.rs
4
the selector's match arm — also intended
Scope
SealBackend trait, Box<dyn SealBackend> in QtspSealAdapter. Each backend module constructs its own; adapter.rs dispatches without naming any provider. Three implementors exist already — the hosted QTSP, local, and ghost — so the trait has real shape to answer to rather than being speculative.
Provider error variants move to eideasy/error.rs.SealError keeps only what is provider-agnostic (Config, Unsupported, transport). Safe to move: this crate is not published.
Done when
grep -rniE 'eideasy|eid.?easy' crates/dpp-seal/src --exclude-dir=eideasy returns only the pub mod declaration, its doc link, and the selector's match arm.
Context
Design rationale and the option analysis: work/SEAL-ARCHITECTURE-2026-08.md in the docs repo
SealProvider is deliberately not #[non_exhaustive] — adding a backend must break every wiring site rather than fall into a _ arm
Not in scope
Passports recording which environment issued them. That is a field on a signed, retention-locked document in a published crate and needs its own design pass.
Continues the module split landed in #106. That PR moved the provider's config, wire types, prose and tests into
crates/dpp-seal/src/eideasy/, but two files still name the provider and both need a structural change rather than a text edit.Remaining, measured
src/adapter.rsBackend::Eideasy,QtspSealAdapter::eideasy(),use crate::eideasy::client::EideasyClientsrc/error.rssrc/lib.rspub mod eideasy;and its doc link — structural, and the intended end statesrc/config.rsScope
SealBackendtrait,Box<dyn SealBackend>inQtspSealAdapter. Each backend module constructs its own;adapter.rsdispatches without naming any provider. Three implementors exist already — the hosted QTSP,local, and ghost — so the trait has real shape to answer to rather than being speculative.eideasy/error.rs.SealErrorkeeps only what is provider-agnostic (Config,Unsupported, transport). Safe to move: this crate is not published.Done when
grep -rniE 'eideasy|eid.?easy' crates/dpp-seal/src --exclude-dir=eideasyreturns only thepub moddeclaration, its doc link, and the selector's match arm.Context
work/SEAL-ARCHITECTURE-2026-08.mdin the docs repoGhosttrust tier while still draining: the PR bodySealProvideris deliberately not#[non_exhaustive]— adding a backend must break every wiring site rather than fall into a_armNot in scope
Passports recording which environment issued them. That is a field on a signed, retention-locked document in a published crate and needs its own design pass.