Home | History | Annotate | Download | only in login_CryptohomeDataLeak
      1 # Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import logging
      6 import os
      7 
      8 from autotest_lib.client.bin import test
      9 from autotest_lib.client.common_lib import error
     10 from autotest_lib.client.common_lib.cros import chrome
     11 from autotest_lib.client.cros import cryptohome
     12 
     13 
     14 class login_CryptohomeDataLeak(test.test):
     15     """Verify decrypted user data is cleared after end of session.
     16     """
     17     version = 1
     18 
     19 
     20     def run_once(self):
     21         """Entry point of test"""
     22         username = ''
     23         test_file = ''
     24 
     25         with chrome.Chrome() as cr:
     26             username = cr.username
     27             if not cryptohome.is_permanent_vault_mounted(username):
     28                 raise error.TestError('Expected to find a mounted vault.')
     29 
     30             test_file =  '/home/.shadow/%s/mount/hello' \
     31                          % cryptohome.get_user_hash(username)
     32 
     33             logging.info("Test file: %s", test_file)
     34             open(test_file, 'w').close()
     35 
     36         if cryptohome.is_vault_mounted(user=username, allow_fail=True):
     37             raise error.TestError('Expected to not find a mounted vault.')
     38 
     39         # At this point, the session is not active and the file name is expected
     40         # to be encrypted again.
     41 
     42         if os.path.isfile(test_file):
     43             raise error.TestFail('File still visible after end of session.')
     44 
     45         cryptohome.remove_vault(username)
     46