Skip to main content

Mountain/Binary/Build/TlsCommands/
tls_get_ca_cert.rs

1//! `tls_get_ca_cert` Tauri command - returns the CA certificate
2//! PEM so the webview can pin it or install it into the system
3//! trust store.
4
5use std::sync::{Arc, Mutex};
6
7use tauri::{AppHandle, Manager};
8
9use crate::{Binary::Build::CertificateManager::CertificateManager, dev_log};
10
11#[tauri::command]
12pub async fn tls_get_ca_cert(app_handle:AppHandle) -> Result<String, String> {
13	dev_log!("security", "getting CA certificate");
14
15	let state = app_handle
16		.try_state::<Arc<Mutex<CertificateManager>>>()
17		.ok_or("Certificate manager not found")?;
18
19	let cert_manager = state.clone();
20
21	let manager = cert_manager.lock().map_err(|e| format!("Failed to acquire lock: {}", e))?;
22
23	let cert_pem = manager.get_ca_cert_pem().ok_or("CA certificate not initialized")?;
24
25	String::from_utf8(cert_pem).map_err(|e| format!("Invalid certificate UTF-8: {}", e))
26}