-
Notifications
You must be signed in to change notification settings - Fork 36
Description
Hello,
Subject: Request for Guidance on Using Multiple ldp_vp Presentations in a Single VP Response
Problem Statement
We have a use case where a wallet needs to present two JSON-LD Verifiable Credentials (VCs), each with a different holder binding key:
- Government Identity – holder key of type EC key.
- University Certificate – holder key of type Ed key.
The requirement is to share both credentials in response to a single presentation request, while ensuring cryptographic proof that each credential is presented by its rightful holder.
Reason
- Verifier wants to ensure that each Verifiable Presentation is cryptographically bound to its respective holder for a
ldp_vpVerifiable Presentation. - A wallet may need to present two VCs (
ldp_vc), each with a different holder key, and cryptographically assert the holder’s identity for each corresponding VP.
Scenario
A digital wallet is submitting these credentials (Government Identity & University Certificate) for a job application as response to a single presentation request. The Verifier (Company) requires that the Credentials are presented only by the person to whom it was issued, mandating strong cryptographic holder binding for each credential.
Requirements
- Separate cryptographic proofs per credential – a single signature over both VCs is not possible due to different holder keys.
- Clear binding between each credential and its holder key – the verifier must be able to trust that each credential is controlled by the correct holder.
- Flexible VP structure – supports multiple VCs with different holder keys without compromising security or authenticity.
As an approach to satisfy these requirements, one option could be to construct a separate VP per holder key, grouping credentials accordingly:
Proposed VP response
As per the scenario, since both credentials have different holder keys, Separate VPs constructed for Government Identity & University Certificate
Example using vp_token response type:
{
vp_token: [
/** VP - Government Identity**/
{
// other VP properties
"holder": "<ecKeyHolderReference>",
"verifiableCredential": ["<Government Identity -> Holder key is of type EC key>"],
"proof": {
// Proof value generated by the holder using the EC key for signing purposes
}
},
/** VP - University Certificate**/
{
// other VP properties
"holder": "<edKeyHolderReference>",
"verifiableCredential": ["University Certificate -> Holder key is of type Ed key"],
"proof": {
// Proof value generated by the holder using the ED key for signing purposes
}
}
]
}
Benefits of the proposed response
- Cryptographic Holder Binding
- Each VP contains a proof created with the holder’s specific key, ensuring that only the rightful holder can generate it.
- The Company (Verifier) can verify the signature against the holder’s public key, satisfying the requirement for holder binding. - Each VP is independently verifiable.
Request
- Could you please confirm whether the proposed VP response including multiple
ldp_vppresentations within a single VP response is compliant with the specification? - Is there a better or recommended approach for handling cryptographic holder binding when sharing multiple
ldp_vccredentials with different holder keys in response to a single presentation request?
TIA