kxco-post-quantum 1.6.1 → 1.6.3

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 +49 -0
  2. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,54 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.6.3
4
+
5
+ Release plumbing only. No source change.
6
+
7
+ 1.6.2 shipped without its evidence bundle, because the upload step was gated on
8
+ a `release` event that cannot occur: publish.yml creates the release with the
9
+ default GITHUB_TOKEN, and GitHub raises no workflow events for actions taken
10
+ with that token. The bundle attached by hand afterwards came from a
11
+ push-triggered build, so it carried 855 subsampled vectors while the README
12
+ states that 1,479 are in the downloadable bundle. Correctly labelled in the
13
+ manifest, but not what the README describes.
14
+
15
+ This release exists so a tag produces the bundle the README promises: the
16
+ workflow now runs on `v*` tags, treats a tag as a full build rather than a
17
+ subsampled one, and uploads without a human in the loop.
18
+
19
+ ## 1.6.2
20
+
21
+ No change to the cryptography, the exports or the wire format. This release
22
+ exists because the evidence describing them was wrong.
23
+
24
+ **The interoperability report contradicted itself.** Every check wrote its
25
+ failure sentence unconditionally while `ok` was computed separately, so a
26
+ passing tamper control published `{"ok": true, "detail": "peer accepted a
27
+ tampered signature"}`, and a passing byte-equality check published
28
+ "deterministic signatures differ" followed by two identical values. 150 passing
29
+ checks in the last bundle carried text that reads as a security failure. Every
30
+ check now takes its sentence from its outcome.
31
+
32
+ **The evidence bundle could not be built in CI, and never had been.** The
33
+ workflow ran `npm ci` and nothing else: no ACVP vector fetch, no Java, no
34
+ pinned Python peers, no liboqs image. Eight runs, both runtimes, all failed at
35
+ the same step, so the only bundle an assessor could reach was hand-built from
36
+ an uncommitted working tree. The workflow now does the setup its sibling always
37
+ did, and the build starts from an empty directory rather than inheriting files
38
+ from the run before it.
39
+
40
+ **OpenSSL changed its default ML-DSA private key encoding in a patch release.**
41
+ 3.5.6 writes the 54-byte seed form, 3.5.7 the 4098-byte expanded form. FIPS 204
42
+ allows either and this package still writes the seed form, which 3.5.7 continues
43
+ to accept. The conformance test compared our bytes against whatever OpenSSL
44
+ preferred, so it began failing on a change that was not ours. It now holds the
45
+ byte-identity claim where OpenSSL writes seeds, and asserts that OpenSSL parses
46
+ our seed form to the same seed and public key where it does not.
47
+
48
+ **The dependency audit failed on its own regex**, matching an import specifier
49
+ inside a string in an error message and reporting an unresolvable module named
50
+ `priv`. Same 39 files from 12 entry points, same verdicts, no false failure.
51
+
3
52
  ## 1.6.0
4
53
 
5
54
  Additive. No existing export changes shape in a way a caller can observe, no
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kxco-post-quantum",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "ML-DSA-65, ML-KEM-768 and SLH-DSA-SHA2-192s with key fingerprinting. OpenSSL 3.5 primitives on Node 24+, JavaScript elsewhere. 2,103 NIST ACVP vectors and 225 cross-implementation interop checks, 0 failed. Reproducible builds and SLSA provenance.",
5
5
  "keywords": [
6
6
  "post-quantum",