Skip to content

feat: issue SD-JWT encoded VCDM 2.0 Credentials#281

Open
nanderstabel wants to merge 3 commits intofeat/dc-sd-jwtfrom
feat/vc-sd-jwt
Open

feat: issue SD-JWT encoded VCDM 2.0 Credentials#281
nanderstabel wants to merge 3 commits intofeat/dc-sd-jwtfrom
feat/vc-sd-jwt

Conversation

@nanderstabel
Copy link
Contributor

@nanderstabel nanderstabel commented Feb 3, 2026

Description of change

Adds VCDM 2.0 SD-JWT credential format support in agent_issuance.

  • Added vc+sd-jwt format alongside existing dc+sd-jwt format
  • Implemented full VCDM 2.0 SD-JWT credential creation and signing flow

Blocked by:

Links to any relevant issues

How the change has been tested

  • Added the case::vc_sd_jwt test case to test_create_unsigned_credential

Manual testing:

  1. run ssi-agent with the developer profile enabled
  2. Validate the the Credential Issuer Metadata contains an "VCDM 2.0 SD-JWT" credential configuration:
curl --location 'http://localhost:3033/.well-known/openid-credential-issuer'
  1. Create a new VCDM2.0 SD-JWT Credential:
curl --location 'http://localhost:3033/v0/credentials' \
--header 'Content-Type: application/json' \
--data '{
    "offerId":"001",
    "credentialConfigurationId": "VCDM 2.0 SD-JWT",
    "type": [
        "VerifiableCredential"
    ],
    "credential": {
        "credentialSubject": {
            "first_name": "Ferris",
            "last_name": "Crabman",
            "dob": "1982-01-01"
        }
    },
    "expiresAt": "never"
}'
  1. Create the offer string:
curl --location 'http://localhost:3033/v0/offers' \
--header 'Content-Type: application/json' \
--data '{
    "offerId": "001"
}'
  1. 'Scan' the offer with this specific UniMe version
  2. Accept the Offer

Definition of Done checklist

Add an x to the boxes that are relevant to your changes.

  • I have followed the contribution guidelines for this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I have successfully tested this change in a docker environment

@nanderstabel nanderstabel changed the base branch from beta to feat/dc-sd-jwt February 3, 2026 19:11
@codecov-commenter
Copy link

codecov-commenter commented Feb 3, 2026

Codecov Report

❌ Patch coverage is 45.94595% with 80 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
agent_issuance/src/credential/aggregate.rs 56.66% 52 Missing ⚠️
agent_issuance/src/state.rs 0.00% 22 Missing ⚠️
agent_issuance/src/server_config/aggregate.rs 0.00% 6 Missing ⚠️
Files with missing lines Coverage Δ
agent_issuance/src/server_config/aggregate.rs 47.89% <0.00%> (ø)
agent_issuance/src/state.rs 43.75% <0.00%> (ø)
agent_issuance/src/credential/aggregate.rs 75.25% <56.66%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@nanderstabel nanderstabel self-assigned this Feb 3, 2026
@nanderstabel nanderstabel added Added A new feature that requires a minor release. Blocked Something blocks the integration of this code. labels Feb 3, 2026
@nanderstabel nanderstabel marked this pull request as ready for review February 3, 2026 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Added A new feature that requires a minor release. Blocked Something blocks the integration of this code.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants