pqcrypto_frodo/
lib.rs

1//! # frodo
2//!
3//! This crate provides bindings to and wrappers around the following
4//! implementations from [PQClean][pqc]:
5//!
6//! * frodokem640aes - opt
7//! * frodokem640shake - opt
8//! * frodokem976aes - opt
9//! * frodokem976shake - opt
10//! * frodokem1344aes - opt
11//! * frodokem1344shake - opt
12//!
13//! [pqc]: https://github.com/pqclean/pqclean/
14//!
15//! # Notes
16//! If you use it via the FFI interface: The ``clean`` implementation of
17//! Frodo needs a lot of stack space, specify env variable
18//! `RUST_MIN_STACK` to make sure it has enough stack space in threads.
19//! This is not relevant for the 'normal' api methods.
20
21#![no_std]
22#![allow(clippy::len_without_is_empty)]
23
24// For no-std vectors
25extern crate alloc;
26
27// For tests
28#[cfg(feature = "std")]
29extern crate std;
30
31pub mod ffi;
32pub mod frodokem1344aes;
33pub mod frodokem1344shake;
34pub mod frodokem640aes;
35pub mod frodokem640shake;
36pub mod frodokem976aes;
37pub mod frodokem976shake;
38
39pub use crate::frodokem1344aes::{
40    ciphertext_bytes as frodokem1344aes_ciphertext_bytes,
41    decapsulate as frodokem1344aes_decapsulate, encapsulate as frodokem1344aes_encapsulate,
42    keypair as frodokem1344aes_keypair, public_key_bytes as frodokem1344aes_public_key_bytes,
43    secret_key_bytes as frodokem1344aes_secret_key_bytes,
44    shared_secret_bytes as frodokem1344aes_shared_secret_bytes,
45};
46pub use crate::frodokem1344shake::{
47    ciphertext_bytes as frodokem1344shake_ciphertext_bytes,
48    decapsulate as frodokem1344shake_decapsulate, encapsulate as frodokem1344shake_encapsulate,
49    keypair as frodokem1344shake_keypair, public_key_bytes as frodokem1344shake_public_key_bytes,
50    secret_key_bytes as frodokem1344shake_secret_key_bytes,
51    shared_secret_bytes as frodokem1344shake_shared_secret_bytes,
52};
53pub use crate::frodokem640aes::{
54    ciphertext_bytes as frodokem640aes_ciphertext_bytes, decapsulate as frodokem640aes_decapsulate,
55    encapsulate as frodokem640aes_encapsulate, keypair as frodokem640aes_keypair,
56    public_key_bytes as frodokem640aes_public_key_bytes,
57    secret_key_bytes as frodokem640aes_secret_key_bytes,
58    shared_secret_bytes as frodokem640aes_shared_secret_bytes,
59};
60pub use crate::frodokem640shake::{
61    ciphertext_bytes as frodokem640shake_ciphertext_bytes,
62    decapsulate as frodokem640shake_decapsulate, encapsulate as frodokem640shake_encapsulate,
63    keypair as frodokem640shake_keypair, public_key_bytes as frodokem640shake_public_key_bytes,
64    secret_key_bytes as frodokem640shake_secret_key_bytes,
65    shared_secret_bytes as frodokem640shake_shared_secret_bytes,
66};
67pub use crate::frodokem976aes::{
68    ciphertext_bytes as frodokem976aes_ciphertext_bytes, decapsulate as frodokem976aes_decapsulate,
69    encapsulate as frodokem976aes_encapsulate, keypair as frodokem976aes_keypair,
70    public_key_bytes as frodokem976aes_public_key_bytes,
71    secret_key_bytes as frodokem976aes_secret_key_bytes,
72    shared_secret_bytes as frodokem976aes_shared_secret_bytes,
73};
74pub use crate::frodokem976shake::{
75    ciphertext_bytes as frodokem976shake_ciphertext_bytes,
76    decapsulate as frodokem976shake_decapsulate, encapsulate as frodokem976shake_encapsulate,
77    keypair as frodokem976shake_keypair, public_key_bytes as frodokem976shake_public_key_bytes,
78    secret_key_bytes as frodokem976shake_secret_key_bytes,
79    shared_secret_bytes as frodokem976shake_shared_secret_bytes,
80};