use std::env::var;
use std::path::Path;
use super::ServerKeyPair;
#[cfg(all(feature = "client", feature = "server"))]
use super::ServerSecret;
#[cfg(all(feature = "client", feature = "server"))]
use crate::certificate::ClientCertificate;
impl ServerKeyPair {
pub fn for_tests() -> Self {
let env_var = if cfg!(any(feature = "fast_software", feature = "fast_hardware")) {
"TYPHOON_TEST_SERVER_KEY_FAST"
} else {
"TYPHOON_TEST_SERVER_KEY_FULL"
};
if let Ok(path) = var(env_var) {
let p = Path::new(&path);
if p.exists() {
if let Ok(kp) = Self::load(p) {
return kp;
}
}
let kp = Self::generate();
let _ = kp.save(p);
kp
} else {
Self::generate()
}
}
#[cfg(all(feature = "client", feature = "server"))]
pub(crate) fn for_tests_pair() -> (ClientCertificate, ServerSecret<'static>) {
let kp = Self::for_tests();
let cert = kp.to_client_certificate(vec![]);
let secret = kp.into_server_secret();
(cert, secret)
}
pub(crate) fn epk_bytes(&self) -> &[u8] {
self.epk.as_array()
}
pub(crate) fn esk_bytes(&self) -> &[u8] {
self.esk.as_array()
}
pub(crate) fn vsk_bytes(&self) -> [u8; 32] {
self.vsk.to_bytes()
}
pub(crate) fn verifying_key_bytes(&self) -> [u8; 32] {
self.vsk.verifying_key().to_bytes()
}
#[cfg(any(feature = "fast_software", feature = "fast_hardware"))]
pub(crate) fn obfs_bytes(&self) -> &[u8] {
self.obfs.as_ref()
}
#[cfg(any(feature = "full_software", feature = "full_hardware"))]
pub(crate) fn opk_bytes(&self) -> &[u8] {
self.opk.as_bytes()
}
#[cfg(any(feature = "full_software", feature = "full_hardware"))]
pub(crate) fn osk_bytes(&self) -> [u8; 32] {
self.osk.to_bytes()
}
}