kxco-verify 1.4.1 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.5.1 (2026-10-16)
4
+
5
+ **`@noble/post-quantum` 0.7.0 to 0.7.1, exact pin.** No change to the API or its behaviour.
6
+
7
+ The hold at 0.7.0 rested on a finding that 0.7.1 failed nine NIST SLH-DSA verification vectors. That finding was a fault in kxco-post-quantum's ACVP runner, corrected there on 15 October 2026, not in 0.7.1. On the corrected runner the full NIST ACVP set on 0.7.1 returns 1793 passed, 0 failed, 310 skipped, the same totals as 0.7.0. 0.7.1 snapshots its options object and rejects options it does not recognise; this package passes none, so nothing on its verification path changes.
8
+
9
+ ## 1.5.0 (2026-10-09)
10
+
11
+ Runtime support. No change to the API or its behaviour.
12
+
13
+ **Node.js 22.12 or later is required.** `engines.node` moves from `>=20.19`
14
+ to `>=22.12`. Node 20 reached end of life on 30 April 2026. 22.12 is the
15
+ first Node 22 release that loads ES modules through `require()` without a
16
+ flag, the same property the 20.19 floor provided.
17
+
18
+ **CI tests every change on Node 22, 24 and 26.** It tested Node 18, 20 and 22 before.
19
+
20
+ **Releases are built on Node 26**, where they were built on Node 24.
21
+
3
22
  ## 1.4.1
4
23
 
