FDPT: Full Decrypt Path Testing Application
Cherry pick of http://go/ag/9326830 This is a merge of the full decrypt path testing CLs from the Widevine repo: http://go/wvgerrit/q/topic:FDPT-subsamples This is the Full Decrypt Path Testing application that can be used by device makers to verify that OEMCrypto is correctly decrypting content to secure buffers. Testing: Ran App. Bug: 113594822 Change-Id: Icbb1e2f2e762bac3cc1b7b20749922c14ea24449
@@ -0,0 +1,34 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportHeight="108"
|
||||
android:viewportWidth="108">
|
||||
<path
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:endX="78.5885"
|
||||
android:endY="90.9159"
|
||||
android:startX="48.7653"
|
||||
android:startY="61.0927"
|
||||
android:type="linear">
|
||||
<item
|
||||
android:color="#44000000"
|
||||
android:offset="0.0" />
|
||||
<item
|
||||
android:color="#00000000"
|
||||
android:offset="1.0" />
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="nonZero"
|
||||
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
|
||||
android:strokeColor="#00000000"
|
||||
android:strokeWidth="1" />
|
||||
</vector>
|
||||
@@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportHeight="108"
|
||||
android:viewportWidth="108">
|
||||
<path
|
||||
android:fillColor="#26A69A"
|
||||
android:pathData="M0,0h108v108h-108z" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M9,0L9,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,0L19,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,0L29,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,0L39,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,0L49,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,0L59,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,0L69,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,0L79,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M89,0L89,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M99,0L99,108"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,9L108,9"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,19L108,19"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,29L108,29"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,39L108,39"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,49L108,49"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,59L108,59"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,69L108,69"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,79L108,79"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,89L108,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M0,99L108,99"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,29L89,29"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,39L89,39"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,49L89,49"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,59L89,59"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,69L89,69"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M19,79L89,79"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M29,19L29,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M39,19L39,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M49,19L49,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M59,19L59,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M69,19L69,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
<path
|
||||
android:fillColor="#00000000"
|
||||
android:pathData="M79,19L79,89"
|
||||
android:strokeColor="#33FFFFFF"
|
||||
android:strokeWidth="0.8" />
|
||||
</vector>
|
||||
@@ -0,0 +1,178 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context="com.google.widevine.fulldecryptpathtesting.MainActivity">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="visible">
|
||||
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_setup"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:onClick="configureTest"
|
||||
android:text="@string/setup"
|
||||
|
||||
android:minWidth="60dp"
|
||||
android:layout_marginTop="0dp"
|
||||
android:layout_marginBottom="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
android:layout_marginLeft="0dp"
|
||||
android:layout_marginRight="0dp"
|
||||
android:paddingBottom="0dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:paddingStart="0dp"
|
||||
android:paddingTop="0dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_start"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
|
||||
android:layout_marginLeft="0dp"
|
||||
android:layout_marginRight="0dp"
|
||||
android:layout_marginTop="0dp"
|
||||
android:minWidth="60dp"
|
||||
android:onClick="startTest"
|
||||
android:paddingBottom="0dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:paddingStart="0dp"
|
||||
android:paddingTop="0dp"
|
||||
android:text="@string/play"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_stop"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
|
||||
android:layout_marginLeft="0dp"
|
||||
android:layout_marginRight="0dp"
|
||||
android:layout_marginTop="0dp"
|
||||
android:minWidth="60dp"
|
||||
android:onClick="stopTest"
|
||||
android:paddingBottom="0dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:paddingStart="0dp"
|
||||
android:paddingTop="0dp"
|
||||
android:text="@string/stop"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/button_clear"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="0dp"
|
||||
android:layout_marginEnd="0dp"
|
||||
|
||||
android:layout_marginLeft="0dp"
|
||||
android:layout_marginRight="0dp"
|
||||
android:layout_marginTop="0dp"
|
||||
android:minWidth="60dp"
|
||||
android:onClick="clearLog"
|
||||
android:paddingBottom="0dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:paddingLeft="0dp"
|
||||
android:paddingRight="0dp"
|
||||
android:paddingStart="0dp"
|
||||
android:paddingTop="0dp"
|
||||
android:text="@string/clear"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
/>
|
||||
|
||||
<Space
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/status"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:text="status" />
|
||||
|
||||
<Space
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
<SurfaceView
|
||||
android:id="@+id/playback_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/log_scroll"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:fillViewport="true">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/log_output"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:text="No output yet." />
|
||||
|
||||
</ScrollView>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<item android:id="@+id/menu_setup"
|
||||
android:icon="@android:drawable/ic_menu_preferences"
|
||||
android:title="@string/setup"
|
||||
android:showAsAction="ifRoom|withText"
|
||||
tools:ignore="AppCompatResource"/>
|
||||
<item android:id="@+id/menu_play"
|
||||
android:icon="@android:drawable/ic_media_play"
|
||||
android:title="@string/play"
|
||||
android:showAsAction="ifRoom|withText"
|
||||
tools:ignore="AppCompatResource"/>
|
||||
</menu>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 755 B |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 934 B |
|
After Width: | Height: | Size: 601 B |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 903 B |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 8.5 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="colorPrimary">#3F51B5</color>
|
||||
<color name="colorPrimaryDark">#303F9F</color>
|
||||
<color name="colorAccent">#FF4081</color>
|
||||
</resources>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#402174</color>
|
||||
</resources>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="MissingTranslation">
|
||||
<!-- Keys used for preferences. -->
|
||||
<string name="key_test_cenc">test_cenc</string>
|
||||
<string name="key_test_cens">test_cens</string>
|
||||
<string name="key_test_cbc1">test_cbc1</string>
|
||||
<string name="key_test_cbcs">test_cbcs</string>
|
||||
<string name="key_test_max">test_max</string>
|
||||
<string name="key_test_wrap">test_wrap</string>
|
||||
<string name="key_test_multi_subsample">test_multi_subsample</string>
|
||||
<string name="key_log_each_frame">test_log_each_frame</string>
|
||||
<string name="key_random_test_count">random_test_count</string>
|
||||
<string name="key_random_seed">random_seed</string>
|
||||
<string name="key_test_frame">random_test_count</string>
|
||||
<string name="key_use_level_1">use_level_1</string>
|
||||
<string name="key_use_secure_buffer">use_secure_buffer</string>
|
||||
<string name="key_codec">codec</string>
|
||||
<string name="default_codec">default</string>
|
||||
<!-- Keys used for MediaDrm.getPropertyString. -->
|
||||
<string name="key_security_level">securityLevel</string>
|
||||
<string name="key_system_id">systemId</string>
|
||||
<string name="key_cdm_version">version</string>
|
||||
<string name="key_oemcrypto_api">oemCryptoApiVersion</string>
|
||||
<string name="key_oemcrypto_build_info">oemCryptoBuildInformation</string>
|
||||
<string name="key_hash_support">decryptHashSupport</string>
|
||||
<string name="key_resource_rating">resourceRatingTier</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,89 @@
|
||||
<resources>
|
||||
<string name="app_name">Full Decrypt Path Testing</string>
|
||||
<string name="short_app_name">FDPT</string>
|
||||
<string name="setup">Setup</string>
|
||||
<string name="play">Start Test</string>
|
||||
<string name="stop">Stop Test</string>
|
||||
<string name="clear">Clear</string>
|
||||
<string name="title_activity_settings">Settings</string>
|
||||
|
||||
<!-- Strings related to properties that are displayed -->
|
||||
<string name="security_level">Security Level</string>
|
||||
<string name="system_id">System ID</string>
|
||||
<string name="cdm_version">Widevine Plugin Version</string>
|
||||
<string name="oemcrypto_api">OEMCrypto API version</string>
|
||||
<string name="oemcrypto_build_info">OEMCrypto Build Info</string>
|
||||
<string name="hash_support">Decrypt Hash Supported</string>
|
||||
<string name="resource_rating">Resource Rating Tier</string>
|
||||
|
||||
<!-- Strings related to Settings -->
|
||||
<string name="pref_main_category">Full Decrypt Path Testing Setup</string>
|
||||
<string name="pref_test_cenc">Test \"cenc\"</string>
|
||||
<string name="pref_test_cenc_summary">Run tests with CTR mode and no pattern</string>
|
||||
<string name="pref_test_cens">Test \"cens\"</string>
|
||||
<string name="pref_test_cens_summary">Run tests with CTR mode with pattern (rare)</string>
|
||||
<string name="pref_test_cbc1">Test \"cbc1\"</string>
|
||||
<string name="pref_test_cbc1_summary">Run tests with CBC mode and no pattern (rare)</string>
|
||||
<string name="pref_test_cbcs">Test \"cbcs\"</string>
|
||||
<string name="pref_test_cbcs_summary">Run tests with CBC mode with pattern</string>
|
||||
<string name="pref_test_max">Test Maximum Buffer Sizes</string>
|
||||
<string name="pref_test_max_summary">Run tests with maximum sample
|
||||
and subsample sizes for OEMCrypto. This may cause problems with the codec if it cannot
|
||||
handle OEMCrypto\'s maximum buffer size.</string>
|
||||
<string name="pref_test_wrap">Test IV overflow</string>
|
||||
<string name="pref_test_wrap_summary">Run tests with an IV in counter mode that
|
||||
overflows when incremented.</string>
|
||||
<string name="pref_test_multi_subsample">Test Multisubsample for cens and cbc1</string>
|
||||
<string name="pref_test_multi_subsample_summary">If true, tests are run which include
|
||||
more than one subsample for \"cens\" and \"cbc1\". A bug in the CDM layer may
|
||||
prevent \"cbc1\" test from passing.</string>
|
||||
<string name="pref_log_each_frame">Log Each Frame</string>
|
||||
<string name="pref_log_each_frame_summary">If true, then a description of each
|
||||
frame is logged to the output window. This is very verbose, and will slow
|
||||
the tests down significantly. However, when debugging, it might help to see
|
||||
descriptions of tests that pass.</string>
|
||||
<string name="pref_random_test_count">Random Test Count</string>
|
||||
<string name="pref_random_test_count_summary">Click to set how many random tests
|
||||
to run for each encryption scheme.</string>
|
||||
<string name="pref_random_seed">Random Seed</string>
|
||||
<string name="pref_random_seed_summary">If set, this is used to seed the test
|
||||
factory\'s random number generator. The seed may be found in the logcat. This
|
||||
allows a user to repeate a previous test.</string>
|
||||
<string name="pref_test_frame">Test Frame</string>
|
||||
<string name="pref_test_frame_summary">if set, only thiis frame will be tested.
|
||||
This allows a user to isolate and debug a single failing test case.</string>
|
||||
<string name="pref_use_level_1">Use Level 1</string>
|
||||
<string name="pref_use_level_1_summary">If this is set, the L1 OEMCrypto is used</string>
|
||||
<string name="pref_use_secure_buffer">Use Secure Buffer</string>
|
||||
<string name="pref_use_secure_buffer_summary">If the default codec is used,
|
||||
then this determines if it is secure or not.</string>
|
||||
<string name="pref_codec">Codec</string>
|
||||
<string name="pref_codec_summary">The name of the Codec to use.
|
||||
If this is not set, then a default codec is chosen for mime type video/avc.
|
||||
The user must make sure it is for video and uses a secure buffer
|
||||
if required.\n
|
||||
current = %1$s</string>
|
||||
<string name="default_codec_description">Use default codec for video mime type.</string>
|
||||
</resources>
|
||||
<!-- Note to translators:
|
||||
|
||||
The following abbreviations are only used by Widevine. They probably should NOT be translated.
|
||||
FDPT = an abbreviation of "Full Decrypt Path Testing", which is this application.
|
||||
L1 = Level 1.
|
||||
|
||||
The following abbreviations are documented here: https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
|
||||
They are familiar to most engineers who would use this application.
|
||||
|
||||
CTR = Counter
|
||||
CBC = Cipher Block Chaining.
|
||||
IV = initialization vector.
|
||||
|
||||
"overflow" refers to integer overflow, as documented here:
|
||||
https://en.wikipedia.org/wiki/Integer_overflow
|
||||
|
||||
"hash" refers to https://en.wikipedia.org/wiki/Hash_function
|
||||
|
||||
"secure buffer" refers to the type of buffer used in Android, as documented in the MediaCodec:
|
||||
https://developer.android.com/reference/android/media/MediaCodec#creating-secure-decoders
|
||||
|
||||
-->
|
||||
@@ -0,0 +1,11 @@
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="colorPrimary">@color/colorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||
<item name="colorAccent">@color/colorAccent</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
@@ -0,0 +1,104 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<PreferenceCategory
|
||||
android:key="pref_key_main_category"
|
||||
android:title="@string/pref_main_category">
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_use_level_1"
|
||||
android:title="@string/pref_use_level_1"
|
||||
android:summary="@string/pref_use_level_1_summary"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_use_secure_buffer"
|
||||
android:title="@string/pref_use_secure_buffer"
|
||||
android:summary="@string/pref_use_secure_buffer_summary"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
|
||||
<com.google.widevine.fulldecryptpathtesting.CodecPreference
|
||||
android:key="@string/key_codec"
|
||||
android:title="@string/pref_codec"
|
||||
android:summary="@string/pref_codec_summary"
|
||||
android:defaultValue="@string/default_codec"
|
||||
/>
|
||||
|
||||
<EditTextPreference
|
||||
android:key="@string/key_random_test_count"
|
||||
android:title="@string/pref_random_test_count"
|
||||
android:summary="@string/pref_random_test_count_summary"
|
||||
android:inputType="number"
|
||||
android:defaultValue="5000"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_test_cenc"
|
||||
android:title="@string/pref_test_cenc"
|
||||
android:summary="@string/pref_test_cenc_summary"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_test_cens"
|
||||
android:title="@string/pref_test_cens"
|
||||
android:summary="@string/pref_test_cens_summary"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_test_cbc1"
|
||||
android:title="@string/pref_test_cbc1"
|
||||
android:summary="@string/pref_test_cbc1_summary"
|
||||
android:defaultValue="false"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_test_cbcs"
|
||||
android:title="@string/pref_test_cbcs"
|
||||
android:summary="@string/pref_test_cbcs_summary"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_test_max"
|
||||
android:title="@string/pref_test_max"
|
||||
android:summary="@string/pref_test_max_summary"
|
||||
android:defaultValue="false"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_test_wrap"
|
||||
android:title="@string/pref_test_wrap"
|
||||
android:summary="@string/pref_test_wrap_summary"
|
||||
android:defaultValue="true"
|
||||
/>
|
||||
|
||||
<!-- TODO(b/139257871) This defaults to false because cbc1 is not -->
|
||||
<!-- handled correctly on most versions of Android at the CDM layer. -->
|
||||
<SwitchPreference
|
||||
android:key="@string/key_test_multi_subsample"
|
||||
android:title="@string/pref_test_multi_subsample"
|
||||
android:summary="@string/pref_test_multi_subsample_summary"
|
||||
android:defaultValue="false"
|
||||
/>
|
||||
|
||||
<SwitchPreference
|
||||
android:key="@string/key_log_each_frame"
|
||||
android:title="@string/pref_log_each_frame"
|
||||
android:summary="@string/pref_log_each_frame_summary"
|
||||
android:defaultValue="false"
|
||||
/>
|
||||
|
||||
<EditTextPreference
|
||||
android:key="@string/key_random_seed"
|
||||
android:title="@string/pref_random_seed"
|
||||
android:summary="@string/pref_random_seed_summary"
|
||||
android:inputType="number"
|
||||
android:defaultValue=""
|
||||
/>
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
||||