Skip to content

Conversation

@Sakurann
Copy link
Contributor

@Sakurann Sakurann commented Aug 1, 2025

resolves #202
resolves #150


Both Wallet initiated and Issuer initiated issuance are supported.

The Wallet MUST support batch issuance. For each Credential Configuration, the Issuer MUST indicate whether batch issuance is supported by including or omitting the `batch_credential_issuance` metadata parameter. The Issuer’s decision may be influenced by various factors, including, but not limited to, trust framework requirements, regulatory constraints, applicable laws or internal policies.
Copy link
Contributor

Choose a reason for hiding this comment

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

that effectively means the wallet MUST use batch issuance if the issuer has batch_credential_issuance set to true, right?

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think so, or at least this language isn't strong enough that I feel we'd have justification to implement a conformance test that required that - batch_credential_issuance is at the issuer level, but in the general case it's possible an issuer might have some credentials that have linkability issues and need batch issuance, and some that don't...

Copy link
Contributor

Choose a reason for hiding this comment

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

Isn't it meaningless to say a wallet MUST support batch issuance?

batch_size is the maximum size of the array of proofs. So a wallet that only ever sends a single proof still 'supports' batch issuance.

It's also worth noting that single-use credentials can be achieved without batch issuance being supported, as making N credential requests and making 1 credential request for N credentials achieves the same thing (the question is more about how key attestations are generated etc).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

option 1: remove "wallet must support batch issuance". probably annoying to the issuers if wallet will send 10 individual requests to get 10 copies of the same credential within the same session...

option 2: paraphrase to something like the wallet must request issuance of at least 2 credentials when the issuer has indicated batch issuance support, since if the issuer indicates batch issuance support, it probably means issuer wants the wallet to use it..

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 option 2 would need to be conditional on the credential having cryptographic key binding support listed too (assuming https://github.com/openid/oid4vc-haip/pull/210/files gets merged).

Copy link
Collaborator

@paulbastian paulbastian Aug 26, 2025

Choose a reason for hiding this comment

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

Imo:

  • Wallet MUST support batch issuance to lower impact/load for Credential Issuers that want to use it (instead of sending single requests)
  • Credential Issuer knows his use case best
    • if a single credential makes sense -> do not offer batch issuance and signal Wallet to keep the single one
    • if batch issuance makes sense -> offer batch issuance, Wallet MUST utilize it to avoid linkability and Wallet SHOULD fetch up to size and refill by it's own policy

Copy link
Contributor

Choose a reason for hiding this comment

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

if batch issuance makes sense -> offer batch issuance, Wallet MUST utilize it to avoid linkability and Wallet SHOULD fetch up to size and refill by it's own policy

Utilitizing batch issuance isn't necessary to avoid unlinkability though. Batch issuance is purely an optimisation.

Would the opposite statement be easier for people to get behind:

Wallets MUST NOT make multiple single requests for the same credential in a short space of time if the Issuer supports batch issuance.

This seems to get to the heart of the original concern of avoiding unnecessary load on the issuer when the wallet wants 20 instances of the same credential.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Who decides whether credentials should be used in a one time usage policy, the wallet or the issuer? I think it's the issuer..

Copy link
Contributor

Choose a reason for hiding this comment

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

Who decides whether credentials should be used in a one time usage policy, the wallet or the issuer? I think it's the issuer..

As the specs are defined today I think it's the wallet that ultimately decides, but the wallet's choice is made based on out-of-band information from the issuer/ecosystem on the credential properties?

Copy link
Contributor

Choose a reason for hiding this comment

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

Functionally, the Wallet is the only one that has enough information to do it today. It would be nice for Issuers to send a signal, if for example the issuer knows every presentation must be fully identifying then encoding that.

IMO mandating something that is performance related, not inter-op related is difficult just because there tends to be so many edge cases in the real world. It does feel like issuers do already have tools in place to deal with overloading wallets (they can load-shed the extra requests, or defer and batch the operations using a rotating job).

I think it'd be reasonable to mandate that issuers support a batch size equal to the amount the ecosystem expects the wallet to maintain on the device, and when that is available strongly recommend that a Wallet use that rather than parallel requests. (The one case I could see wanting otherwise would be wanting a single credential quickly and a batch slowly when none are currently available on the device. This could (potentially substantially) improve user experience given we don't allow partial returns, especially for JIT issuance flows).


