Skip to content

Rephrase conditions to provide nonce in proof types based on presence of Nonce endpoint#678

Open
awoie wants to merge 10 commits intomainfrom
awoie/fix-677
Open

Rephrase conditions to provide nonce in proof types based on presence of Nonce endpoint#678
awoie wants to merge 10 commits intomainfrom
awoie/fix-677

Conversation

@awoie
Copy link
Contributor

@awoie awoie commented Nov 11, 2025

Potentially fixes #677 , potentially fixes #676

Note that I created the PR based on #676 (comment).

IMO, one implication is that for nonce claims in a key_attestation in a jwt proof, it means, the wallet decides whether to include it which is how I interpret the current version of the spec but wanted to point this out in case it is not obvious for readers of this PR. If the issuer insists on the presence which is unlikely, it could still provide a nonce error. To improve this behaviour, we could define a dedicated issuer metadata parameter, e.g., require_nonce_in_key_attesatation_in_jwt_proof in a backward compatible way to improve this behaviour.

Copy link
Contributor

@paulbastian paulbastian left a comment

Choose a reason for hiding this comment

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

I can't judge for DI, but the fix on jwt proof_type looks right

Co-authored-by: Kristina <52878547+Sakurann@users.noreply.github.com>
Copy link
Contributor

@jogu jogu left a comment

Choose a reason for hiding this comment

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

We still have the part here to solve: #676 (comment) (or we should raise a new issue for that, I don't have a strong opinion which).

I think we should apply the change to 1.0 as well.

@babisRoutis
Copy link
Contributor

Hi @awoie

Please consider updating the definition of nonce claim of key_attestation found in appendix E.

Currently the definition is

nonce: OPTIONAL. String that represents a nonce provided by the Issuer to prove that a key attestation was freshly generated

IMO this could be update to include

MUST be present if the attestation is used with attestation Proof type, if credential issuer provides a nonce endpoint

@awoie awoie requested a review from Sakurann November 20, 2025 16:53
@c2bo
Copy link
Member

c2bo commented Nov 25, 2025

Hi @awoie

Please consider updating the definition of nonce claim of key_attestation found in appendix E.

Currently the definition is

nonce: OPTIONAL. String that represents a nonce provided by the Issuer to prove that a key attestation was freshly generated

IMO this could be update to include

MUST be present if the attestation is used with attestation Proof type, if credential issuer provides a nonce endpoint

I was wondering about the same point - we should be clear where exactly nonce is required and where not. In the case of proof type attestation we still want to mandate its presence, right?

@babisRoutis
Copy link
Contributor

I was wondering about the same point - we should be clear where exactly nonce is required and where not. In the case of proof type attestation we still want to mandate its presence, right?

@c2bo

My truth table ( 😄 ) for nonce in the key_attestation:

key_attestation carrier Nonce endpoint present Nonce endpoint absent
Proof of type jwt Optional (Wallet's decision). If present should be from nonce_endpoint Must not be present
Proof of type attestation Mandatory Must not be present

@awoie
Copy link
Contributor Author

awoie commented Nov 25, 2025

Hi @awoie
Please consider updating the definition of nonce claim of key_attestation found in appendix E.
Currently the definition is

nonce: OPTIONAL. String that represents a nonce provided by the Issuer to prove that a key attestation was freshly generated

IMO this could be update to include

MUST be present if the attestation is used with attestation Proof type, if credential issuer provides a nonce endpoint

I was wondering about the same point - we should be clear where exactly nonce is required and where not. In the case of proof type attestation we still want to mandate its presence, right?

For the attestation proof type we have this:

If the Credential Issuer has a Nonce Endpoint (as defined in Section 8), the c_nonce value provided by the Credential Issuer MUST be provided in the key attestation's nonce parameter.

@awoie
Copy link
Contributor Author

awoie commented Nov 25, 2025

Hi @awoie
Please consider updating the definition of nonce claim of key_attestation found in appendix E.
Currently the definition is

nonce: OPTIONAL. String that represents a nonce provided by the Issuer to prove that a key attestation was freshly generated

IMO this could be update to include

MUST be present if the attestation is used with attestation Proof type, if credential issuer provides a nonce endpoint

I was wondering about the same point - we should be clear where exactly nonce is required and where not. In the case of proof type attestation we still want to mandate its presence, right?

For the attestation proof type we have this:

If the Credential Issuer has a Nonce Endpoint (as defined in Section 8), the c_nonce value provided by the Credential Issuer MUST be provided in the key attestation's nonce parameter.

But yes, I agree with @babisRoutis.

I will clean up the language again to clarify all of this since I agree it is language that can be misinterpreted.

@awoie awoie requested a review from jogu December 7, 2025 17:42
@awoie
Copy link
Contributor Author

awoie commented Dec 7, 2025

@jogu I applied the change to 1.0. Let me know if there is anything else needed wrt change log. Also added some language on pre-generated attestations and how a wallet could detect whether an issuer requires a nonce in the key attestation based on the current specification, e.g., invalid_nonce error.

@awoie awoie requested a review from babisRoutis December 7, 2025 17:46
Copy link
Contributor Author

@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.

Applied @GarethCOliver suggestion. Please review again.

As a general thought, we might use the opportunity to clean up the language a bit more and also include a table such as the one that @babisRoutis provided to make things more explicit.

@Sakurann Sakurann requested a review from c2bo February 5, 2026 16:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"If the Credential Issuer provided a c_nonce" doesn't really make sense key attestation in the jwt proof header should be able to be pre-generated...

7 participants