• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2#
3# A test suite for recovery's package signature verifier.  Run in a
4# client where you have done envsetup, lunch, etc.
5#
6# TODO: find some way to get this run regularly along with the rest of
7# the tests.
8
9EMULATOR_PORT=5580
10DATA_DIR=$ANDROID_BUILD_TOP/bootable/recovery/testdata
11
12WORK_DIR=/data/local/tmp
13
14# set to 0 to use a device instead
15USE_EMULATOR=0
16
17# ------------------------
18
19if [ "$USE_EMULATOR" == 1 ]; then
20  emulator -wipe-data -noaudio -no-window -port $EMULATOR_PORT &
21  pid_emulator=$!
22  ADB="adb -s emulator-$EMULATOR_PORT "
23else
24  ADB="adb -d "
25fi
26
27echo "waiting to connect to device"
28$ADB wait-for-device
29
30# run a command on the device; exit with the exit status of the device
31# command.
32run_command() {
33  $ADB shell "$@" \; echo \$? | awk '{if (b) {print a}; a=$0; b=1} END {exit a}'
34}
35
36testname() {
37  echo
38  echo "::: testing $1 :::"
39  testname="$1"
40}
41
42fail() {
43  echo
44  echo FAIL: $testname
45  echo
46  [ "$open_pid" == "" ] || kill $open_pid
47  [ "$pid_emulator" == "" ] || kill $pid_emulator
48  exit 1
49}
50
51
52cleanup() {
53  # not necessary if we're about to kill the emulator, but nice for
54  # running on real devices or already-running emulators.
55  run_command rm $WORK_DIR/verifier_test
56  run_command rm $WORK_DIR/package.zip
57
58  [ "$pid_emulator" == "" ] || kill $pid_emulator
59}
60
61$ADB push $ANDROID_PRODUCT_OUT/system/bin/verifier_test \
62          $WORK_DIR/verifier_test
63
64expect_succeed() {
65  testname "$1 (should succeed)"
66  $ADB push $DATA_DIR/$1 $WORK_DIR/package.zip
67  shift
68  run_command $WORK_DIR/verifier_test "$@" $WORK_DIR/package.zip || fail
69}
70
71expect_fail() {
72  testname "$1 (should fail)"
73  $ADB push $DATA_DIR/$1 $WORK_DIR/package.zip
74  shift
75  run_command $WORK_DIR/verifier_test "$@" $WORK_DIR/package.zip && fail
76}
77
78# not signed at all
79expect_fail unsigned.zip
80# signed in the pre-donut way
81expect_fail jarsigned.zip
82
83# success cases
84expect_succeed otasigned.zip
85expect_succeed otasigned_f4.zip -f4
86expect_succeed otasigned_sha256.zip -sha256
87expect_succeed otasigned_f4_sha256.zip -sha256 -f4
88
89# verified against different key
90expect_fail otasigned.zip -f4
91expect_fail otasigned_f4.zip
92
93# verified against right key but wrong hash algorithm
94expect_fail otasigned.zip -sha256
95expect_fail otasigned_f4.zip -sha256 -f4
96expect_fail otasigned_sha256.zip
97expect_fail otasigned_f4_sha256.zip -f4
98
99# various other cases
100expect_fail random.zip
101expect_fail fake-eocd.zip
102expect_fail alter-metadata.zip
103expect_fail alter-footer.zip
104
105# --------------- cleanup ----------------------
106
107cleanup
108
109echo
110echo PASS
111echo
112