ToolUp.ArtefactSigning 0.20.1

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

ToolUp.ArtefactSigning

Cryptographic artefact-signing substrate for ToolUp.Platform (Phase 40). Produces tamper-evident detached-JWS signatures over arbitrary deployment artefacts — audit packs, exported reports, model documentation — using per-deployment ECDSA P-256 or Ed25519 signing keys, and exposes a public verification-key endpoint so a relying party can validate signatures independently.

Server-only companion. Off by default and zero-cost when unused (GP 13): nothing runs until you construct a signer.

Not the same as the Phase 30a IArtifactSigner (note spelling: "Artefact" here vs "Artifact" there). Phase 30a signs module- distribution artefacts against an ArtifactManifest for the marketplace publish/install trust path. This companion signs arbitrary byte payloads for compliance non-repudiation. Different namespace (ToolUp.ArtefactSigning), no type collision.

Quick start

open ToolUp.ArtefactSigning

// Compose against the SDK's ISecretStore + IAuditLog (already present in
// any ServerApp deployment). Auto-provisions a key on first use.
let signer   = DefaultArtefactSigner.createSystem secrets audit "signing-v1" EcdsaP256
let verifier = DefaultArtefactVerifier.create secrets

// Sign arbitrary bytes — the artefact is never embedded in the signature.
match! signer.Sign auditPackBytes with
| Ok signature ->
    // signature.DetachedJws : "base64url(header)..base64url(sig)"
    do! verifier.Verify(auditPackBytes, signature)   // Ok () | Error _
| Error e -> eprintfn "%s" (SigningError.describe e)

Public verification-key endpoint

Mount the anonymous route so verifying parties can fetch the public key (serves rotated-out keys too, for archival verification):

let app = choose [ SigningKeyHandler.routes; ...existing routes... ]
// GET /_platform/signing-key/{keyId}  ->  { keyId, alg, algorithm, pem, jwk }

Helpers

  • ArtefactSigning.signAndEmbed — sign + produce a sidecar .sig file.
  • ArtefactSigning.signedJsonEnvelope / verifyJsonEnvelope — wrap a JSON payload as { payload, signature } and round-trip it.
  • ArtefactSigning.signedPdfMetadata — sign PDF bytes + return the (key, value) metadata pair to embed via your PDF toolkit.

Keys & rotation

Key material lives in ISecretStore under scope _platform, key signing/{keyId}. The signer reads it per call (never caches), so rotating through the store takes effect immediately. To rotate: construct a signer with a new keyId; new signs use it, and old signatures keep verifying because the verifier resolves the public key by the signature's keyId (the rotated-out blob stays discoverable).

For keys that must never enter process memory, wire a KMS-backed signer (Phase 22a signing flavour) — the IArtefactSigner contract is identical.

Portability (GP 12)

IArtefactSigner / IArtefactVerifier satisfy the six portability rules: identity by value (KeyId : string, byte[] artefacts), async at every boundary, failures-as-data (Result<_, SigningError> / Result<_, VerificationError>), stateless between calls, no cross-shard ordering, no timing-precision boundary.

License

Apache-2.0.

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 (4)

Showing the top 4 NuGet packages that depend on ToolUp.ArtefactSigning:

Package Downloads
ToolUp.ArtefactSigning.GoogleCloudKms

GCP Cloud KMS-backed IArtefactSigner for ToolUp.ArtefactSigning — EC-P256 (ES256, EC_SIGN_P256_SHA256) detached-JWS artefact signing where the private key never leaves GCP KMS (the signer hashes locally and calls AsymmetricSign over the digest). Server-only companion.

ToolUp.ArtefactSigning.AzureKeyVault

Azure Key Vault-backed IArtefactSigner for ToolUp.ArtefactSigning — EC-P256 (ES256) detached-JWS artefact signing where the private key never leaves Azure Key Vault (the signer hashes locally and calls Key Vault Sign over the digest). Server-only companion.

ToolUp.ArtefactSigning.AwsKms

AWS KMS-backed IArtefactSigner for ToolUp.ArtefactSigning — ECDSA P-256 detached-JWS artefact signing where the private key never leaves AWS KMS (the signer hashes locally and calls KMS Sign over the digest). Server-only companion.

ToolUp.Facts.Server

ToolUp.Facts Server — IFactStore (append-only, bitemporal, content-addressed fact base with derived supersession + AsOf reconstruction) + BlobFactStore default. Depends on ToolUp.Platform.Server + ToolUp.Facts.Core. Phase 520.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.22.0 57 8/27/2026
0.21.0 91 8/26/2026
0.20.1 141 8/20/2026
0.20.0 160 8/19/2026