Loading test vectors that are not in the repository.
Two algorithms here are registered experimental rather than available
for one reason: nobody has checked them against values produced by something
other than themselves. ML-KEM-768 and AES-GCM-SIV have every component
verified against an independent oracle and their assembly verified against
nothing, because no ACVP or RFC vector is wired in.
That gap is not a code problem. It is a files problem, and this crate exists so that closing it needs no code at all: drop a vector file in the right place and the tests start checking against it. Without one they skip, loudly enough to be visible and quietly enough not to fail a build that was never promised the file.
Where the files go
testvectors/<name>.json, relative to the workspace root, or wherever
IC_TEST_VECTORS points. The format is deliberately not raw ACVP:
Every field is a hex string, and which fields a case needs is up to the test
reading it. ACVP's own files nest differently per algorithm and carry a
great deal that is irrelevant here, so converting is a few lines of jq
rather than a parser this crate has to keep up with. testvectors/README.md
records the mapping for each algorithm that wants one.
Why the skip is loud
A test that silently passes when its input is missing is worse than no test:
it reports success for work nobody did. [VectorFile::load] returns None
and the callers print what they were looking for, so an absent file shows up
in the output rather than in nothing at all.