v1.22.0
Added
-
ETSI TS 119 602 Lists of Trusted Entities (LoTE) — the JSON trusted-list
lane (#135). TS 119 602 is
the successor data model to the TS 119 612 XML Trusted Lists, and its EU
profiles are the EUDI wallet anchor lists: Annex F (WRPAC providers —
who may issue relying-party access certificates) and Annex G (WRPRC
providers — the registrar anchorsverify_rp_registration_certificate
consumes). One interface, two encodings:openvc.trustlistgrows
parse_lote/consume_lote/walk_loteplus the
EU_WRPAC_PROVIDERS_PROFILE/EU_WRPRC_PROVIDERS_PROFILEconformance
gates (LoteProfile,LoteType,LoteServiceType,
TrustListProfileError), all distilling into the sameTrustAnchorSet
aswalk_lotl—.certificatesfeeds the existing X.509 path unchanged.A JSON LoTE travels as a compact JAdES baseline-B JWS (clause 6.8 /
Annex G.4), so verification runs on the library's own JOSE primitives — the
{ES256, ES384, EdDSA, Ed25519}allow-list before any crypto, the WRPRC
lane's allow-listedcrit, the signer fromx5cauthenticated against
caller-pinned certificates (byte-for-byte or by path validation), plus
clause 6.8's DN binding (signing-certificateorganizationName↔
SchemeOperatorName,countryName↔SchemeTerritory). Parsing is strict
and fail-closed on every field that feeds a trust decision: unknown
structural members reject (the official schema is
additionalProperties: falsethroughout), date-times must be the UTCZ
form, an unrecognised critical extension rejects the list, a malformed
certificate blob is skipped rather than trusted, and a closed list
(NextUpdatenull) contributes zero anchors. The EU profiles enforce
Tables F.1–G.3 — registered URIs (including the spec's literal
WRPRCrovidersListStatusDetn typo, accepted alongside the corrected
spelling), territoryEU, the exclusive service-type pairs,
ServiceStatus/StatusStartingTime/HistoricalInformationPeriodabsent,
and the ≤ 6-month update window. Self-made signed vectors pin the behaviour;
the Commission's real EU lists become golden fixtures when published.The adversarial review hardened the lane before merge: a profiled
walk_lotenow defaults its selection to the profile's issuance service
type (a provider's revocation-service certificates no longer anchor
credential verification unless explicitly selected — the review proved a
WRPRC signed under a revocation-service CA validated through the documented
flow), only follows pointers whoseLoTETypematches the profile (and
consumes the pointed list under the same profile), fails closed instead of
raising an uncaughtValueErroron a far-futureListIssueDateTime,
rejects a present-but-emptyServiceStatusunder the profiles
(presence is the violation), and pins date-times to the exact
YYYY-MM-DDThh:mm:ssZform clause 6.1.3 mandates.