1pub mod binary_analysis;
3pub mod check_vulnerabilities;
4pub mod metadata_extractor;
5
6pub use self::binary_analysis::analyze_binary;
7pub use self::check_vulnerabilities::{VulnerabilityMatch, scan_binary_vulnerabilities};
8pub use self::metadata_extractor::{
9 LicenseInfo, VersionInfo, extract_license_info, extract_version_info,
10};
11
12use chrono::{DateTime, Utc};
13use serde::{Deserialize, Serialize};
14use uuid::Uuid;
15
16#[derive(Debug, Serialize, Deserialize, Clone)]
17pub struct BinaryAnalysis {
18 pub id: Uuid,
19 pub file_name: String,
20 pub format: String,
21 pub architecture: String,
22 pub languages: Vec<String>,
23 pub detected_symbols: Vec<String>,
24 pub embedded_strings: Vec<String>,
25 pub suspected_secrets: Vec<String>,
26 pub imports: Vec<String>,
27 pub exports: Vec<String>,
28 pub hash_sha256: String,
29 pub hash_blake3: Option<String>,
30 pub size_bytes: u64,
31 pub linked_libraries: Vec<String>,
32 pub static_linked: bool,
33 pub version_info: Option<VersionInfo>,
34 pub license_info: Option<LicenseInfo>,
35 pub metadata: serde_json::Value,
36 pub created_at: DateTime<Utc>,
37 pub sbom: Option<serde_json::Value>,
38}