verifyos_cli/rules/
permissions.rs1use crate::rules::core::{
2 AppStoreRule, ArtifactContext, RuleCategory, RuleError, RuleReport, RuleStatus, Severity,
3};
4
5pub struct CameraUsageDescriptionRule;
6
7impl AppStoreRule for CameraUsageDescriptionRule {
8 fn id(&self) -> &'static str {
9 "RULE_CAMERA_USAGE"
10 }
11
12 fn name(&self) -> &'static str {
13 "Missing Camera Usage Description"
14 }
15
16 fn category(&self) -> RuleCategory {
17 RuleCategory::Permissions
18 }
19
20 fn severity(&self) -> Severity {
21 Severity::Error
22 }
23
24 fn recommendation(&self) -> &'static str {
25 "Add NSCameraUsageDescription to Info.plist with a user-facing reason."
26 }
27
28 fn evaluate(&self, artifact: &ArtifactContext) -> Result<RuleReport, RuleError> {
29 if let Some(plist) = artifact.info_plist {
30 if !plist.has_key("NSCameraUsageDescription") {
31 return Ok(RuleReport {
32 status: RuleStatus::Fail,
33 message: Some("Missing NSCameraUsageDescription".to_string()),
34 evidence: Some("Info.plist has no NSCameraUsageDescription".to_string()),
35 });
36 }
37 }
38
39 Ok(RuleReport {
40 status: RuleStatus::Pass,
41 message: None,
42 evidence: None,
43 })
44 }
45}