SdJwt.Net.Wallet 1.0.2

dotnet add package SdJwt.Net.Wallet --version 1.0.2
                    
NuGet\Install-Package SdJwt.Net.Wallet -Version 1.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SdJwt.Net.Wallet" Version="1.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SdJwt.Net.Wallet" Version="1.0.2" />
                    
Directory.Packages.props
<PackageReference Include="SdJwt.Net.Wallet" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SdJwt.Net.Wallet --version 1.0.2
                    
#r "nuget: SdJwt.Net.Wallet, 1.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SdJwt.Net.Wallet@1.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SdJwt.Net.Wallet&version=1.0.2
                    
Install as a Cake Addin
#tool nuget:?package=SdJwt.Net.Wallet&version=1.0.2
                    
Install as a Cake Tool

SdJwt.Net.Wallet

Generic, extensible identity wallet implementation for .NET.

Overview

This package provides a generic wallet foundation for building identity wallet applications, supporting multiple credential formats and protocols. The architecture is informed by production EUDI Android/iOS implementations and the OWF .NET ecosystem.

Features

Core Capabilities

  • Credential Management: Store, retrieve, filter, and present credentials
  • Key Management: Generate, sign, and manage cryptographic keys with HAIP compliance
  • Format Plugins: Extensible credential format handling (SD-JWT VC, mdoc)
  • Protocol Adapters: OpenID4VCI and OpenID4VP support

Advanced Features

  • Batch credential policy support (OneTimeUse, RotateUse)
  • Deferred credential polling for OID4VCI
  • DPoP proof hooks for issuance token exchange (IDPoPProofProvider)
  • Wallet/key attestation hooks (WIA/WUA) via IWalletAttestationsProvider
  • Transaction logging hooks via ITransactionLogger
  • Live document status resolution hook (IDocumentStatusResolver)
  • Multi-issuer configuration registry for OID4VCI
  • Resumable issuance sessions
  • Presentation session abstractions for remote and proximity flows

Planned Extensions

  • Full proximity transport handling (BLE/NFC/QR handover)
  • Per-issuer DPoP policy profile
  • DCQL support for OpenID4VP matching

Installation

dotnet add package SdJwt.Net.Wallet

Quick Start

using SdJwt.Net.Wallet;
using SdJwt.Net.Wallet.Core;
using SdJwt.Net.Wallet.Storage;
using SdJwt.Net.Wallet.Protocols;
using SdJwt.Net.Wallet.Attestation;
using SdJwt.Net.Wallet.Audit;
using SdJwt.Net.Wallet.Issuance;
using SdJwt.Net.Wallet.Status;

ICredentialStore store = new InMemoryCredentialStore();
IKeyManager keyManager = /* your IKeyManager implementation */;
IOid4VciAdapter oid4VciAdapter = /* your OID4VCI adapter */;
IOid4VpAdapter oid4VpAdapter = /* your OID4VP adapter */;
IWalletAttestationsProvider attestationProvider = /* optional */;
ITransactionLogger transactionLogger = /* optional */;
IDPoPProofProvider dpopProofProvider = /* optional */;
IDocumentStatusResolver statusResolver = /* optional */;

var wallet = new GenericWallet(
    store,
    keyManager,
    options: new WalletOptions
    {
        WalletId = "my-wallet",
        DisplayName = "My Wallet",
        Oid4VciAdapter = oid4VciAdapter,
        Oid4VpAdapter = oid4VpAdapter,
        WalletAttestationsProvider = attestationProvider,
        TransactionLogger = transactionLogger,
        DPoPProofProvider = dpopProofProvider,
        DocumentStatusResolver = statusResolver
    });

// Process credential offer (OID4VCI)
var offer = await wallet.ProcessCredentialOfferAsync("openid-credential-offer://...");
var issuance = await wallet.AcceptCredentialOfferAsync(offer);

// Process presentation request (OID4VP)
var request = await wallet.ProcessPresentationRequestAsync("openid4vp://...");
var result = await wallet.CreateAndSubmitPresentationAsync(request);

// Optional attestation helpers
var wia = await wallet.GenerateWalletAttestationAsync("key-id");
var wua = await wallet.GenerateKeyAttestationAsync(new[] { "key-id" }, nonce: "issuer-nonce");

// Optional session abstraction
var remoteSession = wallet.CreateRemotePresentationSession();

// Optional status resolver path
var status = await wallet.CheckStatusAsync("credential-id");

// Optional multi-issuer registration and resumable issuance
await wallet.RegisterIssuerConfigurationAsync(new WalletIssuerConfiguration
{
    IssuerName = "issuer-a",
    CredentialIssuer = "https://issuer-a.example.com"
});
var pending = await wallet.StartIssuanceSessionAsync(offer);
var resumed = await wallet.ResumeIssuanceSessionAsync(pending.SessionId);

Architecture

SdJwt.Net.Wallet/
  Core/                    # Core models and abstractions
    CredentialModels.cs
    ICredentialManager.cs
    IKeyManager.cs
  WalletOptions.cs
  Formats/                 # Credential format plugins
    ICredentialFormatPlugin.cs
    SdJwtVcFormatPlugin.cs
  Protocols/               # Protocol adapters
    IOid4VciAdapter.cs
    IOid4VpAdapter.cs
    IDPoPProofProvider.cs
    DPoPProofRequest.cs
  Storage/                 # Storage abstractions
    ICredentialStore.cs
  Issuance/                # Issuer registry and pending issuance sessions
    WalletIssuerConfiguration.cs
    PendingIssuanceSession.cs
  Attestation/             # Wallet attestation
    IWalletAttestationsProvider.cs
  Audit/                   # Transaction logging
    TransactionType.cs
    TransactionStatus.cs
    TransactionLog.cs
    ITransactionLogger.cs
  Sessions/                # Presentation session abstractions
    IPresentationSession.cs
    PresentationFlowType.cs
    RemotePresentationSession.cs
    ProximityPresentationSession.cs
  Status/                  # Live status resolution abstractions
    IDocumentStatusResolver.cs
    DocumentStatus.cs
    DocumentStatusResult.cs
  GenericWallet.cs

Dependencies

This package builds on top of the SD-JWT .NET ecosystem:

Package Purpose
SdJwt.Net Core SD-JWT operations
SdJwt.Net.Vc Verifiable Credentials
SdJwt.Net.Oid4Vci Credential issuance
SdJwt.Net.Oid4Vp Presentation protocol
SdJwt.Net.PresentationExchange DIF PEX matching
SdJwt.Net.HAIP Cryptographic compliance
SdJwt.Net.StatusList Credential status

License

Apache 2.0

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on SdJwt.Net.Wallet:

Package Downloads
SdJwt.Net.Eudiw

EU Digital Identity Wallet (EUDIW) profile implementation for the SD-JWT .NET ecosystem. Provides eIDAS 2.0 compliance, ARF validation, EU Trust List integration, PID credential handling, and QEAA/EAA support for European digital identity verification.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.2 28 3/13/2026
1.0.1 102 3/1/2026

Version 1.0.0: Initial release of SD-JWT Wallet for .NET. Generic,
           extensible wallet implementation supporting credential management, key management, and
           protocol adapters for OpenID4VCI/VP.