blob: 45daa54c6a6da5bc11685c1566b76860f3a03258 [file] [log] [blame]
# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from dbus.mainloop.glib import DBusGMainLoop
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error
from autotest_lib.client.cros import cryptohome, pkcs11
class platform_CryptohomeMigrateChapsTokenClient(test.test):
""" This is a helper to platform_CryptohomeMigrateChapsToken
It logs a test user in and either generates a chaps signing
key or checks if a signing key was generated
"""
version = 1
def initialize(self):
super(platform_CryptohomeMigrateChapsTokenClient, self).initialize()
bus_loop = DBusGMainLoop(set_as_default=True)
self._cryptohome_proxy = cryptohome.CryptohomeProxy(
bus_loop, self.autodir, self.job)
def run_once(self, generate_key=False):
user = "user@test.com"
password = "test_password"
if generate_key:
# Make sure that the tpm is owned.
status = cryptohome.get_tpm_status()
if not status['Owned']:
cryptohome.take_tpm_ownership()
# We generate a chaps key tied to |user|.
self._cryptohome_proxy.ensure_clean_cryptohome_for(user, password)
result = pkcs11.generate_user_key()
if not result:
raise error.TestFail('Unable to generate key for ' + user)
else:
# Check if the chaps key previously generated is still present.
# If the key is present, migration was successful, and chaps keys
# weren't destroyed.
result = self._cryptohome_proxy.mount(user, password)
if not result:
raise error.TestFail('Unable to remount users cryptohome')
result = pkcs11.test_and_cleanup_key()
if not result:
raise error.TestFail('No Generated keys present for ' + user)
self._cryptohome_proxy.remove(user)