Why
Windows Authenticode signing is still pending, and Linux artifacts are currently unsigned.
Until platform-specific signing is fully available, users need a reliable way to verify that a downloaded artifact is the exact file produced by this repository's release workflow.
Winget is also an official Windows installation path, so the release checksum data should be usable to populate or verify the Winget InstallerSha256 value for Windows installer assets.
This issue adds two verification layers:
- SHA-256 checksums for all release assets
- GitHub Artifact Attestations for release artifacts
Scope
Add checksum generation and artifact attestations to the release workflow.
This should cover all distributable release assets, including:
- Windows installers
- Windows installer assets used by Winget, where applicable
- macOS artifacts
- Linux AppImage
- Linux
.deb
- Linux
.rpm
- Tauri updater signature files, where applicable
Do not include SHA256SUMS.txt itself in its own checksum list.
Winget should remain a distribution/install channel, not a replacement for Authenticode signing, checksums, or attestations.
Tasks
Suggested implementation
Example checksum step:
cd dist
find . -maxdepth 1 -type f ! -name 'SHA256SUMS.txt' -print0 \
| sort -z \
| xargs -0 sha256sum > SHA256SUMS.txt
Example attestation permissions:
permissions:
contents: read
id-token: write
attestations: write
If the same job also creates or updates a GitHub Release, keep the required contents: write permission for that job.
Example attestation step:
- name: Generate artifact attestations
uses: actions/attest@v4
with:
subject-path: |
dist/*.exe
dist/*.msi
dist/*.dmg
dist/*.AppImage
dist/*.deb
dist/*.rpm
dist/*.sig
dist/SHA256SUMS.txt
Adjust the glob patterns to match the actual release output paths.
User-facing verification commands
These commands should work after this issue is complete.
Windows:
Get-FileHash .\HardwareVisualizer_1.8.0_x64_en-US.msi -Algorithm SHA256
macOS:
shasum -a 256 HardwareVisualizer_1.8.0_aarch64.dmg
Linux:
sha256sum hardware-visualizer_1.8.0_amd64.deb
GitHub attestation:
gh attestation verify ./HardwareVisualizer_1.8.0_x64_en-US.msi \
-R shm11C3/HardwareVisualizer
Acceptance criteria
Why
Windows Authenticode signing is still pending, and Linux artifacts are currently unsigned.
Until platform-specific signing is fully available, users need a reliable way to verify that a downloaded artifact is the exact file produced by this repository's release workflow.
Winget is also an official Windows installation path, so the release checksum data should be usable to populate or verify the Winget
InstallerSha256value for Windows installer assets.This issue adds two verification layers:
Scope
Add checksum generation and artifact attestations to the release workflow.
This should cover all distributable release assets, including:
.deb.rpmDo not include
SHA256SUMS.txtitself in its own checksum list.Winget should remain a distribution/install channel, not a replacement for Authenticode signing, checksums, or attestations.
Tasks
SHA256SUMS.txtafter all release assets are built.SHA256SUMS.txtas a GitHub Release asset.SHA256SUMS.txt.SHA256SUMS.txtthe canonical checksum source for documentation, website metadata, and Winget manifest updates.InstallerSha256value.Suggested implementation
Example checksum step:
Example attestation permissions:
If the same job also creates or updates a GitHub Release, keep the required
contents: writepermission for that job.Example attestation step:
Adjust the glob patterns to match the actual release output paths.
User-facing verification commands
These commands should work after this issue is complete.
Windows:
macOS:
Linux:
GitHub attestation:
Acceptance criteria
SHA256SUMS.txt.SHA256SUMS.txt.SHA256SUMS.txtis attached to the GitHub Release.gh attestation verifysucceeds for at least one asset from each supported OS.InstallerSha256value.