Skip to main content

Mountain/Binary/Build/TlsCommands/
tls_initialize.rs

1#![allow(non_snake_case)]
2
3//! `tls_initialize` Tauri command - loads the CA from the
4//! keyring or generates a fresh one. Must run before any other
5//! TLS command on this app handle.
6
7use std::sync::{Arc, Mutex};
8
9use tauri::{AppHandle, Manager};
10
11use crate::{Binary::Build::CertificateManager::CertificateManager, dev_log};
12
13#[tauri::command]
14pub async fn tls_initialize(app_handle:AppHandle) -> Result<String, String> {
15	dev_log!("security", "TLS certificate manager initializing");
16
17	let state = app_handle
18		.try_state::<Arc<Mutex<CertificateManager>>>()
19		.ok_or("Certificate manager not initialized in app state")?;
20
21	let cert_manager = state.clone();
22
23	let mut manager = cert_manager.lock().map_err(|e| format!("Failed to acquire lock: {}", e))?;
24
25	manager
26		.initialize_ca()
27		.await
28		.map_err(|e| format!("Failed to initialize CA: {}", e))?;
29
30	dev_log!("security", "TLS certificate manager initialized");
31
32	Ok("TLS certificate manager initialized".to_string())
33}