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}