#![no_std]
#![deny(unsafe_op_in_unsafe_fn)]
extern crate alloc;
pub mod error;
pub use error::WolfCryptError;
#[cfg(feature = "digest")]
pub mod digest;
#[cfg(all(feature = "digest", wolfssl_openssl_extra))]
pub use digest::Sha1;
#[cfg(all(feature = "digest", wolfssl_openssl_extra, wolfssl_sha224))]
pub use digest::Sha224;
#[cfg(all(feature = "digest", wolfssl_openssl_extra))]
pub use digest::Sha256;
#[cfg(all(feature = "digest", wolfssl_openssl_extra, wolfssl_sha384))]
pub use digest::Sha384;
#[cfg(all(feature = "digest", wolfssl_openssl_extra, wolfssl_sha512))]
pub use digest::Sha512;
#[cfg(all(feature = "digest", wolfssl_openssl_extra, wolfssl_sha512))]
pub use digest::Sha512_256;
#[cfg(all(feature = "digest", wolfssl_openssl_extra, wolfssl_sha3))]
pub use digest::Sha3_256;
#[cfg(all(feature = "digest", wolfssl_openssl_extra, wolfssl_sha3))]
pub use digest::Sha3_384;
#[cfg(all(feature = "digest", wolfssl_openssl_extra, wolfssl_sha3))]
pub use digest::Sha3_512;
#[cfg(feature = "rand")]
pub mod rand;
#[cfg(feature = "rand")]
pub use rand::WolfRng;
#[cfg(feature = "hmac")]
pub mod hmac;
#[cfg(all(feature = "hmac", wolfssl_openssl_extra, wolfssl_hmac))]
pub use hmac::WolfHmacSha1;
#[cfg(all(feature = "hmac", wolfssl_openssl_extra, wolfssl_hmac))]
pub use hmac::WolfHmacSha256;
#[cfg(all(feature = "hmac", wolfssl_openssl_extra, wolfssl_hmac, wolfssl_sha384))]
pub use hmac::WolfHmacSha384;
#[cfg(all(feature = "hmac", wolfssl_openssl_extra, wolfssl_hmac, wolfssl_sha512))]
pub use hmac::WolfHmacSha512;
#[cfg(feature = "cmac")]
pub mod cmac;
#[cfg(all(feature = "cmac", wolfssl_openssl_extra, wolfssl_cmac))]
pub use cmac::WolfCmacAes128;
#[cfg(all(feature = "cmac", wolfssl_openssl_extra, wolfssl_cmac))]
pub use cmac::WolfCmacAes256;
#[cfg(feature = "hkdf")]
pub mod hkdf;
#[cfg(all(feature = "hkdf", wolfssl_hkdf))]
pub use hkdf::WolfHkdfSha256;
#[cfg(all(feature = "hkdf", wolfssl_hkdf, wolfssl_sha384))]
pub use hkdf::WolfHkdfSha384;
#[cfg(all(feature = "hkdf", wolfssl_hkdf, wolfssl_sha512))]
pub use hkdf::WolfHkdfSha512;
#[cfg(feature = "pbkdf2")]
pub mod pbkdf2;
#[cfg(all(feature = "pbkdf2", wolfssl_pbkdf2))]
pub use pbkdf2::pbkdf2_hmac_sha256;
#[cfg(all(feature = "pbkdf2", wolfssl_pbkdf2, wolfssl_sha384))]
pub use pbkdf2::pbkdf2_hmac_sha384;
#[cfg(all(feature = "pbkdf2", wolfssl_pbkdf2, wolfssl_sha512))]
pub use pbkdf2::pbkdf2_hmac_sha512;
#[cfg(feature = "aead")]
pub mod aead;
#[cfg(all(feature = "aead", wolfssl_aes_gcm))]
pub use aead::{Aes128Gcm, Aes256Gcm};
#[cfg(all(feature = "aead", wolfssl_aes_gcm, wolfssl_aes_192))]
pub use aead::Aes192Gcm;
#[cfg(all(feature = "aead", wolfssl_chacha20_poly1305))]
pub use aead::ChaCha20Poly1305;
#[cfg(feature = "cipher")]
pub mod cipher;
#[cfg(all(feature = "cipher", wolfssl_openssl_extra, wolfssl_aes_ecb))]
pub use cipher::{Aes128EcbDec, Aes128EcbEnc, Aes256EcbDec, Aes256EcbEnc};
#[cfg(all(feature = "cipher", wolfssl_openssl_extra, wolfssl_aes_ecb, wolfssl_aes_192))]
pub use cipher::{Aes192EcbDec, Aes192EcbEnc};
#[cfg(all(feature = "cipher", wolfssl_aes_ctr))]
pub use cipher::{Aes128Ctr, Aes256Ctr};
#[cfg(all(feature = "cipher", wolfssl_aes_ctr, wolfssl_aes_192))]
pub use cipher::Aes192Ctr;
#[cfg(all(feature = "cipher", wolfssl_openssl_extra))]
pub use cipher::{Aes128CbcEnc, Aes128CbcDec, Aes256CbcEnc, Aes256CbcDec};
#[cfg(all(feature = "cipher", wolfssl_openssl_extra, wolfssl_aes_192))]
pub use cipher::{Aes192CbcEnc, Aes192CbcDec};
#[cfg(all(feature = "cipher", wolfssl_chacha))]
pub use cipher::WolfChaCha20;
#[cfg(all(feature = "cipher", wolfssl_openssl_extra, wolfssl_aes_cfb))]
pub use cipher::{
Aes128CfbEnc, Aes128CfbDec,
Aes256CfbEnc, Aes256CfbDec,
};
#[cfg(all(feature = "cipher", wolfssl_openssl_extra, wolfssl_aes_cfb, wolfssl_aes_192))]
pub use cipher::{
Aes192CfbEnc, Aes192CfbDec,
};
#[cfg(all(feature = "des3", wolfssl_openssl_extra, wolfssl_des3))]
pub mod des3;
#[cfg(all(feature = "des3", wolfssl_openssl_extra, wolfssl_des3))]
pub use des3::{DesEde3CbcEnc, DesEde3CbcDec};
#[cfg(all(feature = "dh", wolfssl_openssl_extra, wolfssl_dh))]
pub mod dh;
#[cfg(all(feature = "dh", wolfssl_openssl_extra, wolfssl_dh))]
pub use dh::{DhSecret, FfdheGroup};
#[cfg(feature = "poly1305")]
pub mod poly1305;
#[cfg(all(feature = "poly1305", wolfssl_poly1305))]
pub use poly1305::WolfPoly1305;
#[cfg(feature = "ed25519")]
pub mod ed25519;
#[cfg(all(feature = "ed25519", wolfssl_ed25519))]
pub use ed25519::{Ed25519SigningKey, Ed25519VerifyingKey};
#[cfg(feature = "ed448")]
pub mod ed448;
#[cfg(all(feature = "ed448", wolfssl_ed448))]
pub use ed448::{Ed448Signature, Ed448SigningKey, Ed448VerifyingKey};
#[cfg(feature = "ecdh")]
pub mod ecdh;
#[cfg(all(feature = "ecdh", wolfssl_curve25519))]
pub use ecdh::{SharedSecret, X25519PublicKey, X25519StaticSecret};
#[cfg(all(feature = "ecdh", wolfssl_curve448))]
pub use ecdh::{X448PublicKey, X448SharedSecret, X448StaticSecret};
#[cfg(all(feature = "ecdh", wolfssl_openssl_extra, wolfssl_ecc))]
pub use ecdh::{
NistCurve, NistEcdhPublicKey, NistEcdhSecret, NistEcdhSharedSecret,
NistP256, P256EcdhSecret,
};
#[cfg(all(feature = "ecdh", wolfssl_openssl_extra, wolfssl_ecc, wolfssl_ecc_p384))]
pub use ecdh::{NistP384, P384EcdhSecret};
#[cfg(all(feature = "ecdh", wolfssl_openssl_extra, wolfssl_ecc, wolfssl_ecc_p521))]
pub use ecdh::{NistP521, P521EcdhSecret};
#[cfg(all(feature = "ecdsa", wolfssl_openssl_extra, wolfssl_ecc))]
pub mod ecdsa;
#[cfg(all(feature = "ecdsa", wolfssl_openssl_extra, wolfssl_ecc))]
pub use ecdsa::{
EcdsaCurve, EcdsaSignature, EcdsaSigningKey, EcdsaVerifyingKey,
P256, P256SigningKey, P256VerifyingKey, P256Signature,
};
#[cfg(all(feature = "ecdsa", wolfssl_openssl_extra, wolfssl_ecc, wolfssl_ecc_p384))]
pub use ecdsa::{
P384, P384SigningKey, P384VerifyingKey, P384Signature,
};
#[cfg(all(feature = "ecdsa", wolfssl_openssl_extra, wolfssl_ecc, wolfssl_ecc_p521))]
pub use ecdsa::{
P521, P521SigningKey, P521VerifyingKey, P521Signature,
};
#[cfg(feature = "rsa")]
pub mod rsa;
#[cfg(all(feature = "rsa", wolfssl_openssl_extra, wolfssl_rsa))]
pub use rsa::{
RsaDigest, RsaPkcs1v15Signature, RsaPssSignature, RsaPrivateKey, RsaPublicKey,
};
#[cfg(all(feature = "rsa-direct", wolfssl_rsa))]
pub use rsa::{NativeRsaKey, RsaDirectType, RsaRawComponents};
#[cfg(feature = "keywrap")]
pub mod keywrap;
#[cfg(all(feature = "keywrap", wolfssl_openssl_extra, wolfssl_aes_keywrap))]
pub use keywrap::{aes_wrap_key, aes_unwrap_key};
#[cfg(all(feature = "mldsa", wolfssl_dilithium))]
pub mod mldsa;
#[cfg(all(feature = "mldsa", wolfssl_dilithium))]
pub use mldsa::{
MlDsaSignature,
MlDsa44SigningKey, MlDsa44VerifyingKey, MlDsa44Signature,
MlDsa65SigningKey, MlDsa65VerifyingKey, MlDsa65Signature,
MlDsa87SigningKey, MlDsa87VerifyingKey, MlDsa87Signature,
};
#[cfg(feature = "mlkem")]
pub mod mlkem;
#[cfg(all(feature = "mlkem", wolfssl_mlkem))]
pub use mlkem::{
MlKem512, MlKem768, MlKem1024,
MlKem512DecapsulationKey, MlKem768DecapsulationKey, MlKem1024DecapsulationKey,
MlKem512EncapsulationKey, MlKem768EncapsulationKey, MlKem1024EncapsulationKey,
};
#[cfg(feature = "blake2")]
pub mod blake2;
#[cfg(feature = "shake")]
pub mod shake;
#[cfg(feature = "kdf")]
pub mod kdf;
#[cfg(feature = "ecc")]
pub mod ecc;
#[cfg(all(feature = "lms", wolfssl_lms))]
pub mod lms;
#[cfg(all(feature = "lms", wolfssl_lms))]
pub use lms::{LmsParams, LmsSigningKey, LmsVerifyingKey};
#[cfg(all(feature = "cipher", wolfssl_aes_ccm))]
pub use cipher::{Aes128Ccm, Aes256Ccm};
#[cfg(all(feature = "cryptocb", wolfssl_cryptocb))]
pub mod cryptocb;
#[cfg(all(feature = "hpke", wolfssl_hpke))]
pub mod hpke;