101dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 201dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah# Use of this source code is governed by a BSD-style license that can be 301dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah# found in the LICENSE file. 401dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah 5c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahnimport time 601dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah 7c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahnfrom autotest_lib.client.bin import test 801dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shahfrom autotest_lib.client.common_lib import error 9c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahnfrom autotest_lib.client.common_lib.cros import chrome 10c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahnfrom autotest_lib.client.cros import pkcs11 1101dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah 12c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahnclass platform_Pkcs11InitOnLogin(test.test): 13c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn """This test logs in and verifies that the TPM token is working.""" 1401dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah version = 1 1501dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah 1601dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah def run_once(self): 1701dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah start_time = time.time() 18c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn with chrome.Chrome() as cr: 19c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn if not pkcs11.wait_for_pkcs11_token(): 20c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn raise error.TestFail('The PKCS #11 token is not available.') 2101dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah end_time = time.time() 2201dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah self.write_perf_keyval( 2301dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah { 'seconds_pkcs11_onlogin_init': end_time - start_time } ) 2401dd4fbb0fa91b41a2fd7e670fd1ade9731cb060Gaurav Shah if not pkcs11.verify_pkcs11_initialized(): 25aa4ec73ebec3656f0992c95797ac6de514e1cb1eDarren Krahn raise error.TestFail('Initialized token failed checks!') 26c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn if not pkcs11.inject_and_test_key(): 27c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn raise error.TestFail('Failed to inject a key.') 28c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn # Login again with the same account. 29c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn with chrome.Chrome(dont_override_profile=True) as cr: 30c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn if not pkcs11.wait_for_pkcs11_token(): 31c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn raise error.TestFail( 32c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn 'The PKCS #11 token is no longer available.') 33c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn if not pkcs11.test_and_cleanup_key(): 34c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn raise error.TestFail('The PKCS #11 key is no longer valid.') 35c3ef0f30d1d92f9522a7c9084ed4c904cda7b643Darren Krahn 36