Verify your download
Check a Tenzro release before you install it: the signed SHA-256 manifest, the archive digest, the release key, and how to rebuild a release to compare.
Every Tenzro release is a set of archives plus a manifest of their SHA-256 digests, and the manifest is signed. Check both before you unpack or install anything.
What a release contains
| File | What it is |
|---|---|
tenzro-node-<platform>-<variant>.tar.gz or .zip | The archive you install |
SHA256SUMS | One line per archive: its SHA-256 digest and name |
SHA256SUMS.sig | A cosign signature over SHA256SUMS |
tenzro-release.pub | The public key that verifies the signatures |
matrix.json | How each archive was built: commit, toolchain, features, lockfile digest |
sbom-<commit>.spdx.json, provenance-<commit>.intoto.json | The software bill of materials and the build provenance statement (unsigned; the signed object is SHA256SUMS) |
Linux and macOS
Install cosign 3.x, then in the folder where you downloaded the release:
# 1. The manifest is signed by the release key.
cosign verify-blob --key tenzro-release.pub --insecure-ignore-tlog=true --signature SHA256SUMS.sig SHA256SUMS
# 2. Your archive matches the manifest (on macOS: shasum -a 256 -c ...).
sha256sum -c SHA256SUMS --ignore-missingThe release signature is made with a hardware-held key and is not uploaded to a transparency log, so --insecure-ignore-tlog=true is required: without it cosign 3 looks for a log entry and fails with "signature not found in transparency log". The check against the public key is complete without the log. Step 1 prints Verified OK. Step 2 prints <archive>: OK for each archive you downloaded. If either step prints anything else, delete the download and do not install it.
The signature is a classical ECDSA P-256 signature from a hardware-held key. A post-quantum signature is planned as a follow-up; no quantum resistance is claimed. Archives have no signature of their own: SHA256SUMS is the signed object, and each archive is checked against it.
Windows
In PowerShell, with cosign installed:
cosign verify-blob --key tenzro-release.pub --insecure-ignore-tlog=true --signature SHA256SUMS.sig SHA256SUMS
(Get-FileHash -Algorithm SHA256 .\tenzro-node-windows-x86_64-cuda.zip).HashCompare the printed hash, ignoring case, with the line for that archive in SHA256SUMS.
Where the public key lives
The release signing key is a P-256 key created inside the TPM 2.0 of a Tenzro-operated machine. It is non-exportable: the private key cannot leave the chip, is never on a build machine, and every use needs a passphrase typed by the release signer, who reads the manifest before signing it. The public half is published as tenzro-release.pub in each release, next to the manifest.
Release key fingerprint (SHA-256 of the DER encoding of the public key):
c88aaee70b3c0bf17a994bad44963a6a72359b2e1497df9a15a40ed099aeb72dCompute it from the file you downloaded and compare:
openssl pkey -pubin -in tenzro-release.pub -outform DER | sha256sumWindows code signing
The Windows archives and the Windows control app are not Authenticode-signed unless the build machine was configured with a code-signing certificate. A release that was not so configured makes Windows SmartScreen warn about an unknown publisher. That warning is expected for an unsigned build and is not a verdict on the archive: the cosign signature and the SHA-256 check above are the verification. The macOS app is checked with codesign --verify --deep --strict at build time.
Rebuilding to compare
matrix.json records the commit, toolchain, features and lockfile digest of each archive. A release can be rebuilt from that commit and its digest compared with the published one.
Related
- Deployment for installing and running a node.
- Downloads for the release archives.