cbomctl¶
One CBOM. Every jurisdiction's verdict. And where they contradict.
Germany, France and the EU recommend hybrid post-quantum key exchange. Australia recommends against it. The NSA wants the highest parameter sets and, on current reading, does not permit hybrids on mission systems at all. If you ship into more than one of those markets, those are not independent checkboxes — and no tool will show you the collision.
cbomctl takes a CBOM from any generator, runs it against several national PQC
policies at once, and reports the matrix and the conflicts.
Pre-release
All seven policy packs have been read from their primary sources, and every rule cites the section or page it came from. Still not compliance advice — read the sources before acting on a verdict.
ASSET PURPOSE bsi-de anssi-fr asd-au cnsa-2.0
X25519MLKEM768 key-agreement PASS PASS WARN FAIL ⚠ c3,c4
ECDH key-agreement WARN WARN WARN FAIL ⚠ c1,c2
RSA ambiguous INDET INDET INDET INDET
CONFLICTS
c3 [construction] X25519MLKEM768
anssi-fr, bsi-de recommend a hybrid construction for key-agreement;
asd-au, cnsa-2.0 do not permit one.
No single configuration satisfies all selected jurisdictions.
Three things it does that inventory tools cannot¶
It knows what the data is worth. A CBOM says you use ECDH. It cannot say
that this particular ECDH protects payment records with a 25-year retention
requirement — that comes from you, in cbomctl.yaml, and it is what decides
whether a finding is urgent or routine.
It knows that guidance is not law. Every rule carries a binding value,
from statute down to guideline_recommendation, and that — not severity —
decides FAIL versus WARN. A guideline that recommends cannot fail your
build. See Policy packs.
It refuses to guess. In CBOMkit's published Keycloak CBOM, 8 of 22 algorithm components carry no usable indication of what the key is for. Those are reported unresolved, with the range they would span if guessed — for an ambiguous RSA key that range is the entire severity scale. See Why purpose is hard.
Start here¶
- Quickstart — install, first verdict,
cbomctl.yaml - Urgency and assurance — why key exchange and signatures need different answers to different questions
- Policy packs — what each authority actually says
- CI integration — the GitHub Action and exit codes