pipa_core/engine/
logs.rs

1//! Log verification functions for the engine
2
3use crate::engine::log_action;
4use crate::logging::verify::{FileVerification, verify_all, verify_date};
5
6/// Result of log verification
7pub struct LogVerification {
8    pub valid: bool,
9    pub verified: usize,
10    pub mismatched: usize,
11    pub missing: usize,
12    pub malformed: usize,
13    pub unsealed: usize,
14    pub files: Vec<FileVerification>,
15}
16
17/// Verify logs for a specific date or all logs
18pub fn verify_logs(date: Option<&str>) -> (LogVerification, String) {
19    let summary = if let Some(date) = date {
20        verify_date(Some(date))
21    } else {
22        verify_all()
23    };
24
25    let all_valid = summary.mismatched == 0
26        && summary.missing == 0
27        && summary.malformed == 0
28        && summary.unsealed == 0;
29
30    let details = format!(
31        "valid={}, verified={}, mismatched={}, missing={}, malformed={}, unsealed={}",
32        all_valid,
33        summary.verified,
34        summary.mismatched,
35        summary.missing,
36        summary.malformed,
37        summary.unsealed
38    );
39
40    let message = log_action("logs_verified", Some(&details), None, None, None);
41
42    (
43        LogVerification {
44            valid: all_valid,
45            verified: summary.verified,
46            mismatched: summary.mismatched,
47            missing: summary.missing,
48            malformed: summary.malformed,
49            unsealed: summary.unsealed,
50            files: summary.files,
51        },
52        message,
53    )
54}