| Index: bin/au_test_harness/public_key_manager.py
|
| diff --git a/bin/au_test_harness/public_key_manager.py b/bin/au_test_harness/public_key_manager.py
|
| deleted file mode 100644
|
| index 355e7445fdb82664472f592656b00c04c4f0761e..0000000000000000000000000000000000000000
|
| --- a/bin/au_test_harness/public_key_manager.py
|
| +++ /dev/null
|
| @@ -1,91 +0,0 @@
|
| -# 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.
|
| -
|
| -"""This module manages interactions between an image and a public key."""
|
| -
|
| -import os
|
| -import tempfile
|
| -
|
| -import cros_build_lib as cros_lib
|
| -
|
| -class PublicKeyManager(object):
|
| - """Class wrapping interactions with a public key on an image."""
|
| - TARGET_KEY_PATH = 'usr/share/update_engine/update-payload-key.pub.pem'
|
| -
|
| - def __init__(self, image_path, key_path):
|
| - """Initializes a manager with image_path and key_path we plan to insert."""
|
| - self.image_path = image_path
|
| - self.key_path = key_path
|
| - self._rootfs_dir = tempfile.mkdtemp(suffix='rootfs', prefix='tmp')
|
| - self._stateful_dir = tempfile.mkdtemp(suffix='stateful', prefix='tmp')
|
| -
|
| - # Gather some extra information about the image.
|
| - try:
|
| - cros_lib.MountImage(image_path, self._rootfs_dir, self._stateful_dir,
|
| - read_only=True)
|
| - self._full_target_key_path = os.path.join(
|
| - self._rootfs_dir, PublicKeyManager.TARGET_KEY_PATH)
|
| - self._is_key_new = True
|
| - if os.path.exists(self._full_target_key_path):
|
| - diff_output = cros_lib.RunCommand(['diff',
|
| - self.key_path,
|
| - self._full_target_key_path],
|
| - print_cmd=False, redirect_stdout=True,
|
| - redirect_stderr=True, error_ok=True)
|
| -
|
| - if not diff_output: self._is_key_new = False
|
| -
|
| - finally:
|
| - cros_lib.UnmountImage(self._rootfs_dir, self._stateful_dir)
|
| -
|
| - def __del__(self):
|
| - """Remove our temporary directories we created in init."""
|
| - os.rmdir(self._rootfs_dir)
|
| - os.rmdir(self._stateful_dir)
|
| -
|
| - def AddKeyToImage(self):
|
| - """Adds the key specified in init to the image."""
|
| - if not self._is_key_new:
|
| - cros_lib.Info('Public key already on image %s. No work to do.' %
|
| - self.image_path)
|
| - return
|
| -
|
| - cros_lib.Info('Copying %s into %s' % (self.key_path, self.image_path))
|
| - try:
|
| - cros_lib.MountImage(self.image_path, self._rootfs_dir, self._stateful_dir,
|
| - read_only=False)
|
| -
|
| - dir_path = os.path.dirname(self._full_target_key_path)
|
| - cros_lib.RunCommand(['sudo', 'mkdir', '--parents', dir_path],
|
| - print_cmd=False)
|
| - cros_lib.RunCommand(['sudo', 'cp', '--force', '-p', self.key_path,
|
| - self._full_target_key_path], print_cmd=False)
|
| - finally:
|
| - cros_lib.UnmountImage(self._rootfs_dir, self._stateful_dir)
|
| - self._MakeImageBootable()
|
| -
|
| - def RemoveKeyFromImage(self):
|
| - """Removes the key specified in init from the image."""
|
| - cros_lib.Info('Removing public key from image %s.' % self.image_path)
|
| - try:
|
| - cros_lib.MountImage(self.image_path, self._rootfs_dir, self._stateful_dir,
|
| - read_only=False)
|
| - cros_lib.RunCommand(['sudo', 'rm', '--force', self._full_target_key_path],
|
| - print_cmd=False)
|
| - finally:
|
| - cros_lib.UnmountImage(self._rootfs_dir, self._stateful_dir)
|
| - self._MakeImageBootable()
|
| -
|
| - def _MakeImageBootable(self):
|
| - """Makes the image bootable. Note, it is only useful for non-vm images."""
|
| - image = os.path.basename(self.image_path)
|
| - if 'qemu' in image:
|
| - return
|
| -
|
| - from_dir = os.path.dirname(self.image_path)
|
| - cros_lib.RunCommand(['bin/cros_make_image_bootable',
|
| - cros_lib.ReinterpretPathForChroot(from_dir),
|
| - image], print_cmd=False, redirect_stdout=True,
|
| - redirect_stderr=True, enter_chroot=True,
|
| - cwd=cros_lib.CROSUTILS_DIRECTORY)
|
|
|