Stateless hash-based signatures


Reference implementation

The SPHINCS+ C reference implementation contains software for the 18 instantiations of SPHINCS+ described in the SPHINCS+ specification in subdirectories

  • crypto_sign/sphincs-shake256-128s
  • crypto_sign/sphincs-shake256-128f
  • crypto_sign/sphincs-sha256-128s
  • crypto_sign/sphincs-sha256-128f
  • crypto_sign/sphincs-haraka-128s
  • crypto_sign/sphincs-haraka-128f
  • crypto_sign/sphincs-shake256-192s
  • crypto_sign/sphincs-shake256-192f
  • crypto_sign/sphincs-sha256-192s
  • crypto_sign/sphincs-sha256-192f
  • crypto_sign/sphincs-haraka-192s
  • crypto_sign/sphincs-haraka-192f
  • crypto_sign/sphincs-shake256-256s
  • crypto_sign/sphincs-shake256-256f
  • crypto_sign/sphincs-sha256-256s
  • crypto_sign/sphincs-sha256-256f
  • crypto_sign/sphincs-haraka-256s
  • crypto_sign/sphincs-haraka-256f

In each of those subdirectories, simply run "make" to build software for the corresponding instance of SPHINCS+ and the the binary PQCgenKAT_sign, which generates test-vector files (KAT files) in the format requested by NIST.

This is version 20180313 of the C reference implementation, replacing the original version.

Parameter Exploration Script

The SPHINCS+ parameter exploration SAGE script allows to do exhaustive search over the parameter space. It is described in the SPHINCS+ paper.