Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Unified Diff: vboot_firmware/include/load_firmware_fw.h

Issue 2691006: Added LoadFirmware() API (Closed) Base URL: ssh://gitrw.chromium.org/vboot_reference.git
Patch Set: Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vboot_firmware/include/load_firmware_fw.h
diff --git a/vboot_firmware/include/load_firmware_fw.h b/vboot_firmware/include/load_firmware_fw.h
new file mode 100644
index 0000000000000000000000000000000000000000..d9288953515dbc7c51fd6ba37a114df88f7df5ea
--- /dev/null
+++ b/vboot_firmware/include/load_firmware_fw.h
@@ -0,0 +1,67 @@
+/* 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.
+ *
+ * High-level firmware API for loading and verifying rewritable firmware.
+ * (Firmware Portion)
+ */
+
+#ifndef VBOOT_REFERENCE_LOAD_FIRMWARE_FW_H_
+#define VBOOT_REFERENCE_LOAD_FIRMWARE_FW_H_
+
+#include <stdint.h>
+
+/* Functions provided by PEI to LoadFirmware() */
+
+/* Get the firmware data for [firmware_index], which is either
+ * 0 (the first firmware image) or 1 (the second firmware image).
+ *
+ * This function must call LoadFirmwareUpdateDataHash() before
+ * returning, to update the secure hash for the firmware image. For
+ * best performance, the reader should call this function periodically
+ * during the read, so that updating the hash can be pipelined with
+ * the read. If the reader cannot update the hash during the read
+ * process, it should call LoadFirmwareUpdateDataHash() on the entire
+ * firmeware data after the read, before returning.
+ *
+ * On success, returns a pointer to the data and stores the data size
+ * in [*size]. On error, returns NULL. */
+void *FirmwareImageGetData(uint64_t firmware_index, uint64_t* size);
+
+
+/* Interface provided by verified boot library to PEI */
+
+/* Return codes for LoadFirmware() */
+#define LOAD_FIRMWARE_SUCCESS 0
+#define LOAD_FIRMWARE_RECOVERY 1
+
+/* Update the data hash for the current firmware image, extending it
+ * by [size] bytes stored in [*data]. This function must only be
+ * called inside FirmwareImageGetData(). */
+void LoadFirmwareUpdateDataHash(uint8_t* data, uint64_t size);
+
+
+typedef struct LoadFirmwareParams {
+ /* Inputs to LoadFirmware() */
+ void *header_sign_key_blob; /* Key used to sign firmware header */
+ void *vblock0; /* Key block + preamble for firmware 0 */
+ void *vblock1; /* Key block + preamble for firmware 1 */
+
+ /* Outputs from LoadFirmware(); valid only if LoadFirmware() returns
+ * LOAD_FIRMWARE_SUCCESS. */
+ uint64_t fitmware_index; /* Firmware index to run. */
+ void *kernel_sign_key_blob; /* Key to use when loading kernel.
+ * Pass this data to LoadKernel() in
+ * LoadKernelParams.header_sign_key_blob. */
+ uint64_t kernel_sign_key_size; /* Size of kernel signing key blob,
+ * in bytes. */
+} LoadFirmwareParams;
+
+
+/* Attempts to load the rewritable firmware.
+ *
+ * Returns LOAD_FIRMWARE_SUCCESS if successful, error code on failure. */
+int LoadFirmware(LoadFirmwareParams* params);
+
+
+#endif /* VBOOT_REFERENCE_LOAD_FIRMWARE_FW_H_ */
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698