How we verify downloads

Zyvra's builds are not signed with an Apple or Microsoft certificate. Instead, every release is signed with Zyvra's own key, and you can check that signature yourself in a minute. This page explains how.

What is signed

Each release publishes two small files and their signatures: latest.json (the release manifest, which lists every archive with its SHA-256) and SHA256SUMS.txt (the same hashes, as a plain list). A signature on the manifest therefore covers every download in the release.

The program itself carries the matching public key. zyvra update refuses any release that this key did not sign, checks the archive's hash against the signed manifest, and runs the new program once before it replaces the old one. It never installs an older version and never updates without asking.

The release key

Ed25519 public key (base64):

mwnnIbrQNSlAdROYjXL0aWFNR+CruiXgJGoX3KYD/H8=

SHA-256 fingerprint of the key:

e4d4 f704 0b49 11e9 ae74 300b cb7c 1390 ee26 c1bf c443 a047 4f54 84ba 7b27 d51f

The same key is built into every zyvra program and into install.sh. If this page and your program ever disagree, do not install.

Check a download

With zyvra

If you already have Zyvra, it can check any release file against its .sig file in the same folder:

zyvra verify SHA256SUMS.txt
shasum -a 256 -c SHA256SUMS.txt --ignore-missing

The first command checks the signature, the second checks that your archive matches a signed hash. On Windows, use Get-FileHash -Algorithm SHA256 zyvra-v0.3.0-darwin-amd64.tar.gz and compare it with the list.

With OpenSSL 3 (no Zyvra needed)

cat > release-key.pem <<'EOF'
-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAmwnnIbrQNSlAdROYjXL0aWFNR+CruiXgJGoX3KYD/H8=
-----END PUBLIC KEY-----
EOF
openssl base64 -d -A -in SHA256SUMS.txt.sig -out sig.bin
openssl pkeyutl -verify -pubin -inkey release-key.pem -rawin -in SHA256SUMS.txt -sigfile sig.bin

It prints Signature Verified Successfully. macOS's built-in OpenSSL is too old for this; Homebrew's openssl@3 works.

Where the files are

  • The archives, checksums and signatures are on the releases page.
  • This site also serves latest.json and latest.json.sig, so the update check does not depend on one host. A copy is only as trusted as its signature, so it cannot serve anything Zyvra did not sign.

The install command

The install command downloads install.sh (or install.ps1), which fetches the manifest, checks the signature when OpenSSL 3 is available, checks the archive's SHA-256, and installs for your user only. You can read the script before running it: install.sh, install.ps1.

Honest limits. Windows PowerShell cannot check Ed25519 signatures, so install.ps1 checks the SHA-256 only. Without OpenSSL 3, install.sh does the same and says so (ZYVRA_REQUIRE_SIGNATURE=1 turns that into an error). A signature protects you if the download host is compromised; it cannot help if the signing key itself is stolen, which is why the key is kept off laptops and can be rotated.