Formål
Det lette EUDI Dev Hub interop-sporet viser at walleten kan snakke med EUDI reference tooling for SD-JWT-VC issuance og OpenID4VP remote presentation. Dette conformance-sporet er neste nivå: samme verktøy, men med tydelig kravliste, gates og beslutning om hva som er automatisk test, manuell runbook, ny produktkode eller utsatt.
Dette er fortsatt ikke en formell sertifisering. Det er en repo-nær compliance-prøve som skal gjøre gapene presise før vi investerer i større arkitektur.
Kilder
- EUDI testverktøy: Test your Solution
- EUDI issuer: Issuer
- EUDI online verifier: Online Verifier
- ARF: Architecture and Reference Framework
- OpenID4VCI 1.0 Final: OpenID for Verifiable Credential Issuance
- OpenID4VP 1.0: OpenID for Verifiable Presentations
EUDI issuer-verktøyet dekker credential offer, pre-authorisation, deferred og dynamic issuance, og både mDoc og SD-JWT. Online verifier brukes for remote OpenID4VP. ARF legger i tillegg krav rundt issuer/RP trust, Wallet Unit/Instance Attestation, revocation, device binding, disclosure policy og både remote og proximity presentation.
X.509 trust for EUDI hosted issuer
Live PID SD-JWT VC issuance fra https://issuer.eudiw.dev / https://backend.issuer.eudiw.dev bruker EUDI Dev Hub sin Utopia-test-CA:
| Felt | Verdi |
|---|---|
| CA | PID Issuer CA - UT 02 |
| Subject/issuer | CN=PID Issuer CA - UT 02, O=EUDI Wallet Reference Implementation, C=UT |
| SHA-256 fingerprint | F5:D8:B0:3D:AF:98:6D:E8:62:02:F8:86:B9:8D:C4:2A:05:BA:B4:48:6B:A3:E2:62:E9:C5:76:0B:DF:5C:45:00 |
| Gyldig | 2025-03-24T20:26:14Z til 2034-06-20T20:26:13Z |
| Lokal fixture | certs/eudi-dev-hub/PIDIssuerCA02-UT.cacert.pem |
| Primær kilde | eu-digital-identity-wallet/eudi-srv-web-trustprovider-signer-java, server/issuersCertificates/PIDIssuerCA02-UT.cacert.pem, blob 938ee7bde314072b47b32b72a663cf60367811da |
EUDI TrustProvider Signer sin konfigurasjon har PID Issuer CA - UT 02 som default CA for testland UT, og server/issuersCertificates er repoets lokale trusted-list mappe for issuer-CA-er. EUDI issuer-docs peker på hosted issuer-verktøyet på issuer.eudiw.dev, mens live issuer metadata for PID SD-JWT VC annonserer credential_issuer=https://backend.issuer.eudiw.dev, format=dc+sd-jwt og vct=urn:eudi:pid:1.
Dette materialet er test/conformance-trust for EUDI Dev Hub, ikke produksjons-policy.
Arkitektur-spike: mDoc/proximity og wallet-attestasjon
Dette er en spike-beslutning, ikke en produktleveranse. Repoet skal ikke late som mDoc/proximity, Wallet Unit Attestation eller Wallet Instance Attestation er dekket av dagens automatiske tester. Første nyttige leveranse er å bevise parsing, trust og testbarhet med små fixtures og en manuell proximity-runbook.
app.db har nå bare DB-backed mDoc-metadata for spike-sporet: dokument-id, wallet-id, doctype, namespaces, issuer/fingerprint, gyldighet, offer-hash og livssyklusstatus. Rå mDoc CBOR, private device keys, access tokens, WUA secrets og WIA secrets skal ikke lagres i app.db.
WUA/WIA ligger fortsatt som planleggingsrecords og negative tester. Standard Wallet Unit-modell er tenant-wallet, men status skal være blocked-by-wallet-unit-decision eller not-implemented til Wallet Unit, revocation og attestation policy er avklart.
ARF skiller remote og proximity presentation: remote bruker OpenID4VP, mens proximity bruker ISO/IEC 18013-5. ARF beskriver også at Wallet Provider Interface utsteder Wallet Unit Attestation, og at WUA brukes under aktivering og senere ved issuance for å bevise wallet-kapasiteter og nøkkelbesittelse. PID-regelboken beskriver Wallet Instance Attestation som et eget dokument med doctype og namespace eu.europa.ec.eudi.wallet-instance.1, men sier samtidig at komplett datamodell ikke er spesifisert der ennå. Derfor må WUA/WIA behandles som arkitekturspike og interoperabilitetsavklaring før produktkode.
Nåværende repo-status:
| Flate | Repo-status | Automatisk nå | Manuell runbook | Krever ny produktkode | Bør vente |
|---|---|---|---|---|---|
| mDoc issuance/storage | OpenID4VCI-flyten lagrer bare SdJwtVcRecord; offer-siden avviser andre record-typer. Askar-store finnes, men ingen mdoc repository, MSO/IssuerSigned parser eller doctype/namespace-modell. | Nei | EUDI issuer kan generere mDoc-offer, men walleten skal forventes å feile kontrollert. | Ja | Nei |
| Proximity presentation | Remote OpenID4VP finnes. Ingen ISO 18013-5 device engagement, BLE/NFC, session transcript, mdoc reader auth eller DeviceResponse. | Nei | Ja, med EUDI Proximity Verifier eller Android verifier core når en teknisk harness finnes. | Ja | Delvis |
| IACA/trust | tsl-loader.ts håndterer EUDI/Digdir X.509-trust for SD-JWT VC og RP access. Ingen IACA trust store, IACA link cert parsing eller ISO 18013-5 certificate profiles. | Delvis, bare eksisterende X.509/TSL | Ja, trust-materiale kan samles og valideres manuelt | Ja | Nei |
| Wallet Unit Attestation | Ingen Wallet Provider backend-modell for WUA, OAuth client attestation headers, status list eller WUA PoP. | Nei | Bare dokumentanalyse og eventuelle issuer-feil kan logges | Ja | Nei |
| Wallet Instance Attestation | Ingen WIA-credential, WIA doctype/namespace, issuance eller presentation-policy. | Nei | Bare dokumentanalyse | Ja, men spesifikasjonen må låses først | Ja |
| Device/key binding | SD-JWT holder binding finnes via cnf.jwk, KMS-key mapping og KB-JWT ved remote VP. Ingen WSCD/WSCA, mdoc authentication eller per-document device key. | Ja for SD-JWT remote | Ja for live VP sanity | Ja for mdoc/WUA | Nei |
| SaaS/multi-tenant | Credo tenants og Askar ProfilePerWallet gir tenant-isolasjon for dagens SD-JWT. Ingen policy for om en Wallet Unit er browser-session, tenant-wallet, organisasjon eller fysisk device. | Ja for tenant-basert SD-JWT-regresjon | Ja for runbook-beslutning | Ja | Nei |
Konsekvens: dagens pnpm check, pnpm test:unit og Playwright-spor kan bare bevise SD-JWT-VC issuance, remote VP, tenant-isolert lagring og eksisterende X.509-trustlogikk. De kan ikke gi grønt lys for mDoc/proximity eller WUA/WIA.
Minste spike for neste agent
Målet er en bevisst smal spike som kan slettes eller utvides uten å låse produktarkitekturen.
- Biblioteker:
- For repo-nær TypeScript-fixture: vurder
@auth0/mdlfor å parse og validere CBOR-encoded mdoc/MSO,cbor-xfor lavnivå CBOR-inspeksjon,cose-jsfor COSE-signaturer hvis@auth0/mdlikke dekker hele behovet, og@noble/curvesbare hvis WebCrypto/Credo KMS ikke dekker P-256-operasjoner i test. - For reell proximity: bruk EUDI Android Wallet Core/proximity-referansen eller EUDI Proximity Verifier Core som separat harness. Ikke prøv å bygge BLE/NFC i SvelteKit-serveren.
- For repo-nær TypeScript-fixture: vurder
- Data stores:
- Behold
app.dbtil wallet metadata: mdoc document id, doctype, namespace, issuer, validity, tenant id, trust-status, revocation/status-url og referanse til key id. - Behold
historikk.dbtil issuance/presentation-hendelser. - Bruk Askar/KMS for private nøkler hvis Credo kan eksponere nødvendig key-materiale. Hvis ikke, lag en spike-adapter som bare peker på ekstern secure area/harness; ikke lagre private device keys i SQLite.
- Legg IACA/root/link certificates under en egen trust-materiale-katalog eller env-konfig som speiler
X509_EXTRA_TRUST_CERT_*, men kall den eksplisittMDOC_IACA_CERT_PATHS,MDOC_IACA_CERT_PEMogMDOC_IACA_CERT_URLSfor å unngå å blande SD-JWT og mdoc trust.
- Behold
- Routes:
GET /app/credential/offerskal i første spike bare klassifiseremso_mdoc/org.iso.18013.5.1.mDLog vise “ikke støttet” med diagnostics. Full acceptance skal vente.POST /app/credential/offer?/acceptMdockan komme senere når storage og key binding er avklart.GET /api/lab/mdoc/fixture/:idkan brukes for intern fixture-inspeksjon uten produktflyt.- Proximity skal starte som ekstern Android/iOS harness, ikke web-route.
- WUA spike trenger senere
/.well-known/jwt-issuer,/api/wallet-provider/wua/tokeneller tilsvarende provider-endepunkt, men bare etter at Wallet Unit-modellen er valgt.
- Cert/trust-materialer:
- EUDI issuer/tester CA/intermediate for SD-JWT skal fortsatt inn via
X509_EXTRA_TRUST_CERT_*. - mDoc trenger IACA root/link/document signer chain separat, med OID/profilvalidering for PID/mDL og reader authentication.
- RP/proximity reader certificate må behandles som verifier trust-materiale og knyttes til reader auth, ikke til issuer trust.
- EUDI issuer/tester CA/intermediate for SD-JWT skal fortsatt inn via
- EUDI Dev Hub-scenarioer:
- Issuer:
PIDellermDLimso_mdoc/mDoc-format med pre-authorized flow, først forventet kontrollert avvisning, deretter fixture-basert parsing. - Proximity Verifier: EUDI Proximity Verifier app eller core med QR device engagement og BLE transfer.
- Remote verifier skal ikke brukes som proxy for proximity-conformance.
- WUA/WIA: start med dokumentert issuer/token-request forventning og negativ test som bekrefter at repoet ikke sender client attestation headers før produktmodell finnes.
- Issuer:
Anbefalt rekkefølge
- Sikre SD-JWT-sporet: fjern X.509-fallback for EUDI issuer ved å legge riktig CA/intermediate i trust store og gjør
TEST_EUDI_REQUIRE_TRUSTED_ISSUER_CHAIN=1til krav for conformance-run. - Lag mdoc fixture-spike uten issuance: parse en kjent mdoc/MSO, valider doctype/namespace, issuer chain og digest, og dokumenter resultatet i docs.
- Legg inn kontrollert mdoc-offer gate i offerflyten:
mso_mdocskal gi eksplisitt unsupported-feil, ikke “SD-JWT pass”. - Kjør manuell EUDI mDoc issuance mot Dev Hub og lagre bare runbook-resultat, ikke credential.
- Bygg proximity harness utenfor SvelteKit: Android/iOS/EUDI reference core med QR og BLE, der repoet bare eier fixtures, trust-materiale og resultatlogg.
- Avklar Wallet Unit-modell for SaaS: per organisasjon, per bruker, per browser-enhet eller per ekstern device. WUA/WIA kan ikke implementeres riktig før dette er bestemt.
- Først deretter: WUA client attestation, WUA status/revocation, WIA data model og issuer-side validering.
Ikke bygg nå
- Ikke implementer BLE/NFC, ISO 18013-5 session transcript eller DeviceResponse i SvelteKit-produktkoden.
- Ikke lag en “fake WUA” bare for å få EUDI issuer videre. Det vil skjule at Wallet Unit, revocation og attestation policy mangler.
- Ikke bland IACA trust inn i dagens SD-JWT
X509_EXTRA_TRUST_CERT_*uten eksplisitt namespace og tester. - Ikke lagre mdoc private device keys i
app.db. - Ikke selg WIA som ferdig før ARF/regelbok og Dev Hub-scenarioet har stabil datamodell for akkurat feltsettet vi bruker.
- Ikke gjør mDoc/proximity til del av samme grønnløype som SD-JWT-VC. Det skal være et separat spor med egne gates.
Scope
Must
- SD-JWT-VC PID issuance fra EUDI issuer eller advanced issuer tester med
Pre-Authorization Code Grantogtx_code. - OpenID4VCI offer parsing for både
credential_offer_uriog inlinecredential_offer. - Eksplisitt klassifisering av offer som
pre-authorized,authorization-code,mixed, deferred-capable eller ukjent før live-run markeres som conformance-resultat. - Wallet-lagring og UI-visning etter at bruker godkjenner credential.
- Remote OpenID4VP request resolving fra EUDI online verifier med
request_uri,client_id,dc+sd-jwtog GET. - DCQL/credential matching for en smal PID-request som bare ber om attributter credentialet faktisk har.
- Direct post delivery som eksplisitt opt-in i conformance mode, fordi Dev Hub requestene ofte er engangs-URI-er.
- X.509 trust-resultat skal klassifiseres: full trust, fallback eller feil. Fallback er et gap, ikke pass.
Should
- Gjenta samme run med en ren testbruker og tom Askar-store for å unngå gamle PID-er uten komplett holder-binding.
- Kjøre samme VP-request to ganger: først inspect-only, deretter med
TEST_EUDI_SUBMIT_PRESENTATION=1. - Bruke egne env-variabler for EUDI deferred/dynamic offer-URI-er slik at single-use pre-authorized smoke ikke blandes med gap-sporet.
- Dokumentere exact credential format,
vct, issuer, verifier, request type, selected attributes og trust-status for hver live-run. - Legge EUDI issuer CA/intermediate i
X509_EXTRA_TRUST_CERT_PATHSellerX509_EXTRA_TRUST_CERT_URLSnår materialet er tilgjengelig, slik at fallback kan fjernes. - Fange verifier-feilrespons, ikke bare wallet-UI.
Could
- Deferred issuance i EUDI advanced issuer tester med opt-in pending-flyt, manuell polling og historikk.
- Dynamic issuance som smal authorization-code smoke når walletens
WALLET_CLIENT_IDog redirect URI er registrert hos issuer og forventet credential request er avklart. - Flere credential typer enn PID hvis Dev Hub tilbyr stabile SD-JWT-VC requests som matcher walletens display og matchinglogikk.
- Automatisk Dev Hub verifier-opprettelse dersom verktøyet får et stabilt API eller en dokumentert fixture-mekanisme.
- Proximity verifier og mDoc som separat teknisk spor når produktet faktisk har mDoc-dataflyt, IACA-trust og ISO 18013-5 transport.
Gap-analyse for deferred og dynamic issuance
OpenID4VCI 1.0 Final skiller mellom vanlig credential endpoint og valgfritt deferred credential endpoint. Når issuer ikke kan levere credentialet med en gang, returnerer credential response en pending transaksjon med transaction_id; walleten må senere POST-e transaction_id til deferred_credential_endpoint med gyldig access token. For dynamic issuance brukes authorization-code-flyten der walleten ber om credential via authorization_details/credential_configuration_id, eventuelt med claim-utvalg.
Credo 0.7 støtter mer enn appen bruker i dag:
| Flate | Credo-støtte | App-status |
|---|---|---|
| Offer resolving | resolveCredentialOffer returnerer offer payload, issuer metadata og offered credential configurations | Brukes i /app/credential/offer |
| Pre-authorized issuance | requestToken + requestCredentials returnerer ferdige credential records | Brukes og lagrer bare SD-JWT-VC |
| Authorization-code issuance | resolveOpenId4VciAuthorizationRequest, callback og tokenbytte | Finnes, men avhenger av registrert WALLET_CLIENT_ID og redirect |
| Deferred response | requestCredentials kan returnere deferredCredentials, og holder-API har requestDeferredCredentials | Opt-in via OID4VCI_DEFERRED_ISSUANCE_ENABLED; appen lagrer pending state og tilbyr manuell polling |
| Dynamic credential request | Credo kan generere authorization request fra authorization-code offer | Appen har ikke egen produktmodell for valg av credential/claims utenom issuer-offeret |
Lavrisiko som er implementert nå:
classifyOpenId4VciResolvedOfferklassifiserer grants, credential configuration IDs, dynamic authorization-code kandidat og om issuer metadata annonsererdeferred_credential_endpoint.- Pre-authorized og authorization-code callback stopper tydelig hvis Credo returnerer
deferredCredentialsuten at deferred-flyten er aktivert, i stedet for å ende som generisk “ingen credential mottatt”. - Når
OID4VCI_DEFERRED_ISSUANCE_ENABLED=1er satt, persisterer appen pending issuance state, viser/app/credential/pending/[pendingId], poller manuelt mot issuer og loggercredential_pending,credential_ready,credential_poll_failed,credential_issuance_expiredogcredential_issuance_cancelled. - Test-fixtures har egne deferred/dynamic offer-eksempler og env aliases.
- Playwright-sporet har eksplisitte skip for deferred/dynamic live automation til stabile EUDI live-kriterier og secrets-policy er avklart.
Det som ikke er implementert nå:
- Ingen bakgrunnsjobb eller automatisk retry mot
deferred_credential_endpoint; bruker må poll-e manuelt fra pending-siden. - Ingen kryptert/roterbar secrets-store for pending
accessToken/DPoP state; prototypen lagrer dette iapp.dbsammen med pending record. - Ingen automatisk Playwright-liveflyt for EUDI deferred issuance, fordi test-URI-er/secrets og timing fortsatt må styres manuelt.
- Ingen dynamisk claims/credential-selector for issuer-initierte authorization-code flows utover det Credo løser fra offeret.
Hva vi kan teste automatisk nå
Kjør først basis:
pnpm check
pnpm test:unit
pnpm test:integration --grep "OID4VCI|OID4VP" Conformance-env bruker egne aliaser, men fallbacker til de gamle interop-variablene:
TEST_EUDI_CONFORMANCE_TRACK=1
X509_EXTRA_TRUST_CERT_PATHS=certs/eudi-dev-hub/PIDIssuerCA02-UT.cacert.pem
TEST_EUDI_CREDENTIAL_OFFER_URI='https://tester.issuer.eudiw.dev/redirect_preauth?...'
pnpm test:integration --grep "Full Credential Issuance Flow" Når TEST_EUDI_CONFORMANCE_TRACK=1 er satt, avviser wallet-koden SD-JWT VC-lagring via uverifisert fallback. En issuance-run teller derfor bare som conformance-pass hvis Credo validerer x5c-kjeden mot trust-materialet over og testen passerer uten advarselen Lagrer SD-JWT VC uten signaturverifisering.
Live-status 2026-05-11: trust anchor-feilen No trusted certificate was found while validating the X.509 chain er erstattet av en strengere issuer/SAN-feil når UT02-fixturen brukes. Det utstedte credentialet har iss=https://backend.issuer.eudiw.dev, mens x5c leaf PID DS - 011 annonserer SAN-DNS issuer.eudiw.dev. Credo avviser derfor credentialet med x509-issuer-san-mismatch, og conformance issuance skal fortsatt stå som fail til issuer-kjeden eller issuer-claimen matcher.
For EUDI online verifier med client_id=x509_hash:... må verifierens access-certificate-kjede også ligge i trust-materialet når TEST_EUDI_CONFORMANCE_TRACK=1 brukes. Test-fixturen under certs/eudi-dev-hub/VerifierEndpointAccessChain.pem er eksportert fra EUDI verifier endpoint-repoets src/main/resources/keystore.jks med alias access_certificate. Uten den stopper request resolving før matching med No trusted certificate was found while validating the X.509 chain.
Deferred og dynamic er foreløpig gap-spor. De skal ikke forventes å gi grønn live-test før produktstøtten under “Krever ny produktkode” er bygget:
TEST_EUDI_CONFORMANCE_TRACK=1
TEST_EUDI_DEFERRED_CREDENTIAL_OFFER_URI='https://tester.issuer.eudiw.dev/redirect_deferred?...'
pnpm test:integration --grep "EUDI Deferred and Dynamic Issuance Gaps"
TEST_EUDI_CONFORMANCE_TRACK=1
TEST_EUDI_DYNAMIC_CREDENTIAL_OFFER_URI='https://tester.issuer.eudiw.dev/redirect_dynamic?...'
WALLET_CLIENT_ID='registrert-wallet-client-id'
pnpm test:integration --grep "EUDI Deferred and Dynamic Issuance Gaps" Inspect-only VP, uten å bruke opp verifier-sessionen på direct post:
TEST_EUDI_CONFORMANCE_TRACK=1
X509_EXTRA_TRUST_CERT_PATHS=certs/eudi-dev-hub/PIDIssuerCA02-UT.cacert.pem,certs/eudi-dev-hub/VerifierEndpointAccessChain.pem
TEST_EUDI_PRESENTATION_REQUEST_URI='openid4vp://?client_id=...&request_uri=...&request_uri_method=get'
pnpm test:integration --grep "should display presentation request UI elements" Full VP delivery, eksplisitt opt-in:
TEST_EUDI_CONFORMANCE_TRACK=1
TEST_EUDI_SUBMIT_PRESENTATION=1
X509_EXTRA_TRUST_CERT_PATHS=certs/eudi-dev-hub/PIDIssuerCA02-UT.cacert.pem,certs/eudi-dev-hub/VerifierEndpointAccessChain.pem
TEST_EUDI_PRESENTATION_REQUEST_URI='openid4vp://?client_id=...&request_uri=...&request_uri_method=get'
pnpm test:integration --grep "should complete presentation exchange" EUDI online verifierens request_uri er engangsbruk på request-object fetch. En inspect-only test som løser requesten kan derfor gjøre samme URL ugyldig for en senere prosess. Lag en ny verifier-request med samme valg for delivery hvis inspect og delivery kjøres som separate Playwright-kommandoer.
Automatisk dekning akkurat nå:
| Flate | Automatisk signal |
|---|---|
| OID4VCI offer URI | Playwright åpner offer-route, løser issuer metadata og viser offer |
| Pre-authorized issuance | Playwright klikker Legg til i lommeboken og forventer økt credential count |
| Inline EUDI tester-link | buildCredentialOfferAppPath bevarer credential_offer og tx_code |
| Deferred/dynamic fixtures | Unit-tester klassifiserer deferred-capable issuer metadata og authorization-code kandidat |
| OpenID4VP request URI | buildPresentationRequestAppPath normaliserer openid4vp:// til wallet-route med request_uri og client_id |
| Request resolving | Playwright forventer presentasjons-UI og delingsknapper |
| Direct post | Kjøres bare når TEST_EUDI_SUBMIT_PRESENTATION=1 |
Manuell runbook
Start lokalt eller med ngrok:
pnpm dev # eller pnpm dev:ngrokNullstill testdata hvis du skal måle conformance, ikke bare debugge:
rm -rf ~/.afj/data/wallet/root/ app.db* historikk.db*Hent
PID (SD-JWT VC)fra EUDI issuer eller advanced issuer tester. Velg pre-authorized code medtx_codeførst.Kjør issuance-kommandoen over med
X509_EXTRA_TRUST_CERT_PATHS=certs/eudi-dev-hub/PIDIssuerCA02-UT.cacert.pemog noter issuer, credential type, format,vct, grant type og trust-status. Hvis testen feiler medx509-issuer-san-mismatch, er trust anchor lastet, men issuerensissmatcher ikke x5c leaf SAN. Hvis testen feiler medx509-trust-chain, mangler eller matcher ikke trust-materialet.Opprett EUDI online verifier-request med
Person Identification Data (PID),dc+sd-jwt, OpenID4VP, GET ogSpecific attributes. Start smalt medfamily_name,given_nameogbirth_date/birthdate, avhengig av hva den utstedte PID-en faktisk inneholder.Kjør inspect-only VP med både issuer-CA og verifier access chain i
X509_EXTRA_TRUST_CERT_PATHS. Hvis den ikke matcher, noter om feilen ligger i request object, client binding, credential format,vct, attributtnavn eller lokal wallet-state.Kjør delivery med
TEST_EUDI_SUBMIT_PRESENTATION=1først når du er klar til å bruke opp requesten. Hvis inspect allerede har fetchet request-object, lag en ny identisk verifier-request for delivery. Verifiser resultatet i EUDI verifier UI.Ta skjermbilde eller logg URL, tidspunkt, commit SHA og kommandoene i arbeidsnotatet.
For deferred/dynamic manuell undersøkelse:
- Hent offer fra EUDI Advanced issuance tester, ikke basic smoke, slik at du kan se steg og status.
- Kjør grep-sporet over først. Playwright-liveautomatiseringen er fortsatt skip-et, men opt-in produktflyten kan testes manuelt.
- Hvis du debugger lokalt med verbose logger, sett
OFFER_VERBOSE_LOGS=1og lesOffer classification. - Hvis deferred faktisk returneres, noter
credentialConfigurationId,transactionId,intervalog om issuer metadata hardeferred_credential_endpoint. - For manuell produktflyt: sett
OID4VCI_DEFERRED_ISSUANCE_ENABLED=1, åpne pending-siden og poll derfra, slik at access token, DPoP state, KMS key mapping, expiry og bruker-/wallet-binding blir lagret og historikkført samlet.
Krever ny produktkode
- Global fjerning av X.509-fallback krever en bredere policy for hva wallet skal gjøre når trust mangler. EUDI conformance-runs er harde på dette via
TEST_EUDI_CONFORMANCE_TRACK=1, mens generiske live-runs beholder fallback som interop-workaround. - Deferred issuance har nå en opt-in brukerflyt for pending credential, manuell polling, retry-telling og historikk. Før dette kan kalles produksjonsklart trengs bakgrunnsjobb/auto-retry, avklart secrets-policy for access token/DPoP state, opprydding av utløpte records og live-testkriterier for EUDI advanced issuer.
- Dynamic issuance krever tydelig UX og kode for authorization-code-baserte offers utover dagens happy path: client registration, redirect allowlist, authorization details/claims, consent copy, state cleanup og feilhåndtering når issuer ber om presentation-during-issuance.
- Revocation/status-list validering må kobles til credential-lagring og presentasjon, ikke bare display.
- Embedded disclosure policy må hentes, lagres og evalueres hvis issuer metadata tilbyr det.
- WUA/WIA krever wallet-provider-modell, attestasjon, nøkkelbinding, revocation og issuer-side validering. Det skal ikke presses inn som en test-hack.
- mDoc/proximity krever mDoc credential model, IACA trust, ISO 18013-5 transport og proximity verifier-runbook.
Bør vente
- Full ARF-conformance og sertifiseringsspråk.
- Proximity/mDoc som del av samme grønnløype som SD-JWT-VC.
- Produksjonsbeslutninger om Wallet Unit Attestation, Wallet Instance Attestation og WSCA/WSCD før prototypearkitekturen er mer stabil.
- Automatisk Dev Hub UI-automatisering som eneste kilde til pass/fail. Den er nyttig for smoke, men for conformance trenger vi stabile fixtures eller API-er.
Pass/fail-regel
En conformance-run er pass bare når:
- issuance og VP inspect passerer på ren testbruker,
- full VP delivery passerer med eksplisitt opt-in,
- trust-status er dokumentert som full trust, ikke
x509-trust-chain,x509-issuer-san-mismatcheller fallback, - alle gap er klassifisert som automatisk, manuell, produktkode eller utsatt.
Hvis credentialet lagres via X.509-fallback, er resultatet interop-pass, conformance-gap.
Med TEST_EUDI_CONFORMANCE_TRACK=1 skal fallback ikke lenger kunne gi grønn issuance-test. Testen skal feile hvis verifisert lagring ikke fungerer.
Neste agent
- Kjør ny live issuance med
X509_EXTRA_TRUST_CERT_PATHS=certs/eudi-dev-hub/PIDIssuerCA02-UT.cacert.pemog bekreft at ingen X.509-fallback brukes. - Legg en
.context/eudi-conformance-run-YYYY-MM-DD.mdper live-run med kommandoer, commit SHA, Dev Hub valg og resultat. - Verifiser om
request_uri_method=getbør sendes videre fra wallet-route til Credo-resolveren, eller om default GET er tilstrekkelig. - Bygg deferred pending-modellen før live-testen gjøres grønn: persistent state, polling-endepunkt/job, historikk og UI for “venter på utsteder”.
- Lag en egen mDoc/proximity spike først når walletens mDoc-lagring og IACA trust er definert.
