kxco-pq-scan 1.1.0 → 1.1.2

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/ASSESSMENT.md +82 -0
  2. package/README.md +14 -0
  3. package/package.json +5 -3
package/ASSESSMENT.md ADDED
@@ -0,0 +1,82 @@
1
+ # Assessment notes
2
+
3
+ The answers a buyer's readiness assessment asks for: what this package does,
4
+ how it moves when the landscape moves, and what it takes to run it.
5
+
6
+ ## What this package is
7
+
8
+ The tool that tells you where to start. It reads a lock file and reports the
9
+ cryptography in a JavaScript dependency tree that a quantum computer breaks.
10
+
11
+ **No install, no account, no upload.** `npx kxco-pq-scan` reads
12
+ `package-lock.json` on your machine and prints what it finds. Nothing leaves the
13
+ host, which is what makes it usable on the codebase people are least willing to
14
+ send anywhere.
15
+
16
+ **Zero dependencies.** This package has none. There is no transitive tree to
17
+ audit and no upstream that can change what it does between releases — an
18
+ unusual thing for a scanner to be able to say about itself, and the first
19
+ question a security team should ask of any tool they point at their source.
20
+
21
+ **It separates the two threats.** Shor's algorithm breaks RSA and elliptic
22
+ curve outright; Grover's halves a symmetric key's effective strength. A tool
23
+ that reports both as "quantum-vulnerable" produces a migration plan that spends
24
+ the same effort on both. This one distinguishes them, so the plan matches the
25
+ risk.
26
+
27
+ **Hybrids are not findings.** A construction that already combines a classical
28
+ primitive with a post-quantum one is reported as what it is, not as a failure.
29
+ That single behaviour is the difference between a report an engineer acts on and
30
+ one they learn to ignore.
31
+
32
+ **It reads the lock file, on purpose.** A lock file records what was installed
33
+ rather than what was asked for, and the classical cryptography in a tree is
34
+ nearly always transitive — arriving three levels down through something nobody
35
+ chose deliberately. Reading the manifest would miss exactly the findings that
36
+ matter.
37
+
38
+ **It emits a CycloneDX 1.6 CBOM.** A cryptographic bill of materials in the
39
+ standard format, which is what makes the output an input to somebody else's
40
+ process rather than a report that ends in a screenshot.
41
+
42
+ ## Scope
43
+
44
+ The output is a starting point and the README says so in those words: *somewhere
45
+ to start looking, not an inventory*. Turning it into an inventory means
46
+ establishing the function, the algorithm, the component and the assessed
47
+ configuration for each finding, and testing where use remains uncertain. This
48
+ tool gets you the candidate list in seconds, which is the part that would
49
+ otherwise take a week.
50
+
51
+ What it reads is the JavaScript dependency tree. Compiled binaries, hardware
52
+ modules, live TLS and a package that offers several algorithms without saying
53
+ which one your code selects are all outside a static read of a lock file, and
54
+ the README lists each one so a report is never mistaken for a complete
55
+ cryptographic inventory. Being precise about that is what makes the findings it
56
+ does report trustworthy.
57
+
58
+ ## Currency
59
+
60
+ The catalogue ships with the release, so a scan is as current as the version
61
+ installed. `npx kxco-pq-scan` fetches the latest by default, which is the
62
+ recommended way to run it and the reason the invocation in the README has no
63
+ install step.
64
+
65
+ ## Running it
66
+
67
+ **Release integrity.** Every release carries a SLSA provenance attestation
68
+ tying the tarball to the commit and workflow that built it, verifiable with
69
+ `npm audit signatures kxco-pq-scan`, alongside a CycloneDX SBOM at a permanent
70
+ unauthenticated URL and an evidence bundle from `npm run evidence`.
71
+
72
+ **Supported versions.** One line moving forward. Fixes land in the next release.
73
+
74
+ **Cost.** No hardware or runtime ceiling, no network, no state. It reads files
75
+ in a directory it is pointed at and writes a report.
76
+
77
+ **In CI.** Documented in the README, with an exit code a pipeline can gate on.
78
+
79
+ ## Correcting this document
80
+
81
+ Every claim here is checkable against `src/` and the README. If one does not
82
+ match, that is a defect worth reporting through the repository's issues.
package/README.md CHANGED
@@ -17,6 +17,20 @@ npx kxco-pq-scan
17
17
  No install, no account, no upload. It reads `package-lock.json` on your machine
18
18
  and prints what it finds.
19
19
 
20
+ ## Release integrity
21
+
22
+ Every release is checkable without asking us for anything.
23
+
24
+ - **Provenance.** Each release carries a SLSA provenance attestation tying the
25
+ published tarball to the commit and workflow that built it. Verify with
26
+ `npm audit signatures kxco-pq-scan`, or read it directly from
27
+ `registry.npmjs.org/-/npm/v1/attestations/kxco-pq-scan@<version>`.
28
+ - **No dependencies.** This package has none. There is no transitive tree to
29
+ audit and no upstream that can change what it does between releases, which is
30
+ an unusual thing for a scanner to be able to say about itself.
31
+ - **Evidence bundle.** `npm run evidence` regenerates identity, the test run,
32
+ the SBOM and registry signature verification from source.
33
+
20
34
  ## What it actually tells you
21
35
 
22
36
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kxco-pq-scan",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Find quantum-vulnerable cryptography in a JavaScript dependency tree. Separates what Shor's algorithm breaks from what Grover's only weakens, recognises hybrid constructions, and says what it cannot see.",
5
5
  "keywords": [
6
6
  "post-quantum",
@@ -34,10 +34,12 @@
34
34
  "src",
35
35
  "bin",
36
36
  "README.md",
37
- "LICENSE"
37
+ "LICENSE",
38
+ "ASSESSMENT.md"
38
39
  ],
39
40
  "scripts": {
40
- "test": "node --test test/scan.test.js test/cbom.test.js test/cbom.schema.test.js"
41
+ "test": "node --test test/scan.test.js test/cbom.test.js test/cbom.schema.test.js",
42
+ "evidence": "node scripts/build-evidence.mjs"
41
43
  },
42
44
  "engines": {
43
45
  "node": ">=20.19"