diff --git a/src/kira_sysinfo.rs b/src/kira_sysinfo.rs index 0d2ae1e..ba51827 100644 --- a/src/kira_sysinfo.rs +++ b/src/kira_sysinfo.rs @@ -95,3 +95,37 @@ pub fn get_gpus_list() -> Vec { res } + +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Deserialize)] +pub struct SecureBootStatus { + pub installed: bool, + pub guid: String, + pub setup_mode: bool, + pub secure_boot: bool, + pub vendors: Vec, + pub firmware_quirks: Vec, +} + +pub fn get_secure_boot_status() -> Result { + use std::process::Command; + + //sbctl --json status + match Command::new("sbctl").args(["--json", "status"]).output() { + Ok(cmd_output) => { + if cmd_output.status.success() { + match serde_json::from_slice(&cmd_output.stdout) { + Ok(res) => Ok(res), + Err(ex) => Err(ex.to_string()), + } + } else { + Err(format!( + "Error getting disk devices list: {}", + String::from_utf8(cmd_output.stderr).unwrap_or("UNKNOWN".into()) + )) + } + } + Err(ex) => Err(ex.to_string()), + } +}