Skip to content

Conversation

@c2bo
Copy link
Member

@c2bo c2bo commented Mar 17, 2025

Closes #43
closes #102
closes #35

Co-authored-by: Kristina <52878547+Sakurann@users.noreply.github.com>
This profile supports one mandatory way to represent and resolve the key required to validate the issuer signature of an SD-JWT VC, x.509 certificates. This MUST be supported by all entities (Issuer, Wallet, Verifier):

* Web-based key resolution: The key used to validate the Issuer’s signature on the SD-JWT VC MUST be obtained from the SD-JWT VC issuer's metadata 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.
* x.509 certificates: the SD-JWT VC contains the issuer's certificate along with a trust chain in the `x5c` JOSE header. In this case, the `iss` value MUST be an URL with a FQDN matching a `dNSName` Subject Alternative Name (SAN) [@!RFC5280] entry in the leaf certificate.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to see something about 'MUST validate against a root certificate but how you get the root certificate is out of scope' ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have this in the "out of scope" descrptiont:

Trust Management refers to authorization of an Issuer to issue certain types of credentials, authorization of the Wallet to be issued certain types of credentials, authorization of the Verifier to receive certain types of credentials. Although X.509 PKI is extensively utilized in this profile, the methods for establishing trust or obtaining root certificates are out of the scope of this specification.

I think that is enough, maybe it would be worth it to link there?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, thanks. That's probably fine then.

Comment on lines 249 to 251
Support for web-based key resolution is RECOMMENDED:

* Web-based key resolution: The key used to validate the Issuer’s signature on the SD-JWT VC MUST be obtained from the SD-JWT VC issuer's metadata 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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not 100% sure I understand how this works. It seems to conflict with the requirement to support x5c.

I suspect the text referred to has been moved to section 3.5 ( https://www.ietf.org/archive/id/draft-ietf-oauth-sd-jwt-vc-08.html#section-3.5 ) but also I think it's been renamed or something as I'm not clear which method in that section needs to be used.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm also not sure how this works, and if it's required to support X5C why support this other option, since you can't rely on it? Also since the Status List MUST use x5c, you then get like this weird combination of using web based key resolution vs X509 based.

Co-authored-by: Joseph Heenan <joseph@authlete.com>
Co-authored-by: Kristina <52878547+Sakurann@users.noreply.github.com>
Copy link
Collaborator

@awoie awoie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just flagging that mandating x509_hash as the only option for HAIP could introduce challenges for RP certificate rotation, particularly if the identifier is intended to serve as a long-term reference for the RP or is referenced by external entities or systems.

For example, this could impact trusted lists maintained by EU Member States, such as those involving registration or access certificates.

@cre8 What do you think? I would expect RP signer certificates to be rotated every 1–3 years, depending on compliance requirements. In such cases, all references would need to be updated, introducing overhead and increasing the risk of inconsistencies or broken links.

This is because the RP's identifier would effectively change with each certificate rotation.

## Issuer identification and key resolution to validate an issued Credential {#issuer-key-resolution}

This profile supports two ways to represent and resolve the key required to validate the issuer signature of an SD-JWT VC, the web PKI-based key resolution and the x.509 certificates.
This profile supports one mandatory way to represent and resolve the key required to validate the issuer signature of an SD-JWT VC, x.509 certificates. This MUST be supported by all entities (Issuer, Wallet, Verifier):
Copy link
Contributor

@charsleysa charsleysa Jul 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This MUST be supported by all entities (Issuer, Wallet, Verifier):

Does this mean that existing issuers utilizing web-based key resolution are no longer HAIP compatible? I disgree that web-based key resolution should be considered HAIP incompatible.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My current interpretation would be: Every entity has to support the x.509 based key resolution / trust establishment for sd-jwt vc to be HAIP compatible. The different entities might also support other ways like web-based key resolution, but for interop we have to mandate support for at least one mechanism everyone implements.

@charsleysa
Copy link
Contributor

charsleysa commented Jul 4, 2025

With x509_hash being the chosen client identifier prefix, how is redirect_uri / response_uri trust established?

With x509_san_dns it was clear that the FQDN of both the client identifier and the redirect_uri / response_uri needed to match (unless there was established trust). This does not exist for x509_hash.

If the Wallet can establish trust in the Client Identifier authenticated through the certificate, e.g. because the Client Identifier is contained in a list of trusted Client Identifiers, it may allow the client to freely choose the redirect_uri value. If not, the FQDN of the redirect_uri value MUST match the Client Identifier without the prefix x509_san_dns:. Example Client Identifier: x509_san_dns:client.example.org.

* Authorization Request MUST be sent using the `request_uri` parameter as defined in JWT-Secured Authorization Request (JAR) [@!RFC9101].
* The Client Identifier Scheme as introduced in Section 5.10 of [@!OIDF.OID4VP] MUST be either `x509_san_dns` or `verifier_attestation`. The Wallet MUST support both. The Verifier MUST support at least one.
* To obtain the issuer's public key for verification, verifiers 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.
* For Client Identifier Schemes as introduced in Section 5.9 of [@!OIDF.OID4VP], `x509_hash` MUST be supported by the Wallet and used by the Verifier.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* For Client Identifier Schemes as introduced in Section 5.9 of [@!OIDF.OID4VP], `x509_hash` MUST be supported by the Wallet and used by the Verifier.
* For Client Identifier Prefixes as introduced in Section 5.9 of [@!OIDF.OID4VP], `x509_hash` MUST be supported by the Wallet and used by the Verifier.

@Sakurann
Copy link
Contributor

WG discussion. maybe mention that client id prefix x509_hash changes when the x509 cert changes, so the same client may have multiple client ids

c2bo and others added 4 commits July 17, 2025 17:45
Co-authored-by: Brian Campbell <71398439+bc-pi@users.noreply.github.com>
Co-authored-by: Joseph Heenan <joseph@authlete.com>
Co-authored-by: Brian Campbell <71398439+bc-pi@users.noreply.github.com>
@jogu jogu changed the title Key resolution options Key resolution options: require x509_hash, remove web based key resolution Jul 22, 2025
@jogu
Copy link
Contributor

jogu commented Jul 22, 2025

I believe this closes #102 as well, so I've added that to the first comment.

Sakurann and others added 2 commits July 22, 2025 21:09
@Sakurann Sakurann merged commit 58ec081 into main Jul 22, 2025
2 checks passed
jogu added a commit that referenced this pull request Jul 23, 2025
x5c is required as per #178

This leaves it unsaid what iss is actually set to. I raised
#215
in case we need to say something about that but think the scope of this
PR should just be removing the text that is now inconsistent with
other parts of HAIP.
@cre8
Copy link

cre8 commented Jul 29, 2025

Just flagging that mandating x509_hash as the only option for HAIP could introduce challenges for RP certificate rotation, particularly if the identifier is intended to serve as a long-term reference for the RP or is referenced by external entities or systems.

For example, this could impact trusted lists maintained by EU Member States, such as those involving registration or access certificates.

@cre8 What do you think? I would expect RP signer certificates to be rotated every 1–3 years, depending on compliance requirements. In such cases, all references would need to be updated, introducing overhead and increasing the risk of inconsistencies or broken links.

This is because the RP's identifier would effectively change with each certificate rotation.

A bit late to the party but:

lifetime of the RP signer certificates (known as access certificates) will be defined by the policies. Based on the fact that these certificates can be renewed automatically, the lifetime will not be longer than two years (maybe just some months?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

9 participants