16.4.1.3. Wallet Solution Test MatrixΒΆ
This section provides the set of test cases for verifying conformance of a Wallet Solution implementation to the technical rules defined in the IT-Wallet ecosystem. The test plan is based on the mandatory requirements (MUST statements) extracted from the following documents:
Wallet Solution
Wallet Instance Revocation
Wallet Attestation Issuance
Backup and Restore
Test Case ID |
Purpose |
Description |
Expected Result |
---|---|---|---|
WS-001 |
Wallet Initialization |
The Wallet Solution MUST ensure that each Wallet Instance is generated according to the specifications and includes a unique identifier, and cryptographic keys bound to a secure element. |
A compliant Wallet Instance is generated with correct identifiers and secure bindings. |
WS-002 |
User Interaction |
The Wallet Solution MUST request and obtain explicit User Consent during Wallet Instance initialization. |
The Wallet Instance is activated only after obtaining verifiable User Consent. |
WS-003 |
Security |
The Wallet Solution MUST store private keys within a Secure Hardware Element or equivalent secure storage. |
All private key materials are inaccessible from the operating system or any application outside the Wallet Solution. |
WS-004 |
Attestation |
The Wallet MUST be capable of generating and presenting a Wallet Attestation when required by Relying Parties or Issuers. |
Valid, verifiable Attestations are generated including integrity and origin proofs. |
WS-005 |
Attestation |
The Wallet MUST support processing Wallet Attestation Requests and generating appropriate responses in compliance with eIDAS. |
The Wallet correctly interprets and fulfills attestation requests including subject data and cryptographic signatures. |
WS-006 |
Remote Credential Presentation |
The Wallet Solution MUST implement both the proximity and remote presentation flow, ensuring Verifiable Credential selection, integrity, and User interaction. |
Verifiable Credential presentation is successful, correct, and under User control. |
WS-007 |
Credential Issuance |
The Wallet MUST support the Issuer flow for receiving and storing Verifiable Credentials. |
Credentials are securely stored and correctly parsed as per defined structure. |
WS-008 |
Revocation |
The Wallet MUST allow the User to trigger a Wallet Instance Revocation at any time. |
Revocation is executed and cryptographic material is securely deleted or rendered unusable. |
WS-009 |
Revocation |
Upon Wallet Instance Revocation, the Wallet Solution MUST notify the relevant backend systems to propagate revocation. |
Revocation status is reflected in all ecosystem components (e.g., Issuers, Verifiers). |
WS-010 |
Backup & Restore |
The Wallet MUST support encrypted Backup and Restore operations in compliance with privacy and integrity requirements. |
Backup is encrypted and tied to the User; Restore operation verifies integrity and User authenticity before recovery. |
WS-011 |
Backup & Restore |
The Wallet MUST manage backup encryption keys securely and derive them from User-controlled secrets or credentials. |
No unauthorized entity can decrypt backups; backups are rendered useless if tampered with. |
WS-012 |
Backup & Restore |
The Wallet MUST authenticate the User before allowing Restore. |
Successful Restore only occurs upon verified User authentication using approved methods (e.g., biometrics, PIN, cryptographic challenge). |
WS-013 |
Attestation |
The Wallet MUST detect expired Attestations and support refresh workflows. |
Expired Attestations are not used; refresh is triggered automatically or via User prompt. |
WS-014 |
Compliance |
All operations including Issuance, Presentation, Attestation, and Revocation MUST comply with the European standards. |
Auditable trace of compliant operations is maintained; no deviation from eIDAS 2.0 behavior is observed. |
WS-015 |
User Interaction |
The Wallet MUST operate under the principle of User control and data minimization. |
Only explicitly consented and required data is used and transmitted; all operations require explicit User actions. |
WS-016 |
Credential Presentation |
The Wallet MUST support offline Verifiable Credential presentation when allowed. |
Credentials are presented securely even in offline mode, with integrity and authenticity maintained. |
WS-017 |
Security |
The Wallet MUST ensure anti-replay protections during credential presentation. |
Each presentation is cryptographically unique and bound to the Verifier request. |
WS-018 |
Revocation |
The Wallet MUST log and make auditable the revocation process of Wallet Instances. |
Complete, tamper-evident logs are available for inspection upon request. |
WS-019 |
Security |
The Wallet MUST establish mutually authenticated and encrypted channels during all interactions. |
All messages are protected against interception, modification, or impersonation. |
WS-020 |
Security |
The Wallet MUST lock itself and/or revoke the Wallet Instance upon detection of tampering. |
Wallet becomes inoperable and revocation is triggered if tampering is confirmed. |
WS-021 |
Security |
The Wallet MUST perform Device Attestation using platform-specific mechanisms such as Play Integrity (Android) or DC App Attest (iOS) during Wallet Instance creation. |
Device Attestation is successful and results are included in the Wallet Attestation payload. |
WS-022 |
Attestation |
The Wallet Attestation MUST include a signature using the Wallet Binding Key, and the certificate chain MUST be verifiable to a trusted root. |
Signature is present, valid, and verifiable using the provided certificate chain. |
WS-023 |
Attestation |
The Wallet MUST include a Device Attestation result in the Wallet Attestation structure. |
A valid Device Attestation object (Play Integrity or DC App Attest result) is embedded in the Attestation. |
WS-024 |
Backup & Restore |
During Restore, the Wallet MUST validate the integrity of the encrypted backup file using an integrity check mechanism. |
The Wallet refuses to restore a tampered or corrupted backup file. |
WS-025 |
Revocation |
In case of Wallet Instance Revocation, the Wallet MUST delete any locally stored Verifiable Credentials. |
No credential data remains accessible after revocation is triggered. |
WS-026 |
Revocation |
The Wallet MUST notify the Wallet Backend with a Revocation Request containing a 'status' parameter set to 'REVOKED'. |
The Revocation Request is accepted and revocation status is updated in the backend. |
WS-027 |
Security |
The Wallet MUST prevent reuse of revoked Wallet Binding Keys or credentials in future Wallet Instances. |
Any reuse attempt is detected and blocked. |
WS-028 |
Attestation |
The Wallet MUST support Attestation refresh via the defined API exposed by the Wallet Backend. |
Attestation is renewed and the new version is accepted by Verifiers and Issuers. |
WS-029 |
Backup & Restore |
Backup encryption MUST use strong, standards-compliant encryption algorithms (e.g., AES-GCM). |
Encrypted backup file is resistant to brute-force and known cryptographic attacks. |
WS-030 |
User Interaction |
The Wallet MUST prompt the User to confirm intent before any destructive operation such as Revocation or Credential Deletion. |
Destructive actions are only performed after explicit User confirmation. |
WS-031 |
Attestation |
The Wallet MUST generate a Wallet Attestation containing information about the device integrity status, using Play Integrity API on Android. |
Wallet Attestation includes a valid Play Integrity payload with 'MEETS_DEVICE_INTEGRITY' field set. |
WS-032 |
Attestation |
The Wallet MUST generate a Wallet Attestation using DeviceCheck App Attest on iOS and include the attestation result in the Wallet Attestation. |
Wallet Attestation includes a valid DC App Attest JWT response signed by Apple. |
WS-033 |
Security |
The Wallet MUST verify that the Play Integrity token signature is valid and issued by Google. |
The Wallet rejects invalid or forged Play Integrity tokens. |
WS-034 |
Security |
The Wallet MUST validate that the 'nonce' value used in Play Integrity is cryptographically bound to the Wallet Instance. |
Any tampering with the nonce is detected and leads to Attestation rejection. |
WS-035 |
Attestation |
The Wallet MUST send the Wallet Attestation to the Wallet Backend during registration. |
Wallet Backend receives the attestation and verifies its validity. |
WS-036 |
Backup & Restore |
The Wallet MUST encrypt backups using a symmetric key derived from User secrets. |
The backup cannot be decrypted without the original User authentication material. |
WS-037 |
Backup & Restore |
The Wallet MUST include metadata in the backup that identifies the version and creation timestamp. |
Restore process reads and verifies backup metadata before proceeding. |
WS-038 |
Revocation |
The Wallet MUST send a Revocation Request to the Backend endpoint, including the Wallet ID as a path parameter. |
The backend processes the revocation and updates the Wallet status to revoked. |
WS-039 |
Revocation |
The Wallet MUST not allow any further Credential Issuance or Presentation after revocation. |
All operations are blocked once the Wallet is revoked. |
WS-040 |
Credential Issuance |
The Wallet MUST validate the structure of the Credential Offer received from the Issuer. |
The Wallet only accepts Credential Offers that match the expected format and signature. |
WS-041 |
Credential Issuance |
The Wallet MUST ensure that the User consents to receiving a new Credential. |
No Credential is stored without explicit User approval. |
WS-042 |
Credential Presentation |
The Wallet MUST verify the Verifier's Presentation Request before responding. |
Invalid or malformed requests are rejected. |
WS-043 |
Security |
The Wallet MUST sign Verifiable Presentations with the correct private key bound to the Wallet Instance. |
Verifiers are able to validate the signature and trust the presentation. |
WS-044 |
User Interaction |
The Wallet MUST prompt the User before sending a Verifiable Credential to a Verifier. |
No credential is shared without explicit User confirmation. |
WS-045 |
Backup & Restore |
The Wallet MUST allow the User to delete all stored backup data. |
All backup material is securely deleted and cannot be recovered. |
WS-046 |
Revocation |
If the Wallet is restored on a new device, it MUST check whether the original Wallet Instance was revoked. |
Revoked Wallet Instances cannot be restored. |
WS-047 |
Security |
The Wallet MUST verify the time validity of received Credentials (e.g., issuanceDate, expirationDate). |
Expired credentials are marked as invalid and are not used. |
WS-048 |
Attestation |
The Wallet MUST include the public key of the Wallet Binding Key in the Wallet Attestation. |
Verifiers and Issuers can validate signatures made with the corresponding private key. |
WS-049 |
Credential Presentation |
The Wallet MUST support Selective Disclosure of Credential attributes. |
Only selected fields are included in the presentation sent to the Verifier. |
WS-050 |
Credential Presentation |
The Wallet MUST allow the User to preview which Credential attributes will be disclosed before confirmation. |
User is shown the exact data to be shared and approves it explicitly. |
WS-051 |
Proximity Flow |
The Wallet MUST initiate the proximity flow only after explicit User Consent to interact with a Mobile Relying Party Instance. |
The Wallet proximity presentation flow is blocked unless User has approved the request. |
WS-052 |
Proximity Flow |
The Wallet MUST validate the Access Certificate presented by a Mobile Relying Party Instance before proceeding. |
If the Access Certificate is missing, invalid or expired, the Wallet MUST refuse the request. |
WS-053 |
Proximity Flow |
The Wallet MUST display a disclaimer when the Access Certificate is expired but still within the allowed grace period. |
The disclaimer is shown clearly to the User and presentation proceeds only after consent. |
WS-054 |
Relying Party Instance |
The Wallet MUST enforce the check that the Relying Party Instance state is 'Verified' before allowing credential presentation. |
The Wallet denies the flow if the Relying Party Instance is in any state other than 'Verified'. |
WS-055 |
Security |
The Wallet MUST log any failed presentation attempt due to invalid Relying Party Instance state or expired Access Certificate. |
A security event log is generated and stored securely. |
WS-056 |
Interoperability |
The Wallet MUST support communication with Relying Party Instances using standardized QR codes for session negotiation as defined in the specification. |
The Wallet successfully reads and parses QR codes and initiates the session as per protocol. |
WS-057 |
Proximity Flow |
The Wallet MUST establish a secure and authenticated session with the Mobile Relying Party Instance using ephemeral keys before presentation. |
Session keys are negotiated and verified, and all communication is encrypted. |
WS-058 |
Credential Presentation |
The Wallet MUST allow the User to choose which Credential to present to a Relying Party Instance even in proximity flow. |
Credential selection interface is shown to the User during proximity flow. |
WS-059 |
Security |
The Wallet MUST abort the session if the Relying Party Instance fails to prove possession of the private key associated with the Access Certificate. |
Session is terminated and no Credential data is disclosed. |
WS-060 |
User Interaction |
The Wallet MUST clearly indicate to the User when a presentation request comes from a Mobile Relying Party Instance using a proximity channel. |
The source of the request is shown before allowing presentation to proceed. |