libpqcrypto

Location

To access the libpqcrypto command-line tools, add /home/libpqcrypto/command to your PATH:

    export PATH=$PATH:/home/libpqcrypto/command

You can instead put /home/libpqcrypto/command/ in front of each command name; but this does not work for the pq-*-all wrappers.

Signature systems

There is a unified interface for all signature systems; these examples use sphincsf256sha256. To generate a key pair:

    pq-keypair-sphincsf256sha256 5>publickey 9>secretkey

To sign a message:

    pq-sign-sphincsf256sha256 <message 8<secretkey >signedmessage

To verify a signed message and recover the original message:

    pq-open-sphincsf256sha256 <signedmessage 4<publickey >message

If verification fails, pq-open-sphincsf256sha256 produces an empty output, prints an error message on stderr, and exits 100.

Encryption systems

There is a unified interface for all encryption systems; these examples use mceliece8192128. To generate a key pair:

    pq-keypair-mceliece8192128 5>publickey 9>secretkey

To encrypt a message:

    pq-encrypt-mceliece8192128 <message 4<publickey >ciphertext

To decrypt a ciphertext and recover the original message:

    pq-decrypt-mceliece8192128 <ciphertext 8<secretkey >message

If decryption fails, pq-decrypt-mceliece8192128 produces an empty output, prints an error message on stderr, and exits 100.

Benchmarking

Run pq-size-all to see key sizes etc. (For picnic*fs, signature sizes are message-dependent; the maximum possible signature size is reported.) Run pq-speed-all to see key-generation times etc. Run pq-notes-all for implementation notes. The output formats are subject to change.


Version: This is version 2018.03.14 of the "CLI" web page.