kxco-verify 1.0.5 → 1.1.0
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 +15 -0
- package/README.md +1 -1
- package/package.json +12 -8
- package/src/verify.js +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.1.0 — 2026-07-22
|
|
4
|
+
|
|
5
|
+
Engine modernization. Public API unchanged; all 50 tests pass, including live
|
|
6
|
+
verification of the pinned attestation fixtures.
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- **`@noble/post-quantum` bumped `^0.2.1` → `^0.6.1`** (FIPS 203/204/205 final
|
|
10
|
+
reference implementation). Absorbs the upstream breaking change: `ml_dsa65.verify`
|
|
11
|
+
argument order is now `(signature, message, publicKey)`, and the subpath import
|
|
12
|
+
requires the `.js` extension. Both are handled internally — `verifySignature()`
|
|
13
|
+
behaves identically.
|
|
14
|
+
- `engines.node` raised to `>=20.19` to match the `@noble/post-quantum@0.6`
|
|
15
|
+
requirement.
|
|
16
|
+
- `author` set to Shayne Heffernan and John Heffernan.
|
|
17
|
+
|
|
3
18
|
## 1.0.0 — 2026-05-24
|
|
4
19
|
|
|
5
20
|
Stable release.
|
package/README.md
CHANGED
|
@@ -233,7 +233,7 @@ The verifier is architecturally independent of the signer — the two share no c
|
|
|
233
233
|
|
|
234
234
|
Signature verification uses [`@noble/post-quantum`](https://github.com/paulmillr/noble-post-quantum) ML-DSA-65, independently audited by Cure53 (2024) with no transitive dependencies. The library makes no outbound requests beyond the attestation URL you supply and the `pinAt` endpoint declared in the manifest. No data is sent to KXCO.
|
|
235
235
|
|
|
236
|
-
To report a vulnerability, open a [private security advisory](https://github.com/
|
|
236
|
+
To report a vulnerability, open a [private security advisory](https://github.com/KnightsbridgeAIQ/kxco-verify/security/advisories/new) or email **security@kxco.ai**.
|
|
237
237
|
|
|
238
238
|
---
|
|
239
239
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kxco-verify",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "Standalone, browser-safe verifier for KXCO ML-DSA-65 post-quantum signed attestations and credentials
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Standalone, browser-safe verifier for KXCO ML-DSA-65 post-quantum signed attestations and credentials — for auditors, regulators, counterparties, and anyone who needs to confirm a signature without running the full KXCO SDK.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"post-quantum",
|
|
7
7
|
"pqc",
|
|
@@ -22,10 +22,14 @@
|
|
|
22
22
|
"manifest-verification"
|
|
23
23
|
],
|
|
24
24
|
"license": "Apache-2.0",
|
|
25
|
-
"author": "
|
|
25
|
+
"author": "Shayne Heffernan and John Heffernan",
|
|
26
26
|
"contributors": [
|
|
27
|
-
{
|
|
28
|
-
|
|
27
|
+
{
|
|
28
|
+
"name": "Shayne Heffernan"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "John Heffernan"
|
|
32
|
+
}
|
|
29
33
|
],
|
|
30
34
|
"homepage": "https://verify.kxco.ai",
|
|
31
35
|
"funding": "https://kxco.ai",
|
|
@@ -65,10 +69,10 @@
|
|
|
65
69
|
"CHANGELOG.md"
|
|
66
70
|
],
|
|
67
71
|
"engines": {
|
|
68
|
-
"node": ">=
|
|
72
|
+
"node": ">=20.19"
|
|
69
73
|
},
|
|
70
74
|
"dependencies": {
|
|
71
|
-
"@noble/post-quantum": "^0.
|
|
75
|
+
"@noble/post-quantum": "^0.6.1"
|
|
72
76
|
},
|
|
73
77
|
"scripts": {
|
|
74
78
|
"test": "node --test --test-reporter=spec test/parse.test.js test/verify.test.js test/fetch.test.js test/index.test.js",
|
|
@@ -80,4 +84,4 @@
|
|
|
80
84
|
"provenance": true,
|
|
81
85
|
"access": "public"
|
|
82
86
|
}
|
|
83
|
-
}
|
|
87
|
+
}
|
package/src/verify.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// from the Web Crypto API where available (browser, Node 20+), fallback to
|
|
6
6
|
// node:crypto's createHash where SubtleCrypto.digest is not present.
|
|
7
7
|
|
|
8
|
-
import { ml_dsa65 } from '@noble/post-quantum/ml-dsa'
|
|
8
|
+
import { ml_dsa65 } from '@noble/post-quantum/ml-dsa.js'
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Hex string → Uint8Array. Throws on malformed input.
|
|
@@ -79,10 +79,10 @@ export function verifySignature(publicKey, message, signature) {
|
|
|
79
79
|
const pk = typeof publicKey === 'string' ? hexToBytes(publicKey) : publicKey
|
|
80
80
|
const sig = typeof signature === 'string' ? hexToBytes(signature) : signature
|
|
81
81
|
const msg = typeof message === 'string' ? utf8(message) : message
|
|
82
|
-
// @noble/post-quantum signature: (
|
|
83
|
-
// the canonical wrapper in kxco-post-quantum/src/ml-dsa.js.
|
|
82
|
+
// @noble/post-quantum ≥0.6 signature order: (signature, message, publicKey).
|
|
83
|
+
// Matches the canonical wrapper in kxco-post-quantum/src/ml-dsa.js.
|
|
84
84
|
try {
|
|
85
|
-
return ml_dsa65.verify(
|
|
85
|
+
return ml_dsa65.verify(sig, msg, pk)
|
|
86
86
|
} catch {
|
|
87
87
|
return false
|
|
88
88
|
}
|