nabla_cli/binary/
mod.rs

1// src/binary/mod.rs
2pub 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}