#![cfg_attr(not(feature = "std"), no_std)]
#![forbid(unsafe_code)]
#![warn(missing_docs)]
extern crate alloc;
#[cfg(any(feature = "ristretto255", feature = "p256"))]
pub mod hash;
#[cfg(any(feature = "ristretto255", feature = "p256"))]
pub mod kdf;
#[cfg(any(feature = "ristretto255", feature = "p256"))]
pub mod mac;
#[cfg(feature = "argon2")]
pub mod ksf;
#[cfg(any(feature = "ristretto255", feature = "p256"))]
pub(crate) mod oprf_common;
#[cfg(feature = "ristretto255")]
pub mod oprf_ristretto;
#[cfg(feature = "ristretto255")]
pub mod ristretto255;
#[cfg(feature = "ristretto255")]
pub mod spake2_constants;
#[cfg(feature = "p256")]
pub mod oprf_p256;
#[cfg(feature = "p256")]
pub mod p256_dh;
#[cfg(feature = "p256")]
pub mod hash_sha256;
#[cfg(feature = "p256")]
pub mod kdf_sha256;
#[cfg(feature = "p256")]
pub mod mac_sha256;
#[cfg(feature = "p256")]
pub mod p256_group;
#[cfg(feature = "p256")]
pub mod spake2_constants_p256;
#[cfg(any(
feature = "cpace",
feature = "spake2",
feature = "spake2plus",
feature = "opaque"
))]
pub mod suites;
#[cfg(any(feature = "ristretto255", feature = "p256"))]
pub use hash::Sha512Hash;
#[cfg(any(feature = "ristretto255", feature = "p256"))]
pub use kdf::HkdfSha512;
#[cfg(any(feature = "ristretto255", feature = "p256"))]
pub use mac::HmacSha512;
#[cfg(feature = "argon2")]
pub use ksf::Argon2idKsf;
#[cfg(feature = "ristretto255")]
pub use oprf_ristretto::Ristretto255Oprf;
#[cfg(feature = "ristretto255")]
pub use ristretto255::{Ristretto255Dh, Ristretto255Group};
#[cfg(feature = "ristretto255")]
pub use spake2_constants::{SPAKE2_M_COMPRESSED, SPAKE2_N_COMPRESSED, SPAKE2_S_COMPRESSED};
#[cfg(feature = "p256")]
pub use hash_sha256::Sha256Hash;
#[cfg(feature = "p256")]
pub use kdf_sha256::HkdfSha256;
#[cfg(feature = "p256")]
pub use mac_sha256::HmacSha256;
#[cfg(feature = "p256")]
pub use oprf_p256::P256Oprf;
#[cfg(feature = "p256")]
pub use p256_dh::P256Dh;
#[cfg(feature = "p256")]
pub use p256_group::P256Group;
#[cfg(feature = "p256")]
pub use spake2_constants_p256::{SPAKE2_P256_M_COMPRESSED, SPAKE2_P256_N_COMPRESSED};
#[cfg(all(feature = "cpace", feature = "p256"))]
pub use suites::CpaceP256;
#[cfg(all(feature = "cpace", feature = "ristretto255"))]
pub use suites::CpaceRistretto255;
#[cfg(all(feature = "opaque", feature = "p256"))]
pub use suites::OpaqueP256;
#[cfg(all(feature = "opaque", feature = "p256", feature = "argon2"))]
pub use suites::OpaqueP256Argon2;
#[cfg(all(feature = "opaque", feature = "ristretto255"))]
pub use suites::OpaqueRistretto255;
#[cfg(all(feature = "opaque", feature = "ristretto255", feature = "argon2"))]
pub use suites::OpaqueRistretto255Argon2;
#[cfg(all(feature = "spake2", feature = "p256"))]
pub use suites::Spake2P256;
#[cfg(all(feature = "spake2plus", feature = "p256"))]
pub use suites::Spake2PlusP256;
#[cfg(all(feature = "spake2plus", feature = "ristretto255"))]
pub use suites::Spake2PlusRistretto255;
#[cfg(all(feature = "spake2", feature = "ristretto255"))]
pub use suites::Spake2Ristretto255;