@qnsp/cryptography
Post-quantum cryptography (PQC) primitives for Node.js: ML-KEM, ML-DSA, SLH-DSA, FN-DSA, HQC — all 90 NIST PQC algorithms via liboqs. Free tier at cloud.qnsp.cuilabs.io.
Supply chain provenance
Status for the latest visible version.
Without SLSA provenance there is no cryptographic link between this tarball and the public source — the axios compromise (March 2026) relied on exactly this gap.
Maintainers
Keywords
Accepted risks
Findings the reviewer chose to accept rather than block on.
| Source | Rule | Reason | Accepted by | When |
|---|---|---|---|---|
| semgrep | semgrep:env-spread | AI (semgrep): Fires in test file to snapshot/restore process.env — standard test hygiene, not a data leak. | ai | |
| semgrep | semgrep:new-function-constructor | AI (semgrep): Used to wrap dynamic import() for ESM compatibility; input is a static module path, not user-controlled. | ai |
v0.2.0
3 findingsSpreading entire process.env into an object — may capture all secrets 58 | describe("pqc-tls - Deep Branch Coverage", () => { 59 | let testDir: string; > 60 | const originalEnv = { ...process.env }; 61 | 62 | beforeAll(async () => {
Spreading entire process.env into an object — may capture all secrets 457 | try { 458 | await execFileAsync(opensslPath, args, { > 459 | env: { 460 | ...process.env, 461 | ...envOverrides,
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.1
3 findingsSpreading entire process.env into an object — may capture all secrets 58 | describe("pqc-tls - Deep Branch Coverage", () => { 59 | let testDir: string; > 60 | const originalEnv = { ...process.env }; 61 | 62 | beforeAll(async () => {
Spreading entire process.env into an object — may capture all secrets 457 | try { 458 | await execFileAsync(opensslPath, args, { > 459 | env: { 460 | ...process.env, 461 | ...envOverrides,
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.1.0
3 findingsSpreading entire process.env into an object — may capture all secrets 58 | describe("pqc-tls - Deep Branch Coverage", () => { 59 | let testDir: string; > 60 | const originalEnv = { ...process.env }; 61 | 62 | beforeAll(async () => {
Spreading entire process.env into an object — may capture all secrets 457 | try { 458 | await execFileAsync(opensslPath, args, { > 459 | env: { 460 | ...process.env, 461 | ...envOverrides,
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.
v0.0.1
3 findingsSpreading entire process.env into an object — may capture all secrets 66 | describe("pqc-tls - Deep Branch Coverage", () => { 67 | let testDir: string; > 68 | const originalEnv = { ...process.env }; 69 | 70 | beforeAll(async () => {
Spreading entire process.env into an object — may capture all secrets 444 | try { 445 | await execFileAsync(opensslPath, args, { > 446 | env: { 447 | ...process.env, 448 | ...envOverrides,
Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.