| Test Name | oid4vp-1final-wallet-alternate-happy-flow |
|---|---|
| Variant | credential_type=custom, credential_format=sd_jwt_vc, client_id_prefix=x509_san_dns, request_method=request_uri_signed, vp_profile=plain_vp, response_mode=direct_post |
| Test ID | WqwZvDLqu6wJnBe https://localhost.emobix.co.uk:8443/log-detail.html?public=true&log=WqwZvDLqu6wJnBe |
| Created | 2026-11-09T17:43:13.473273933Z |
| Description | OID4VP wallet conformance test for SIROS wallet |
| Test Version | 5.3.4 |
| Test Owner | leifj |
| Plan ID | yhquuwG9ZtWTG https://localhost.emobix.co.uk:8443/plan-detail.html?public=true&plan=yhquuwG9ZtWTG |
| Exported From | https://localhost.emobix.co.uk:8443 |
| Exported By | leifj |
| Suite Version | 5.3.4 |
| Exported | 2026-11-09 17:46:10 (UTC) |
| Status: FINISHED Result: PASSED |
| SUCCESS 78 FAILURE 0 WARNING 0 REVIEW 0 INFO 13 |
| 2026-11-09 17:43:13 |
INFO
|
TEST-RUNNER
Test instance WqwZvDLqu6wJnBe created
|
||||||||||||||||
|
||||||||||||||||||
| 2026-11-09 17:43:13 |
|
CreateDirectPostResponseUri
Created response URI
|
||
|
||||
| 2026-11-09 17:43:13 |
|
SetClientIdToResponseUriHostnameIfUnset
client_id is already set, not setting it to our hostname
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
GetStaticServerConfiguration
Found a static server object
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
CheckAuthorizationEndpointIsValidUri
authorization_endpoint has a valid URI scheme
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
GetStaticClientConfiguration
Found a static client object
|
||||||
|
||||||||
| 2026-11-09 17:43:13 |
SUCCESS
|
OID4VPSetClientIdToIncludeClientIdScheme
Set client id to include the client id scheme
|
||
|
||||
| 2026-11-09 17:43:13 | SUCCESS |
ValidateClientJWKsPrivatePart
Valid client JWKs: keys are valid JSON, contain the required fields, the private/public exponents match and are correctly encoded using unpadded base64url
|
|
|
||
| 2026-11-09 17:43:13 |
SUCCESS
|
ExtractJWKsFromStaticClientConfiguration
Extracted client JWK
|
||||
|
||||||
| 2026-11-09 17:43:13 | SUCCESS |
CheckDistinctKeyIdValueInClientJWKs
Distinct 'kid' value in all keys of client_jwks
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
CheckIfClientIdInX509CertSanDns
x509_san_dns client_id is present in the x5c certificate SAN in the client_jwks x5c parameter
|
||||||||||
|
||||||||||||
| 2026-11-09 17:43:13 |
|
RegisterRical
No RICAL configured, skipping RICAL-based verifier trust checks
|
|
|
||
| 2026-11-09 17:43:13 | INFO |
CallRicalEndpoint
Skipped evaluation due to missing required string: rical_url
|
||
|
||||
| 2026-11-09 17:43:13 | INFO |
ParseRical
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-09 17:43:13 |
INFO
|
DumpRicalCborDiagnostics
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-09 17:43:13 | INFO |
ValidateRicalSignature
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-09 17:43:13 | INFO |
ValidateRicalSignerCertificate
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-09 17:43:13 | INFO |
ValidateRicalStructure
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-09 17:43:13 | INFO |
ValidateConfiguredClientCertificatesAgainstRical
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-09 17:43:13 |
|
RegisterCredentialTrustAnchor
No credential trust anchor configured, skipping registration
|
|
|
||
| 2026-11-09 17:43:13 |
|
RegisterStatusListTrustAnchor
No status list trust anchor configured, skipping registration
|
|
|
||
| 2026-11-09 17:43:13 | SUCCESS |
CheckDiscEndpointRequestUriParameterSupported
request_uri_parameter_supported has correct value
|
||
|
||||
| 2026-11-09 17:43:13 |
CreateRandomRequestUriWithoutFragment
Created random URL for request_uri
|
|||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
CreateRedirectUri
Created redirect URI
|
||
|
||||
| 2026-11-09 17:43:13 |
|
oid4vp-1final-wallet-alternate-happy-flow
Setup Done
|
|
|
||
| Make request to wallet |
| 2026-11-09 17:43:13 |
SUCCESS
|
CreateEmptyAuthorizationEndpointRequest
Created empty authorization endpoint request
|
|
|
||
| 2026-11-09 17:43:13 |
SUCCESS
|
AddClientIdToAuthorizationEndpointRequest
Added client_id of 'x509_san_dns:conformance.example.com' to authorization endpoint request
|
||
|
||||
| 2026-11-09 17:43:13 |
|
CreateRandomStateValue
Created state value
|
||||
|
||||||
| 2026-11-09 17:43:13 |
SUCCESS
|
AddStateToAuthorizationEndpointRequest
Added state parameter to request
|
||||
|
||||||
| 2026-11-09 17:43:13 |
SUCCESS
|
AddResponseUriToAuthorizationEndpointRequest
Added response_uri parameter to request
|
||||||
|
||||||||
| 2026-11-09 17:43:13 |
INFO
|
LoadBuiltInDcqlQuery
Skipped evaluation due to missing required string: dcql_builtin_resource
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
ExtractDCQLQueryFromClientConfiguration
Extracted dcql from client configuration
|
||
|
||||
| 2026-11-09 17:43:13 | SUCCESS |
ValidateDCQLQuery
DCQL query input is valid
|
||||
|
||||||
| 2026-11-09 17:43:13 |
SUCCESS
|
CheckDCQLQueryCredentialFormatMatchesTestConfiguration
DCQL query credential format matches test configuration
|
||||
|
||||||
| 2026-11-09 17:43:13 | SUCCESS |
CheckForUnexpectedParametersInDcqlQuery
No unknown properties were found in the DCQL query
|
||||
|
||||||
| 2026-11-09 17:43:13 | SUCCESS |
CheckForNonSelectivelyDisclosableClaimsInDcqlQuery
DCQL query does not request any SD-JWT VC claims that cannot be selectively disclosed
|
|
|
||
| 2026-11-09 17:43:13 | SUCCESS |
CheckForUnreferencedClaimsInDcqlQuery
The DCQL query does not contain claims entries unreferenced by claim_sets
|
|
|
||
| 2026-11-09 17:43:13 |
SUCCESS
|
AddDcqlToAuthorizationEndpointRequest
Added dcql_query parameter to request
|
||||||||
|
||||||||||
| 2026-11-09 17:43:13 |
INFO
|
ExtractVerifierInfoFromClientConfiguration
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-09 17:43:13 | INFO |
ValidateVerifierInfo
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-09 17:43:13 | INFO |
CheckForUnexpectedParametersInVerifierInfo
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-09 17:43:13 |
INFO
|
AddVerifierInfoToAuthorizationEndpointRequest
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-09 17:43:13 |
|
CreateRandomNonceValue
Created nonce value
|
||||
|
||||||
| 2026-11-09 17:43:13 |
SUCCESS
|
AddNonceToAuthorizationEndpointRequest
Added nonce parameter to request
|
||||||||||
|
||||||||||||
| 2026-11-09 17:43:13 |
|
AddVP1FinalSdJwtClientMetadataToAuthorizationRequest
Added client_metadata to authorization endpoint request
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
SetAuthorizationEndpointRequestResponseTypeToVpToken
Added response_type parameter to request
|
||||||||||||||
|
||||||||||||||||
| 2026-11-09 17:43:13 |
|
SetAuthorizationEndpointRequestResponseMode
Added response_mode parameter to request
|
||||||||||||||||
|
||||||||||||||||||
| 2026-11-09 17:43:13 |
SUCCESS
|
AddRandomParameterToAuthorizationEndpointRequest
Added a authorization_endpoint_request. As per spec, 'The authorization server MUST ignore unrecognized request parameters'.
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
ConvertAuthorizationEndpointRequestToRequestObject
Created request object claims
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
AddMismatchedIssToRequestObject
Added iss to request object claims that deliberately does not match client_id; the wallet must ignore the iss claim per OID4VP section 5
|
||||
|
||||||
| 2026-11-09 17:43:13 |
|
AddSelfIssuedMeV2AudToRequestObject
Added SIOPv2 aud to request object claims
|
||
|
||||
| 2026-11-09 17:43:13 |
SUCCESS
|
BuildRequestObjectByReferenceRedirectToAuthorizationEndpointWithoutDuplicatesReorderedParams
Sending to authorization endpoint
|
||
|
||||
| 2026-11-09 17:43:13 | SUCCESS |
AddRequestUriMethodGetToRedirectUrl
Added request_uri_method=get to redirect URL
|
||
|
||||
| 2026-11-09 17:43:13 |
REDIRECT
|
oid4vp-1final-wallet-alternate-happy-flow
Redirecting to authorization endpoint
|
||||
|
||||||
| 2026-11-09 17:43:13 |
|
oid4vp-1final-wallet-alternate-happy-flow
The wallet should be opened via the QR code / proceed with test button, and should then fetch the request_uri
|
|
|
||
| 2026-11-09 17:43:14 |
INCOMING
|
oid4vp-1final-wallet-alternate-happy-flow
Incoming HTTP request to /test/a/siros-wallet-vp-test/requesturi/l5XPCvnS7GtZ1CLdoTkttoN2AZLdrJuxbYTPsVh1UpSKggBmMN04EyT6AjaJxDkO
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| 2026-11-09 17:43:14 |
SUCCESS
|
EnsureIncomingTls12WithSecureCipherOrTls13
Found TLS 1.3 connection
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
EnsureIncomingTls13
TLS 1.3 in use
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
EnsureIncomingRequestMethodIsGet
Client correctly used http GET method
|
|
|
||
| 2026-11-09 17:43:14 |
SUCCESS
|
SignRequestObjectIncludeX5cHeader
Signed the request object
|
||||||||
|
||||||||||
| 2026-11-09 17:43:14 |
|
oid4vp-1final-wallet-alternate-happy-flow
Wallet has retrieved request_uri - waiting for it to call the response_uri
|
|
|
||
| 2026-11-09 17:43:14 |
|
oid4vp-1final-wallet-alternate-happy-flow
Returned request object to wallet - waiting for it to call the response_uri
|
|
|
||
| 2026-11-09 17:43:14 |
OUTGOING
|
oid4vp-1final-wallet-alternate-happy-flow
Response to HTTP request to test instance WqwZvDLqu6wJnBe
|
||||||||
|
||||||||||
| 2026-11-09 17:43:14 |
INCOMING
|
oid4vp-1final-wallet-alternate-happy-flow
Incoming HTTP request to /test/a/siros-wallet-vp-test/responseuri
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| 2026-11-09 17:43:14 |
SUCCESS
|
EnsureIncomingTls12WithSecureCipherOrTls13
Found TLS 1.3 connection
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
EnsureIncomingTls13
TLS 1.3 in use
|
|
|
||
| Direct post endpoint |
| 2026-11-09 17:43:14 |
SUCCESS
|
EnsureIncomingRequestMethodIsPost
Client correctly used http POST method
|
|
|
||
| 2026-11-09 17:43:14 |
SUCCESS
|
EnsureIncomingRequestContentTypeIsFormUrlEncoded
Incoming content-type header has the expected value
|
||||
|
||||||
| 2026-11-09 17:43:14 |
SUCCESS
|
EnsureIncomingUrlQueryIsEmpty
URL query from server was correctly empty, no query parameters detected
|
|
|
||
| 2026-11-09 17:43:14 |
SUCCESS
|
ExtractAuthorizationEndpointResponseFromFormBody
Extracted the authorization response
|
||||
|
||||||
| 2026-11-09 17:43:14 |
SUCCESS
|
ExtractAuthorizationEndpointResponse
Extracted authorization response
|
||||
|
||||||
| 2026-11-09 17:43:14 |
SUCCESS
|
CheckIfAuthorizationEndpointError
No error from authorization endpoint
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
ExtractVP1FinalVpTokenDCQL
vp_token parsed
|
||||
|
||||||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateVpTokenCredentialIdMatchesDcqlQuery
VP token credential_id matches a credential entry in the DCQL query
|
||
|
||||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateVpTokenPresentationCountMatchesDcqlQuery
Each vp_token entry contains a number of Presentations consistent with the Credential Query's 'multiple' setting
|
||
|
||||
| 2026-11-09 17:43:14 |
SUCCESS
|
CheckNoPresentationSubmissionParameter
presentation_submission parameter is not present, as expected.
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
CheckForUnexpectedParametersInVpAuthorizationResponse
authorization response includes only expected parameters
|
||||
|
||||||
| 2026-11-09 17:43:14 | SUCCESS |
CheckStateInAuthorizationResponse
State in response correctly returned
|
||
|
||||
| 2026-11-09 17:43:14 |
SUCCESS
|
ParseCredentialAsSdJwtKb
Parsed SDJWT
|
||||||||||
|
||||||||||||
| Verify credential JWT |
| 2026-11-09 17:43:14 | SUCCESS |
ValidateCredentialJWTIat
'iat' has a sensible value
|
|
|
||
| 2026-11-09 17:43:14 |
ValidateCredentialJWTNbf
'nbf' is not present
|
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateCredentialJWTExp
Credential 'exp' passed validation checks
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateCredentialJWTHeaderTyp
'typ' header is present
|
||
|
||||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateCredentialJWTVct
'vct' claim is present
|
||
|
||||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateCredentialCnfJwkIsPublicKey
cnf.jwk is valid in SD-JWT credential
|
||
|
||||
| 2026-11-09 17:43:14 | SUCCESS |
WarnIfUnexpectedFieldsInCredentialCnf
cnf claim contains only expected fields
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
WarnIfUnknownFieldsInCredentialCnfJwk
cnf.jwk contains only known fields
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateSdJwtDisclosureSaltsAreUnique
All 2 disclosures have unique salts
|
|
|
||
| 2026-11-09 17:43:14 |
SUCCESS
|
ClearStatusListTokenEndpointResponse
Cleared any previous status list validation state
|
|
|
||
| 2026-11-09 17:43:14 |
FetchStatusListToken
No status claim found, skipping status list check
|
|
|
|
||
| 2026-11-09 17:43:14 |
ExtractStatusListTokenFromStatusListTokenEndpointResponse
No status list token endpoint response recorded, skipping JWT extraction
|
|
|
|
||
| 2026-11-09 17:43:14 |
VerifyStatusListTokenSignatureUsingEmbeddedJwk
No parsed status list token in environment, skipping signature verification
|
|
|
|
||
| 2026-11-09 17:43:14 |
CheckCredentialStatus
No status list token in environment, skipping status check
|
|
|
|
||
| 2026-11-09 17:43:14 |
EnsureContentTypeStatusListJwt
No status list token endpoint response recorded, skipping content-type check
|
|
|
|
||
| Verify credential matches DCQL query |
| 2026-11-09 17:43:14 | SUCCESS |
ValidateCredentialVctMatchesDcqlQuery
Credential vct matches DCQL query
|
||||
|
||||||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateDisclosedClaimsMatchDcqlQuery
All DCQL-requested claims are present in the disclosed credential
|
||||
|
||||||
| 2026-11-09 17:43:14 |
EnsureMostPreferredDcqlClaimSetReturned
DCQL credential entry has fewer than two claim_sets options, so there is no preference order to check
|
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
CheckOnlyRequestedClaimsDisclosed
Wallet only disclosed claims that were requested in the DCQL query
|
||||
|
||||||
| Verify key binding JWT |
| 2026-11-09 17:43:14 | SUCCESS |
ValidateSdJwtKeyBindingSignature
SD-JWT key binding jwt signature validated
|
||
|
||||
| 2026-11-09 17:43:14 | SUCCESS |
CheckTypInBindingJwt
typ in the binding jwt is kb+jwt
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
CheckForUnexpectedParametersInBindingJwtHeader
Binding JWT header contains only expected parameters
|
||
|
||||
| 2026-11-09 17:43:14 | SUCCESS |
CheckIatInBindingJwt
Binding JWT iat passed validation checks
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
CheckAudInBindingJwt
aud in the binding jwt is the client_id
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
CheckNonceInBindingJwt
nonce in response correctly returned
|
||
|
||||
| 2026-11-09 17:43:14 | SUCCESS |
ValidateSdJwtKbSdHash
sd_hash in the kb-jwt does matches the one calculated from the presented SD-JWT
|
||||||||
|
||||||||||
| 2026-11-09 17:43:14 | SUCCESS |
CheckForUnexpectedClaimsInBindingJwt
Binding JWT header contains only expected parameters
|
||
|
||||
| 2026-11-09 17:43:14 |
SUCCESS
|
CreateEmptyDirectPostResponse
Created empty direct_post_response
|
|
|
||
| 2026-11-09 17:43:14 |
|
CreateRandomCodeVerifier
Created code_verifier value
|
||
|
||||
| 2026-11-09 17:43:14 |
SUCCESS
|
AddRedirectUriToDirectPostResponse
Added redirect_uri containing code_verifier in fragment to direct_post_response
|
|
|
||
| 2026-11-09 17:43:14 |
|
oid4vp-1final-wallet-alternate-happy-flow
The response_uri is returning 'redirect_uri', so the wallet should send the user to that redirect_uri next
|
|
|
||
| 2026-11-09 17:43:14 |
OUTGOING
|
oid4vp-1final-wallet-alternate-happy-flow
Response to HTTP request to test instance WqwZvDLqu6wJnBe
|
||||||||
|
||||||||||
| 2026-11-09 17:43:14 |
INCOMING
|
oid4vp-1final-wallet-alternate-happy-flow
Incoming HTTP request to /test/a/siros-wallet-vp-test/callback
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| 2026-11-09 17:43:14 |
SUCCESS
|
EnsureIncomingTls12WithSecureCipherOrTls13
Found TLS 1.3 connection
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
EnsureIncomingTls13
TLS 1.3 in use
|
|
|
||
| 2026-11-09 17:43:14 |
SUCCESS
|
CreateRandomImplicitSubmitUrl
Created random implicit submission URL
|
||
|
||||
| 2026-11-09 17:43:14 |
OUTGOING
|
oid4vp-1final-wallet-alternate-happy-flow
Response to HTTP request to test instance WqwZvDLqu6wJnBe
|
||||
|
||||||
| 2026-11-09 17:43:14 |
INCOMING
|
oid4vp-1final-wallet-alternate-happy-flow
Incoming HTTP request to /test/a/siros-wallet-vp-test/implicit/Zydp10sADBgy76dprNA3
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| 2026-11-09 17:43:14 |
SUCCESS
|
EnsureIncomingTls12WithSecureCipherOrTls13
Found TLS 1.3 connection
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
EnsureIncomingTls13
TLS 1.3 in use
|
|
|
||
| 2026-11-09 17:43:14 |
OUTGOING
|
oid4vp-1final-wallet-alternate-happy-flow
Response to HTTP request to test instance WqwZvDLqu6wJnBe
|
||||||||
|
||||||||||
| 2026-11-09 17:43:14 |
|
ExtractImplicitHashToCallbackResponse
Extracted response from URL fragment
|
||
|
||||
| 2026-11-09 17:43:14 |
SUCCESS
|
ExtractImplicitHashToCallbackResponse
Extracted the hash values
|
||
|
||||
| 2026-11-09 17:43:14 |
REDIRECT-IN
|
oid4vp-1final-wallet-alternate-happy-flow
Authorization endpoint response captured
|
||||||||||
|
||||||||||||
| Verify redirect_uri called matches the one from the response_uri response |
| 2026-11-09 17:43:14 |
SUCCESS
|
CheckCallbackHttpMethodIsGet
HTTP method used at redirect_uri is 'GET'
|
|
|
||
| 2026-11-09 17:43:14 |
SUCCESS
|
CheckUrlQueryIsEmpty
URL query passed to redirect_uri is empty
|
|
|
||
| 2026-11-09 17:43:14 | SUCCESS |
CheckUrlFragmentContainsCodeVerifier
URL fragment passed to redirect_uri matches expected one
|
||
|
||||
| 2026-11-09 17:43:14 |
FINISHED
|
oid4vp-1final-wallet-alternate-happy-flow
Test has run to completion
|
||
|
||||
| 2026-11-09 17:43:22 |
|
TEST-RUNNER
Alias has now been claimed by another test
|
||||
|
||||||