pub(crate) mod cell_decryptor;
pub(crate) mod crypto;
pub(crate) mod describe_parameter_encryption;
pub(crate) mod encryption;
mod error;
pub(crate) mod keystore;
pub mod mock;
pub(crate) mod query_metadata_cache;
mod security_context;
mod spn;
pub use error::SecurityError;
pub use security_context::{IntegratedAuthConfig, SecurityContext, SecurityPackage, SspiAuthToken};
pub use spn::{canonicalize_hostname, is_loopback_address, make_spn, make_spn_canonicalized};
pub use keystore::{ColumnEncryptionKeyStoreProvider, RsaKeyStoreProvider};
#[cfg(windows)]
pub mod windows;
#[cfg(unix)]
pub mod unix;
#[cfg(windows)]
pub use windows::WindowsSspiContext;
#[cfg(unix)]
pub use unix::GssapiContext;
#[cfg(windows)]
pub fn create_security_context(
config: &IntegratedAuthConfig,
server: &str,
port: u16,
) -> Result<Box<dyn SecurityContext>, SecurityError> {
Ok(Box::new(windows::WindowsSspiContext::new(
config, server, port,
)?))
}
#[cfg(unix)]
pub fn create_security_context(
config: &IntegratedAuthConfig,
server: &str,
port: u16,
) -> Result<Box<dyn SecurityContext>, SecurityError> {
Ok(Box::new(unix::GssapiContext::new(config, server, port)?))
}
#[cfg(not(any(windows, unix)))]
pub fn create_security_context(
_config: &IntegratedAuthConfig,
_server: &str,
_port: u16,
) -> Result<Box<dyn SecurityContext>, SecurityError> {
Err(SecurityError::NotSupported(
"Integrated authentication is only supported on Windows and Unix platforms".to_string(),
))
}