pub mod xchacha;
pub mod kyber;
pub use xchacha::{XChaChaCrypto, XChaChaKey, XChaChaNonce};
pub use kyber::{KyberCrypto, KyberKeyPair, KyberPublicKey, KyberSecretKey, KyberSharedSecret};
use thiserror::Error;
#[derive(Error, Debug)]
pub enum CryptoError {
#[error("Encryption failed: {0}")]
EncryptionError(String),
#[error("Decryption failed: {0}")]
DecryptionError(String),
#[error("Invalid key length: expected {expected}, got {actual}")]
InvalidKeyLength { expected: usize, actual: usize },
#[error("Invalid nonce length: expected {expected}, got {actual}")]
InvalidNonceLength { expected: usize, actual: usize },
#[error("Random number generation failed")]
RngError,
}
pub type Result<T> = std::result::Result<T, CryptoError>;