#![forbid(unsafe_code)]
#[cfg(not(any(feature = "rustls-tls", feature = "native-tls")))]
compile_error!("openbao requires either the rustls-tls or native-tls feature");
#[cfg(all(feature = "native-tls", not(feature = "native-tls-acknowledged")))]
compile_error!(
"The native-tls feature pulls platform TLS/OpenSSL and may weaken transport security guarantees. \
Add feature \"native-tls-acknowledged\" to confirm you have audited this choice."
);
#[cfg(all(feature = "operator-ops", not(feature = "operator-ops-acknowledged")))]
compile_error!(
"The operator-ops feature exposes production init, unseal, rekey, and rotate APIs that can return or mutate root, unseal, recovery, and encryption-key material. \
Add feature \"operator-ops-acknowledged\" to confirm you have audited this choice."
);
#[cfg(all(
feature = "sys",
feature = "kv2",
feature = "transit",
feature = "token"
))]
pub mod bootstrap;
mod client;
mod error;
mod path;
pub mod policy;
mod response;
mod validation;
#[cfg(any(
feature = "approle",
feature = "cert-auth",
feature = "jwt-auth",
feature = "kubernetes-auth",
feature = "userpass",
feature = "token"
))]
pub mod auth;
#[cfg(any(
feature = "database",
feature = "kv1",
feature = "kv2",
feature = "pki",
feature = "ssh",
feature = "totp",
feature = "transit"
))]
pub mod secrets;
#[cfg(feature = "sys")]
pub mod sys;
pub use client::{
Authenticated, Client, ClientBuilder, HeaderMode, HttpPolicy, OpenBao, OpenBaoConfig,
RootCertificateMode, Unauthenticated,
};
pub use error::{Error, Result};
pub use policy::{AclCapability, AclPolicyBuilder};
pub use reqwest::{self, Certificate, Identity, Method, StatusCode, tls};
pub use response::{Empty, ResponseEnvelope};
pub use secrecy::{self, ExposeSecret, SecretString};
pub mod prelude {
pub use crate::{
AclCapability, AclPolicyBuilder, Authenticated, Certificate, Client, ClientBuilder, Empty,
Error, ExposeSecret, HeaderMode, Identity, Method, OpenBao, OpenBaoConfig,
ResponseEnvelope, Result, SecretString, StatusCode, Unauthenticated,
};
#[cfg(all(
feature = "sys",
feature = "kv2",
feature = "transit",
feature = "token"
))]
pub use crate::bootstrap;
#[cfg(any(
feature = "approle",
feature = "cert-auth",
feature = "jwt-auth",
feature = "kubernetes-auth",
feature = "userpass",
feature = "token"
))]
pub use crate::auth;
#[cfg(any(
feature = "database",
feature = "kv1",
feature = "kv2",
feature = "pki",
feature = "ssh",
feature = "totp",
feature = "transit"
))]
pub use crate::secrets;
#[cfg(feature = "sys")]
pub use crate::sys;
}