Skip to main content

verifyos_cli/
profiles.rs

1use crate::core::engine::Engine;
2use crate::rules::ats::{AtsAuditRule, AtsExceptionsGranularityRule};
3use crate::rules::bundle_leakage::BundleResourceLeakageRule;
4use crate::rules::bundle_metadata::BundleMetadataConsistencyRule;
5use crate::rules::entitlements::{EntitlementsMismatchRule, EntitlementsProvisioningMismatchRule};
6use crate::rules::export_compliance::ExportComplianceRule;
7use crate::rules::extensions::ExtensionEntitlementsCompatibilityRule;
8use crate::rules::info_plist::{
9    InfoPlistCapabilitiesRule, InfoPlistRequiredKeysRule, InfoPlistVersionConsistencyRule,
10    LSApplicationQueriesSchemesAuditRule, UIRequiredDeviceCapabilitiesAuditRule,
11    UsageDescriptionsRule, UsageDescriptionsValueRule,
12};
13use crate::rules::permissions::CameraUsageDescriptionRule;
14use crate::rules::privacy::MissingPrivacyManifestRule;
15use crate::rules::privacy_manifest::PrivacyManifestCompletenessRule;
16use crate::rules::privacy_sdk::PrivacyManifestSdkCrossCheckRule;
17use crate::rules::private_api::PrivateApiRule;
18use crate::rules::signing::EmbeddedCodeSignatureTeamRule;
19
20#[derive(Debug, Clone, Copy, PartialEq, Eq)]
21pub enum ScanProfile {
22    Basic,
23    Full,
24}
25
26pub fn register_rules(engine: &mut Engine, profile: ScanProfile) {
27    match profile {
28        ScanProfile::Basic => register_basic_rules(engine),
29        ScanProfile::Full => register_full_rules(engine),
30    }
31}
32
33fn register_basic_rules(engine: &mut Engine) {
34    engine.register_rule(Box::new(MissingPrivacyManifestRule));
35    engine.register_rule(Box::new(UsageDescriptionsRule));
36    engine.register_rule(Box::new(UsageDescriptionsValueRule));
37    engine.register_rule(Box::new(CameraUsageDescriptionRule));
38    engine.register_rule(Box::new(AtsAuditRule));
39    engine.register_rule(Box::new(AtsExceptionsGranularityRule));
40    engine.register_rule(Box::new(EntitlementsMismatchRule));
41    engine.register_rule(Box::new(EntitlementsProvisioningMismatchRule));
42    engine.register_rule(Box::new(EmbeddedCodeSignatureTeamRule));
43}
44
45fn register_full_rules(engine: &mut Engine) {
46    engine.register_rule(Box::new(MissingPrivacyManifestRule));
47    engine.register_rule(Box::new(PrivacyManifestCompletenessRule));
48    engine.register_rule(Box::new(PrivacyManifestSdkCrossCheckRule));
49    engine.register_rule(Box::new(CameraUsageDescriptionRule));
50    engine.register_rule(Box::new(UsageDescriptionsRule));
51    engine.register_rule(Box::new(UsageDescriptionsValueRule));
52    engine.register_rule(Box::new(InfoPlistRequiredKeysRule));
53    engine.register_rule(Box::new(InfoPlistCapabilitiesRule));
54    engine.register_rule(Box::new(LSApplicationQueriesSchemesAuditRule));
55    engine.register_rule(Box::new(UIRequiredDeviceCapabilitiesAuditRule));
56    engine.register_rule(Box::new(InfoPlistVersionConsistencyRule));
57    engine.register_rule(Box::new(ExportComplianceRule));
58    engine.register_rule(Box::new(AtsAuditRule));
59    engine.register_rule(Box::new(AtsExceptionsGranularityRule));
60    engine.register_rule(Box::new(EntitlementsMismatchRule));
61    engine.register_rule(Box::new(EntitlementsProvisioningMismatchRule));
62    engine.register_rule(Box::new(BundleMetadataConsistencyRule));
63    engine.register_rule(Box::new(BundleResourceLeakageRule));
64    engine.register_rule(Box::new(ExtensionEntitlementsCompatibilityRule));
65    engine.register_rule(Box::new(PrivateApiRule));
66    engine.register_rule(Box::new(EmbeddedCodeSignatureTeamRule));
67}