mod error;
mod kem;
mod params;
mod r3;
mod rq;
mod types;
mod utils;
mod zx;
pub use error::Error;
pub use params::{
Sntrup653Params, Sntrup761Params, Sntrup857Params, Sntrup953Params, Sntrup1013Params,
Sntrup1277Params, SntrupParams,
};
pub use types::{Ciphertext, DecapsulationKey, EncapsulationKey, SharedSecret, SntrupKem};
pub type Sntrup653 = SntrupKem<Sntrup653Params>;
pub type Sntrup761 = SntrupKem<Sntrup761Params>;
pub type Sntrup857 = SntrupKem<Sntrup857Params>;
pub type Sntrup953 = SntrupKem<Sntrup953Params>;
pub type Sntrup1013 = SntrupKem<Sntrup1013Params>;
pub type Sntrup1277 = SntrupKem<Sntrup1277Params>;
pub mod sntrup653 {
pub const PUBLIC_KEY_SIZE: usize = 994;
pub const SECRET_KEY_SIZE: usize = 1518;
pub const CIPHERTEXT_SIZE: usize = 897;
pub const SHARED_SECRET_SIZE: usize = crate::params::SS_BYTES;
pub type EncapsulationKey = crate::EncapsulationKey<crate::Sntrup653Params>;
pub type DecapsulationKey = crate::DecapsulationKey<crate::Sntrup653Params>;
pub type Ciphertext = crate::Ciphertext<crate::Sntrup653Params>;
pub type SharedSecret = crate::SharedSecret<crate::Sntrup653Params>;
#[cfg(feature = "kgen")]
pub fn generate_key(rng: &mut impl rand::CryptoRng) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup653::generate_key(rng)
}
#[cfg(feature = "kgen")]
pub fn generate_key_deterministic(seed: &[u8; 32]) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup653::generate_key_deterministic(seed)
}
}
pub mod sntrup761 {
pub const PUBLIC_KEY_SIZE: usize = 1158;
pub const SECRET_KEY_SIZE: usize = 1763;
pub const CIPHERTEXT_SIZE: usize = 1039;
pub const SHARED_SECRET_SIZE: usize = crate::params::SS_BYTES;
pub type EncapsulationKey = crate::EncapsulationKey<crate::Sntrup761Params>;
pub type DecapsulationKey = crate::DecapsulationKey<crate::Sntrup761Params>;
pub type Ciphertext = crate::Ciphertext<crate::Sntrup761Params>;
pub type SharedSecret = crate::SharedSecret<crate::Sntrup761Params>;
#[cfg(feature = "kgen")]
pub fn generate_key(rng: &mut impl rand::CryptoRng) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup761::generate_key(rng)
}
#[cfg(feature = "kgen")]
pub fn generate_key_deterministic(seed: &[u8; 32]) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup761::generate_key_deterministic(seed)
}
}
pub mod sntrup857 {
pub const PUBLIC_KEY_SIZE: usize = 1322;
pub const SECRET_KEY_SIZE: usize = 1999;
pub const CIPHERTEXT_SIZE: usize = 1184;
pub const SHARED_SECRET_SIZE: usize = crate::params::SS_BYTES;
pub type EncapsulationKey = crate::EncapsulationKey<crate::Sntrup857Params>;
pub type DecapsulationKey = crate::DecapsulationKey<crate::Sntrup857Params>;
pub type Ciphertext = crate::Ciphertext<crate::Sntrup857Params>;
pub type SharedSecret = crate::SharedSecret<crate::Sntrup857Params>;
#[cfg(feature = "kgen")]
pub fn generate_key(rng: &mut impl rand::CryptoRng) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup857::generate_key(rng)
}
#[cfg(feature = "kgen")]
pub fn generate_key_deterministic(seed: &[u8; 32]) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup857::generate_key_deterministic(seed)
}
}
pub mod sntrup953 {
pub const PUBLIC_KEY_SIZE: usize = 1505;
pub const SECRET_KEY_SIZE: usize = 2254;
pub const CIPHERTEXT_SIZE: usize = 1349;
pub const SHARED_SECRET_SIZE: usize = crate::params::SS_BYTES;
pub type EncapsulationKey = crate::EncapsulationKey<crate::Sntrup953Params>;
pub type DecapsulationKey = crate::DecapsulationKey<crate::Sntrup953Params>;
pub type Ciphertext = crate::Ciphertext<crate::Sntrup953Params>;
pub type SharedSecret = crate::SharedSecret<crate::Sntrup953Params>;
#[cfg(feature = "kgen")]
pub fn generate_key(rng: &mut impl rand::CryptoRng) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup953::generate_key(rng)
}
#[cfg(feature = "kgen")]
pub fn generate_key_deterministic(seed: &[u8; 32]) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup953::generate_key_deterministic(seed)
}
}
pub mod sntrup1013 {
pub const PUBLIC_KEY_SIZE: usize = 1623;
pub const SECRET_KEY_SIZE: usize = 2417;
pub const CIPHERTEXT_SIZE: usize = 1455;
pub const SHARED_SECRET_SIZE: usize = crate::params::SS_BYTES;
pub type EncapsulationKey = crate::EncapsulationKey<crate::Sntrup1013Params>;
pub type DecapsulationKey = crate::DecapsulationKey<crate::Sntrup1013Params>;
pub type Ciphertext = crate::Ciphertext<crate::Sntrup1013Params>;
pub type SharedSecret = crate::SharedSecret<crate::Sntrup1013Params>;
#[cfg(feature = "kgen")]
pub fn generate_key(rng: &mut impl rand::CryptoRng) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup1013::generate_key(rng)
}
#[cfg(feature = "kgen")]
pub fn generate_key_deterministic(seed: &[u8; 32]) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup1013::generate_key_deterministic(seed)
}
}
pub mod sntrup1277 {
pub const PUBLIC_KEY_SIZE: usize = 2067;
pub const SECRET_KEY_SIZE: usize = 3059;
pub const CIPHERTEXT_SIZE: usize = 1847;
pub const SHARED_SECRET_SIZE: usize = crate::params::SS_BYTES;
pub type EncapsulationKey = crate::EncapsulationKey<crate::Sntrup1277Params>;
pub type DecapsulationKey = crate::DecapsulationKey<crate::Sntrup1277Params>;
pub type Ciphertext = crate::Ciphertext<crate::Sntrup1277Params>;
pub type SharedSecret = crate::SharedSecret<crate::Sntrup1277Params>;
#[cfg(feature = "kgen")]
pub fn generate_key(rng: &mut impl rand::CryptoRng) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup1277::generate_key(rng)
}
#[cfg(feature = "kgen")]
pub fn generate_key_deterministic(seed: &[u8; 32]) -> (EncapsulationKey, DecapsulationKey) {
crate::Sntrup1277::generate_key_deterministic(seed)
}
}