The rQES half of this simulator: it plays the QTSP that Quill's EudiRestSigningService talks to,
so EUDI wallet signing runs end to end without a real QTSP. The wallet half of the simulator lives at
/.
Mode: strict (PKCE + client authentication enforced), service leg via OpenID4VP on https://verifier-backend.eudiw.dev
| Endpoint | What it does |
|---|---|
GET /oauth2/authorize | Service (PID authentication) and credential (digest consent) legs. Instant redirect, or an OpenID4VP QR page when USE_OID4VP=true. |
GET /oauth2/status | Browser poll of the hosted verifier during the OpenID4VP service leg. |
POST /oauth2/token | Exchanges the code (PKCE S256 + client authentication in strict mode) for an access token. |
POST /csc/v2/info | Capability metadata. |
POST /csc/v2/credentials/list, /info | One credential plus its certificate as base64 DER. |
POST /csc/v2/signatures/signHash | RSA PKCS#1 v1.5 over DigestInfo(SHA-256, hash) — real crypto, embeddable in a PDF. |
POST /oid4vp/init, GET /oid4vp/status | Inline flow: wallet deep link + QR for Quill to render itself. |
Subject: 2.5.4.5=#1316504e4f42452d38353031303131323334352d45554449,2.5.4.4=#0c0445756469,2.5.4.42=#0c045369676e,CN=EUDI Simulator QTSP Signing Certificate test,O=EUDI Simulator QTSP,C=BE · download the certificate
Key: /certs/qtsp/qtsp-signing-key.pem (never expose this one)
Certificate: /certs/qtsp/certs/qtsp-signing-cert.pem — point Quill's TRUSTED_EUDI_ROOT_CERTS_FOLDER at that certs/ folder.
GET /oauth2/authorize (service leg)
It redirects back to this page with a code. In strict mode the matching PKCE verifier is
eudi-simulator-demo-code-verifier; exchange the code with:
curl -s -X POST -d grant_type=authorization_code -d code=<code> -d code_verifier=eudi-simulator-demo-code-verifier http://localhost:8080/oauth2/token