SdJwt.Net.Oid4Vci
1.0.6
dotnet add package SdJwt.Net.Oid4Vci --version 1.0.6
NuGet\Install-Package SdJwt.Net.Oid4Vci -Version 1.0.6
<PackageReference Include="SdJwt.Net.Oid4Vci" Version="1.0.6" />
<PackageVersion Include="SdJwt.Net.Oid4Vci" Version="1.0.6" />
<PackageReference Include="SdJwt.Net.Oid4Vci" />
paket add SdJwt.Net.Oid4Vci --version 1.0.6
#r "nuget: SdJwt.Net.Oid4Vci, 1.0.6"
#:package SdJwt.Net.Oid4Vci@1.0.6
#addin nuget:?package=SdJwt.Net.Oid4Vci&version=1.0.6
#tool nuget:?package=SdJwt.Net.Oid4Vci&version=1.0.6
SdJwt.Net.Oid4Vci - OpenID for Verifiable Credential Issuance
Implementation of OpenID4VCI 1.0 models and helpers for standardized credential issuance flows.
Features
- OID4VCI 1.0 Models: Offer, token, request, and response payloads
- Grant Flow Support: Authorization Code and Pre-Authorized Code patterns
- Proof Support: Single-proof and multi-proof request models
- Format Metadata: Typed configuration models for
dc+sd-jwt,mso_mdoc,jwt_vc_json,jwt_vc_json-ld, andldp_vc - Request/Response Encryption Metadata: Issuer metadata for credential request and response encryption capabilities
- Transport-Agnostic Design: Works with ASP.NET Core, worker services, and custom gateways
- Deferred Issuance Support: Acceptance-token response model support
Installation
dotnet add package SdJwt.Net.Oid4Vci
Quick Start
Build a Credential Offer
using SdJwt.Net.Oid4Vci.Models;
using System.Text.Json;
var credentialOffer = new CredentialOffer
{
CredentialIssuer = "https://issuer.example.com",
CredentialConfigurationIds = new[] { "university_degree" }
};
credentialOffer.AddPreAuthorizedCodeGrant(
preAuthorizedCode: "pre-auth-code-123");
var qrUrl =
$"openid-credential-offer://?credential_offer={Uri.EscapeDataString(JsonSerializer.Serialize(credentialOffer))}";
Build a Credential Request
using SdJwt.Net.Oid4Vci.Models;
var credentialRequest = CredentialRequest.Create(
vct: "https://issuer.example.com/credentials/university-degree",
proofJwt: holderProofJwt);
credentialRequest.Validate();
Advertise Supported Formats
using SdJwt.Net.Oid4Vci.Models;
using SdJwt.Net.Oid4Vci.Models.Formats;
var metadata = new CredentialIssuerMetadata
{
CredentialIssuer = "https://issuer.example.com",
CredentialConfigurationsSupported = new Dictionary<string, CredentialConfiguration>
{
["employee_sd_jwt"] = new SdJwtVcCredentialConfiguration
{
Vct = "https://issuer.example.com/credentials/employee"
},
["employee_jwt_vc_json_ld"] = new JwtVcJsonLdCredentialConfiguration
{
CredentialDefinition = new JwtVcJsonLdCredentialDefinition
{
Context = new[] { "https://www.w3.org/ns/credentials/v2" },
Type = new[] { "VerifiableCredential", "EmployeeCredential" }
}
}
}
};
Build a Credential Response
using SdJwt.Net.Oid4Vci.Models;
var credentialResponse = CredentialResponse.Success(
credential: issuedCredential,
format: Oid4VciConstants.SdJwtVcFormat);
Common Use Cases
- University issuance with pre-authorized codes
- Government onboarding with OAuth authorization code flow
- Enterprise onboarding with batch and deferred issuance
- Wallet interoperability through standard OpenID4VCI payloads for SD-JWT VC, W3C VCDM, and ISO mdoc formats
Test Notes
The test projects target net10.0. On Windows worktrees with restrictive inherited ACLs, use a serialized test run to avoid MSBuild worker buildup:
$env:MSBUILDDISABLENODEREUSE = "1"
dotnet test tests/SdJwt.Net.Oid4Vci.Tests/SdJwt.Net.Oid4Vci.Tests.csproj -f net10.0 -m:1 -nr:false -p:UseSharedCompilation=false
Documentation
For full end-to-end implementation, see:
License
Licensed under the Apache License 2.0.
| 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
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.6)
- Microsoft.IdentityModel.Tokens (>= 8.12.1)
- SdJwt.Net (>= 1.0.6)
- SdJwt.Net.OidFederation (>= 1.0.6)
- System.IdentityModel.Tokens.Jwt (>= 8.12.1)
- System.Text.Json (>= 8.0.5)
-
net10.0
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.6)
- Microsoft.IdentityModel.Tokens (>= 8.12.1)
- SdJwt.Net (>= 1.0.6)
- SdJwt.Net.OidFederation (>= 1.0.6)
- System.IdentityModel.Tokens.Jwt (>= 8.12.1)
-
net8.0
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.6)
- Microsoft.IdentityModel.Tokens (>= 8.12.1)
- SdJwt.Net (>= 1.0.6)
- SdJwt.Net.OidFederation (>= 1.0.6)
- System.IdentityModel.Tokens.Jwt (>= 8.12.1)
-
net9.0
- Microsoft.Extensions.Logging.Abstractions (>= 9.0.6)
- Microsoft.IdentityModel.Tokens (>= 8.12.1)
- SdJwt.Net (>= 1.0.6)
- SdJwt.Net.OidFederation (>= 1.0.6)
- System.IdentityModel.Tokens.Jwt (>= 8.12.1)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on SdJwt.Net.Oid4Vci:
| Package | Downloads |
|---|---|
|
SdJwt.Net.HAIP
OpenID4VC High Assurance Interoperability Profile (HAIP) helpers for the SD-JWT .NET ecosystem. Provides HAIP 1.0 Final flow/profile validation plus legacy policy helpers. Ready for .NET 10. |
|
|
SdJwt.Net.Wallet
Generic, extensible identity wallet implementation for .NET, supporting SD-JWT VC and mdoc credentials. Provides credential management, key management, OpenID4VCI/VP protocol adapters, and integration with trust infrastructure. Based on EUDI Android/iOS wallet architectures. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version 1.0.0: Complete OID4VCI 1.0 protocol support with
modular architecture, deferred credential delivery, comprehensive grant
types, and production-ready SD-JWT integration. Ready for .NET 10.