// kit 01

PQC Toolkit

Cripto post-cuántica lista para producción. Elige stack, elige primitiva, copia el código.

$ release_sign.py
L1
PYTHON
1from pqcrypto.sign import sphincs_sha2_128s_simple as slh
2from hashlib import sha384
3from pathlib import Path
4import sys
5 
6def sign(artifact: Path, priv: bytes) -> bytes:
7 digest = sha384(artifact.read_bytes()).digest()
8 sig = slh.sign(priv, digest)
9 (artifact.with_suffix(artifact.suffix + ".slh-dsa.sig")).write_bytes(sig)
10 return sig
11 
12def verify(artifact: Path, sig: bytes, pub: bytes) -> bool:
13 digest = sha384(artifact.read_bytes()).digest()
14 try:
15 slh.verify(pub, digest, sig)
16 return True
17 except Exception:
18 return False
19 
20if __name__ == "__main__":
21 cmd, path = sys.argv[1], Path(sys.argv[2])
22 pub, priv = slh.generate_keypair()
23 if cmd == "sign":
24 sign(path, priv); print("OK")
25 elif cmd == "verify":
26 sig = path.with_suffix(path.suffix + ".slh-dsa.sig").read_bytes()
27 print("OK" if verify(path, sig, pub) else "BAD")
TAMAÑO CLAVE
32 B pub
FIRMA / CT
7856 B sig
NIVEL NIST
L1
NOTAS

Úsalo en CI para firmar artefactos de release.

  • Fija la versión del paquete. sphincs_sha2_128s_simple es wire-compatible con SLH-DSA-SHA2-128s.
  • Guarda la clave privada en un vault de CI accesible solo por jobs de tag firmado.
  • Publica la clave pública en el README del repo y en un canal separado para triangulación.