// CBOM · NO_LOGIN_REQUIRED
// DOWNLOAD
CBOM.json
The inventory itself, CycloneDX 1.6.
CBOM.json.sig
Detached Ed25519 signature over the SHA-256 of that file.
cbom_signing_key.pub
The 32-byte public key the signature is checked against.
Envelope, as served
// WHAT_THIS_SIGNATURE_IS_NOT
Read before citing this signature
The signing key is a development Ed25519 key held in a software SoftHSM2 token, not a production HSM key. A signature made with it is cryptographically valid and attests to nothing an auditor should rely on.
The envelope’s key_label field reads A3E9-ATTESTATION-KEY-PROD. That is the label the signing tool was asked to record — it is not evidence of which key signed, and the production key of that name did not exist in the token where this was produced. The field is named here because the .sig file travels independently of this page, and read on its own that line invites precisely the wrong conclusion.
What the signature is good for: change detection. It proves the bytes served here are the bytes that were signed, so a modified inventory fails the check. It does not tie the inventory to a production HSM, and nothing published today does.
// VERIFY_IT
# 1. Fetch all three files curl -sO https://a3e9.com/evidence/CBOM.json curl -sO https://a3e9.com/evidence/CBOM.json.sig curl -sO https://a3e9.com/evidence/cbom_signing_key.pub # 2. The digest in the envelope must match the file you were served sha256sum CBOM.json grep '^cbom_sha256=' CBOM.json.sig # 3. Rebuild the public key as a DER SubjectPublicKeyInfo, then PEM HEX=$(grep -v '^#' cbom_signing_key.pub | tr -d '[:space:]') printf '302a300506032b6570032100%s' "$HEX" | xxd -r -p > pub.der openssl pkey -pubin -inform DER -in pub.der -out pub.pem # 4. Extract the base64 signature and the raw digest it covers sed -n '/^---BEGIN/,/^---END/p' CBOM.json.sig \ | grep -v '^---\|^cbom_sha256=\|^key_label=\|^signed_at=' \ | tr -d '\n' | base64 -d > sig.bin sha256sum CBOM.json | cut -d' ' -f1 | xxd -r -p > digest.bin # 5. Verify. Ed25519 over the 32 raw digest bytes. openssl pkeyutl -verify -pubin -inkey pub.pem -rawin -in digest.bin -sigfile sig.bin # -> Signature Verified Successfully
The signature is Ed25519 over the 32 raw digest bytes rather than over the file, which is why step 4 builds digest.bin instead of passing the JSON directly. If step 2’s two values disagree, stop — the file you were served is not the file that was signed, and step 5 will fail for that reason rather than for a key reason.
// WHAT_IT_INVENTORIES
Limit
// WHAT_A_TOKEN_ADDS
The CBOM describes a build. A token confirms the image actually running is that build, which no downloadable file can establish about itself.
Everything above is checkable without contacting anyone, and is meant to be read first. The token exists because the remainder needs a provisioned environment — not because the evidence is being held back.