Index: client/site_tests/login_RemoteOwnership/login_RemoteOwnership.py |
diff --git a/client/site_tests/login_RemoteOwnership/login_RemoteOwnership.py b/client/site_tests/login_RemoteOwnership/login_RemoteOwnership.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ee0bfe8784b6aff76f04da4a9a1d86f747228e07 |
--- /dev/null |
+++ b/client/site_tests/login_RemoteOwnership/login_RemoteOwnership.py |
@@ -0,0 +1,62 @@ |
+# Copyright (c) 2011 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. |
+ |
+import dbus |
+import dbus.glib |
+import gobject |
+import logging |
+import random |
+import string |
+import os |
+ |
+from autotest_lib.client.bin import test, utils |
+from autotest_lib.client.common_lib import error |
+from autotest_lib.client.cros import cryptohome, cros_ownership_test, ownership |
+ |
+ |
+class login_RemoteOwnership(cros_ownership_test.OwnershipTest): |
+ version = 1 |
+ |
+ _poldata = 'hooberbloob' |
+ |
+ def setup(self): |
+ os.chdir(self.srcdir) |
+ utils.make('OUT_DIR=.') |
+ |
+ |
+ def run_once(self): |
+ sm = self.connect_to_session_manager() |
+ |
+ # Initial policy setup. |
+ (priv, pub) = ownership.pairgen_as_data() |
+ self.push_policy(self.generate_policy(priv, pub, self._poldata), sm) |
+ |
+ # Force re-key the device |
+ (priv, pub) = ownership.pairgen_as_data() |
+ self.push_policy(self.generate_policy(priv, pub, self._poldata), sm) |
+ |
+ # Rotate key gracefully. |
+ username = ''.join(random.sample(string.ascii_uppercase,6)) + "@foo.com" |
+ password = ''.join(random.sample(string.ascii_uppercase,6)) |
+ cryptohome.remove_vault(username) |
+ cryptohome.mount_vault(username, password, create=True) |
+ |
+ (new_priv, new_pub) = ownership.pairgen_as_data() |
+ |
+ if not sm.StartSession(username, ''): |
+ raise error.TestFail('Could not start session for random user') |
+ |
+ self.push_policy(self.generate_policy(key=new_priv, |
+ pubkey=new_pub, |
+ policy=self._poldata, |
+ old_key=priv), |
+ sm) |
+ |
+ if not sm.StopSession(''): |
+ raise error.TestFail('Could not stop session for random user') |
+ |
+ |
+ def cleanup(self): |
+ cryptohome.unmount_vault() |
+ super(login_RemoteOwnership, self).cleanup() |