@typedstandards/verify-core 0.6.0 → 0.6.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 (3) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +22 -11
  3. package/package.json +2 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,52 @@
1
+ # Changelog — @typedstandards/verify-core
2
+
3
+ Factual record of what changed per published version. Check numbers (#1–#15)
4
+ refer to the Typed Standards specification §9.2 verification sequence. Issue
5
+ references are to `npstorey/civic-ai-tools-website` (#119 is the offline-crypto
6
+ hardening arc; #116 is the standalone-verifier arc this package was extracted
7
+ in).
8
+
9
+ ## 0.6.1 — 2026-06-10
10
+
11
+ - Documentation only; no code changes. Corrects the README's stale "Check
12
+ depth (v1)" section — checks #7/#8/#10 have run at full cryptographic depth
13
+ since 0.2.0–0.6.0, not presence/hash-parity/state depth as previously
14
+ described. Adds this changelog.
15
+
16
+ ## 0.6.0 — 2026-06-07
17
+
18
+ - #7 hardening: strict RFC 5280 certificate-chain validation (#119 P4).
19
+ - Shared `parseInclusionProof` guard for #8 consumers (#119 P4).
20
+
21
+ ## 0.5.0 — 2026-06-07
22
+
23
+ - #10 at full depth: independent verification of the signed lifecycle
24
+ attestation chain, including reachability from the package node, replacing
25
+ host-reported state (#119 P3).
26
+
27
+ ## 0.4.0 — 2026-06-07
28
+
29
+ - #7 deepened: TSA certificate-chain verification to a pinned FreeTSA root;
30
+ token `genTime` surfaced to check #5 (#119 P2b).
31
+
32
+ ## 0.3.1 — 2026-06-07
33
+
34
+ - Fix: accept high-S ECDSA signatures (`lowS: false`) from third-party
35
+ signers.
36
+
37
+ ## 0.3.0 — 2026-06-07
38
+
39
+ - #7 at cryptographic depth: RFC 3161 token parsing, message-imprint match,
40
+ and TSA signature verification, FreeTSA profile (#119 P2a).
41
+
42
+ ## 0.2.0 — 2026-06-06
43
+
44
+ - #8 at cryptographic depth: Rekor Merkle inclusion-proof verification from
45
+ the carried proof, against Rekor's pinned public key; carried-offline
46
+ integration test (#119 P1).
47
+
48
+ ## 0.1.0 — 2026-06-05
49
+
50
+ - Initial release (#116 WS2/WS3): the spec §9.2 check suite, browser-safe (no
51
+ Node built-ins). #7 at presence depth, #8 at hash-parity depth, #10 at state
52
+ depth; all other checks fully client-side.
package/README.md CHANGED
@@ -66,17 +66,28 @@ The barrel (`.`) also exports the individual check functions
66
66
  `computeContentHashSha256`), and every status vocabulary type — so a consumer can
67
67
  drive the checks one-at-a-time and render the math as it resolves.
68
68
 
69
- ## Check depth (v1)
70
-
71
- Fully client-side: #1 envelope hash, #2 signature, #3 canonicalization, #4 content
72
- hash, #5 key trust, #6 kid consistency, #9 blob refs, #12 type, #13 nodeId, #14
73
- signer identity, #15 captureMethod vocab. **Presence** only for #7 (RFC 3161).
74
- **Hash-parity** only for #8 (Rekor). **State** depth for #10 (lifecycle).
75
-
76
- The deeper offline crypto — TSA-chain verification, Rekor Merkle-inclusion,
77
- independent lifecycle-chain verification, and the authoritative bundle-mode test —
78
- is a fast-follow (#119), not in this release. The UI built on this should be
79
- honest about what is presence vs. full-crypto.
69
+ ## Check depth (v0.6.x)
70
+
71
+ Every check in the spec §9.2 sequence runs fully client-side, including the three
72
+ that shipped at reduced depth in v0.1:
73
+
74
+ - **#7 RFC 3161 timestamp** — full cryptographic verification: token parsing,
75
+ message-imprint match, TSA signature, and certificate-chain validation with
76
+ strict RFC 5280 checks to a pinned root (FreeTSA EC-P384 leaf → RSA-4096
77
+ root).
78
+ - **#8 Rekor transparency log** — cryptographic Merkle inclusion-proof
79
+ verification from the proof carried with the package, against Rekor's pinned
80
+ public key; no live call to Rekor required.
81
+ - **#10 lifecycle** — independent verification of the signed lifecycle
82
+ attestation chain, including reachability from the package node, instead of
83
+ trusting a host-reported state.
84
+
85
+ Verification is offline-first: from a self-contained commitment bundle the full
86
+ sequence runs with zero network access (demonstrated by a hermetic,
87
+ network-blocked test in this monorepo). Trust anchors (the TSA certificate
88
+ chain and the Rekor log public key) ship pinned in the source with capture
89
+ dates and rotation notes. See `CHANGELOG.md` for how each check reached full
90
+ depth across 0.2.0–0.6.0.
80
91
 
81
92
  ## License
82
93
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typedstandards/verify-core",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Portable, browser-safe verification core for Typed Standards evidence packages — the §9.2 check suite, single-sourced so it verifies identically on a server and in the browser.",
5
5
  "license": "MIT",
6
6
  "author": "Nathan Storey",
@@ -20,6 +20,7 @@
20
20
  "files": [
21
21
  "dist",
22
22
  "README.md",
23
+ "CHANGELOG.md",
23
24
  "LICENSE"
24
25
  ],
25
26
  "scripts": {