Three levels of verification
All three levels start from Settings → Encryption → Verify.
The Verify page shows the expected values from the signed manifest next to each command, so you can compare them yourself. Corsa never marks your stack as verified from its own data. The evidence is the output of the commands you run.
What a release contains
The code is built inside a builder image pinned by digest. Every code package except the small installer is signed by Corsa’s release process, and your stack refuses unsigned code. See Signed code only.
Level 1: Review the source in the app
1
Open Source audit
In Settings → Encryption → Verify, open Source audit. Pick the installed release or any newer one.
2
Note the release digest
Write down the release version and digest. You’ll compare them with your stack later.
3
Review the code
Focus on the decryption check (the only code that calls KMS
Decrypt), the code that reports to Corsa, the installer, and the Secure Viewer files. Each file shows ✓ when your browser’s SHA-256 of it matches the signed manifest, or ✗ when it doesn’t.Level 2: Check and rebuild the release with the kit
The verification kit lets you check the release on your own machine and rebuild it.Download the kit
On the Verify page, pick a release and click Download verification kit. Each file comes with its SHA-256. The download links expire after a few hours. The page shows the exact time. Download the kit again to get fresh links.Verify the signature
Check the archive’s signature with cosign:--certificate-identity-regexp.
On macOS, use shasum -a 256 instead of sha256sum.
Check the files and the release digest
Reproduce the build (optional)
Releases are reproducible. With the same source commit, builder image, andSOURCE_DATE_EPOCH, the build produces byte-identical code packages, viewer files, and archive.
1
Load the builder image
builderImageDigest in build-recipe.json and manifest.json.2
Unpack the source
3
Run the recorded build
Run the
command from build-recipe.json with SOURCE_DATE_EPOCH set to the recorded value. You need Docker with Buildx.4
Compare the output
Compare the rebuilt files with
manifest.json and checksums.txt from the signed release. Never deploy a rebuild: your stack only installs the signed release.Level 3: Check the running stack
verify.sh checks the stack running in your account against the signed release. It’s a short, readable bash script that uses only aws, jq, curl, sha256sum or shasum, base64, xxd, and openssl. It prints a report for your records and sends nothing to Corsa.
1
Open AWS CloudShell
Sign in to the AWS account that owns the stack and open CloudShell in the stack’s region.
2
Get verify.sh
Upload
verify.sh and checksums.txt from the kit (Actions → Upload file), or copy the command from the Verify page. Read the script before you run it.3
Run the check
4
Read the report
The script prints a PASS or FAIL line for each check and exits with a non-zero status if any check fails. Archive the output with the release materials.
What verify.sh checks
Before an upgrade,
verify.sh checks the change set instead. See Upgrades.
Run the check after setup and after every upgrade or rollback. Expected configuration changes are fine. Any release, code, viewer, code signing, or key protection failure is drift: see Drift.