pub mod kem;
pub mod pke;
pub mod serialize;
pub mod signature;
pub mod symmetric;
pub use kem::Kem;
pub use pke::Pke;
pub use serialize::{Serialize, SerializeSecret};
pub use signature::Signature;
pub use symmetric::SymmetricCipher;
pub trait BlockCipher {
const BLOCK_SIZE: usize;
const ALGORITHM_ID: &'static str;
fn name() -> String {
Self::ALGORITHM_ID.to_string()
}
}
pub trait StreamCipher {
const STATE_SIZE: usize;
const ALGORITHM_ID: &'static str;
fn name() -> String {
Self::ALGORITHM_ID.to_string()
}
}
pub trait AuthenticatedCipher {
const TAG_SIZE: usize;
const ALGORITHM_ID: &'static str;
fn name() -> String {
Self::ALGORITHM_ID.to_string()
}
}
pub trait KeyDerivationFunction {
const MIN_SALT_SIZE: usize;
const DEFAULT_OUTPUT_SIZE: usize;
const ALGORITHM_ID: &'static str;
fn name() -> String {
Self::ALGORITHM_ID.to_string()
}
}
pub trait HashAlgorithm {
const OUTPUT_SIZE: usize;
const BLOCK_SIZE: usize;
const ALGORITHM_ID: &'static str;
fn name() -> String {
Self::ALGORITHM_ID.to_string()
}
}