Skip to content

Presentation Submission

Presentation Submission is a standardized format that enables holders to communicate how their presented credentials satisfy a verifier’s requirements. Developed by the Decentralized Identity Foundation (DIF), it provides a consistent response structure in credential exchange systems.

Holders need a clear way to indicate which credentials satisfy which requirements. Presentation Submission provides:

  • Standardized mapping of credentials to verification requirements
  • Clear indication of which credentials fulfill which requirements
  • Support for different credential formats in a single submission
  • Consistent structure across transport protocols

Without it, verifiers would struggle to process presented credentials, causing integration challenges and verification errors.

A Presentation Submission is a JSON object that maps presented credentials to requirements specified in a Presentation Definition. It serves as the response counterpart to the request, creating a clear connection between what was asked for and what is being provided.

Core components:

  • Definition ID: References the specific Presentation Definition being responded to, ensuring the verifier can match the response to their request
  • Descriptor map: Links Input Descriptor IDs from the definition to actual credentials in the submission
  • Path information: Indicates where to find each credential within the submission structure using JSONPath
  • Format details: Specifies the format of each credential to aid verification

Example responding to email verification:

{
"definition_id": "user_verification_example",
"descriptor_map": [
{
"id": "email_credential",
"format": "jwt_vc",
"path": "$.verifiableCredential[0]"
}
]
}

After receiving a Presentation Definition, the holder:

  1. Analyzes requirements from the Presentation Definition
  2. Matches their credentials to those requirements
  3. Creates a Presentation Submission mapping credentials to requirements
  4. Packages credentials with the submission
  5. Submits the complete response to the verifier

The verifier uses the submission to locate and verify each credential.

sequenceDiagram
    participant Verifier
    participant Holder

    Note over Holder: Analyzes & matches credentials
    Note over Holder: Creates submission mapping
    Holder->>Verifier: Submits credentials + submission
    Note over Verifier: Verifies using submission

The descriptor_map is the central component, containing descriptors that map input descriptors to credentials. Each entry in the map creates a clear link between a requirement and its fulfillment.

Each descriptor specifies:

  • id: Matches an input descriptor ID from the Presentation Definition
  • format: Credential format (e.g., jwt_vc, ldp_vc)
  • path: JSONPath expression locating the credential in the submission

Example mapping multiple credentials:

"descriptor_map": [
{
"id": "driver_license_credential",
"format": "ldp_vc",
"path": "$.verifiableCredential[1]"
},
{
"id": "proof_of_address",
"format": "jwt_vc",
"path": "$.verifiableCredential[0]"
}
]

This structure allows the verifier to quickly locate each requested credential and understand its format for proper verification.

The format property indicates credential encoding, helping verifiers select the appropriate verification method. Common formats:

  • jwt_vc: JSON Web Token Verifiable Credential
  • ldp_vc: Linked Data Proof Verifiable Credential
  • mso_mdoc: Mobile Security Object (ISO mdoc)

Format specifications ensure the verifier can correctly parse and cryptographically verify each credential according to its specific encoding requirements.

Presentation Definition and Presentation Submission are complementary:

  • Presentation Definition: Specifies required credentials and fields
  • Presentation Submission: Maps presented credentials to those requirements

Each Input Descriptor in a Presentation Definition corresponds to an entry in the submission’s descriptor_map, allowing verifiers to efficiently locate and process credentials.

In Vidos, Presentation Submission integrates with OpenID for Verifiable Presentations (OpenID4VP):

  • Authorizer: Receives Presentation Submission from wallets, containing credentials and their mapping to requirements
  • Validator: Verifies that credentials match requested formats, required fields are present, constraints are met, and logical combinations satisfy requirements

This separates protocol flow (Authorizer) from credential verification (Validator).

Presentation Submission provides standardized credential-to-requirement mapping, enabling consistent verification across systems and formats.

Key benefits:

  • Clear credential-to-requirement mapping
  • Multiple credential support
  • Format flexibility
  • Simplified verification structure
  • Reduced implementation complexity

Through Presentation Submission, Vidos enables standardized verification workflows with clear, efficient credential presentation.