| Index: src/platform/vboot_reference/include/kernel_utility.h
|
| diff --git a/src/platform/vboot_reference/include/kernel_utility.h b/src/platform/vboot_reference/include/kernel_utility.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1563278547be25bf55bc4f44224be33d1e3b4f7b
|
| --- /dev/null
|
| +++ b/src/platform/vboot_reference/include/kernel_utility.h
|
| @@ -0,0 +1,74 @@
|
| +// Copyright (c) 2010 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.
|
| +
|
| +#ifndef VBOOT_REFERENCE_KERNEL_UTILITY_H_
|
| +#define VBOOT_REFERENCE_KERNEL_UTILITY_H_
|
| +
|
| +#include <string>
|
| +
|
| +extern "C" {
|
| +#include "kernel_image.h"
|
| +}
|
| +
|
| +struct RSAPublicKey;
|
| +
|
| +namespace vboot_reference {
|
| +
|
| +// A class for handling verified boot kernel images.
|
| +class KernelUtility {
|
| + public:
|
| + KernelUtility();
|
| + ~KernelUtility();
|
| +
|
| + // Print usage to stderr.
|
| + void PrintUsage(void);
|
| +
|
| + // Parse command line options and populate data members.
|
| + // Return true on success, false on failure.
|
| + bool ParseCmdLineOptions(int argc, char* argv[]);
|
| +
|
| + // Generate a verified boot image by reading kernel data from in_file_.
|
| + // Return true on success, false on failure.
|
| + bool GenerateSignedImage();
|
| +
|
| + // Verify a previously generated signed firmware image using the key read
|
| + // from [firmware_key_pub_file_].
|
| + bool VerifySignedImage();
|
| +
|
| + // Output the verified boot kernel image to out_file_.
|
| + void OutputSignedImage();
|
| +
|
| + bool is_generate() { return is_generate_; }
|
| + bool is_verify() { return is_verify_; }
|
| +
|
| + private:
|
| +
|
| + // Check if all options were specified and sane.
|
| + // Return true on success, false on failure.
|
| + bool CheckOptions();
|
| +
|
| + KernelImage* image_;
|
| + RSAPublicKey* firmware_key_pub_; // Root key used for verification.
|
| + std::string firmware_key_file_; // Private key for signing the kernel key.
|
| + std::string firmware_key_pub_file_;
|
| + std::string kernel_key_file_; // Private key for signing the kernel.
|
| + std::string kernel_key_pub_file_;
|
| +
|
| + // Fields of a KernelImage. (read from the command line).
|
| + int header_version_;
|
| + int firmware_sign_algorithm_;
|
| + int kernel_sign_algorithm_;
|
| + int kernel_key_version_;
|
| + int kernel_version_;
|
| + kconfig_options options_;
|
| +
|
| + std::string in_file_;
|
| + std::string out_file_;
|
| + bool is_generate_; // Are we generating a new image?
|
| + bool is_verify_; // Are we just verifying an already signed image?
|
| +};
|
| +
|
| +} // namespace vboot_reference
|
| +
|
| +#endif // VBOOT_REFERENCE_FIRMWARE_UTILITY_H_
|
|
|