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

Unified Diff: src/platform/vboot_reference/vkernel/kernel_image.c

Issue 2310002: Add a --subkey switch to kernel signing utility. (Closed) Base URL: ssh://git@gitrw.chromium.org/chromiumos
Patch Set: Created 10 years, 7 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 | « src/platform/vboot_reference/vkernel/include/kernel_image.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/platform/vboot_reference/vkernel/kernel_image.c
diff --git a/src/platform/vboot_reference/vkernel/kernel_image.c b/src/platform/vboot_reference/vkernel/kernel_image.c
index 0c323f7299c9622c947ed0831b880b2444b1e7aa..e0b7a55d79c6bba2778e48bf228773aa0077e1e6 100644
--- a/src/platform/vboot_reference/vkernel/kernel_image.c
+++ b/src/platform/vboot_reference/vkernel/kernel_image.c
@@ -322,10 +322,13 @@ uint8_t* GetKernelBlob(const KernelImage* image, uint64_t* blob_len) {
int WriteKernelImage(const char* output_file,
const KernelImage* image,
- int is_only_vblock) {
+ int is_only_vblock,
+ int is_subkey_out) {
int fd;
int success = 1;
- uint8_t* kernel_blob;
+ uint8_t* kernel_blob = NULL;
+ uint8_t* subkey_out_buf = NULL;
+ uint8_t* subkey_header = NULL;
uint64_t blob_len;
if (!image)
@@ -335,6 +338,26 @@ int WriteKernelImage(const char* output_file,
output_file);
return 0;
}
+ if (is_subkey_out) {
+ blob_len = GetKernelHeaderLen(image) +
+ siglen_map[image->firmware_sign_algorithm];
+ subkey_out_buf = (uint8_t*) Malloc(blob_len);
+ subkey_header = GetKernelHeaderBlob(image);
+ Memcpy(subkey_out_buf, subkey_header, GetKernelHeaderLen(image));
+ Memcpy(subkey_out_buf + GetKernelHeaderLen(image),
+ image->kernel_key_signature,
+ siglen_map[image->firmware_sign_algorithm]);
+ if (blob_len != write(fd, subkey_out_buf, blob_len)) {
+ debug("Couldn't write Kernel Subkey header to file: %s\n",
+ output_file);
+ success = 0;
+ }
+ Free(subkey_header);
+ Free(subkey_out_buf);
+ close(fd);
+ return success;
+ }
+
kernel_blob = GetKernelBlob(image, &blob_len);
if (!kernel_blob) {
debug("Couldn't create kernel blob from KernelImage.\n");
« no previous file with comments | « src/platform/vboot_reference/vkernel/include/kernel_image.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698