#![doc = include_str!("../README.md")]
#![allow(
clippy::new_without_default,
clippy::result_unit_err,
clippy::too_many_arguments
)]
#![forbid(unused_must_use)]
#![warn(
clippy::alloc_instead_of_core,
clippy::let_underscore_must_use,
clippy::ptr_as_ptr,
clippy::ptr_cast_constness,
clippy::std_instead_of_core,
clippy::undocumented_unsafe_blocks,
clippy::upper_case_acronyms,
clippy::use_self,
elided_lifetimes_in_paths,
missing_docs,
trivial_numeric_casts,
unreachable_pub,
unused_import_braces,
unused_extern_crates,
unused_qualifications
)]
mod low;
mod mid;
mod high;
mod error;
#[cfg(test)]
mod test;
pub use error::Error;
#[cfg(doc)]
pub mod doc {
pub use super::low::inline_assembly_safety;
}
pub mod key_agreement {
pub mod x25519 {
pub use crate::mid::x25519::{PrivateKey, PublicKey, SharedSecret, StaticPrivateKey};
}
pub mod p256 {
pub use crate::mid::p256::{PrivateKey, PublicKey, SharedSecret, StaticPrivateKey};
}
pub mod p384 {
pub use crate::mid::p384::{PrivateKey, PublicKey, SharedSecret, StaticPrivateKey};
}
}
pub mod signing {
pub mod rsa {
pub use crate::high::rsa::{KeySize, SigningKey, VerifyingKey};
}
pub mod ecdsa {
pub use crate::high::curve::{Curve, P256, P384};
pub use crate::high::ecdsa::{SigningKey, VerifyingKey};
}
pub mod eddsa {
pub use crate::high::ed25519::{Ed25519SigningKey, Ed25519VerifyingKey};
}
}
pub mod hashing {
pub use super::high::hash::{Hash, HashContext, HashOutput, Sha256, Sha384, Sha512};
pub use super::high::hmac;
pub use super::mid::sha2;
}
pub mod aead {
pub use super::mid::aes_gcm::AesGcm;
pub use super::mid::chacha20poly1305::ChaCha20Poly1305;
pub use super::mid::xchacha20poly1305::XChaCha20Poly1305;
}
pub mod random {
pub fn fill(out: &mut [u8]) -> Result<(), super::Error> {
use crate::mid::rng::{RandomSource, SystemRandom};
SystemRandom.fill(out)
}
}