w3c / w3c/vc-render-method

❓ Clarification: Handling multiple renderMethod entries from multiple issuers

Open
#43 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
HTML
Stars
9
Forks
8
Avg merge
14d 42m
Merged PRs (30d)
2

Description


❓ Clarification: Handling multiple renderMethod entries from multiple issuers

I'm reviewing the current draft and trying to understand how to implement renderMethod for credentials with multiple issuers. The specification seems to have a gap when issuers provide conflicting render instructions.


Section 2.1

The spec says in Section 2.1:

"The value of the renderMethod property MUST specify one or more rendering methods..."

If I have a credential with multiple issuers, like this:

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/vc/render-method/v1"
  ],
  "id": "http://example.com/credentials/123",
  "type": ["VerifiableCredential", "CrossBorderTravelPass"],
  "issuer": [
    "did:gov:usa",
    "did:gov:canada",
    "did:gov:mexico"
  ],
  "renderMethod": [
    {
      "type": "TemplateRenderMethod",
      "renderSuite": "svg-mustache",
      "template": {
        "id": "https://usa.gov/templates/travel-pass.svg"
      },
      "renderProperty": [
        "/credentialSubject/name",
        "/credentialSubject/passportNumber",
        "/credentialSubject/nationality"
      ]
    },
    {
      "type": "TemplateRenderMethod",
      "renderSuite": "svg-mustache",
      "template": {
        "id": "https://canada.ca/templates/travel-doc.svg"
      },
      "renderProperty": [
        "/credentialSubject/name",
        "/credentialSubject/nationality"
      ]
    }
  ],
  "credentialSubject": {
    "id": "did:example:traveler123",
    "name": "Jane Doe",
    "passportNumber": "P12345678",
    "nationality": "Dual Citizen"
  }
}

The Implementation Dilemma
  1. USA's template shows passportNumber (for verification)
  2. Canada's template hides passportNumber (for privacy)
  3. Mexico has no renderMethod
  4. All three are equal co-issuers

Questions Needing Clarification
  1. Priority
    Should a wallet use the first renderMethod in the array? Last? All of them?

  2. Consensus
    Do all issuers need to agree on presentation? If Mexico adds a third conflicting template later, what happens?

  3. Completeness
    If issuers disagree on what fields to show (renderProperty), whose preference wins?

  4. Liability
    If a wallet chooses USA's template (showing passport number) in Canada, who is responsible for the privacy violation?


What I Can't Find in the Spec

I've reviewed Sections 2.1 and 2.2, but can't find guidance on:

  • How to handle multiple renderMethod entries (priority, conflict resolution)
  • Whether renderMethod should be considered per issuer or per credential
  • What happens when renderProperty arrays conflict between issuers
  • Whether all issuers must sign or approve the render method

Minimal Request

Could the editors please clarify:

  1. Is handling multiple issuers with potentially conflicting renderMethod entries in scope for v1.0?
  2. If yes, what normative text should implementers follow?
  3. If no, should we add a note about this limitation in Security Considerations or elsewhere?

This clarification would help avoid inconsistent implementations and potential privacy/security issues.

Thank you for your guidance!


Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing Sections 2.1 and 2.2, which the issue identifies as relevant to renderMethod behavior. Determine whether v1.0 needs normative guidance for conflicting entries and multiple issuers, or a limitation note in Security Considerations; the work is done when the specification's expected resolution is clarified.

Written by the indexing model from the issue text.

Assessment

Domain
documentation
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.