Erlang NIF for SPHINCS-256: practical stateless hash-based signatures.
Switch branches/tags
Nothing to show
Clone or download
Latest commit 9f11fd5 Sep 13, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
c_src Add missing include. Sep 13, 2016
doc Bump SUPERCOP versions. Sep 13, 2016
src Add app.src Sep 12, 2016
test Add proper-based property test. Sep 12, 2016
.gitignore Use rebar3. Sep 12, 2016
.travis.yml Hack the install target on Travis. Sep 12, 2016 Bump SUPERCOP versions. Sep 13, 2016
rebar.config Use edown for documentation. Sep 12, 2016
rebar.lock Use rebar3. Sep 12, 2016

SPHINCS-256 NIF for Erlang

Version: 1.0.0 (SUPERCOP: 20160910)

Authors: Alexander Færøy (

SPHINCS-256 is a high-security post-quantum stateless hash-based signature scheme. This repository contains the SPHINCS-256 implementation found in the SUPERCOP performance suite together with an Erlang NIF's for the SPHINCS API.

SPHINCS-256 uses 41 KB signatures, 1 KB public keys, and 1 KB private keys.

For more information about SPHINCS see:

Example Usage

  1. Alice generates a new keypair and sends her public key to Bob.
{ok, #{ secret := Secret, public := Public }} = sphincs:keypair().
  1. Alice signs a document and sends it to Bob.
SignedDocument = sphincs:sign(Document, Secret).
  1. Bob verifies the signed document from Alice.
sphincs:verify(SignedDocument, Public).


  • It's currently only the ref implementation of BLAKE-256, BLAKE-512, ChaCha12 and SPHINCS-256 that have been tested. It would be nice to have vectorized versions for higher performance.

  • The Erlang bindings of sphincs could use some tests :-)