| Test Name | oid4vp-1final-wallet-alternate-happy-flow |
|---|---|
| Variant | credential_type=eudi_pid, credential_format=sd_jwt_vc, client_id_prefix=x509_hash, request_method=request_uri_multisigned, vp_profile=haip, response_mode=dc_api.jwt |
| Test ID | k2bewfAfXTXXUbl https://localhost.emobix.co.uk:8443/log-detail.html?public=true&log=k2bewfAfXTXXUbl |
| Created | 2026-11-10T00:09:01.727972415Z |
| Description | OID4VP wallet conformance test for SIROS wallet |
| Test Version | 5.3.4 |
| Test Owner | leifj |
| Plan ID | DVGvjpRfRL20v https://localhost.emobix.co.uk:8443/plan-detail.html?public=true&plan=DVGvjpRfRL20v |
| Exported From | https://localhost.emobix.co.uk:8443 |
| Exported By | leifj |
| Suite Version | 5.3.4 |
| Exported | 2026-11-10 00:13:33 (UTC) |
| Status: FINISHED Result: PASSED |
| SUCCESS 70 FAILURE 0 WARNING 0 REVIEW 0 INFO 13 |
| 2026-11-10 00:09:01 |
INFO
|
TEST-RUNNER
Test instance k2bewfAfXTXXUbl created
|
||||||||||||||||
|
||||||||||||||||||
| 2026-11-10 00:09:01 |
SetWebOrigin
Set origin from conformance suite base url
|
|||||
|
||||||
| 2026-11-10 00:09:01 |
|
SetClientIdToX509Hash
Set client_id to x509 hash
|
||||
|
||||||
| 2026-11-10 00:09:01 |
SUCCESS
|
GetStaticServerConfiguration
Found a static server object
|
||
|
||||
| 2026-11-10 00:09:01 |
SUCCESS
|
GetStaticClientConfiguration
Found a static client object
|
||||||
|
||||||||
| 2026-11-10 00:09:01 |
SUCCESS
|
OID4VPSetClientIdToIncludeClientIdScheme
Set client id to include the client id scheme
|
||
|
||||
| 2026-11-10 00:09:01 | 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-10 00:09:01 |
SUCCESS
|
CreateClientEncryptionKeyIfMissing
No client encryption key provided in client jwks in configuration so created an encryption key
|
||
|
||||
| 2026-11-10 00:09:01 |
SUCCESS
|
ExtractJWKsFromStaticClientConfiguration
Extracted client JWK
|
||||
|
||||||
| 2026-11-10 00:09:01 | SUCCESS |
CheckDistinctKeyIdValueInClientJWKs
Distinct 'kid' value in all keys of client_jwks
|
||
|
||||
| 2026-11-10 00:09:01 |
SUCCESS
|
ExtractSecondJWKsFromClientConfiguration
Extracted client JWK
|
||||
|
||||||
| 2026-11-10 00:09:01 |
SUCCESS
|
SetClient2IdToX509Hash
Set second client_id to x509 hash
|
||||
|
||||||
| 2026-11-10 00:09:01 |
|
RegisterRical
No RICAL configured, skipping RICAL-based verifier trust checks
|
|
|
||
| 2026-11-10 00:09:01 | INFO |
CallRicalEndpoint
Skipped evaluation due to missing required string: rical_url
|
||
|
||||
| 2026-11-10 00:09:01 | INFO |
ParseRical
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-10 00:09:01 |
INFO
|
DumpRicalCborDiagnostics
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-10 00:09:01 | INFO |
ValidateRicalSignature
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-10 00:09:01 | INFO |
ValidateRicalSignerCertificate
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-10 00:09:01 | INFO |
ValidateRicalStructure
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-10 00:09:01 | INFO |
ValidateConfiguredClientCertificatesAgainstRical
Skipped evaluation due to missing required object: rical
|
||||
|
||||||
| 2026-11-10 00:09:01 |
|
RegisterCredentialTrustAnchor
Registered credential trust anchor certificate
|
||
|
||||
| 2026-11-10 00:09:01 |
|
RegisterStatusListTrustAnchor
Registered status list trust anchor certificate
|
||
|
||||
| 2026-11-10 00:09:01 | SUCCESS |
EnsureCredentialTrustAnchorConfigured
Credential Trust Anchor is configured
|
|
|
||
| 2026-11-10 00:09:01 | SUCCESS |
EnsureStatusListTrustAnchorConfigured
Status List Trust Anchor is configured
|
|
|
||
| 2026-11-10 00:09:01 | SUCCESS |
CheckDiscEndpointRequestUriParameterSupported
request_uri_parameter_supported has correct value
|
||
|
||||
| 2026-11-10 00:09:01 |
CreateRandomRequestUriWithoutFragment
Created random URL for request_uri
|
|||
|
||||
| 2026-11-10 00:09:01 |
SUCCESS
|
CreateRedirectUri
Created redirect URI
|
||
|
||||
| 2026-11-10 00:09:01 |
|
oid4vp-1final-wallet-alternate-happy-flow
Setup Done
|
|
|
||
| Make request to wallet |
| 2026-11-10 00:09:01 |
SUCCESS
|
CreateEmptyAuthorizationEndpointRequest
Created empty authorization endpoint request
|
|
|
||
| 2026-11-10 00:09:01 | SUCCESS |
AddExpectedOriginsToAuthorizationEndpointRequest
Added expected_origins to request
|
||
|
||||
| 2026-11-10 00:09:01 |
SUCCESS
|
LoadBuiltInDcqlQuery
Using the conformance suite's built-in DCQL query for the selected credential type; select the 'custom' credential type if you need to supply your own query
|
||||
|
||||||
| 2026-11-10 00:09:01 |
INFO
|
ExtractDCQLQueryFromClientConfiguration
Skipped evaluation because string is present: dcql_builtin_resource
|
||
|
||||
| 2026-11-10 00:09:01 | SUCCESS |
ValidateDCQLQuery
DCQL query input is valid
|
||||
|
||||||
| 2026-11-10 00:09:01 |
SUCCESS
|
CheckDCQLQueryCredentialFormatMatchesTestConfiguration
DCQL query credential format matches test configuration
|
||||
|
||||||
| 2026-11-10 00:09:01 | SUCCESS |
CheckForUnexpectedParametersInDcqlQuery
No unknown properties were found in the DCQL query
|
||||
|
||||||
| 2026-11-10 00:09:01 | SUCCESS |
CheckForNonSelectivelyDisclosableClaimsInDcqlQuery
DCQL query does not request any SD-JWT VC claims that cannot be selectively disclosed
|
|
|
||
| 2026-11-10 00:09:01 | SUCCESS |
CheckForUnreferencedClaimsInDcqlQuery
The DCQL query does not contain claims entries unreferenced by claim_sets
|
|
|
||
| 2026-11-10 00:09:01 |
SUCCESS
|
AddDcqlToAuthorizationEndpointRequest
Added dcql_query parameter to request
|
||||
|
||||||
| 2026-11-10 00:09:01 |
INFO
|
ExtractVerifierInfoFromClientConfiguration
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-10 00:09:01 | INFO |
ValidateVerifierInfo
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-10 00:09:01 | INFO |
CheckForUnexpectedParametersInVerifierInfo
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-10 00:09:01 |
INFO
|
AddVerifierInfoToAuthorizationEndpointRequest
Skipped evaluation due to missing required element: client verifier_info
|
||||||
|
||||||||
| 2026-11-10 00:09:01 |
|
CreateRandomNonceValue
Created nonce value
|
||||
|
||||||
| 2026-11-10 00:09:01 |
SUCCESS
|
AddNonceToAuthorizationEndpointRequest
Added nonce parameter to request
|
||||||
|
||||||||
| 2026-11-10 00:09:01 |
|
AddVP1FinalSdJwtClientMetadataToAuthorizationRequest
Added client_metadata to authorization endpoint request
|
||
|
||||
| 2026-11-10 00:09:01 |
|
AddVP1FinalEncryptionParametersToClientMetadataWithoutUseEnc
Added encryption key to client_metadata in authorization endpoint request
|
||
|
||||
| 2026-11-10 00:09:01 |
SUCCESS
|
SetAuthorizationEndpointRequestResponseTypeToVpToken
Added response_type parameter to request
|
||||||||||
|
||||||||||||
| 2026-11-10 00:09:01 |
|
SetAuthorizationEndpointRequestResponseMode
Added response_mode parameter to request
|
||||||||||||
|
||||||||||||||
| 2026-11-10 00:09:01 |
SUCCESS
|
AddRandomParameterToAuthorizationEndpointRequest
Added a authorization_endpoint_request. As per spec, 'The authorization server MUST ignore unrecognized request parameters'.
|
||
|
||||
| 2026-11-10 00:09:01 |
SUCCESS
|
ConvertAuthorizationEndpointRequestToRequestObject
Created request object claims
|
||
|
||||
| 2026-11-10 00:09:01 |
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-10 00:09:01 |
|
AddSelfIssuedMeV2AudToRequestObject
Added SIOPv2 aud to request object claims
|
||
|
||||
| 2026-11-10 00:09:01 |
|
BuildRequestObjectByReferenceRedirectToAuthorizationEndpointWithoutDuplicatesReorderedParams
No redirected required for Browser API
|
|
|
||
| 2026-11-10 00:09:01 | SUCCESS |
CreateMultiSignedRequestObject
Created multi-signed request object with JWS JSON Serialization
|
||
|
||||
| 2026-11-10 00:09:01 |
SUCCESS
|
CreateRandomBrowserApiSubmitUrl
Created random Browser API submission URL
|
||
|
||||
| 2026-11-10 00:09:01 |
|
BuildVP1FinalBrowserDCAPIRequestMultiSigned
Created Browser API request for multi-signed
|
||
|
||||
| 2026-11-10 00:09:01 |
|
oid4vp-1final-wallet-alternate-happy-flow
Calling browser API
|
||
|
||||
| 2026-11-10 00:09:01 |
|
oid4vp-1final-wallet-alternate-happy-flow
The wallet should be opened using the Browser API button, and should then parse the request and return the results via the API
|
|
|
||
| 2026-11-10 00:09:10 |
INCOMING
|
oid4vp-1final-wallet-alternate-happy-flow
Incoming HTTP request to /test/a/siros-wallet-vp-test/browser_api/akNoCSu6Od2B2YldpKre
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| 2026-11-10 00:09:10 |
SUCCESS
|
EnsureIncomingTls12WithSecureCipherOrTls13
Found TLS 1.3 connection
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
EnsureIncomingTls13
TLS 1.3 in use
|
|
|
||
| 2026-11-10 00:09:10 |
OUTGOING
|
oid4vp-1final-wallet-alternate-happy-flow
Response to HTTP request to test instance k2bewfAfXTXXUbl
|
||||||||
|
||||||||||
| Process Browser API result |
| 2026-11-10 00:09:10 |
SUCCESS
|
ExtractVP1FinalBrowserApiResponse
Browser API result captured and successfully parsed
|
||||
|
||||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateAuthResponseContainsOnlyResponse
Incoming response contains only expected 'response' parameter
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
DecryptResponse
Found and decrypted the authorization response
|
||||||
|
||||||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateJWEHeaderKidIsInClientMetadataJWKs
JWE header kid references a key from client_metadata.jwks
|
||
|
||||
| 2026-11-10 00:09:10 |
SUCCESS
|
ValidateJWEHeaderCtyJson
JWE header cty value is 'json'
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateJWEHeaderAlgMatchesRequestedAlgorithm
JWE header alg matches the alg from the encryption key in client_metadata.jwks
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateJWEHeaderEncMatchesRequestedAlgorithm
JWE header enc matches one of the requested algorithms
|
||||
|
||||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateJWEBodyDoesNotIncludeIssExpAud
The JWE body does not does not contain iss/exp/aud claims
|
|
|
||
| 2026-11-10 00:09:10 |
SUCCESS
|
CheckIfAuthorizationEndpointError
No error from authorization endpoint
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
ExtractVP1FinalVpTokenDCQL
vp_token parsed
|
||||
|
||||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateVpTokenCredentialIdMatchesDcqlQuery
VP token credential_id matches a credential entry in the DCQL query
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateVpTokenPresentationCountMatchesDcqlQuery
Each vp_token entry contains a number of Presentations consistent with the Credential Query's 'multiple' setting
|
||
|
||||
| 2026-11-10 00:09:10 |
SUCCESS
|
CheckNoPresentationSubmissionParameter
presentation_submission parameter is not present, as expected.
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
CheckForUnexpectedParametersInVpAuthorizationResponse
authorization response includes only expected parameters
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
CheckStateInAuthorizationResponse
No state in response to check
|
|
|
||
| 2026-11-10 00:09:10 |
SUCCESS
|
ParseCredentialAsSdJwtKb
Parsed SDJWT
|
||||||||||
|
||||||||||||
| Verify credential JWT |
| 2026-11-10 00:09:10 | SUCCESS |
ValidateCredentialJWTIat
'iat' has a sensible value
|
|
|
||
| 2026-11-10 00:09:10 |
ValidateCredentialJWTNbf
'nbf' is not present
|
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateCredentialJWTExp
Credential 'exp' passed validation checks
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateCredentialJWTHeaderTyp
'typ' header is present
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateCredentialJWTVct
'vct' claim is present
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateCredentialCnfJwkIsPublicKey
cnf.jwk is valid in SD-JWT credential
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
WarnIfUnexpectedFieldsInCredentialCnf
cnf claim contains only expected fields
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
WarnIfUnknownFieldsInCredentialCnfJwk
cnf.jwk contains only known fields
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateSdJwtDisclosureSaltsAreUnique
All 2 disclosures have unique salts
|
|
|
||
| 2026-11-10 00:09:10 |
SUCCESS
|
ClearStatusListTokenEndpointResponse
Cleared any previous status list validation state
|
|
|
||
| 2026-11-10 00:09:10 |
FetchStatusListToken
No status claim found, skipping status list check
|
|
|
|
||
| 2026-11-10 00:09:10 |
ExtractStatusListTokenFromStatusListTokenEndpointResponse
No status list token endpoint response recorded, skipping JWT extraction
|
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateSdJwtCredentialX5cCertificateChain
Validated x5c certificate chain and credential signature
|
||||||
|
||||||||
| 2026-11-10 00:09:10 |
ValidateStatusListTokenX5cCertificateChain
No parsed status list token in environment, skipping x5c validation
|
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateCredentialValidityInfoIsPresent
Found credential validity period limited via claims exp claims
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
WarnIfSdJwtDigestAlgorithmNotSha256
The credential's disclosure digests use sha-256, which all HAIP entities must support
|
||
|
||||
| 2026-11-10 00:09:10 |
CheckCredentialStatus
No status list token in environment, skipping status check
|
|
|
|
||
| 2026-11-10 00:09:10 |
EnsureContentTypeStatusListJwt
No status list token endpoint response recorded, skipping content-type check
|
|
|
|
||
| Verify credential matches DCQL query |
| 2026-11-10 00:09:10 | SUCCESS |
ValidateCredentialVctMatchesDcqlQuery
Credential vct matches DCQL query
|
||||
|
||||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateDisclosedClaimsMatchDcqlQuery
All DCQL-requested claims are present in the disclosed credential
|
||||
|
||||||
| 2026-11-10 00:09:10 |
EnsureMostPreferredDcqlClaimSetReturned
DCQL credential entry has fewer than two claim_sets options, so there is no preference order to check
|
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
CheckOnlyRequestedClaimsDisclosed
Wallet only disclosed claims that were requested in the DCQL query
|
||||
|
||||||
| Verify key binding JWT |
| 2026-11-10 00:09:10 | SUCCESS |
ValidateSdJwtKeyBindingSignature
SD-JWT key binding jwt signature validated
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
CheckTypInBindingJwt
typ in the binding jwt is kb+jwt
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
CheckForUnexpectedParametersInBindingJwtHeader
Binding JWT header contains only expected parameters
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
CheckIatInBindingJwt
Binding JWT iat passed validation checks
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
CheckAudInBindingJwtDcApi
aud in the binding jwt is the origin prefixed with 'origin:'
|
|
|
||
| 2026-11-10 00:09:10 | SUCCESS |
CheckNonceInBindingJwt
nonce in response correctly returned
|
||
|
||||
| 2026-11-10 00:09:10 | SUCCESS |
ValidateSdJwtKbSdHash
sd_hash in the kb-jwt does matches the one calculated from the presented SD-JWT
|
||||||||
|
||||||||||
| 2026-11-10 00:09:10 | SUCCESS |
CheckForUnexpectedClaimsInBindingJwt
Binding JWT header contains only expected parameters
|
||
|
||||
| 2026-11-10 00:09:10 |
FINISHED
|
oid4vp-1final-wallet-alternate-happy-flow
Test has run to completion
|
||
|
||||
| 2026-11-10 00:09:11 |
|
TEST-RUNNER
Alias has now been claimed by another test
|
||||
|
||||||