# Fuzzers for libcdm ## Table of contents + [policy_engine_fuzzer](#PolicyEngine) + [content_decryption_fuzzer](#ContentDecryption) + [system_id_extractor_fuzzer](#SystemIdExtractor) + [service_certificate_fuzzer](#ServiceCertificate) + [policy_timers_fuzzer](#PolicyTimers) + [privacy_crypto_fuzzer](#PrivacyCrypto) # Fuzzer for PolicyEngine PolicyEngine supports the following parameters: 1. SigningKeyId (parameter name: "kSigningKeyId") 2. RenewalServerUrl (parameter name: "kRenewalServerUrl") 3. EntitlementKeyId (parameter name: "kEntitlementKeyId") | Parameter| Valid Values| Configured Value| |------------- |-------------| ----- | |`kSigningKeyId`| `String` |Value obtained from FuzzedDataProvider| |`kRenewalServerUrl`| `String` |Value obtained from FuzzedDataProvider| |`kEntitlementKeyId`| `String` |Value obtained from FuzzedDataProvider| #### Steps to run 1. Build the fuzzer ``` $ mm -j$(nproc) policy_engine_fuzzer ``` 2. Run on device ``` $ adb sync data $ adb shell /data/fuzz/arm64/policy_engine_fuzzer/vendor/policy_engine_fuzzer ``` # Fuzzer for ContentDecryption ContentDecryption supports the following parameters: 1. Cert Authority (parameter name: "certAuthority") 2. Server Url (parameter name: "serverUrl") 3. Service Certificate (parameter name: "serviceCertificate") | Parameter| Valid Values| Configured Value| |------------- |-------------| ----- | |`certAuthority`| `String` |Value obtained from FuzzedDataProvider| |`serverUrl`| `String` |Value obtained from FuzzedDataProvider| |`serviceCertificate`| `String` |Value obtained from FuzzedDataProvider| #### Steps to run 1. Build the fuzzer ``` $ mm -j$(nproc) content_decryption_fuzzer ``` 2. Run on device ``` $ adb sync data $ adb shell /data/fuzz/arm64/content_decryption_fuzzer/vendor/content_decryption_fuzzer ``` # Fuzzer for SystemIdExtractor SystemIdExtractor supports the following parameters: 1. OEM Cert (parameter name: "oemCert") 2. Key Data (parameter name: "keyData") 3. System Id (parameter name: "mSystemId") | Parameter| Valid Values| Configured Value| |------------- |-------------| ----- | |`oemCert`| `String` |Value obtained from FuzzedDataProvider| |`keyData`| `String` |Value obtained from FuzzedDataProvider| |`mSystemId`| `Integer in range 0 to 256` |Value obtained from FuzzedDataProvider| #### Steps to run 1. Build the fuzzer ``` $ mm -j$(nproc) system_id_extractor_fuzzer ``` 2. Run on device ``` $ adb sync data $ adb shell /data/fuzz/arm64/system_id_extractor_fuzzer/vendor/system_id_extractor_fuzzer ``` # Fuzzer for ServiceCertificate ServiceCertificate supports the following parameters: 1. Message (parameter name: "message") 2. Signature (parameter name: "signature") 3. Request (parameter name: "request") | Parameter| Valid Values| Configured Value| |------------- |-------------| ----- | |`message`| `String` |Value obtained from FuzzedDataProvider| |`signature`| `String` |Value obtained from FuzzedDataProvider| |`request`| `String` |Value obtained from FuzzedDataProvider| #### Steps to run 1. Build the fuzzer ``` $ mm -j$(nproc) service_certificate_fuzzer ``` 2. Run on device ``` $ adb sync data $ adb shell /data/fuzz/arm64/service_certificate_fuzzer/vendor/service_certificate_fuzzer ``` # Fuzzer for PolicyTimers PolicyTimers supports the following parameters: 1. Seconds Since Last Played (parameter name: "secondsSinceLastPlayed") 2. Expiry Time (parameter name: "expiryTime") | Parameter| Valid Values| Configured Value| |------------- |-------------| ----- | |`secondsSinceLastPlayed`| `Integer` |Value obtained from FuzzedDataProvider| |`expiryTime`| `Interger` |Value obtained from FuzzedDataProvider| #### Steps to run 1. Build the fuzzer ``` $ mm -j$(nproc) policy_timers_fuzzer ``` 2. Run on device ``` $ adb sync data $ adb shell /data/fuzz/arm64/policy_timers_fuzzer/vendor/policy_timers_fuzzer ``` # Fuzzer for PrivacyCrypto PrivacyCrypto supports the following parameters: 1. Message (parameter name: "message") 2. Key (parameter name: "key") 3. Iv (parameter name: "iv") 4. Data (parameter name: 'data') 5. CertIndex (parameter name: 'certIndex') | Parameter| Valid Values| Configured Value| |------------- |-------------| ----- | |`message`| `String` |Value obtained from FuzzedDataProvider| |`key`| `String` |Value obtained from FuzzedDataProvider| |`iv`| `String` |Value obtained from FuzzedDataProvider| |`data`| `String` |Value obtained from FuzzedDataProvider| |`certIndex`| `Integer` |Value obtained from FuzzedDataProvider| #### Steps to run 1. Build the fuzzer ``` $ mm -j$(nproc) privacy_crypto_fuzzer ``` 2. Run on device ``` $ adb sync data $ adb shell /data/fuzz/arm64/privacy_crypto_fuzzer/vendor/privacy_crypto_fuzzer