Skip to content

Commit b910597

Browse files
authored
Remove the Wallet Attestation Schema and point to OpenID4VCI instead (#153)
3 approvals. open for more than a week. no objections to merge during the WG call
1 parent 00c6ea9 commit b910597

File tree

1 file changed

+7
-56
lines changed

1 file changed

+7
-56
lines changed

openid4vc-high-assurance-interoperability-profile-1_0.md

Lines changed: 7 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -135,68 +135,18 @@ Both sending Credential Offer same-device and cross-device is supported.
135135

136136
## Token Endpoint {#token-endpoint}
137137

138-
* The Wallets MUST perform client authentication as defined in [@!I-D.ietf-oauth-attestation-based-client-auth].
138+
* The Wallets MUST perform client authentication as defined in (#wallet-attestation).
139139
* Refresh tokens are RECOMMENDED to be supported for credential refresh. For details, see Section 13.5 in [@!OIDF.OID4VCI].
140-
* The Wallet Attestation JWT scheme is defined in (#wallet-attestation-schema).
141140

142141
Note: It is RECOMMENDED to use ephemeral client attestation JWTs for client authentication in order to prevent linkability across Credential Issuers.
143142

144143
Note: Issuers should be mindful of how long the usage of the refresh token is allowed to refresh a credential, as opposed to starting the issuance flow from the beginning. For example, if the User is trying to refresh a credential more than a year after its original issuance, the usage of the refresh tokens is NOT RECOMMENDED.
145144

146-
### Wallet Attestation Schema {#wallet-attestation-schema}
147-
148-
Wallets MUST use attestations following the definition given in [@!I-D.ietf-oauth-attestation-based-client-auth].
149-
150-
In addition to this definition, the Wallet Attestation MAY contain the following claims in the `cnf` element:
151-
152-
* `key_type`: OPTIONAL. JSON String that asserts the security mechanism the Wallet uses to manage the private key associated with the public key given in the `cnf` claim. This mechanism is based on the capabilities of the execution environment of the Wallet, this might be a secure element (in case of a Wallet residing on a smartphone) or a Cloud-HSM (in case of a cloud Wallet). This specification defines the following values for `key_type`:
153-
* `software`: It MUST be used when the Wallet uses software-based key management.
154-
* `hardware`: It MUST be used when the Wallet uses hardware-based key management.
155-
* `tee`: It SHOULD be used when the Wallet uses the Trusted Execution Environment for key management.
156-
* `secure_enclave`: It SHOULD be used when the Wallet uses the Secure Enclave for key management.
157-
* `strong_box`: It SHOULD be used when the Wallet uses the Strongbox for key management.
158-
* `secure_element`: It SHOULD be used when the Wallet uses a Secure Element for key management.
159-
* `hsm`: It SHOULD be used when the Wallet uses Hardware Security Module (HSM).
160-
* `user_authentication`: OPTIONAL. JSON String that asserts the security mechanism the Wallet uses to authenticate the user to authorize access to the private key associated with the public key given in the `cnf` claim. This specification defines the following values for `user_authentication`:
161-
* `system_biometry`: It MUST be used when the key usage is authorized by the mobile operating system using a biometric factor.
162-
* `system_pin`: It MUST be used when the key usage is authorized by the mobile operating system using personal identification number (PIN).
163-
* `internal_biometry`: It MUST be used when the key usage is authorized by the Wallet using a biometric factor.
164-
* `internal_pin`: It MUST be used when the key usage is authorized by the Wallet using PIN.
165-
* `secure_element_pin` It MUST be used when the key usage is authorized by the secure element managing the key itself using PIN.
166-
167-
The Wallet Attestation MAY also contain the following claim:
168-
169-
* `aal`: OPTIONAL. JSON String asserting the authentication level of the Wallet and the key as asserted in the `cnf` claim.
170-
171-
To obtain the Issuer's Public key for verification, Wallet attestions MUST support web-based key resolution as defined in Section 5 of [@!I-D.ietf-oauth-sd-jwt-vc]. The JOSE header `kid` MUST be used to identify the respective key.
172-
173-
This is an example of a Wallet Instance Attestation:
174-
175-
```json
176-
{
177-
"typ": "wallet-attestation+jwt",
178-
"alg": "ES256",
179-
"kid": "1"
180-
}
181-
.
182-
{
183-
"iss": "<identifier of the issuer of this Wallet attestation>",
184-
"sub": "<`client_id` of the OAuth client>",
185-
"iat": 1516247022,
186-
"exp": 1541493724,
187-
"aal" : "https://trust-list.eu/aal/high",
188-
"cnf": {
189-
"jwk": {
190-
"kty": "EC",
191-
"crv": "P-256",
192-
"x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
193-
"y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
194-
},
195-
"key_type": "strong_box",
196-
"user_authentication": "system_pin",
197-
}
198-
}
199-
```
145+
### Wallet Attestation {#wallet-attestation}
146+
147+
Wallets MUST use wallet attestations as defined in Annex E of [@!OIDF.OID4VCI].
148+
149+
The public key, and optionally a trust chain, used to validate the signature on the Wallet Attestation MUST be included in the `x5c` JOSE header.
200150

201151
## Credential Endpoint
202152

@@ -496,6 +446,7 @@ The technology described in this specification was made available from contribut
496446

497447
-01
498448

449+
* Remove the Wallet Attestation Schema and point to OpenID4VCI instead
499450
* Rename specification to enable non-SD-JWT credential formats to be included
500451
* Require encrypted responses
501452
* Remove reference to `client_id_scheme` parameter that no longer exists in OpenID4VP

0 commit comments

Comments
 (0)