SdJwt.Net.VcDm
1.0.6
dotnet add package SdJwt.Net.VcDm --version 1.0.6
NuGet\Install-Package SdJwt.Net.VcDm -Version 1.0.6
<PackageReference Include="SdJwt.Net.VcDm" Version="1.0.6" />
<PackageVersion Include="SdJwt.Net.VcDm" Version="1.0.6" />
<PackageReference Include="SdJwt.Net.VcDm" />
paket add SdJwt.Net.VcDm --version 1.0.6
#r "nuget: SdJwt.Net.VcDm, 1.0.6"
#:package SdJwt.Net.VcDm@1.0.6
#addin nuget:?package=SdJwt.Net.VcDm&version=1.0.6
#tool nuget:?package=SdJwt.Net.VcDm&version=1.0.6
SdJwt.Net.VcDm
W3C Verifiable Credentials Data Model 2.0 typed models, validation, and serialization for .NET.
Overview
This package provides a pure data-model layer for W3C VC Data Model 2.0. It is distinct from SdJwt.Net.Vc, which implements the IETF SD-JWT VC specification (draft-ietf-oauth-sd-jwt-vc) — a parallel, non-normatively-aligned credential format that does not use JSON-LD or W3C VCDM semantics.
This package handles:
jwt_vc_json— W3C VCDM 2.0 credential payload wrapped in a JWTldp_vc— W3C VCDM 2.0 credential with embedded Data Integrityproof
Use SdJwt.Net.Vc for:
dc+sd-jwt— IETF SD-JWT VC (selective disclosure, no JSON-LD)
Credential Format Map
| OID4VCI Format | Package | Spec |
|---|---|---|
dc+sd-jwt |
SdJwt.Net.Vc |
draft-ietf-oauth-sd-jwt-vc |
mso_mdoc |
SdJwt.Net.Mdoc |
ISO 18013-5 |
jwt_vc_json |
SdJwt.Net.VcDm |
W3C VCDM 2.0 + JOSE |
ldp_vc |
SdJwt.Net.VcDm |
W3C VCDM 2.0 + Data Integrity |
Quick Start
using SdJwt.Net.VcDm.Models;
using SdJwt.Net.VcDm.Validation;
// Build a W3C Verifiable Credential
var credential = new VerifiableCredential
{
Context = [VcDmContexts.V2, "https://schema.org/"],
Type = ["VerifiableCredential", "UniversityDegreeCredential"],
Id = "https://example.edu/credentials/3732",
Issuer = new Issuer("https://example.edu/issuers/14"),
ValidFrom = DateTimeOffset.UtcNow,
CredentialSubject = new CredentialSubject
{
Id = "did:example:ebfeb1f712ebc6f1c276e12ec21",
AdditionalClaims = new Dictionary<string, object>
{
["degree"] = new { type = "BachelorDegree", name = "Bachelor of Science" }
}
}
};
// Validate the credential structure
var validator = new VcDmValidator();
var result = validator.Validate(credential);
if (!result.IsValid)
Console.WriteLine(string.Join(", ", result.Errors));
// Serialize to JSON
var json = JsonSerializer.Serialize(credential, VcDmSerializerOptions.Default);
Key Classes
| Class | Purpose |
|---|---|
VerifiableCredential |
W3C VCDM 2.0 credential document model |
VerifiablePresentation |
W3C VCDM 2.0 presentation document model |
Issuer |
String URL or { id, name, description } object |
CredentialSubject |
Subject with optional id + additional claims |
CredentialStatus |
Base class; BitstringStatusListEntry subtype |
CredentialSchema |
Schema reference (id + type) |
TermsOfUse |
Usage restriction (type + optional properties) |
Evidence |
Evidence of claims (id, type, arbitrary properties) |
VcDmContexts |
Well-known @context URL constants |
VcDmValidator |
Structural validation (context, required fields) |
VcDmSerializerOptions |
Pre-configured JsonSerializerOptions |
VCDM 1.1 Backward Compatibility
The library reads (but does not write) the deprecated VCDM 1.1 properties:
| VCDM 1.1 (deprecated) | VCDM 2.0 (canonical) |
|---|---|
issuanceDate |
validFrom |
expirationDate |
validUntil |
https://www.w3.org/2018/credentials/v1 |
https://www.w3.org/ns/credentials/v2 |
What This Package Does NOT Do
- No JSON-LD
@contextexpansion or RDF processing (requiresjson-ld.netor equivalent) - No Data Integrity proof generation or verification (requires
ecdsa-rdfc-2019/bbs-2023suite) - No JWT signing or verification (use
System.IdentityModel.Tokens.Jwt)
License
Apache-2.0 — OpenWallet Foundation Labs
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- System.Text.Json (>= 9.0.0)
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on SdJwt.Net.VcDm:
| Package | Downloads |
|---|---|
|
SdJwt.Net.Oid4Vp
A .NET library for OpenID for Verifiable Presentations (OID4VP) 1.0 protocol implementation. Provides transport-agnostic data models and utilities for verifying SD-JWT presentations with Presentation Exchange v2.1.1 validation support. Ready for .NET 10. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Initial release: W3C VCDM 2.0 typed models, IssuerJsonConverter,
CredentialStatusConverter, VcDmValidator with context and required-field checks,
backward-compat issuanceDate/expirationDate reading.