// kit 01
PQC Toolkit
Cripto post-cuántica lista para producción. Elige stack, elige primitiva, copia el código.
$ release_sign.py
L1
1 from pqcrypto.sign import sphincs_sha2_128s_simple as slh 2 from hashlib import sha384 3 from pathlib import Path 4 import sys 5 6 def 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 12 def 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 20 if __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_simplees 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.