Both Wallet initiated and Issuer initiated issuance are supported.

The Wallet MUST support batch issuance. For each Credential Configuration, the Issuer MUST indicate whether batch issuance is supported by including or omitting the `batch_credential_issuance` metadata parameter. The Issuer’s decision may be influenced by various factors, including, but not limited to, trust framework requirements, regulatory constraints, applicable laws or internal policies.
Copy link
Collaborator

Choose a reason for hiding this comment

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

batch_credential_issuance metadata is not credential configuration specific, it is a general parameter. It is not possible to have batch_credential_issuance per configuration, only per issuer. I suggest rewriting this statement, so it is clear that is for whole credential configuration.

Co-authored-by: Paul Bastian <paul.bastian@posteo.de>
Co-authored-by: Joseph Heenan <joseph@authlete.com>

Both Wallet initiated and Issuer initiated issuance are supported.

If the Issuer supports batch issuance, the Wallet SHOULD NOT make multiple requests for a single copy of the same credential in a short space of time. The Issuer MUST indicate whether batch issuance is supported by including or omitting the `batch_credential_issuance` metadata parameter. The Issuer’s decision may be influenced by various factors, including, but not limited to, trust framework requirements, regulatory constraints, applicable laws or internal policies.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
If the Issuer supports batch issuance, the Wallet SHOULD NOT make multiple requests for a single copy of the same credential in a short space of time. The Issuer MUST indicate whether batch issuance is supported by including or omitting the `batch_credential_issuance` metadata parameter. The Issuer’s decision may be influenced by various factors, including, but not limited to, trust framework requirements, regulatory constraints, applicable laws or internal policies.
If the Issuer supports batch issuance, the Wallet SHOULD NOT make multiple requests for a single Credential of the same Credential Dataset in a short space of time. The Issuer MUST indicate whether batch issuance is supported by including or omitting the `batch_credential_issuance` metadata parameter. The Issuer’s decision may be influenced by various factors, including, but not limited to, trust framework requirements, regulatory constraints, applicable laws or internal policies.

Co-authored-by: Oliver Terbu <oliver.terbu@mattr.global>
@Sakurann Sakurann requested a review from awoie September 22, 2025 09:11
@paulbastian
Copy link
Collaborator

So does this mean that single use policy is out of scope for HAIP 1.0 or do we still want to tackle it?


If batch issuance is supported, the Wallet SHOULD use it rather than making consecutive requests for a single Credential of the same Credential Dataset. The Issuer MUST indicate whether batch issuance is supported by including or omitting the `batch_credential_issuance` metadata parameter. The Issuer’s decision may be influenced by various factors, including, but not limited to, trust framework requirements, regulatory constraints, applicable laws or internal policies.


Copy link
Contributor Author

@Sakurann Sakurann Sep 23, 2025

Choose a reason for hiding this comment

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

Suggested change
For the Credentials with Cryptographic Holder Binding,
the Wallet MUST use the same Credential only once,
even when the claims being disclosed are the same.

Copy link
Contributor

Choose a reason for hiding this comment

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

This definitely shouldn't be true. (e.g. ZKP, already identifying responses etc).

@Sakurann
Copy link
Contributor Author

WG discussion:

  • no rough consensus to mandate one time use in HAIP. merge this PR as-is, conditional to at least one more approval.
  • in the issue continue the discussion:
    • introduce an extension point if we want to define policy for different types of usage: one time use, per RP, etc.?
    • say that wallet can overrule the policy of the issuer?

Copy link
Contributor

@GarethCOliver GarethCOliver left a comment

Choose a reason for hiding this comment

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

Approved in the current state (without the change to mandate single use).


If batch issuance is supported, the Wallet SHOULD use it rather than making consecutive requests for a single Credential of the same Credential Dataset. The Issuer MUST indicate whether batch issuance is supported by including or omitting the `batch_credential_issuance` metadata parameter. The Issuer’s decision may be influenced by various factors, including, but not limited to, trust framework requirements, regulatory constraints, applicable laws or internal policies.


Copy link
Contributor

Choose a reason for hiding this comment

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

This definitely shouldn't be true. (e.g. ZKP, already identifying responses etc).

@jogu jogu merged commit ef145d0 into main Sep 24, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

mandate issuance of batches of the credentials clarify that support for Batch Issuance is mandatory

7 participants