verifyos_cli/rules/
private_api.rs1use crate::rules::core::{
2 AppStoreRule, ArtifactContext, RuleCategory, RuleError, RuleReport, RuleStatus, Severity,
3};
4
5pub struct PrivateApiRule;
6
7impl AppStoreRule for PrivateApiRule {
8 fn id(&self) -> &'static str {
9 "RULE_PRIVATE_API"
10 }
11
12 fn name(&self) -> &'static str {
13 "Private API Usage Detected"
14 }
15
16 fn category(&self) -> RuleCategory {
17 RuleCategory::ThirdParty
18 }
19
20 fn severity(&self) -> Severity {
21 Severity::Warning
22 }
23
24 fn recommendation(&self) -> &'static str {
25 "Remove private API usage or replace with public alternatives."
26 }
27
28 fn evaluate(&self, artifact: &ArtifactContext) -> Result<RuleReport, RuleError> {
29 let scan = match artifact.private_api_scan() {
30 Ok(scan) => scan,
31 Err(err) => {
32 return Ok(RuleReport {
33 status: RuleStatus::Skip,
34 message: Some(format!("Private API scan skipped: {err}")),
35 evidence: None,
36 });
37 }
38 };
39
40 if scan.hits.is_empty() {
41 return Ok(RuleReport {
42 status: RuleStatus::Pass,
43 message: None,
44 evidence: None,
45 });
46 }
47
48 Ok(RuleReport {
49 status: RuleStatus::Fail,
50 message: Some("Private API signatures found".to_string()),
51 evidence: Some(scan.hits.join(", ")),
52 })
53 }
54}