(This is a merge from http://go/wvgerrit/30220) Previously, extracting the system ID was only supported on Keybox-based systems. This patch adds support for extracting the system ID from the OEM Certificate chain on Provisioning 3.0 devices. This is done by getting the Widevine intermediate cert from the chain, finding the Widevine System ID extension in that cert, and extracting the value. The code that does the extraction is separate from any code that calls OEMCrypto so that it can be unit-tested in isolation. This patch adds a crypto_session_unittest test to do this unit-testing. Bug: 34776194 Test: crypto_session_unittest Change-Id: I3e273968208fb31ae6019ccc383b419625d1ae22
122 lines
4.0 KiB
Bash
Executable File
122 lines
4.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
final_result=0
|
|
failed_tests=()
|
|
|
|
# Below, we will append filters to the exclusion portion of GTEST_FILTER, so we
|
|
# need to guarantee it has one.
|
|
if [ -z "$GTEST_FILTER" ]; then
|
|
# If it wasn't set, make it add all tests, and remove none.
|
|
GTEST_FILTER="*-"
|
|
# if GTEST_FILTER already has a negative sign, we leave it alone.
|
|
elif [ 0 -eq `expr index "$GTEST_FILTER" "-"` ]; then
|
|
# If GTEST_FILTER was set, but does not have a negative sign, add one. This
|
|
# gives gtest an empty list of tests to skip.
|
|
GTEST_FILTER="$GTEST_FILTER-"
|
|
fi
|
|
|
|
# Execute a command in "adb shell" and capture the result.
|
|
adb_shell_run() {
|
|
local test_file=$1
|
|
shift
|
|
if adb shell ls /data/bin/$test_file &> /dev/null; then
|
|
test_file=/data/bin/$test_file
|
|
else
|
|
echo "Please install the test on the device in /data/bin, "
|
|
echo "or begin execution by running ./build_and_run_all_unit_tests.sh"
|
|
exit 1
|
|
fi
|
|
echo $test_file
|
|
local tmp_log="$OUT/mediadrmtest.log"
|
|
local adb_error="[ADB SHELL] $@ $test_file failed"
|
|
adb shell "GTEST_FILTER=$GTEST_FILTER $@ $test_file" \|\| echo "$adb_error" | tee "$tmp_log"
|
|
! grep -Fq "$adb_error" "$tmp_log"
|
|
local result=$?
|
|
if [ $result -ne 0 ]; then
|
|
final_result=$result
|
|
failed_tests+=("$adb_error")
|
|
fi
|
|
}
|
|
|
|
# Use Package Manager (via adb shell) to enable or disable DroidGuard.
|
|
# Disabling DroidGuard during the test run prevents concurrency issues
|
|
# with provisioning status.
|
|
set_droidguard() {
|
|
adb shell pm $1 com.google.android.gms/com.google.android.gms.droidguard.DroidGuardService
|
|
}
|
|
|
|
if [ -z "$ANDROID_BUILD_TOP" ]; then
|
|
echo "Android build environment not set"
|
|
exit -1
|
|
fi
|
|
|
|
echo "waiting for device"
|
|
ADB_OUTPUT=`adb root && echo ". " && adb wait-for-device remount`
|
|
echo $ADB_OUTPUT
|
|
if echo $ADB_OUTPUT | grep -qi "verity"; then
|
|
echo
|
|
echo "ERROR: This device has Verity enabled. run_all_unit_tests.sh does not "
|
|
echo "work if Verity is enabled. Please disable Verity with"
|
|
echo "\"adb disable-verity\" and try again."
|
|
exit -1
|
|
fi
|
|
|
|
# Disable DroidGuard to prevent provisioning collisions
|
|
set_droidguard disable
|
|
|
|
# Run oemcrypto tests first due to historical test order issues
|
|
adb_shell_run oemcrypto_test \
|
|
GTEST_FILTER="$GTEST_FILTER:*Level1Required" FORCE_LEVEL3_OEMCRYPTO=yes
|
|
adb_shell_run oemcrypto_test
|
|
|
|
# Run request_license_test next to ensure device is provisioned
|
|
adb_shell_run request_license_test
|
|
|
|
# cdm_extended_duration_test takes >30 minutes to run.
|
|
# adb_shell_run cdm_extended_duration_test
|
|
|
|
# cdm_feature_test to be run with modified/mock oemcrypto
|
|
# adb_shell_run cdm_feature_test
|
|
|
|
# Additional tests
|
|
adb_shell_run base64_test
|
|
adb_shell_run buffer_reader_test
|
|
adb_shell_run cdm_engine_test
|
|
adb_shell_run cdm_session_unittest
|
|
adb_shell_run crypto_session_unittest
|
|
adb_shell_run device_files_unittest
|
|
adb_shell_run distribution_test
|
|
adb_shell_run event_metric_test
|
|
adb_shell_run file_store_unittest
|
|
adb_shell_run file_utils_unittest
|
|
adb_shell_run http_socket_test
|
|
adb_shell_run initialization_data_unittest
|
|
adb_shell_run libwvdrmdrmplugin_hidl_test
|
|
adb_shell_run libwvdrmdrmplugin_test
|
|
adb_shell_run libwvdrmmediacrypto_hidl_test
|
|
adb_shell_run libwvdrmmediacrypto_test
|
|
adb_shell_run license_keys_unittest
|
|
adb_shell_run license_unittest
|
|
adb_shell_run policy_engine_constraints_unittest
|
|
adb_shell_run policy_engine_unittest
|
|
adb_shell_run service_certificate_unittest
|
|
adb_shell_run timer_unittest
|
|
adb_shell_run usage_table_header_unittest
|
|
adb_shell_run wv_cdm_metrics_test
|
|
|
|
# Run the non-Treble test on non-Treble devices
|
|
if adb shell ls /vendor/lib/mediadrm/libwvdrmengine.so &> /dev/null ||
|
|
adb shell ls /vendor/lib64/mediadrm/libwvdrmengine.so &> /dev/null; then
|
|
library_path="/vendor/lib/mediadrm/:/vendor/lib64/mediadrm/"
|
|
adb_shell_run libwvdrmengine_test LD_LIBRARY_PATH=$library_path
|
|
fi
|
|
|
|
# Run the Treble test on Treble devices
|
|
if adb shell ls /vendor/lib/libwvhidl.so &> /dev/null ||
|
|
adb shell ls /vendor/lib64/libwvhidl.so &> /dev/null; then
|
|
adb_shell_run libwvdrmengine_hidl_test
|
|
fi
|
|
|
|
# Re-enable DroidGuard
|
|
set_droidguard enable
|