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
<PackageReference Include="ShiftSoftware.UnifiedAttestation" Version="2.0.0" />
<PackageVersion Include="ShiftSoftware.UnifiedAttestation" Version="2.0.0" />
<PackageReference Include="ShiftSoftware.UnifiedAttestation" />
paket add ShiftSoftware.UnifiedAttestation --version 2.0.0
#r "nuget: ShiftSoftware.UnifiedAttestation, 2.0.0"
#:package ShiftSoftware.UnifiedAttestation@2.0.0
#addin nuget:?package=ShiftSoftware.UnifiedAttestation&version=2.0.0
#tool nuget:?package=ShiftSoftware.UnifiedAttestation&version=2.0.0
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 | Versions 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. |
-
net8.0
- Azure.Identity (>= 1.17.1)
- Azure.Security.KeyVault.Certificates (>= 4.8.0)
- Google.Apis.Auth.AspNetCore3 (>= 1.73.0)
- Google.Apis.Firebaseappcheck.v1beta (>= 1.73.0.4055)
- Microsoft.Extensions.Azure (>= 1.13.1)
- System.IdentityModel.Tokens.Jwt (>= 8.17.0)
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.
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.