underhill_confidentiality/
getters.rs1use std::sync::OnceLock;
5
6static CONFIDENTIAL: OnceLock<bool> = OnceLock::new();
7static CONFIDENTIAL_DEBUG: OnceLock<bool> = OnceLock::new();
8
9fn get_bool_env_var(name: &str) -> bool {
10 std::env::var_os(name).is_some_and(|v| !v.is_empty() && v != "0")
11}
12
13pub fn is_confidential_vm() -> bool {
17 *CONFIDENTIAL.get_or_init(|| {
18 get_bool_env_var(crate::OPENHCL_CONFIDENTIAL_ENV_VAR_NAME)
19 || get_bool_env_var(crate::LEGACY_CONFIDENTIAL_ENV_VAR_NAME)
20 })
21}
22
23pub fn confidential_debug_enabled() -> bool {
26 *CONFIDENTIAL_DEBUG.get_or_init(|| {
27 get_bool_env_var(crate::OPENHCL_CONFIDENTIAL_DEBUG_ENV_VAR_NAME)
28 || get_bool_env_var(crate::LEGACY_CONFIDENTIAL_DEBUG_ENV_VAR_NAME)
29 })
30}
31
32pub fn confidential_filtering_enabled() -> bool {
35 is_confidential_vm() && !confidential_debug_enabled()
36}