pqcrypto_classicmceliece/
lib.rs

1//! # classicmceliece
2//!
3//! This crate provides bindings to and wrappers around the following
4//! implementations from [PQClean][pqc]:
5//!
6//! * mceliece348864 - clean
7//! * mceliece348864f - clean
8//! * mceliece460896 - clean
9//! * mceliece460896f - clean
10//! * mceliece6688128 - clean
11//! * mceliece6688128f - clean
12//! * mceliece6960119 - clean
13//! * mceliece6960119f - clean
14//! * mceliece8192128 - clean
15//! * mceliece8192128f - clean
16//!
17//! [pqc]: https://github.com/pqclean/pqclean/
18//!
19//! # Notes
20//! This implementation requires a lot of stack space. You need to specify
21//! ``RUST_MIN_STACK=800000000``, probably.
22
23#![no_std]
24#![allow(clippy::len_without_is_empty)]
25
26// For no-std vectors
27extern crate alloc;
28
29// For tests
30#[cfg(feature = "std")]
31extern crate std;
32
33pub mod ffi;
34pub mod mceliece348864;
35pub mod mceliece348864f;
36pub mod mceliece460896;
37pub mod mceliece460896f;
38pub mod mceliece6688128;
39pub mod mceliece6688128f;
40pub mod mceliece6960119;
41pub mod mceliece6960119f;
42pub mod mceliece8192128;
43pub mod mceliece8192128f;
44
45pub use crate::mceliece348864::{
46    ciphertext_bytes as mceliece348864_ciphertext_bytes, decapsulate as mceliece348864_decapsulate,
47    encapsulate as mceliece348864_encapsulate, keypair as mceliece348864_keypair,
48    public_key_bytes as mceliece348864_public_key_bytes,
49    secret_key_bytes as mceliece348864_secret_key_bytes,
50    shared_secret_bytes as mceliece348864_shared_secret_bytes,
51};
52pub use crate::mceliece348864f::{
53    ciphertext_bytes as mceliece348864f_ciphertext_bytes,
54    decapsulate as mceliece348864f_decapsulate, encapsulate as mceliece348864f_encapsulate,
55    keypair as mceliece348864f_keypair, public_key_bytes as mceliece348864f_public_key_bytes,
56    secret_key_bytes as mceliece348864f_secret_key_bytes,
57    shared_secret_bytes as mceliece348864f_shared_secret_bytes,
58};
59pub use crate::mceliece460896::{
60    ciphertext_bytes as mceliece460896_ciphertext_bytes, decapsulate as mceliece460896_decapsulate,
61    encapsulate as mceliece460896_encapsulate, keypair as mceliece460896_keypair,
62    public_key_bytes as mceliece460896_public_key_bytes,
63    secret_key_bytes as mceliece460896_secret_key_bytes,
64    shared_secret_bytes as mceliece460896_shared_secret_bytes,
65};
66pub use crate::mceliece460896f::{
67    ciphertext_bytes as mceliece460896f_ciphertext_bytes,
68    decapsulate as mceliece460896f_decapsulate, encapsulate as mceliece460896f_encapsulate,
69    keypair as mceliece460896f_keypair, public_key_bytes as mceliece460896f_public_key_bytes,
70    secret_key_bytes as mceliece460896f_secret_key_bytes,
71    shared_secret_bytes as mceliece460896f_shared_secret_bytes,
72};
73pub use crate::mceliece6688128::{
74    ciphertext_bytes as mceliece6688128_ciphertext_bytes,
75    decapsulate as mceliece6688128_decapsulate, encapsulate as mceliece6688128_encapsulate,
76    keypair as mceliece6688128_keypair, public_key_bytes as mceliece6688128_public_key_bytes,
77    secret_key_bytes as mceliece6688128_secret_key_bytes,
78    shared_secret_bytes as mceliece6688128_shared_secret_bytes,
79};
80pub use crate::mceliece6688128f::{
81    ciphertext_bytes as mceliece6688128f_ciphertext_bytes,
82    decapsulate as mceliece6688128f_decapsulate, encapsulate as mceliece6688128f_encapsulate,
83    keypair as mceliece6688128f_keypair, public_key_bytes as mceliece6688128f_public_key_bytes,
84    secret_key_bytes as mceliece6688128f_secret_key_bytes,
85    shared_secret_bytes as mceliece6688128f_shared_secret_bytes,
86};
87pub use crate::mceliece6960119::{
88    ciphertext_bytes as mceliece6960119_ciphertext_bytes,
89    decapsulate as mceliece6960119_decapsulate, encapsulate as mceliece6960119_encapsulate,
90    keypair as mceliece6960119_keypair, public_key_bytes as mceliece6960119_public_key_bytes,
91    secret_key_bytes as mceliece6960119_secret_key_bytes,
92    shared_secret_bytes as mceliece6960119_shared_secret_bytes,
93};
94pub use crate::mceliece6960119f::{
95    ciphertext_bytes as mceliece6960119f_ciphertext_bytes,
96    decapsulate as mceliece6960119f_decapsulate, encapsulate as mceliece6960119f_encapsulate,
97    keypair as mceliece6960119f_keypair, public_key_bytes as mceliece6960119f_public_key_bytes,
98    secret_key_bytes as mceliece6960119f_secret_key_bytes,
99    shared_secret_bytes as mceliece6960119f_shared_secret_bytes,
100};
101pub use crate::mceliece8192128::{
102    ciphertext_bytes as mceliece8192128_ciphertext_bytes,
103    decapsulate as mceliece8192128_decapsulate, encapsulate as mceliece8192128_encapsulate,
104    keypair as mceliece8192128_keypair, public_key_bytes as mceliece8192128_public_key_bytes,
105    secret_key_bytes as mceliece8192128_secret_key_bytes,
106    shared_secret_bytes as mceliece8192128_shared_secret_bytes,
107};
108pub use crate::mceliece8192128f::{
109    ciphertext_bytes as mceliece8192128f_ciphertext_bytes,
110    decapsulate as mceliece8192128f_decapsulate, encapsulate as mceliece8192128f_encapsulate,
111    keypair as mceliece8192128f_keypair, public_key_bytes as mceliece8192128f_public_key_bytes,
112    secret_key_bytes as mceliece8192128f_secret_key_bytes,
113    shared_secret_bytes as mceliece8192128f_shared_secret_bytes,
114};