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 79 10/9/2026
1.2.0-alpha.158.1.0041eeb 85 9/28/2026
1.2.0-alpha.155.1.1aaecee 83 9/28/2026
1.2.0-alpha.149.1.a0c6700 84 9/28/2026
1.2.0-alpha.140.1.5703f31 81 9/27/2026
1.2.0-alpha.138.1.bbd074f 92 9/27/2026
1.1.1 10,624 10/9/2026
1.1.1-beta.171.1.c0f5ff9 73 10/9/2026
1.1.0 2,172 9/28/2026
1.1.0-beta.159.1.0041eeb 140 9/28/2026
1.1.0-beta.136.1.399a6e9 90 9/27/2026
1.1.0-alpha.135.1.399a6e9 136 8/29/2026
1.1.0-alpha.131.1.fd8696f 180 8/24/2026
1.1.0-alpha.129.1.d458555 105 8/24/2026
1.1.0-alpha.120.1.e78e1a9 89 8/22/2026
1.1.0-alpha.117.1.09281bc 106 8/22/2026
1.1.0-alpha.111.1.15fc60d 102 8/14/2026
1.0.1 3,102 8/24/2026
1.0.1-beta.122.1.7bc133a 143 8/22/2026
1.0.1-beta.112.1.de60e02 110 8/14/2026
Loading failed