QNSQY: more checks, October 2026. Summary. Our own runs on one laptop-class Linux machine, over three builds: the Standard edition (released on 2026-10-14) and the Approved Mode and CNSA 2.0 editions (built and tested internally, not released). Self-administered. This is not an audit or a certification. QNSQY is not FIPS 140-3 validated. 1. NIST ACVP test vectors, answered by our test runner, in the release gate of 2026-10-14 Run 2026-10-14 on the release candidate (commit 1a7571d8f). Vectors: NIST ACVP-Server release v1.1.0.43 (commit 975de31e). Every answer is checked against NIST's expected results. "Not offered" counts vector cases for parameter sets or input forms a build does not offer, or that the runner does not answer; they are never counted as passed. "Wrong" adds failed, error, missing, duplicate and extra answers. Standard edition Vector set cases passed not offered wrong SHA2-256-1.0 517 517 0 0 SHA2-384-1.0 1,029 137 892 0 SHA2-512-1.0 1,029 1,029 0 0 SHA3-256-2.0 1,199 156 1,043 0 HMAC-SHA2-256-1.0 975 975 0 0 HMAC-SHA2-256-2.0 150 150 0 0 HMAC-SHA2-512-1.0 975 975 0 0 HMAC-SHA2-512-2.0 150 150 0 0 PBKDF-1.0 50 0 50 0 hmacDRBG-1.0 330 30 300 0 ACVP-AES-GCM-1.0 60 0 60 0 KDA-HKDF-Sp800-56Cr2 2,000 400 1,600 0 ML-KEM-keyGen-FIPS203 75 75 0 0 ML-KEM-encapDecap-FIPS203 165 165 0 0 ML-KEM-encapDecap-FIPS203-tr1 195 195 0 0 ML-DSA-keyGen-FIPS204 75 75 0 0 ML-DSA-sigGen-FIPS204 360 360 0 0 ML-DSA-sigGen-FIPS204-tr1 720 720 0 0 ML-DSA-sigVer-FIPS204 180 180 0 0 Total 10,234 6,289 3,945 0 Planted-error check: (one hex digit changed) on SHA2-256-1.0: detected (1 bad) Planted-error check: (one answer dropped) on SHA2-256-1.0: detected (1 bad) Approved Mode (not released) Vector set cases passed not offered wrong SHA2-256-1.0 517 517 0 0 SHA2-384-1.0 1,029 137 892 0 SHA2-512-1.0 1,029 1,029 0 0 SHA3-256-2.0 1,199 156 1,043 0 HMAC-SHA2-256-1.0 975 975 0 0 HMAC-SHA2-256-2.0 150 150 0 0 HMAC-SHA2-512-1.0 975 975 0 0 HMAC-SHA2-512-2.0 150 150 0 0 PBKDF-1.0 50 0 50 0 hmacDRBG-1.0 330 30 300 0 ACVP-AES-GCM-1.0 60 0 60 0 KDA-HKDF-Sp800-56Cr2 2,000 400 1,600 0 ML-KEM-keyGen-FIPS203 75 75 0 0 ML-KEM-encapDecap-FIPS203 165 165 0 0 ML-KEM-encapDecap-FIPS203-tr1 195 195 0 0 ML-DSA-keyGen-FIPS204 75 75 0 0 ML-DSA-sigGen-FIPS204 360 360 0 0 ML-DSA-sigGen-FIPS204-tr1 720 720 0 0 ML-DSA-sigVer-FIPS204 180 139 41 0 Total 10,234 6,248 3,986 0 Planted-error check: (one hex digit changed) on SHA2-256-1.0: detected (1 bad) Planted-error check: (one answer dropped) on SHA2-256-1.0: detected (1 bad) CNSA 2.0 (not released) Vector set cases passed not offered wrong SHA2-256-1.0 517 0 517 0 SHA2-384-1.0 1,029 137 892 0 SHA2-512-1.0 1,029 1,029 0 0 SHA3-256-2.0 1,199 0 1,199 0 HMAC-SHA2-256-1.0 975 975 0 0 HMAC-SHA2-256-2.0 150 150 0 0 HMAC-SHA2-512-1.0 975 975 0 0 HMAC-SHA2-512-2.0 150 150 0 0 PBKDF-1.0 50 0 50 0 hmacDRBG-1.0 330 30 300 0 ACVP-AES-GCM-1.0 60 0 60 0 KDA-HKDF-Sp800-56Cr2 2,000 400 1,600 0 ML-KEM-keyGen-FIPS203 75 75 0 0 ML-KEM-encapDecap-FIPS203 165 105 60 0 ML-KEM-encapDecap-FIPS203-tr1 195 115 80 0 ML-DSA-keyGen-FIPS204 75 75 0 0 ML-DSA-sigGen-FIPS204 360 360 0 0 ML-DSA-sigGen-FIPS204-tr1 720 720 0 0 ML-DSA-sigVer-FIPS204 180 106 74 0 Total 10,234 5,402 4,832 0 Planted-error check: (one hex digit changed) on SHA2-384-1.0: detected (1 bad) Planted-error check: (one answer dropped) on SHA2-384-1.0: detected (1 bad) Sets with 0 passed hold only parameters QNSQY does not offer: the AES-GCM file in this NIST release tests AES-128 (QNSQY uses AES-256-GCM with 96-bit IVs and 128-bit tags), and the PBKDF file tests HMAC-SHA2-224 (QNSQY uses HMAC-SHA-512). AES-256-GCM is covered elsewhere on the validation page (the ACVP harness replay and the Wycheproof AES-256-GCM vectors through QNSQY's own code). The CNSA 2.0 build offers only ML-KEM-1024, ML-DSA-87 and the SHA-384/512 family, so it answers fewer cases. 2. Self-tests and other standards-based suites in the same gate (2026-10-14) Pre-operational self-tests (Approved Mode and CNSA 2.0): before the first cryptographic operation in each process, the program runs known-answer self-tests of SHA-512 and HMAC-SHA-512, the integrity test of its own executable file, and a known-answer self-test for each ML-KEM and ML-DSA parameter set and for its HMAC_DRBG random bit generator. Only then does it offer any cryptography, so every cryptographic test of these builds ran them. Any failure puts the program in its error state. Tests of the executable integrity test: 8 of 8 in each build (also 8 of 8 with the desktop and terminal apps). A test build made to fail a self-test on purpose enters its error state and writes no output: 2 of 2 in each build. Library unit tests: 626 passed (Approved Mode) and 632 passed (CNSA 2.0), 0 failed. Every ML-KEM and ML-DSA key pair these builds generate also gets a pair-wise consistency test (FIPS 140-3 Implementation Guidance 10.3.A). Known-answer test suite: 405 of 405 in each of the three builds (403 in the 2026-09-24 sweep). NIST ML-DSA rejection-path vectors: 2 of 2 (Approved Mode, CNSA 2.0), 1 of 1 (Standard). AES-GCM key and IV uniqueness (FIPS 140-3 Implementation Guidance C.H, from SP 800-38D): 3 of 3 in each build. OpenSSL 3.5 interoperability: 12 of 12 in each build. 3. Fuzzing, 2026-10-10 to 2026-10-12 (code of 2026-10-10 to 10-12, before the release of 2026-10-14) Coverage-guided fuzzing (libFuzzer); each target had a full 90-minute run (some again after an early stop on an overloaded machine): Standard edition 50 targets 941,358,532 executions Approved Mode 50 targets 1,238,673,829 executions CNSA 2.0 53 targets 732,741,834 executions Total 153 runs 2,912,774,195 executions New targets since the 2026-09-24 campaign include the polyglot, deniable, time-lock, steganography, archive and command-line parsers. In these campaigns: no crash, memory leak or out-of-memory. 26 runs (20 Approved Mode, 6 CNSA 2.0) were flagged while the test machine was overloaded: 25 left timeout or slow-input files and 1 was stopped early. Each file replayed alone finished in milliseconds, or the target's full re-run had no finding. Targets that run full encryption with password hashing reach only about 1,000 executions in that time. The one-minute smoke runs before the campaigns (2026-10-10) flagged 4 inputs: 2 were problems in the test harnesses (fixed), 1 was behaviour kept on purpose for files from older versions, and 1 was a real defect: `decrypt --verify-only` checked the header but not every data chunk, so a damaged chunk could pass it. Fixed in the release of 2026-10-13: it now checks every chunk. 4. Miri (the Rust project's undefined-behaviour checker), 2026-10-10 The core library's unit tests that run its pure-Rust low-level code (the blocks that wipe AES-GCM, XChaCha20-Poly1305 and Ed25519 key state, and the HQC shared secret): 14 of 14 passed, no undefined behaviour reported; one slow test that runs the same code was skipped. Miri cannot run code that calls C or the operating system, so the C cryptography libraries and the operating-system calls are outside this check. Writing the HQC test found that the shipped program wiped a copy of the HQC shared secret instead of the original. Fixed in the release of 2026-10-13. 5. Code coverage of the unit tests alone, 2026-10-10 (a lower bound: the integration suites are not counted) Core library, Standard edition 68.07% of lines (488 tests) Full program, Approved Mode 29.48% of lines (587 tests) Full program, CNSA 2.0 28.67% of lines (596 tests) The full program's command-line, desktop, terminal and AI-agent front ends are tested mostly by the integration suites. A coverage run now fails if line coverage drops below these figures. 6. Mutation testing (cargo-mutants) of the Approved Mode policy code, 2026-10-11 109 deliberate small bugs planted in each build. The tests caught 78 of 109 in Approved Mode and 101 of 109 in CNSA 2.0. Every miss was reviewed: 6 pointed to real gaps in the tests, and each now has a test; the others cannot change behaviour in the build that was tested, or change nothing. This covers the policy code only. 7. Billing and payments API: OWASP ASVS 5.0.0 (all 345 requirements, Levels 1 to 3) Covered by an automated test 213 Not applicable, with the exemption enforced by a test 87 Met by written policy 35 Checked by hand or outside the code 4 Open 6 Open examples: a second factor is optional for ordinary users; server secrets are not held in a hardware security module. Assessed is not the same as compliant. Assessment of 2026-07-31. Billing test suite re-run 2026-10-16: 44 files, 909 passed, 0 failed, 2 skipped, 8 marked to-do. 8. Billing and payments API: dynamic scan (DAST), 2026-10-10 On a local copy (never production), without an account: every route that needs sign-in, with no or forged credentials; cross-site request and cross-origin checks; malformed and injection inputs on every public route; and the nuclei scanner's templates (2,640). The first run found 4 defects (server errors on malformed input, a key-expiry setting that broke one sign-in path, missing security headers on sign-in pages). All are fixed, covered by regression tests, and live since 2026-10-13. Re-run: 2,608 probe requests and 7,370 scanner requests; only informational header notes remain. Not a penetration test; a pass with a signed-in account is next. Where each check comes from: NIST ACVP vectors ............ NIST Cryptographic Algorithm Validation Program (official, NIST) Self-tests, pair-wise tests .. FIPS 140-3 and its Implementation Guidance 10.3.A and C.H (official NIST requirements for validated modules; QNSQY is not validated) Random-bit-generator checks .. NIST SP 800-90A Rev. 1 (official, NIST) Wycheproof vectors ........... C2SP Wycheproof project (industry test vectors, not a standard) OWASP ASVS 5.0.0 ............. OWASP Foundation (industry standard, not government) Fuzzing ...................... NIST IR 8397 sections 2.9 and 3.4; NIST SP 800-218 (SSDF) PW.8 Dynamic scan (DAST) .......... NIST IR 8397 section 2.10; NIST SP 800-53 Rev. 5 SA-11(8) Miri ......................... Rust project tool, for NIST IR 8397 sections 2.5 and 3.2 Coverage, mutation testing ... NIST IR 8397 section 3.3