5
24
  Documentation. No source change.
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![node](https://img.shields.io/node/v/kxco-verify.svg)](https://nodejs.org)
12
12
  [![verify.kxco.ai](https://img.shields.io/badge/verify.kxco.ai-live-22c55e)](https://verify.kxco.ai)
13
13
 
14
- Standalone post-quantum credential and attestation verifier for KXCO ML-DSA-87 and ML-DSA-65 signed documents. One dependency, pinned exactly. Works in any modern browser and in Node.js 20.19 and later.
14
+ Standalone post-quantum credential and attestation verifier for KXCO ML-DSA-87 and ML-DSA-65 signed documents. One dependency, pinned exactly. Works in any modern browser and in Node.js 22.12 and later.
15
15
 
16
16
  - **No KXCO server in the trust path.** `verifyManifest()` makes no network request at all, and `verifyUrl()` contacts only the attestation URL you pass and the key endpoint the manifest names.
17
17
  - **Runs in the browser as shipped.** No `Buffer`, no `process` and SHA-256 from WebCrypto, which is how [verify.kxco.ai](https://verify.kxco.ai) checks a signature entirely in the tab.
@@ -19,7 +19,7 @@ Standalone post-quantum credential and attestation verifier for KXCO ML-DSA-87 a
19
19
  - **Live revocation on request.** `--live` asks the KXCO key registry whether the signing kid is still active, and fails closed.
20
20
  - **Made for CI.** `npx kxco-verify <url>` exits 0 for valid, 1 for invalid or revoked, 2 when it cannot fetch or parse and 3 for rotated, with `--json` for machines.
21
21
  - **Independent of the signer.** It calls the primitive directly and shares none of the KXCO signing code, so it can be audited on its own.
22
- - **The primitive NIST's vectors pass.** Verification runs `@noble/post-quantum` 0.7.0, pinned exactly: the version [`kxco-post-quantum`](https://github.com/KnightsbridgeAIQ/kxco-post-quantum/blob/main/CONFORMANCE.md) holds to 1,793 NIST ACVP vectors passed, 0 failed, and 225 interoperability checks against liboqs, Bouncy Castle and the Python reference implementations, 0 failed.
22
+ - **The primitive NIST's vectors pass.** Verification runs `@noble/post-quantum` 0.7.1, pinned exactly: the version [`kxco-post-quantum`](https://github.com/KnightsbridgeAIQ/kxco-post-quantum/blob/main/CONFORMANCE.md) holds to 1,793 NIST ACVP vectors passed, 0 failed, and 225 interoperability checks against liboqs, Bouncy Castle and the Python reference implementations, 0 failed.
23
23
 
24
24
  **The migration has dates.**
25
25
 
@@ -49,7 +49,7 @@ To **sign** attestations, pick the signing package from [the KXCO post-quantum f
49
49
  npm install kxco-verify
50
50
  ```
51
51
 
52
- Node.js 20.19 and later. ESM only. One dependency, and no KXCO server in the trust path.
52
+ Node.js 22.12 and later. ESM only. One dependency, and no KXCO server in the trust path.
53
53
 
54
54
  ## Command line
55
55
 
@@ -258,7 +258,7 @@ hexEquals(a: string, b: string): boolean
258
258
 
259
259
  ## Browser usage
260
260
 
261
- The library is browser-safe by construction. It uses no `Buffer` and no `process`, and takes SHA-256 from `crypto.subtle`, which every modern browser and Node.js 20.19 and later provide.
261
+ The library is browser-safe by construction. It uses no `Buffer` and no `process`, and takes SHA-256 from `crypto.subtle`, which every modern browser and Node.js 22.12 and later provide.
262
262
 
263
263
  Use a bundler (Vite, esbuild, Rollup, webpack), or load as ESM via an import map that points each package at its folder:
264
264
 
@@ -322,11 +322,11 @@ version, and every GitHub Action is pinned by commit SHA.
322
322
 
323
323
  ## Security
324
324
 
325
- **ML-DSA-87** and **ML-DSA-65** (NIST FIPS 204) via [`@noble/post-quantum`](https://github.com/paulmillr/noble-post-quantum) 0.7.0, pinned exactly. No custom cryptography.
325
+ **ML-DSA-87** and **ML-DSA-65** (NIST FIPS 204) via [`@noble/post-quantum`](https://github.com/paulmillr/noble-post-quantum) 0.7.1, pinned exactly. No custom cryptography.
326
326
 
327
327
  Evidenced, and reproducible on your own machine:
328
328
 
329
- - **1,793 NIST ACVP vectors passed, 0 failed** across FIPS 203, 204 and 205 on `@noble/post-quantum` 0.7.0, pinned by digest, per [CONFORMANCE.md](https://github.com/KnightsbridgeAIQ/kxco-post-quantum/blob/main/CONFORMANCE.md). The other 310 are pairings the library refuses as weaker than the parameter set
329
+ - **1,793 NIST ACVP vectors passed, 0 failed** across FIPS 203, 204 and 205 on `@noble/post-quantum` 0.7.1, pinned by digest, per [CONFORMANCE.md](https://github.com/KnightsbridgeAIQ/kxco-post-quantum/blob/main/CONFORMANCE.md). The other 310 are pairings the library refuses as weaker than the parameter set
330
330
  - **225 interoperability checks passed, 0 failed**, against OpenSSL 3.5, liboqs, Bouncy Castle and dilithium-py/kyber-py, in both directions
331
331
  - **SLSA provenance** on every release since 1.2.1: verify with `npm audit signatures`
332
332
  - **CycloneDX SBOM** published with every release since 1.2.1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kxco-verify",
3
- "version": "1.4.1",
3
+ "version": "1.5.1",
4
4
  "description": "Free, browser-safe verifier for KXCO ML-DSA-87 and ML-DSA-65 signatures, with no KXCO server in the trust path. An auditor, regulator or counterparty confirms a signature from the artefact alone, years later, and can check the key is still live on chain.",
5
5
  "keywords": [
6
6
  "post-quantum",
@@ -78,10 +78,10 @@
78
78
  "src"
79
79
  ],
80
80
  "engines": {
81
- "node": ">=20.19"
81
+ "node": ">=22.12"
82
82
  },
83
83
  "dependencies": {
84
- "@noble/post-quantum": "0.7.0"
84
+ "@noble/post-quantum": "0.7.1"
85
85
  },
86
86
  "scripts": {
87
87
  "test": "node --test --test-reporter=spec test/parse.test.js test/verify.test.js test/fetch.test.js test/index.test.js test/ml-dsa-87.test.js test/property.test.js",
@@ -106,6 +106,6 @@
106
106
  },
107
107
  "devDependencies": {
108
108
  "fast-check": "4.10.2",
109
- "kxco-post-quantum": "1.7.7"
109
+ "kxco-post-quantum": "1.11.0"
110
110
  }
111
111
  }