# Post-Quantum cryptographic algorithms

This project contains Post-Quantum cryptographic algorithms that participate in
the [NIST PQC standardization effort][nistpqc]. It is currently a collection of
wrappers around C implementations from the [PQClean][pqclean] project.

## Insecure algorithms
This crate contains optional support for insecure algorithms. They can be enabled via the
``cryptographically-insecure`` flag.

This crate also contains algorithms that have non-constant time implementations.
Always check the relevant algorithms for their security details.

## Included algorithms
This super-crate contains the following cryptographic algorithms:

## Key-Encapsulation Mechanisms

* [``pqcrypto-kyber``](https://crates.io/crates/pqcrypto-kyber)
* [``pqcrypto-frodo``](https://crates.io/crates/pqcrypto-frodo)
* [``pqcrypto-ntru``](https://crates.io/crates/pqcrypto-ntru)
* [``pqcrypto-ntruprime``](https://crates.io/crates/pqcrypto-ntruprime)
* [``pqcrypto-saber``](https://crates.io/crates/pqcrypto-saber)
* [``pqcrypto-classicmceliece``](https://crates.io/crates/pqcrypto-classicmceliece)
* [``pqcrypto-hqc``](https://crates.io/crates/pqcrypto-hqc)

## Signature Schemes
* [``pqcrypto-dilithium``](https://crates.io/crates/pqcrypto-dilithium)
* [``pqcrypto-falcon``](https://crates.io/crates/pqcrypto-falcon)
* [``pqcrypto-rainbow``](https://crates.io/crates/pqcrypto-rainbow)
* [``pqcrypto-sphincsplus``](https://crates.io/crates/pqcrypto-sphincsplus)

## Serialization

If you want `serde` support, enable the `serialization` feature.
You may also enable it for individual algorithms via `pqcrypto-{alg}/serialization`.

## License

The wrappers and wrapper generation scripts in this project are covered by the
MIT or Apache 2.0 licenses, at your choice.

The implementations we link to are not, however. Please see the [PQClean][pqclean]
project for the appropriate licenses.


[pqclean]: https://github.com/PQClean/PQClean/
[nistpqc]: https://nist.gov/pqc/