test@test-pc:~/workspace/share/testcase/test_tee$ tree .
.
├── resource
│ ├── googlekey
│ │ ├── default_googlekey.bin
│ │ └── kmsetkey_ca
│ └── vts_testcase
│ ├── VtsHalBiometricsFaceV1_0TargetTest
│ │ ├── arm
│ │ │ └── VtsHalBiometricsFaceV1_0TargetTest
│ │ ├── arm64
│ │ │ └── VtsHalBiometricsFaceV1_0TargetTest
│ │ └── VtsHalBiometricsFaceV1_0TargetTest.config
│ ├── VtsHalBiometricsFingerprintV2_1TargetTest
│ │ ├── arm
│ │ │ └── VtsHalBiometricsFingerprintV2_1TargetTest
│ │ ├── arm64
│ │ │ └── VtsHalBiometricsFingerprintV2_1TargetTest
│ │ └── VtsHalBiometricsFingerprintV2_1TargetTest.config
│ ├── VtsHalBiometricsFingerprintV2_2TargetTest
│ │ ├── arm
│ │ │ └── VtsHalBiometricsFingerprintV2_2TargetTest
│ │ ├── arm64
│ │ │ └── VtsHalBiometricsFingerprintV2_2TargetTest
│ │ └── VtsHalBiometricsFingerprintV2_2TargetTest.config
│ ├── VtsHalGatekeeperV1_0TargetTest
│ │ ├── arm
│ │ │ └── VtsHalGatekeeperV1_0TargetTest
│ │ ├── arm64
│ │ │ └── VtsHalGatekeeperV1_0TargetTest
│ │ └── VtsHalGatekeeperV1_0TargetTest.config
│ ├── VtsHalKeymasterV3_0TargetTest
│ │ ├── arm
│ │ │ └── VtsHalKeymasterV3_0TargetTest
│ │ ├── arm64
│ │ │ └── VtsHalKeymasterV3_0TargetTest
│ │ └── VtsHalKeymasterV3_0TargetTest.config
│ ├── VtsHalKeymasterV4_0TargetTest
│ │ ├── arm
│ │ │ └── VtsHalKeymasterV4_0TargetTest
│ │ ├── arm64
│ │ │ └── VtsHalKeymasterV4_0TargetTest
│ │ └── VtsHalKeymasterV4_0TargetTest.config
│ └── VtsHalKeymasterV4_1TargetTest
│ ├── arm
│ │ └── VtsHalKeymasterV4_1TargetTest
│ ├── arm64
│ │ └── VtsHalKeymasterV4_1TargetTest
│ └── VtsHalKeymasterV4_1TargetTest.config
├── tee.json
└── tee_test.py
24 directories, 25 files
# coding=utf8
# python tran_projects/common/tee/tools/tee_info.py
import sys
import os
import shutil
import time
import random
import subprocess
import getopt
import json
debug = 0
g_verify = 0
g_enroll = 0
test_vts_gatekeeper = False
test_vts_keymaster = False
test_press_locksetting = False
test_press_keymaster = False
test_press_count = 1
report_list = ["gatekeeper","keymaster3.0-arm","keymaster3.0-arm64","keymaster4.0-arm","keymaster4.0-arm64","keymaster4.1-arm","keymaster4.1-arm64"]
report_result = {}
locksetting = {
"every_enroll":{
"correct_verify": 10,
"incorrect_verify": 5
}
}
def print_report():
print("\n===============================================")
print("result report:")
for line in report_list:
if line not in report_result:
continue
print("\t[result][vts] test %s %s" % (line,report_result[line]))
print("===============================================")
def getRandomSet(bits):
num_set = [chr(i) for i in range(48,58)]
char_set = [chr(i) for i in range(97,123)]
total_set = num_set + char_set
value_set = "".join(random.sample(total_set, bits))
return value_set
def generated_numbers(type):
if type == "pin":
return random.randint(1000,99999999)
elif type == "password":
return getRandomSet(8)
elif type == "pattern":
return "12369"
else:
return "0000"
def generated_cipher(type):
while True:
res = generated_numbers(type)
if res != "1478":
return res
def get_args(argv):
global test_vts_gatekeeper
global test_vts_keymaster
global test_press_locksetting
global test_press_keymaster
global test_press_count
try:
opts, args = getopt.getopt(argv,"hv:p:n:",["--help=","--vts=","--press="])
except getopt.GetoptError:
print('test.py -v keymaster/gatekeeper/all')
sys.exit(2)
for opt, arg in opts:
if opt == ("-h", "--help"):
print('test.py -v <vts_testcase>, vts_testcase:gatekeeper,keymaster,all')
if opt in ("-v", "--vts"):
if arg == "gatekeeper" or arg == "all":
test_vts_gatekeeper = True
if arg == "keymaster" or arg == "all":
test_vts_keymaster = True
if opt in ("-p", "--press"):
if arg == "locksetting" or arg == "all":
test_press_locksetting = True
if arg == "keymaster" or arg == "all":
test_press_keymaster = True
if opt in ("-n"):
test_press_count = arg
def test_locksetting_pattern(testcount):
for num in range(0,testcount):
#new_pd = random.randint(1236,99999999)
old_pd = 12369
new_pd = 1236
os.system("adb shell locksettings set-pattern --old %s %s" % (old_pd, new_pd))
old_pd = 1236
new_pd = 12369
os.system("adb shell locksettings set-pattern --old %s %s" % (old_pd, new_pd))
def test_locksetting_pin(type,testcount):
global g_verify
if debug == 1:
new_pd = "2222"
type = "pin"
else:
new_pd = generated_cipher(type)
os.system("adb shell locksettings set-%s %s" % (type, new_pd))
for num in range(0,testcount):
old_pd = new_pd
if debug == 1:
if new_pd == "2222":
new_pd = "1111"
else:
new_pd = "2222"
else:
new_pd = generated_cipher(type)
output = subprocess.getstatusoutput("adb shell locksettings set-%s --old %s %s" % (type, old_pd, new_pd))
for verify_count in range(0,locksetting["every_enroll"]["correct_verify"]):
output = subprocess.getstatusoutput("adb shell cmd lock_settings verify --old %s" % (new_pd))
if 0 == output[0] and "Lock credential verified successfully" == output[1]:
g_verify = g_verify + 1
print("Use the correct %s : Lock credential verified successfully. ---(pass_count=%s)pass" % (type,g_verify))
else:
print("%s error not as expected!!!! exit!!!" % (type))
sys.exit(2)
for verify_count in range(0,locksetting["every_enroll"]["incorrect_verify"]):
temp_pd = "1478"
output = subprocess.getstatusoutput("adb shell cmd lock_settings verify --old %s" % (temp_pd))
print(output)
if "Old password '1478' didn't match" in output:
g_verify = g_verify + 1
print("Use the incorrect %s : Old password '1478' didn't match. ---(pass_count=%s)pass" % (type,g_verify))
elif "Request throttled" in output:
g_verify = g_verify + 1
print("Wrong %s exceeds and need wait for 30s : Request throttled. ---(pass_count=%s)pass" % (type,g_verify))
time.sleep(30)
else:
print("%s correct not as expected!!!! exit!!!" % (type))
sys.exit(2)
os.system("adb shell locksettings clear --old %s" % (new_pd))
def test_keymaster_use_vts(testcount):
output = subprocess.getstatusoutput("adb root")
output = subprocess.getstatusoutput("adb push resource/googlekey/default_googlekey.bin /data")
output = subprocess.getstatusoutput("adb push resource/googlekey/kmsetkey_ca /data")
output = subprocess.getstatusoutput("adb shell \"chmod 777 data/kmsetkey_ca\"")
output = subprocess.getstatusoutput("adb shell ./data/kmsetkey_ca -i ./data/default_googlekey.bin")
# for keymaster 4.0 - arm64
print("Start to test keymaster4.0-arm64. It will take a few minutes. Please wait patiently.")
output = subprocess.getstatusoutput("adb push resource/vts_testcase/VtsHalKeymasterV4_0TargetTest/arm64/VtsHalKeymasterV4_0TargetTest /data")
output = subprocess.getstatusoutput("adb shell \"chmod 777 /data/VtsHalKeymasterV4_0TargetTest\"")
output = subprocess.getstatusoutput("adb shell ./data/VtsHalKeymasterV4_0TargetTest --gtest_break_on_failure")
for line in output:
print(line)
print("\n\n")
if "[ PASSED ]" in str(output[1]):
print("test_keymaster 4.0 - arm64 --pass")
report_result["keymaster4.0-arm64"] = "Pass"
else:
print("test_keymaster 4.0 - arm64 --failed")
report_result["keymaster4.0-arm64"] = "fail"
# for keymaster 4.0 - arm
print("Start to test keymaster4.0-arm. It will take a few minutes. Please wait patiently.")
output = subprocess.getstatusoutput("adb push resource/vts_testcase/VtsHalKeymasterV4_0TargetTest/arm/VtsHalKeymasterV4_0TargetTest /data")
output = subprocess.getstatusoutput("adb shell \"chmod 777 /data/VtsHalKeymasterV4_0TargetTest\"")
output = subprocess.getstatusoutput("adb shell ./data/VtsHalKeymasterV4_0TargetTest --gtest_break_on_failure")
for line in output:
print(line)
print("\n\n")
if "[ PASSED ]" in str(output[1]):
print("test_keymaster 4.0 - arm --pass")
report_result["keymaster4.0-arm"] = "Pass"
else:
print("test_keymaster 4.0 - arm --failed")
report_result["keymaster4.0-arm"] = "fail"
# for keymaster 4.1 - arm64
print("Start to test keymaster4.1-arm64. It will take a few minutes. Please wait patiently.")
output = subprocess.getstatusoutput("adb push resource/vts_testcase/VtsHalKeymasterV4_1TargetTest/arm64/VtsHalKeymasterV4_1TargetTest /data")
output = subprocess.getstatusoutput("adb shell \"chmod 777 /data/VtsHalKeymasterV4_1TargetTest\"")
output = subprocess.getstatusoutput("adb shell ./data/VtsHalKeymasterV4_1TargetTest --gtest_break_on_failure")
for line in output:
print(line)
print("\n\n")
if "[ PASSED ]" in str(output[1]):
print("test_keymaster 4.1 - arm64 --pass")
report_result["keymaster4.1-arm64"] = "Pass"
else:
print("test_keymaster 4.1 - arm64 --failed")
report_result["keymaster4.1-arm64"] = "fail"
# for keymaster 4.1 - arm
print("Start to test keymaster4.1-arm. It will take a few minutes. Please wait patiently.")
output = subprocess.getstatusoutput("adb push resource/vts_testcase/VtsHalKeymasterV4_1TargetTest/arm/VtsHalKeymasterV4_1TargetTest /data")
output = subprocess.getstatusoutput("adb shell \"chmod 777 /data/VtsHalKeymasterV4_1TargetTest\"")
output = subprocess.getstatusoutput("adb shell ./data/VtsHalKeymasterV4_1TargetTest --gtest_break_on_failure")
for line in output:
print(line)
print("\n\n")
if "[ PASSED ]" in str(output[1]):
print("test_keymaster 4.1 - arm --pass")
report_result["keymaster4.1-arm"] = "Pass"
else:
print("test_keymaster 4.1 - arm --failed")
report_result["keymaster4.1-arm"] = "fail"
# for keymaster 3.0 - arm64
print("Start to test keymaster3.0-arm64. It will take a few minutes. Please wait patiently.")
output = subprocess.getstatusoutput("adb push resource/vts_testcase/VtsHalKeymasterV3_0TargetTest/arm64/VtsHalKeymasterV3_0TargetTest /data")
output = subprocess.getstatusoutput("adb shell \"chmod 777 /data/VtsHalKeymasterV3_0TargetTest\"")
output = subprocess.getstatusoutput("adb shell ./data/VtsHalKeymasterV3_0TargetTest --gtest_break_on_failure")
for line in output:
print(line)
print("\n\n")
if "[ PASSED ]" in str(output[1]):
print("test_keymaster 3.0 - arm64 --pass")
report_result["keymaster3.0-arm64"] = "Pass"
else:
print("test_keymaster 3.0 - arm64 --failed")
report_result["keymaster3.0-arm64"] = "fail"
# for keymaster 3.0 - arm
print("Start to test keymaster3.0-arm. It will take a few minutes. Please wait patiently.")
output = subprocess.getstatusoutput("adb push resource/vts_testcase/VtsHalKeymasterV3_0TargetTest/arm/VtsHalKeymasterV3_0TargetTest /data")
output = subprocess.getstatusoutput("adb shell \"chmod 777 /data/VtsHalKeymasterV3_0TargetTest\"")
output = subprocess.getstatusoutput("adb shell ./data/VtsHalKeymasterV3_0TargetTest --gtest_break_on_failure")
for line in output:
print(line)
print("\n\n")
if "[ PASSED ]" in str(output[1]):
print("test_keymaster 3.0 - arm --pass")
report_result["keymaster3.0-arm"] = "Pass"
else:
print("test_keymaster 3.0 - arm --failed")
report_result["keymaster3.0-arm"] = "fail"
def test_gatekeeper_use_vts(testcount):
print("Start to test gatekeeper. It will take a few minutes. Please wait patiently.")
output = subprocess.getstatusoutput("adb root")
output = subprocess.getstatusoutput("adb push resource/vts_testcase/VtsHalGatekeeperV1_0TargetTest/arm64/VtsHalGatekeeperV1_0TargetTest /data")
output = subprocess.getstatusoutput("adb shell \"chmod 777 /data/VtsHalGatekeeperV1_0TargetTest\"")
output = subprocess.getstatusoutput("adb shell ./data/VtsHalGatekeeperV1_0TargetTest")
for line in output:
print(line)
print("\n\n")
if "[ PASSED ]" in str(output[1]):
print("test_gatekeeper_use_vts--pass")
report_result["gatekeeper"] = "Pass"
else:
print("test_gatekeeper_use_vts--failed")
report_result["gatekeeper"] = "Fail"
if __name__ == '__main__':
print(str(sys.argv[0]) + " enter")
get_args(sys.argv[1:])
if test_press_locksetting == True:
test_locksetting_pin("pattern", test_press_count)
test_locksetting_pin("password", test_press_count)
test_locksetting_pin("pin", test_press_count)
print("Total testcase : %s pass" % (g_verify))
if test_vts_gatekeeper == True or test_press_locksetting == True:
test_gatekeeper_use_vts(test_press_count)
if test_vts_keymaster == True or test_press_keymaster == True:
test_keymaster_use_vts(test_press_count)
if test_press_locksetting == False and test_press_keymaster == False and test_vts_gatekeeper == False and test_vts_keymaster == False:
test_keymaster_use_vts(test_press_count)
test_gatekeeper_use_vts(test_press_count)
print_report()
time.sleep(30)
else:
print_report()