kxco-verify 0.1.0 → 0.1.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.
Files changed (2) hide show
  1. package/CHANGELOG.md +15 -9
  2. package/package.json +11 -11
package/CHANGELOG.md CHANGED
@@ -1,28 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.1 — 2026-05-24
4
+
5
+ Maintenance release. No breaking changes.
6
+
7
+
8
+
3
9
  All notable changes to this project will be documented in this file. The
4
10
  format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
5
11
  this project follows [Semantic Versioning](https://semver.org/).
6
12
 
7
- ## [0.1.0] 2026-05-22
13
+ ## [0.1.0] — 2026-05-22
8
14
 
9
15
  Initial release. Phase 1 of the [`kxco-post-quantum`](https://www.npmjs.com/package/kxco-post-quantum) evolution brief.
10
16
 
11
17
  ### Added
12
- - `verifyManifest(input)` verify an attestation manifest object or JSON string. Returns the 3-state result envelope (`valid` / `invalid` / `error`).
13
- - `verifyUrl(url, opts?)` fetch and verify an attestation by URL. May additionally return `rotated` when the live well-known endpoint serves a different kid than the manifest declared.
14
- - `parseManifest(input)` typed-ish parser with byte-count sanity for ML-DSA-65 publicKey (1952 bytes) and signature (3309 bytes).
15
- - `verifySignature(publicKey, message, signature)` ML-DSA-65 (NIST FIPS 204) verification via `@noble/post-quantum`.
16
- - `computeKid(publicKey)` first 16 hex chars of SHA-256(rawPubkeyBytes). Matches the algorithm used by `kxco-post-quantum`'s `fingerprint()`.
17
- - `getJsonBody(url, opts?)` fetch helper with timeout (default 3000ms), max-byte cap (default 200KB), and SSRF-aware URL validation.
18
- - Browser-safe implementation throughout no `Buffer`, no `node:crypto`, no `process`. Uses `crypto.subtle` where available, falls back to `node:crypto` on Node 18.
18
+ - `verifyManifest(input)` — verify an attestation manifest object or JSON string. Returns the 3-state result envelope (`valid` / `invalid` / `error`).
19
+ - `verifyUrl(url, opts)` — fetch and verify an attestation by URL. May additionally return `rotated` when the live well-known endpoint serves a different kid than the manifest declared.
20
+ - `parseManifest(input)` — typed-ish parser with byte-count sanity for ML-DSA-65 publicKey (1952 bytes) and signature (3309 bytes).
21
+ - `verifySignature(publicKey, message, signature)` — ML-DSA-65 (NIST FIPS 204) verification via `@noble/post-quantum`.
22
+ - `computeKid(publicKey)` — first 16 hex chars of SHA-256(rawPubkeyBytes). Matches the algorithm used by `kxco-post-quantum`'s `fingerprint()`.
23
+ - `getJsonBody(url, opts)` — fetch helper with timeout (default 3000ms), max-byte cap (default 200KB), and SSRF-aware URL validation.
24
+ - Browser-safe implementation throughout — no `Buffer`, no `node:crypto`, no `process`. Uses `crypto.subtle` where available, falls back to `node:crypto` on Node 18.
19
25
  - Live production fixtures captured in `fixtures/` for `chain.kxco.ai/wallet` and `www.target150.com`.
20
26
  - Test suite: 50 tests, 97.5%+ line coverage, includes adversarial cases (signature tampering, kid mismatch, malformed JSON, byte-length attacks).
21
27
  - Smoke script (`npm run smoke`) that exercises both production endpoints end-to-end.
22
28
 
23
29
  ### Known limitations (deliberately deferred to later phases)
24
30
  - No KXCO-controlled key registry. Verification is a math claim only.
25
- - No SLH-DSA-128s or hybrid envelopes ML-DSA-65 only.
31
+ - No SLH-DSA-128s or hybrid envelopes — ML-DSA-65 only.
26
32
  - No transparency log.
27
33
  - The browser app at `verify.kxco.ai` is gated by CORS on the target site. Sites that don't serve `Access-Control-Allow-Origin: *` on their attestation endpoint require the "paste the JSON" fallback path.
28
34
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kxco-verify",
3
- "version": "0.1.0",
4
- "description": "Independent, browser-safe verifier for KXCO post-quantum signed deploy attestations. Verifies ML-DSA-65 (NIST FIPS 204) signatures emitted by sites that use kxco-post-quantum. No trust delegation: this library tells you whether the signature math checks out and whether the manifest-declared key matches the live well-known endpoint it does NOT vouch for any site.",
3
+ "version": "0.1.1",
4
+ "description": "Independent, browser-safe verifier for KXCO post-quantum signed deploy attestations. Verifies ML-DSA-65 (NIST FIPS 204) signatures emitted by sites that use kxco-post-quantum. No trust delegation: this library tells you whether the signature math checks out and whether the manifest-declared key matches the live well-known endpoint \u00e2\u20ac\u201d it does NOT vouch for any site.",
5
5
  "keywords": [
6
6
  "post-quantum",
7
7
  "pqc",
@@ -31,19 +31,19 @@
31
31
  "types": "./src/index.d.ts",
32
32
  "exports": {
33
33
  ".": {
34
- "types": "./src/index.d.ts",
34
+ "types": "./src/index.d.ts",
35
35
  "import": "./src/index.js"
36
36
  },
37
37
  "./parse": {
38
- "types": "./src/parse.d.ts",
38
+ "types": "./src/parse.d.ts",
39
39
  "import": "./src/parse.js"
40
40
  },
41
41
  "./verify": {
42
- "types": "./src/verify.d.ts",
42
+ "types": "./src/verify.d.ts",
43
43
  "import": "./src/verify.js"
44
44
  },
45
45
  "./fetch": {
46
- "types": "./src/fetch.d.ts",
46
+ "types": "./src/fetch.d.ts",
47
47
  "import": "./src/fetch.js"
48
48
  }
49
49
  },
@@ -60,13 +60,13 @@
60
60
  "@noble/post-quantum": "^0.2.1"
61
61
  },
62
62
  "scripts": {
63
- "test": "node --test --test-reporter=spec test/parse.test.js test/verify.test.js test/fetch.test.js test/index.test.js",
64
- "test:cov": "node --test --experimental-test-coverage test/parse.test.js test/verify.test.js test/fetch.test.js test/index.test.js",
65
- "smoke": "node scripts/smoke.js",
66
- "lint": "node -c src/index.js && node -c src/parse.js && node -c src/verify.js && node -c src/fetch.js"
63
+ "test": "node --test --test-reporter=spec test/parse.test.js test/verify.test.js test/fetch.test.js test/index.test.js",
64
+ "test:cov": "node --test --experimental-test-coverage test/parse.test.js test/verify.test.js test/fetch.test.js test/index.test.js",
65
+ "smoke": "node scripts/smoke.js",
66
+ "lint": "node -c src/index.js && node -c src/parse.js && node -c src/verify.js && node -c src/fetch.js"
67
67
  },
68
68
  "publishConfig": {
69
69
  "provenance": true,
70
70
  "access": "public"
71
71
  }
72
- }
72
+ }