use super::types::TeeType;
use tracing::{debug, info};
pub fn detect_tee() -> Option<TeeType> {
if std::path::Path::new("/dev/sev-guest").exists() {
info!("TEE detected: AMD SEV-SNP (/dev/sev-guest)");
return Some(TeeType::SevSnp);
}
if std::path::Path::new("/sys/firmware/sev").exists() {
debug!("SEV firmware directory exists, checking for SNP support");
if let Ok(status) = std::fs::read_to_string("/sys/firmware/sev/snp")
&& status.trim() == "1"
{
info!("TEE detected: AMD SEV-SNP (sysfs)");
return Some(TeeType::SevSnp);
}
}
if std::path::Path::new("/dev/nsm").exists() {
info!("TEE detected: AWS Nitro Enclaves (/dev/nsm)");
return Some(TeeType::Nitro);
}
debug!("no TEE hardware detected");
None
}