Repository navigation
v1.2.0
verify-attestation.sh is byte-identical to v1.1.0 (sha256 2838c9295365e4a459198b3fa3173472c58b012f3858c13a4941aa7b4ac41010). This release adds tests and published vectors. The verifier's behaviour is unchanged, and if you pinned the v1.1.0 script you do not need to update it.
Test vectors for other implementations
#24: tests/vectors/v1/ publishes 101 fixed vectors for attest.attestation.v1 and attest.statuslist.v1, for anyone writing their own verifier.
- Each vector gives:
- the input files and the verifier arguments, with a fixed
--now; - the expected exit code;
- a stable reason code;
- the reference script's output line.
- the input files and the verifier arguments, with a fixed
- Valid documents also carry the sha-256 of their canonical bytes, to help debug an encoder.
- The keys are committed and marked test-only; never trust anything they sign.
- The set is append-only and protected by
SHA256SUMS. Its schema and evolution policy are intests/vectors/v1/README.md, and the reference runner istests/vectors.sh.
Proof that the signature check is what rejects forgeries
- 24 vectors are marked
signature_only. Every check except the signature passes on them, so only the ML-DSA-65 verification stands between them and exit 0. They cover:- one changed payload value;
- signature bytes flipped at the same length;
- a signature by another key under the issuer's kid;
- a signature transplanted from another attestation;
- a consistent kid switch;
- the status-list equivalents.
tests/mutants.shchecks this property. It builds a copy of the verifier with the signature checks disabled, and requires that copy to accept everysignature_onlycase. That proves the reference rejects them because of the signature and nothing else.- 13 structural vectors cover signature size, a substituted
algand kid mismatches. Separate checks reject these before the signature is examined. tests/run.shruns the vectors and the mutant check in CI and in the release workflow.
Verify this release
sha256sum -c SHA256SUMS
cosign verify-blob --bundle verify-attestation.sh.sigstore.json \
--certificate-identity "https://github.com/Hodeitek/hodeishield-attest-verifier/.github/workflows/release.yml@refs/tags/v1.2.0" \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
verify-attestation.shverify-attestation.sh sha256: 2838c9295365e4a459198b3fa3173472c58b012f3858c13a4941aa7b4ac41010
Full changelog: v1.1.0...v1.2.0