pqcrypto -- A post-quantum cryptography library
- requirements:
go get -u golang.org/x/crypto/...
- install:
go get -u github.com/lingyunzhao/pqcrypto/...
See Go Doc or Go Walker for usage and details.
Standards: draft-mcgrew-hash-sigs-10
- LM-OTS One-Time Signatures
- Leighton Micali Signatures
- Hierarchical signatures
Standards: draft-irtf-cfrg-xmss-hash-based-signatures-12
- WOTS+ One-Time Signatures
- XMSS: eXtended Merkle Signature Scheme
- XMSS^MT: Multi-Tree XMSS
- LDWM and XMSS are both stateful hash-based signatures. Signing reads a private key and a message and generates a signature but also generates an updated private key. Make sure to update the back-up private key before shutdown the program. You can use
String()
method to serialize a key andParseXXX()
to recover the key from a string. - The merkle tree traversal algorithm used in LDWM and XMSS are in log space and time according to Szydlo04.
- The runtimes of some high security signature types in LDWM and XMSS are very long. However, weaker security signature types such as
LMSSHA256M32H10
in LDWM-LMS andXMSSSHA2H16W256
in XMSS-XMSS are enough for security consideration.
- implement the stateless hash-based signatures scheme SPHINCS
- improve performance
- implement other post-quantum cryptography schemes