mod aead;
mod auth;
mod csprng;
pub mod domain;
mod hash;
mod kdf;
mod kem;
mod wrap;
#[cfg(feature = "hpke")]
#[cfg_attr(docsrs, doc(cfg(feature = "hpke")))]
mod hpke_backend;
pub use aead::Aead;
pub use auth::{Authenticator, AuthenticatorContext, EnrolledCredential};
pub use csprng::Csprng;
pub use domain::DomainSeparator;
pub use hash::Hash;
pub use kdf::{derive_wrapping_key, Kdf};
pub use kem::{Kem, KemError};
pub use wrap::{KeyWrap, WrapBinding};
#[cfg(feature = "hpke")]
#[cfg_attr(docsrs, doc(cfg(feature = "hpke")))]
pub use hpke_backend::{gen_keypair, DhKemP256HkdfSha256, HpkeDhKem};
#[cfg(feature = "std-primitives")]
#[cfg_attr(docsrs, doc(cfg(feature = "std-primitives")))]
pub use aead::ChaCha20Poly1305;
#[cfg(feature = "std-primitives")]
#[cfg_attr(docsrs, doc(cfg(feature = "std-primitives")))]
pub use csprng::OsCsprng;
#[cfg(feature = "std-primitives")]
#[cfg_attr(docsrs, doc(cfg(feature = "std-primitives")))]
pub use hash::Sha256;
#[cfg(feature = "std-primitives")]
#[cfg_attr(docsrs, doc(cfg(feature = "std-primitives")))]
pub use kdf::HkdfSha256;
#[cfg(feature = "std-primitives")]
#[cfg_attr(docsrs, doc(cfg(feature = "std-primitives")))]
pub use wrap::AeadWrap;
#[cfg(feature = "std-primitives")]
#[cfg_attr(docsrs, doc(cfg(feature = "std-primitives")))]
pub struct StdPrimitives;
#[cfg(feature = "std-primitives")]
impl PrimitiveSuite for StdPrimitives {
type Hash = Sha256;
type Kdf = HkdfSha256;
type Aead = ChaCha20Poly1305;
type Wrap = AeadWrap<ChaCha20Poly1305>;
type Csprng = OsCsprng;
}
pub trait PrimitiveSuite {
type Hash: Hash;
type Kdf: Kdf;
type Aead: Aead;
type Wrap: KeyWrap;
type Csprng: Csprng;
}