Tuf 1.1.1

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Tuf --version 1.1.1
                    
NuGet\Install-Package Tuf -Version 1.1.1
                    
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="Tuf" Version="1.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tuf" Version="1.1.1" />
                    
Directory.Packages.props
<PackageReference Include="Tuf" />
                    
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 Tuf --version 1.1.1
                    
#r "nuget: Tuf, 1.1.1"
                    
#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 Tuf@1.1.1
                    
#: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=Tuf&version=1.1.1
                    
Install as a Cake Addin
#tool nuget:?package=Tuf&version=1.1.1
                    
Install as a Cake Tool

Tuf

A .NET implementation of The Update Framework (TUF) client for secure software update verification.

Overview

Tuf provides a standards-compliant TUF client that securely downloads and verifies metadata from a TUF repository. It handles the full metadata verification workflow including root rotation, timestamp/snapshot freshness checks, and signature validation.

Features

  • TUF specification compliant — implements the client workflow from the TUF specification
  • Secure root rotation — safely updates trust anchors across key rotations
  • Metadata verification — validates signatures, expiration, and version consistency
  • Experimental ML-DSA verification — supports TAP 21 v1 ml-dsa-44/1, ml-dsa-65/1, and ml-dsa-87/1 signatures
  • Pluggable caching — in-memory and file-system cache implementations included
  • Pluggable repository — HTTP repository included, custom transports supported
  • AOT-compatible — fully trimmer and NativeAOT safe
  • OpenTelemetry-ready — emits native .NET activities and metrics without an exporter dependency

ML-DSA verification uses the draft TAP 21 scheme and Bouncy Castle's experimental ML-DSA implementation. Treat this support as experimental until TAP 21 and the underlying cryptographic implementation are finalized.

Quick Start

using Tuf;

// Create a TUF client with HTTP repository and file-system cache
var options = new TufClientOptions
{
    MetadataBaseUrl = new Uri("https://tuf-repo-cdn.sigstore.dev/"),
    TargetsBaseUrl = new Uri("https://tuf-repo-cdn.sigstore.dev/targets/"),
    TrustedRoot = await File.ReadAllBytesAsync("root.json"),
    Cache = new FileSystemTufCache("/path/to/cache")
};

var client = new TufClient(options);

// Get and verify the current trusted metadata
var metadata = await client.GetTrustedMetadataAsync();

Telemetry

The package emits diagnostics through the built-in System.Diagnostics APIs. Applications choose how to collect and export them; the package does not initialize OpenTelemetry or install an exporter.

services.AddOpenTelemetry()
    .WithTracing(tracing =>
        tracing.AddSource(TufTelemetry.ActivitySourceName))
    .WithMetrics(metrics =>
        metrics.AddMeter(TufTelemetry.MeterName));

The Tuf activity source emits tuf.metadata.refresh and tuf.target.get activities. Metadata role updates, repository fetches, and delegated target resolution appear as child activities.

The package emits these metrics:

  • tuf.metadata.refresh.duration, tuf.metadata.refresh.active, and tuf.metadata.refresh.queue.duration
  • tuf.target.get.duration, tuf.target.get.active, and tuf.target.get.queue.duration
  • tuf.target.size

Duration instruments use seconds and target size uses bytes. Target measurements include the bounded tuf.target.cache_hit attribute. Failed operations include the standard error.type attribute. Target paths, delegated role names, key IDs, hashes, and repository URLs are not emitted as telemetry attributes.

Enable the standard .NET HTTP client instrumentation alongside this source to observe individual network requests without duplicate TUF HTTP metrics.

Documentation

📖 Full documentation

License

MIT — see LICENSE.

Product Compatible and additional computed target framework versions.
.NET 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. 
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 Tuf:

Package Downloads
Sigstore

A .NET library for generating and verifying Sigstore signatures.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Tuf:

Repository Stars
microsoft/aspire
Aspire is the tool for code-first, extensible, observable dev and deploy.
Version Downloads Last Updated
1.2.0-alpha.169.1.7177570 69 10/9/2026
1.2.0-alpha.158.1.0041eeb 78 9/28/2026
1.2.0-alpha.155.1.1aaecee 76 9/28/2026
1.2.0-alpha.149.1.a0c6700 77 9/28/2026
1.2.0-alpha.140.1.5703f31 74 9/27/2026
1.2.0-alpha.138.1.bbd074f 85 9/27/2026
1.1.1 7,226 10/9/2026
1.1.1-beta.171.1.c0f5ff9 66 10/9/2026
1.1.0 2,033 9/28/2026
1.1.0-beta.159.1.0041eeb 135 9/28/2026
1.1.0-beta.136.1.399a6e9 84 9/27/2026
1.1.0-alpha.135.1.399a6e9 132 8/29/2026
1.1.0-alpha.131.1.fd8696f 173 8/24/2026
1.1.0-alpha.129.1.d458555 98 8/24/2026
1.1.0-alpha.120.1.e78e1a9 84 8/22/2026
1.1.0-alpha.117.1.09281bc 101 8/22/2026
1.1.0-alpha.111.1.15fc60d 97 8/14/2026
1.0.1 2,930 8/24/2026
1.0.1-beta.122.1.7bc133a 138 8/22/2026
1.0.1-beta.112.1.de60e02 104 8/14/2026
Loading failed