ShiftSoftware.UnifiedAttestation 2.0.0

Prefix Reserved
dotnet add package ShiftSoftware.UnifiedAttestation --version 2.0.0
                    
NuGet\Install-Package ShiftSoftware.UnifiedAttestation -Version 2.0.0
                    
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="ShiftSoftware.UnifiedAttestation" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ShiftSoftware.UnifiedAttestation" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="ShiftSoftware.UnifiedAttestation" />
                    
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 ShiftSoftware.UnifiedAttestation --version 2.0.0
                    
#r "nuget: ShiftSoftware.UnifiedAttestation, 2.0.0"
                    
#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 ShiftSoftware.UnifiedAttestation@2.0.0
                    
#: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=ShiftSoftware.UnifiedAttestation&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=ShiftSoftware.UnifiedAttestation&version=2.0.0
                    
Install as a Cake Tool

Core services, models, and abstractions for unified mobile application attestation. Provides a single, unified interface to verify device integrity across multiple providers, including Firebase App Check (Apple App Attest, Google Play Integrity) with Replay Protection, and Huawei Mobile Services (HMS) SafetyDetect via either UserDetect or SysIntegrity.

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

Package Downloads
ShiftSoftware.UnifiedAttestation.Functions

Azure Functions Isolated Worker integration for ShiftSoftware.UnifiedAttestation. Provides seamless dependency injection extensions and a custom middleware pipeline with declarative attributes ([ValidateAttestation]) to easily secure serverless endpoints against unauthorized or tampered mobile clients.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 44 8/6/2026
1.0.6 194 4/15/2026
1.0.5 127 4/15/2026
1.0.4 124 4/15/2026
1.0.3 121 4/15/2026
1.0.2 122 4/15/2026
1.0.1 130 4/15/2026
0.0.1 126 4/15/2026

2.0.0
- Added HMS SafetyDetect SysIntegrity support. Enable it with AttestationOptions.HMS.SysIntegrity.Enabled = true. It is verified entirely on the server (certificate chain, host name, signature) with no call to Huawei.
- UserDetect and SysIntegrity can be enabled at the same time. The API for a Huawei request is selected by the caller: the HMS-Api header ("UserDetect" or "SysIntegrity") at the middleware level, or the hmsApi argument on VerifyTokenAsync. When none is selected it defaults to UserDetect, unless SysIntegrity is the only enabled API. Existing UserDetect clients need no header and keep working unchanged, so adding SysIntegrity is backward compatible.
- BREAKING: AttestationOptions.HMS is now HMSOptions. The UserDetect credentials moved from HMS.AppId / HMS.ClientId / HMS.ClientSecret to HMS.UserDetect.AppId / HMS.UserDetect.ClientId / HMS.UserDetect.ClientSecret.
- BREAKING: IUnifiedAttestationService.VerifyTokenAsync takes additional optional nonce and hmsApi parameters, used only by the Huawei path.
- The HUAWEI CBG Root CA is supplied through HMS.SysIntegrity.RootCertificatePem, which pairs with an App Service / Functions Key Vault reference app setting so the platform resolves it before startup with no vault call at runtime. It accepts PEM text or Base64 encoded DER. If stored in Key Vault it must be a secret, not a certificate, because Key Vault certificates must carry a private key.
- Azure.Identity is now an explicit dependency. It was previously picked up transitively, which let a consuming app resolve a lower version and fail to load it at startup.
- Added AttestationOptions.HMSApiHeaderKey (defaults to "HMS-Api") for selecting the Huawei API, and AttestationOptions.NonceHeaderKey (defaults to "Verification-Nonce").
- SysIntegrity nonce checking is off by default (HMS.SysIntegrity.RequireNonce = false). Freshness comes from the Huawei-signed timestampMs bounded by MaxTokenAge. The INonceValidator abstraction lets you plug in a server-issued nonce; its default echo implementation only compares the client-supplied nonce with the payload nonce and adds no replay protection on its own.