Why Verify Downloads?
Verifying a binary before installing ensures:- The file was produced and signed by the KaleidoSwap developers
- The file was not tampered with or corrupted in transit
- No malicious code was injected after the build
How It Works
After each release the CI publishes the binaries to the GitHub Releases page. The developer then runsscripts/sign-release.sh locally (with a YubiKey inserted), which:
- Downloads every release asset from GitHub
- Creates a detached GPG signature (
<binary>.asc) for each one - Verifies all signatures locally
- Uploads the
.ascfiles back to the same release
.asc signatures on the Releases page.
Prerequisites
- GPG (GNU Privacy Guard) installed on your system
- The KaleidoSwap binary you want to verify
- The corresponding
.ascsignature file from the same release
Verification Steps
1. Import the Developer’s Public Key
This is a one-time step. Import the KaleidoSwap developer’s public GPG key directly from GitHub:9EE396C0452755F0.
2. Download the Binary and Its Signature
From the Releases page, download your platform binary and the matching.asc file — both must be in the same directory.
| Platform | Binary | Signature |
|---|---|---|
| macOS Apple Silicon | KaleidoSwap_<version>_aarch64.dmg | KaleidoSwap_<version>_aarch64.dmg.asc |
| macOS Intel | KaleidoSwap_<version>_x64.dmg | KaleidoSwap_<version>_x64.dmg.asc |
| Linux (AppImage) | KaleidoSwap_<version>_amd64.AppImage | KaleidoSwap_<version>_amd64.AppImage.asc |
| Linux (DEB) | KaleidoSwap_<version>_amd64.deb | KaleidoSwap_<version>_amd64.deb.asc |
| Windows | KaleidoSwap_<version>_x64-setup.msi | KaleidoSwap_<version>_x64-setup.msi.asc |
3. Verify the Signature
Rungpg --verify with the signature file first, then the binary:
4. Read the Output
A good verification looks like this:gpg warning “This key is not certified with a trusted signature!” is expected unless you have explicitly set the trust level for this key. The Good signature line is what matters.
macOS: Additional Platform Verification
macOS builds are also code-signed with an Apple Developer ID certificate and notarized by Apple. You can verify this independently after installation:accepted from spctl and no errors from codesign.
Optional: SHA256 Checksum
For a quick integrity check without GPG, you can compare checksums. The SHA256 hash for each artifact is listed in themanifest.txt file available as a build artifact on each CI run.
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
No public key | Developer key not imported | Run the curl … | gpg --import command |
BAD signature | File was modified or corrupted | Re-download from GitHub Releases |
Can't check signature: No public key | Key mismatch | Confirm you imported from github.com/bitwalt.gpg |
| Checksum mismatch | Partial download or corruption | Delete and re-download the binary |