1*9e94795aSAndroid Build Coastguard Worker# 2*9e94795aSAndroid Build Coastguard Worker# Copyright (C) 2019 The Android Open Source Project 3*9e94795aSAndroid Build Coastguard Worker# 4*9e94795aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*9e94795aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*9e94795aSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*9e94795aSAndroid Build Coastguard Worker# 8*9e94795aSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*9e94795aSAndroid Build Coastguard Worker# 10*9e94795aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*9e94795aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*9e94795aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*9e94795aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*9e94795aSAndroid Build Coastguard Worker# limitations under the License. 15*9e94795aSAndroid Build Coastguard Worker# 16*9e94795aSAndroid Build Coastguard Worker 17*9e94795aSAndroid Build Coastguard Workerimport os.path 18*9e94795aSAndroid Build Coastguard Worker 19*9e94795aSAndroid Build Coastguard Workerimport common 20*9e94795aSAndroid Build Coastguard Workerimport sign_apex 21*9e94795aSAndroid Build Coastguard Workerimport test_utils 22*9e94795aSAndroid Build Coastguard Worker 23*9e94795aSAndroid Build Coastguard Worker 24*9e94795aSAndroid Build Coastguard Workerclass SignApexTest(test_utils.ReleaseToolsTestCase): 25*9e94795aSAndroid Build Coastguard Worker 26*9e94795aSAndroid Build Coastguard Worker def setUp(self): 27*9e94795aSAndroid Build Coastguard Worker self.testdata_dir = test_utils.get_testdata_dir() 28*9e94795aSAndroid Build Coastguard Worker self.assertTrue(os.path.exists(self.testdata_dir)) 29*9e94795aSAndroid Build Coastguard Worker 30*9e94795aSAndroid Build Coastguard Worker common.OPTIONS.search_path = test_utils.get_search_path() 31*9e94795aSAndroid Build Coastguard Worker 32*9e94795aSAndroid Build Coastguard Worker @test_utils.SkipIfExternalToolsUnavailable() 33*9e94795aSAndroid Build Coastguard Worker def test_SignApexFile(self): 34*9e94795aSAndroid Build Coastguard Worker foo_apex = os.path.join(self.testdata_dir, 'foo.apex') 35*9e94795aSAndroid Build Coastguard Worker payload_key = os.path.join(self.testdata_dir, 'testkey_RSA4096.key') 36*9e94795aSAndroid Build Coastguard Worker container_key = os.path.join(self.testdata_dir, 'testkey') 37*9e94795aSAndroid Build Coastguard Worker signed_foo_apex = sign_apex.SignApexFile( 38*9e94795aSAndroid Build Coastguard Worker 'avbtool', 39*9e94795aSAndroid Build Coastguard Worker foo_apex, 40*9e94795aSAndroid Build Coastguard Worker payload_key, 41*9e94795aSAndroid Build Coastguard Worker container_key, 42*9e94795aSAndroid Build Coastguard Worker False) 43*9e94795aSAndroid Build Coastguard Worker self.assertTrue(os.path.exists(signed_foo_apex)) 44*9e94795aSAndroid Build Coastguard Worker 45*9e94795aSAndroid Build Coastguard Worker @test_utils.SkipIfExternalToolsUnavailable() 46*9e94795aSAndroid Build Coastguard Worker def test_SignApexWithApk(self): 47*9e94795aSAndroid Build Coastguard Worker test_apex = os.path.join(self.testdata_dir, 'has_apk.apex') 48*9e94795aSAndroid Build Coastguard Worker payload_key = os.path.join(self.testdata_dir, 'testkey_RSA4096.key') 49*9e94795aSAndroid Build Coastguard Worker container_key = os.path.join(self.testdata_dir, 'testkey') 50*9e94795aSAndroid Build Coastguard Worker apk_keys = {'wifi-service-resources.apk': os.path.join( 51*9e94795aSAndroid Build Coastguard Worker self.testdata_dir, 'testkey')} 52*9e94795aSAndroid Build Coastguard Worker signed_test_apex = sign_apex.SignApexFile( 53*9e94795aSAndroid Build Coastguard Worker 'avbtool', 54*9e94795aSAndroid Build Coastguard Worker test_apex, 55*9e94795aSAndroid Build Coastguard Worker payload_key, 56*9e94795aSAndroid Build Coastguard Worker container_key, 57*9e94795aSAndroid Build Coastguard Worker False, 58*9e94795aSAndroid Build Coastguard Worker apk_keys) 59*9e94795aSAndroid Build Coastguard Worker self.assertTrue(os.path.exists(signed_test_apex)) 60*9e94795aSAndroid Build Coastguard Worker 61*9e94795aSAndroid Build Coastguard Worker @test_utils.SkipIfExternalToolsUnavailable() 62*9e94795aSAndroid Build Coastguard Worker def test_SignCompressedApexFile(self): 63*9e94795aSAndroid Build Coastguard Worker apex = os.path.join(test_utils.get_current_dir(), 'com.android.apex.compressed.v1.capex') 64*9e94795aSAndroid Build Coastguard Worker payload_key = os.path.join(self.testdata_dir, 'testkey_RSA4096.key') 65*9e94795aSAndroid Build Coastguard Worker container_key = os.path.join(self.testdata_dir, 'testkey') 66*9e94795aSAndroid Build Coastguard Worker signed_apex = sign_apex.SignApexFile( 67*9e94795aSAndroid Build Coastguard Worker 'avbtool', 68*9e94795aSAndroid Build Coastguard Worker apex, 69*9e94795aSAndroid Build Coastguard Worker payload_key, 70*9e94795aSAndroid Build Coastguard Worker container_key, 71*9e94795aSAndroid Build Coastguard Worker False, 72*9e94795aSAndroid Build Coastguard Worker codename_to_api_level_map={'S': 31, 'Tiramisu' : 32}) 73*9e94795aSAndroid Build Coastguard Worker self.assertTrue(os.path.exists(signed_apex)) 74