#![cfg_attr(not(feature = "std"), no_std)]
pub mod core;
pub mod crypto;
pub mod transport;
pub mod session;
pub mod integrations;
pub mod quantum_native;
pub use core::{
QsslConnection, QsslContext, QsslError, QsslResult,
HandshakeState, ConnectionRole, ProtocolVersion,
};
pub use crypto::{
CipherSuite, KemAlgorithm, SignatureAlgorithm,
SymmetricCipher, HashAlgorithm,
};
pub use transport::{QsslTransport, QsslRecord};
pub use session::{QsslSession, SessionCache};
pub const QSSL_VERSION: &str = "0.1.0-alpha";
pub const QSSL_PROTOCOL_VERSION: u16 = 0x5110;
pub const DEFAULT_CIPHER_SUITE: CipherSuite = CipherSuite::SphincsKemFalcon512Aes256;
pub const MAX_RECORD_SIZE: usize = 16384;
pub const MAX_HANDSHAKE_SIZE: usize = 65536;
pub fn init() -> QsslResult<()> {
crypto::init()?;
#[cfg(feature = "std")]
{
use tracing_subscriber::{fmt, EnvFilter};
let _ = fmt()
.with_env_filter(EnvFilter::from_default_env())
.try_init();
}
Ok(())
}
pub fn version() -> &'static str {
QSSL_VERSION
}
pub fn protocol_version() -> u16 {
QSSL_PROTOCOL_VERSION
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version() {
assert_eq!(version(), "0.1.0-alpha");
assert_eq!(protocol_version(), 0x5110);
}
#[test]
fn test_init() {
assert!(init().is_ok());
}
}