Tessio.Verifier

EU Digital Identity Wallet · .NET

Verify EUDI Wallet credentials
from your .NET backend.

Open-source ASP.NET Core verifier for OpenID4VP 1.0 + SD-JWT VC. Native DI wiring, demo mode included, and a clean trust seam for when you go to production.

Install

$ dotnet add package Tessio.Verifier.AspNetCore

Five-minute quickstart

Wire one ASP.NET Core endpoint, run, and watch a verified age_over_18 claim come back over Server-Sent Events. No production wallet required.

Program.cs
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddTessioVerifier(options =>
{
    options.Mode = VerifierMode.Demo;          // local-only flow, no real wallet needed
    options.RequestedClaims = ["age_over_18"]; // selective disclosure: ask only for what you need
});

var app = builder.Build();
app.MapTessioVerifier();                       // request-init, wallet-callback, result-stream
app.MapGet("/", () => Results.Content(
    """<a href="/verify/start">Start a verification</a>""", "text/html"));

app.Run();

Why a .NET-native verifier?

Native to .NET

DI extensions, minimal APIs, Azure-friendly. No translation from Kotlin or Rust. The code looks like the rest of your stack.

Demo mode included

No production wallets yet? Run a full verification flow locally today. Swap to MOCK or TEST fixtures when you need them.

HAIP-aligned

OpenID4VP 1.0, SD-JWT VC with `dc+sd-jwt`, DCQL queries, JAR-signed requests, JWE responses. Built to the EUDI profile that matters.

Pluggable trust

A clean `ITrustListResolver` seam. Use the dev resolver to iterate; swap to the managed 27-state trust layer when you go live.

Status

0.1.0 — contracts only

This release publishes the frozen public contracts (contracts-v0). The verification core, OpenID4VP protocol, ASP.NET Core integration, and sample app are being implemented in parallel workstreams. The quickstart above shows the shape they're targeting for v0.1 final.

Mandatory acceptance under Regulation (EU) 2024/1183 lands 6 December 2027. We're shipping this before then so .NET shops aren't left translating from Kotlin.

Built on the standards

No proprietary protocols. The credentials Tessio verifies are the same ones every EUDI Wallet emits.