#![doc(html_logo_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo_small.png")]
#![cfg_attr(not(test), no_std)]
#[cfg(not(feature = "alloc"))]
compile_error!("This crate does not yet support environments without liballoc. See https://github.com/RustCrypto/RSA/issues/51.");
#[cfg(feature = "alloc")]
extern crate alloc;
#[cfg(feature = "std")]
extern crate std;
#[macro_use]
extern crate lazy_static;
#[cfg(feature = "serde")]
extern crate serde_crate;
#[cfg(test)]
extern crate base64;
#[cfg(test)]
extern crate hex;
#[cfg(all(test, feature = "serde"))]
extern crate serde_test;
#[cfg(feature = "alloc")]
pub use num_bigint::BigUint;
#[cfg(feature = "alloc")]
pub mod algorithms;
#[cfg(feature = "alloc")]
pub mod errors;
#[cfg(feature = "alloc")]
pub mod hash;
#[cfg(feature = "alloc")]
pub mod padding;
#[cfg(feature = "pem")]
pub use pem;
#[cfg(feature = "std")]
mod encode;
#[cfg(feature = "alloc")]
mod key;
#[cfg(feature = "alloc")]
mod oaep;
#[cfg(feature = "std")]
mod parse;
#[cfg(feature = "alloc")]
mod pkcs1v15;
#[cfg(feature = "alloc")]
mod pss;
#[cfg(feature = "alloc")]
mod raw;
#[cfg(feature = "std")]
pub use self::encode::{
PrivateKeyEncoding, PrivateKeyPemEncoding, PublicKeyEncoding, PublicKeyPemEncoding,
};
#[cfg(feature = "alloc")]
pub use self::hash::Hash;
#[cfg(feature = "alloc")]
pub use self::key::{PublicKey, PublicKeyParts, RSAPrivateKey, RSAPublicKey};
#[cfg(feature = "alloc")]
pub use self::padding::PaddingScheme;
#[cfg(not(feature = "expose-internals"))]
#[cfg(feature = "alloc")]
mod internals;
#[cfg(feature = "expose-internals")]
#[cfg(feature = "alloc")]
pub mod internals;