-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
added wallet attestation scheme #52
Merged
Merged
Changes from 16 commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
9b5d2c2
added wallet attestation scheme
tlodderstedt 74b182a
run fix-lint
tlodderstedt 20adc96
added values as suggested by Paul
tlodderstedt 2d10a1b
lint again
tlodderstedt dfbe1e4
Update draft-oid4vc-haip-sd-jwt-vc.md
tlodderstedt c5214b7
Update draft-oid4vc-haip-sd-jwt-vc.md
tlodderstedt 1f479dc
Merge branch 'main' into wallet-attestation
tlodderstedt 27450a8
fixed references to client attestation draft
tlodderstedt 72ed205
Merge branch 'wallet-attestation' of https://github.com/vcstuff/oid4v…
tlodderstedt 78ba68c
changed the PR to match the evolved concepts
tlodderstedt 1ca5b6d
expanded key type values
tlodderstedt c2def75
itemized key type values, changed ref to ietf-oauth-attestation-based…
tlodderstedt 794a339
make fix-lint
tlodderstedt c0a7c6a
profile is defined in HAIP
tlodderstedt 8cb4f35
corrected key type values
tlodderstedt d9e263c
Apply suggestions from Giuseppe's code review
Sakurann 1ae5b33
Update draft-oid4vc-haip-sd-jwt-vc.md
tlodderstedt e778c55
Update draft-oid4vc-haip-sd-jwt-vc.md
tlodderstedt 8095800
Merge branch 'main' into wallet-attestation
tlodderstedt 4f88057
Merge branch 'wallet-attestation' of https://github.com/vcstuff/oid4v…
tlodderstedt File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -103,7 +103,7 @@ Unless explicitly stated, all normative requirements apply to all participating | |
Implementations of this profile: | ||
|
||
* MUST support both pre-auth code flow and authorization code flow. | ||
* MUST support SD-JWT VC profile as defined in OID4VCI specification. | ||
* MUST support the SD-JWT VC profile as defined in this specification. | ||
* MUST support sender-constrained Tokens using a mechanism as defined in [@!I-D.ietf-oauth-dpop]. | ||
* MUST support [@!RFC7636] with `S256` as the code challenge method. | ||
|
||
|
@@ -128,18 +128,64 @@ Both sending Credential Offer same-device and cross-device is supported. | |
|
||
## Token Endpoint {#token-endpoint} | ||
|
||
* The Wallets MUST perform client authentication as defined in [@!I-D.looker-oauth-attestation-based-client-auth]. | ||
* The Wallets MUST perform client authentication as defined in [@!I-D.ietf-oauth-attestation-based-client-auth]. | ||
* Refresh tokens MUST be supported for credential refresh. | ||
* Wallets MUST support deferred authorization by being able to process the Token error response parameters `authorization_pending` and `slow_down`, and the credential offer parameter `interval`. | ||
* The wallet attestation JWT scheme is defined in (#wallet-attestation-schema). | ||
* The Wallet Attestation JWT scheme is defined in (#wallet-attestation-schema). | ||
|
||
Note: It is RECOMMENDED to use ephemeral client attestation JWTs for client authentication in order to prevent linkability across Credential Issuers. | ||
|
||
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. | ||
|
||
### Wallet Attestation Schema {#wallet-attestation-schema} | ||
|
||
[Section 3.1 of wallet attestation draft would define the basics, and this profile will define the details.] | ||
Wallets MUST use attestations following the definition given in [@!I-D.ietf-oauth-attestation-based-client-auth]. | ||
|
||
In addition to this definition, the Wallet Attestation MAY contain the following claims in the `cnf` element: | ||
|
||
* `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 environent 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`: | ||
* `software`: It MUST be used when the Wallet uses software-based key management. | ||
* `hardware`: It MUST be used when the wallet uses hardware-based key management. | ||
* `tee`: It SHOULD be used when the Wallet uses the Trusted Execution Environment for key management. | ||
* `secure_enclave`: It SHOULD be used when the Wallet uses the Secure Enclave for key management. | ||
* `strong_box`: It SHOULD be used when the Wallet uses the Strongbox for key management. | ||
* `secure_element`: It SHOULD be used when the Wallet uses a Secure Element for key management. | ||
* `hsm`: It SHOULD be used when the Wallet uses Hardware Security Module (HSM). | ||
* `user_authentication`: OPTIONAL. JSON String that asserts the security mechanism the Wallet uses to authenticate access to the private key associated with the public key given in the `cnf` claim. This specification defines the following values for `user_authentication`: `system_biometry`, `system_pin`, `internal_biometry`, `internal_pin`, and `secureelement_pin`. | ||
tlodderstedt marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
The Wallet Attestation MAY also contain the following claim: | ||
|
||
* `aal`: OPTIONAL. JSON String asserting the authentication level of the Wallet and the key as asserted in the `cnf` claim. | ||
|
||
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.terbu-sd-jwt-vc]. The JOSE header `kid` MUST be used to identify the respective key. | ||
|
||
This is an example of a Wallet Instance Attestation: | ||
|
||
```json | ||
{ | ||
"typ": "wallet-attestation+jwt", | ||
"alg": "ES256", | ||
"kid": "1" | ||
} | ||
. | ||
{ | ||
"iss": "<identifier of the issuer of this wallet attestation>", | ||
"sub": "<`client_id` of the OAuth client>", | ||
"iat": 1516247022, | ||
"exp": 1541493724, | ||
"aal" : "https://trust-list.eu/aal/high", | ||
"cnf": { | ||
"jwk": { | ||
"kty": "EC", | ||
"crv": "P-256", | ||
"x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc", | ||
"y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ" | ||
}, | ||
"key_type": "STRONGBOX", | ||
"user_authentication": "SYSTEM_PIN", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. shouldn't these values be lower cased to match the definitions above? |
||
} | ||
} | ||
``` | ||
|
||
## Credential Endpoint | ||
|
||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we need to define each of these values like for
key_type
. can be another PR, but would like to be clear we will keep working on it.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@paulbastian can you please provide definitions of the user authentication values?
@Sakurann I think we either don't define the claim at all or we fully define it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Sakurann Paul updated the PR with definitions. Please check.