| Test Name | oid4vp-1final-wallet-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.jwt |
| Test ID | eoUqa1sL4CyLbrb https://localhost.emobix.co.uk:8443/log-detail.html?public=true&log=eoUqa1sL4CyLbrb |
| Created | 2026-11-12T17:19:36.802901588Z |
| Description | OID4VP wallet conformance test for SIROS wallet |
| Test Version | 5.3.4 |
| Test Owner | leifj |
| Plan ID | fAvisKn71RT6A https://localhost.emobix.co.uk:8443/plan-detail.html?public=true&plan=fAvisKn71RT6A |
| Exported From | https://localhost.emobix.co.uk:8443 |
| Exported By | leifj |
| Suite Version | 5.3.4 |
| Exported | 2026-11-12 17:23:07 (UTC) |
| Status: FINISHED Result: PASSED |
| SUCCESS 70 FAILURE 0 WARNING 0 REVIEW 0 INFO 13 |
| 2026-11-12 17:19:36 |
INFO
|
TEST-RUNNER
Test instance eoUqa1sL4CyLbrb created
|
||||||||||||||||
|
||||||||||||||||||
| 2026-11-12 17:19:36 |
|
CreateDirectPostResponseUri
Created response URI
|
||
|
||||
| 2026-11-12 17:19:36 |
|
SetClientIdToResponseUriHostnameIfUnset
client_id is already set, not setting it to our hostname
|
||
|
||||
| 2026-11-12 17:19:36 |
SUCCESS
|
GetStaticServerConfiguration
Found a static server object
|
||
|
||||
| 2026-11-12 17:19:36 |
SUCCESS
|
CheckAuthorizationEndpointIsValidUri
authorization_endpoint has a valid URI scheme
|
||
|
||||
| 2026-11-12 17:19:36 |
SUCCESS
|
GetStaticClientConfiguration
Found a static client object
|
||||||
|
||||||||
| 2026-11-12 17:19:36 |
SUCCESS
|
OID4VPSetClientIdToIncludeClientIdScheme
Set client id to include the client id scheme
|
||
|
||||
| 2026-11-12 17:19:36 | 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-12 17:19:36 |
SUCCESS
|
CreateClientEncryptionKeyIfMissing
No client encryption key provided in client jwks in configuration so created an encryption key
|
||
|
||||
| 2026-11-12 17:19:36 |
SUCCESS
|
ExtractJWKsFromStaticClientConfiguration
Extracted client JWK
|
||||
|
||||||
| 2026-11-12 17:19:36 | SUCCESS |
CheckDistinctKeyIdValueInClientJWKs
Distinct 'kid' value in all keys of client_jwks
|
||
|
||||
| 2026-11-12 17:19:36 |
SUCCESS
|
CheckIfClientIdInX509CertSanDns
x509_san_dns client_id is present in the x5c certificate SAN in the client_jwks x5c parameter
|
||||||||||
|
||||||||||||
| 2026-11-12 17:19:36 |
|
RegisterRical
No RICAL configured, skipping RICAL-based verifier trust checks
|
|
|
||
| 2026-11-12 17:19:36 | INFO |
CallRicalEndpoint
Skipped evaluation due to missing required string: rical_url
|
||
|
||||
| 2026-11-12 17:19:36 | INFO |
ParseRical
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-12 17:19:36 |
INFO
|
DumpRicalCborDiagnostics
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-12 17:19:36 | INFO |
ValidateRicalSignature
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-12 17:19:36 | INFO |
ValidateRicalSignerCertificate
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-12 17:19:36 | INFO |
ValidateRicalStructure
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-12 17:19:36 | INFO |
ValidateConfiguredClientCertificatesAgainstRical
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-12 17:19:36 |
|
RegisterCredentialTrustAnchor
No credential trust anchor configured, skipping registration
|
|
|
||
| 2026-11-12 17:19:36 |
|
RegisterStatusListTrustAnchor
No status list trust anchor configured, skipping registration
|
|
|
||
| 2026-11-12 17:19:36 | SUCCESS |
CheckDiscEndpointRequestUriParameterSupported
request_uri_parameter_supported has correct value
|
||
|
||||
| 2026-11-12 17:19:36 |
CreateRandomRequestUriWithoutFragment
Created random URL for request_uri
|
|||
|
||||
| 2026-11-12 17:19:36 |
|
oid4vp-1final-wallet-happy-flow
Setup Done
|
|
|
||
| Make request to wallet |
| 2026-11-12 17:19:36 |
SUCCESS
|
CreateEmptyAuthorizationEndpointRequest
Created empty authorization endpoint request
|
|
|
||
| 2026-11-12 17:19:36 |
SUCCESS
|
AddClientIdToAuthorizationEndpointRequest
Added client_id of 'x509_san_dns:conformance.example.com' to authorization endpoint request
|
||
|
||||
| 2026-11-12 17:19:36 |
|
CreateRandomStateValue
Not adding state, it's optional
|
|
|
||
| 2026-11-12 17:19:36 |
|
AddStateToAuthorizationEndpointRequest
Not adding state, it's optional
|
|
|
||
| 2026-11-12 17:19:36 |
SUCCESS
|
AddResponseUriToAuthorizationEndpointRequest
Added response_uri parameter to request
|
||||
|
||||||
| 2026-11-12 17:19:36 |
INFO
|
LoadBuiltInDcqlQuery
Skipped evaluation due to missing required string: dcql_builtin_resource
|
||
|
||||
| 2026-11-12 17:19:36 |
SUCCESS
|
ExtractDCQLQueryFromClientConfiguration
Extracted dcql from client configuration
|
||
|
||||
| 2026-11-12 17:19:36 | SUCCESS |
ValidateDCQLQuery
DCQL query input is valid
|
||||
|
||||||
| 2026-11-12 17:19:36 |
SUCCESS
|
CheckDCQLQueryCredentialFormatMatchesTestConfiguration
DCQL query credential format matches test configuration
|
||||
|
||||||
| 2026-11-12 17:19:36 | SUCCESS |
CheckForUnexpectedParametersInDcqlQuery
No unknown properties were found in the DCQL query
|
||||
|
||||||
| 2026-11-12 17:19:36 | SUCCESS |
CheckForNonSelectivelyDisclosableClaimsInDcqlQuery
DCQL query does not request any SD-JWT VC claims that cannot be selectively disclosed
|
|
|
||
| 2026-11-12 17:19:36 | SUCCESS |
CheckForUnreferencedClaimsInDcqlQuery
The DCQL query does not contain claims entries unreferenced by claim_sets
|
|
|
||
| 2026-11-12 17:19:36 |
SUCCESS
|
AddDcqlToAuthorizationEndpointRequest
Added dcql_query parameter to request
|
||||||
|
||||||||
| 2026-11-12 17:19:36 |
INFO
|
ExtractVerifierInfoFromClientConfiguration
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-12 17:19:36 | INFO |
ValidateVerifierInfo
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-12 17:19:36 | INFO |
CheckForUnexpectedParametersInVerifierInfo
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-12 17:19:36 |
INFO
|
AddVerifierInfoToAuthorizationEndpointRequest
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-12 17:19:36 |
|
CreateRandomNonceValue
Created nonce value
|
||||
|
||||||
| 2026-11-12 17:19:36 |
SUCCESS
|
AddNonceToAuthorizationEndpointRequest
Added nonce parameter to request
|
||||||||
|
||||||||||
| 2026-11-12 17:19:36 |
|
AddVP1FinalSdJwtClientMetadataToAuthorizationRequest
Added client_metadata to authorization endpoint request
|
||
|
||||
| 2026-11-12 17:19:36 |
|
AddVP1FinalEncryptionParametersToClientMetadata
Added encryption key to client_metadata in authorization endpoint request
|
||
|
||||
| 2026-11-12 17:19:36 |
SUCCESS
|
SetAuthorizationEndpointRequestResponseTypeToVpToken
Added response_type parameter to request
|
||||||||||||
|
||||||||||||||
| 2026-11-12 17:19:36 |
|
SetAuthorizationEndpointRequestResponseMode
Added response_mode parameter to request
|
||||||||||||||
|
||||||||||||||||
| 2026-11-12 17:19:36 |
SUCCESS
|
ConvertAuthorizationEndpointRequestToRequestObject
Created request object claims
|
||
|
||||
| 2026-11-12 17:19:36 |
|
AddSelfIssuedMeV2AudToRequestObject
Added SIOPv2 aud to request object claims
|
||
|
||||
| 2026-11-12 17:19:36 |
SUCCESS
|
BuildRequestObjectByReferenceRedirectToAuthorizationEndpointWithoutDuplicates
Sending to authorization endpoint
|
||
|
||||
| 2026-11-12 17:19:36 |
REDIRECT
|
oid4vp-1final-wallet-happy-flow
Redirecting to authorization endpoint
|
||||
|
||||||
| 2026-11-12 17:19:36 |
|
oid4vp-1final-wallet-happy-flow
The wallet should be opened via the QR code / proceed with test button, and should then fetch the request_uri
|
|
|
||
| 2026-11-12 17:19:37 |
INCOMING
|
oid4vp-1final-wallet-happy-flow
Incoming HTTP request to /test/a/siros-wallet-vp-test/requesturi/D2hMXNSZOE3n0mYG5TWHefc4ZOIjUrU5PT8ThQYRL8Jj3XAriFY729wGI71scB6J
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| 2026-11-12 17:19:37 |
SUCCESS
|
EnsureIncomingTls12WithSecureCipherOrTls13
Found TLS 1.3 connection
|
|
|
||
| 2026-11-12 17:19:37 | SUCCESS |
EnsureIncomingTls13
TLS 1.3 in use
|
|
|
||
| 2026-11-12 17:19:37 | SUCCESS |
EnsureIncomingRequestMethodIsGet
Client correctly used http GET method
|
|
|
||
| 2026-11-12 17:19:37 |
SUCCESS
|
SignRequestObjectIncludeX5cHeader
Signed the request object
|
||||||||
|
||||||||||
| 2026-11-12 17:19:37 |
|
oid4vp-1final-wallet-happy-flow
Wallet has retrieved request_uri - waiting for it to call the response_uri
|
|
|
||
| 2026-11-12 17:19:37 |
|
oid4vp-1final-wallet-happy-flow
Returned request object to wallet - waiting for it to call the response_uri
|
|
|
||
| 2026-11-12 17:19:37 |
OUTGOING
|
oid4vp-1final-wallet-happy-flow
Response to HTTP request to test instance eoUqa1sL4CyLbrb
|
||||||||
|
||||||||||
| 2026-11-12 17:19:38 |
INCOMING
|
oid4vp-1final-wallet-happy-flow
Incoming HTTP request to /test/a/siros-wallet-vp-test/responseuri
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| 2026-11-12 17:19:38 |
SUCCESS
|
EnsureIncomingTls12WithSecureCipherOrTls13
Found TLS 1.3 connection
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
EnsureIncomingTls13
TLS 1.3 in use
|
|
|
||
| Direct post endpoint |
| 2026-11-12 17:19:38 |
SUCCESS
|
EnsureIncomingRequestMethodIsPost
Client correctly used http POST method
|
|
|
||
| 2026-11-12 17:19:38 |
SUCCESS
|
EnsureIncomingRequestContentTypeIsFormUrlEncoded
Incoming content-type header has the expected value
|
||||
|
||||||
| 2026-11-12 17:19:38 |
SUCCESS
|
EnsureIncomingUrlQueryIsEmpty
URL query from server was correctly empty, no query parameters detected
|
|
|
||
| 2026-11-12 17:19:38 |
SUCCESS
|
ExtractAuthorizationEndpointResponseFromFormBody
Extracted the authorization response
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateAuthResponseContainsOnlyResponse
Incoming response contains only expected 'response' parameter
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
DecryptResponse
Found and decrypted the authorization response
|
||||||
|
||||||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateJWEHeaderKidIsInClientMetadataJWKs
JWE header kid references a key from client_metadata.jwks
|
||
|
||||
| 2026-11-12 17:19:38 |
SUCCESS
|
ValidateJWEHeaderCtyJson
JWE header cty value is 'json'
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateJWEHeaderAlgMatchesRequestedAlgorithm
JWE header alg matches the alg from the encryption key in client_metadata.jwks
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateJWEHeaderEncMatchesRequestedAlgorithm
JWE header enc matches one of the requested algorithms
|
||||
|
||||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateJWEBodyDoesNotIncludeIssExpAud
The JWE body does not does not contain iss/exp/aud claims
|
|
|
||
| 2026-11-12 17:19:38 |
SUCCESS
|
CheckIfAuthorizationEndpointError
No error from authorization endpoint
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
ExtractVP1FinalVpTokenDCQL
vp_token parsed
|
||||
|
||||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateVpTokenCredentialIdMatchesDcqlQuery
VP token credential_id matches a credential entry in the DCQL query
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateVpTokenPresentationCountMatchesDcqlQuery
Each vp_token entry contains a number of Presentations consistent with the Credential Query's 'multiple' setting
|
||
|
||||
| 2026-11-12 17:19:38 |
SUCCESS
|
CheckNoPresentationSubmissionParameter
presentation_submission parameter is not present, as expected.
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
CheckForUnexpectedParametersInVpAuthorizationResponse
authorization response includes only expected parameters
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
CheckStateInAuthorizationResponse
No state in response to check
|
|
|
||
| 2026-11-12 17:19:38 |
SUCCESS
|
ParseCredentialAsSdJwtKb
Parsed SDJWT
|
||||||||||
|
||||||||||||
| Verify credential JWT |
| 2026-11-12 17:19:38 | SUCCESS |
ValidateCredentialJWTIat
'iat' has a sensible value
|
|
|
||
| 2026-11-12 17:19:38 |
ValidateCredentialJWTNbf
'nbf' is not present
|
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateCredentialJWTExp
Credential 'exp' passed validation checks
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateCredentialJWTHeaderTyp
'typ' header is present
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateCredentialJWTVct
'vct' claim is present
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateCredentialCnfJwkIsPublicKey
cnf.jwk is valid in SD-JWT credential
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
WarnIfUnexpectedFieldsInCredentialCnf
cnf claim contains only expected fields
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
WarnIfUnknownFieldsInCredentialCnfJwk
cnf.jwk contains only known fields
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateSdJwtDisclosureSaltsAreUnique
All 2 disclosures have unique salts
|
|
|
||
| 2026-11-12 17:19:38 |
SUCCESS
|
ClearStatusListTokenEndpointResponse
Cleared any previous status list validation state
|
|
|
||
| 2026-11-12 17:19:38 |
FetchStatusListToken
No status claim found, skipping status list check
|
|
|
|
||
| 2026-11-12 17:19:38 |
ExtractStatusListTokenFromStatusListTokenEndpointResponse
No status list token endpoint response recorded, skipping JWT extraction
|
|
|
|
||
| 2026-11-12 17:19:38 |
VerifyStatusListTokenSignatureUsingEmbeddedJwk
No parsed status list token in environment, skipping signature verification
|
|
|
|
||
| 2026-11-12 17:19:38 |
CheckCredentialStatus
No status list token in environment, skipping status check
|
|
|
|
||
| 2026-11-12 17:19:38 |
EnsureContentTypeStatusListJwt
No status list token endpoint response recorded, skipping content-type check
|
|
|
|
||
| Verify credential matches DCQL query |
| 2026-11-12 17:19:38 | SUCCESS |
ValidateCredentialVctMatchesDcqlQuery
Credential vct matches DCQL query
|
||||
|
||||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateDisclosedClaimsMatchDcqlQuery
All DCQL-requested claims are present in the disclosed credential
|
||||
|
||||||
| 2026-11-12 17:19:38 |
EnsureMostPreferredDcqlClaimSetReturned
DCQL credential entry has fewer than two claim_sets options, so there is no preference order to check
|
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
CheckOnlyRequestedClaimsDisclosed
Wallet only disclosed claims that were requested in the DCQL query
|
||||
|
||||||
| Verify key binding JWT |
| 2026-11-12 17:19:38 | SUCCESS |
ValidateSdJwtKeyBindingSignature
SD-JWT key binding jwt signature validated
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
CheckTypInBindingJwt
typ in the binding jwt is kb+jwt
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
CheckForUnexpectedParametersInBindingJwtHeader
Binding JWT header contains only expected parameters
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
CheckIatInBindingJwt
Binding JWT iat passed validation checks
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
CheckAudInBindingJwt
aud in the binding jwt is the client_id
|
|
|
||
| 2026-11-12 17:19:38 | SUCCESS |
CheckNonceInBindingJwt
nonce in response correctly returned
|
||
|
||||
| 2026-11-12 17:19:38 | SUCCESS |
ValidateSdJwtKbSdHash
sd_hash in the kb-jwt does matches the one calculated from the presented SD-JWT
|
||||||||
|
||||||||||
| 2026-11-12 17:19:38 | SUCCESS |
CheckForUnexpectedClaimsInBindingJwt
Binding JWT header contains only expected parameters
|
||
|
||||
| 2026-11-12 17:19:38 |
SUCCESS
|
CreateEmptyDirectPostResponse
Created empty direct_post_response
|
|
|
||
| 2026-11-12 17:19:38 |
OUTGOING
|
oid4vp-1final-wallet-happy-flow
Response to HTTP request to test instance eoUqa1sL4CyLbrb
|
||||||||
|
||||||||||
| 2026-11-12 17:19:38 |
FINISHED
|
oid4vp-1final-wallet-happy-flow
Test has run to completion
|
||
|
||||
| 2026-11-12 17:19:53 |
|
TEST-RUNNER
Alias has now been claimed by another test
|
||||
|
||||||