// kit 01
PQC Toolkit
Cripto post-cuántica lista para producción. Elige stack, elige primitiva, copia el código.
$ lib/release-signing.ts
L1
1 import { slh_dsa_sha2_128s as slh } from '@noble/post-quantum/slh-dsa'; 2 import { readFileSync, writeFileSync } from 'node:fs'; 3 import { createHash } from 'node:crypto'; 4 5 // One-shot release signing. Used for: 6 // - npm package tarballs 7 // - container image manifests 8 // - SBOM provenance 9 export function signRelease(artifactPath: string, privKey: Uint8Array) { 10 const bytes = readFileSync(artifactPath); 11 const digest = createHash('sha384').update(bytes).digest(); 12 const sig = slh.sign(digest, privKey); 13 writeFileSync(artifactPath + '.slh-dsa.sig', Buffer.from(sig)); 14 return sig; 15 } 16 17 export function verifyRelease(artifactPath: string, sig: Uint8Array, pubKey: Uint8Array) { 18 const bytes = readFileSync(artifactPath); 19 const digest = createHash('sha384').update(bytes).digest(); 20 return slh.verify(sig, digest, pubKey); 21 }
TAMAÑO CLAVE
32 B pub
FIRMA / CT
7856 B sig
NIVEL NIST
L1
NOTAS
SLH-DSA-128s es la elección conservadora: la seguridad se reduce solo a la función hash.
- Úsalo para cosas que firmas una vez y verificas para siempre.
- Firmas de 8 KB. Aceptable para artefactos de 100 MB, pésimo para auth por request.
- Clave pública de 32 B — trivial distribuir.