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

Side by Side Diff: src/platform/vboot_reference/vkernel/kernel_image.c

Issue 2372001: Add --subkey_in option 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 unified diff | Download patch
« no previous file with comments | « src/platform/vboot_reference/utility/kernel_utility.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. 3 * found in the LICENSE file.
4 * 4 *
5 * Functions for generating and manipulating a verified boot kernel image. 5 * Functions for generating and manipulating a verified boot kernel image.
6 * (Userland portion) 6 * (Userland portion)
7 */ 7 */
8 #include "kernel_image.h" 8 #include "kernel_image.h"
9 9
10 #include <fcntl.h> 10 #include <fcntl.h>
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 GetKernelPreambleLen(image->kernel_sign_algorithm) + 60 GetKernelPreambleLen(image->kernel_sign_algorithm) +
61 kernel_signature_len; 61 kernel_signature_len;
62 } 62 }
63 63
64 64
65 KernelImage* ReadKernelImage(const char* input_file) { 65 KernelImage* ReadKernelImage(const char* input_file) {
66 uint64_t file_size; 66 uint64_t file_size;
67 uint64_t on_disk_header_size; 67 uint64_t on_disk_header_size;
68 uint64_t on_disk_padding; 68 uint64_t on_disk_padding;
69 int header_len = 0; 69 int header_len = 0;
70 int firmware_sign_key_len;
71 int kernel_key_signature_len; 70 int kernel_key_signature_len;
72 int kernel_sign_key_len; 71 int kernel_sign_key_len;
73 int kernel_signature_len; 72 int kernel_signature_len;
74 uint8_t* kernel_buf; 73 uint8_t* kernel_buf;
75 uint8_t header_checksum[FIELD_LEN(header_checksum)]; 74 uint8_t header_checksum[FIELD_LEN(header_checksum)];
76 MemcpyState st; 75 MemcpyState st;
77 KernelImage* image = KernelImageNew(); 76 KernelImage* image = KernelImageNew();
78 77
79 if (!image) 78 if (!image)
80 return NULL; 79 return NULL;
(...skipping 25 matching lines...) Expand all
106 return NULL; 105 return NULL;
107 } 106 }
108 107
109 /* Valid Kernel Signing Algorithm? */ 108 /* Valid Kernel Signing Algorithm? */
110 if (image->kernel_sign_algorithm >= kNumAlgorithms) { 109 if (image->kernel_sign_algorithm >= kNumAlgorithms) {
111 Free(kernel_buf); 110 Free(kernel_buf);
112 return NULL; 111 return NULL;
113 } 112 }
114 113
115 /* Compute size of pre-processed RSA public keys and signatures. */ 114 /* Compute size of pre-processed RSA public keys and signatures. */
116 firmware_sign_key_len = RSAProcessedKeySize(image->firmware_sign_algorithm);
117 kernel_key_signature_len = siglen_map[image->firmware_sign_algorithm]; 115 kernel_key_signature_len = siglen_map[image->firmware_sign_algorithm];
118 kernel_sign_key_len = RSAProcessedKeySize(image->kernel_sign_algorithm); 116 kernel_sign_key_len = RSAProcessedKeySize(image->kernel_sign_algorithm);
119 kernel_signature_len = siglen_map[image->kernel_sign_algorithm]; 117 kernel_signature_len = siglen_map[image->kernel_sign_algorithm];
120 118
121 /* Check whether key header length is correct. */ 119 /* Check whether key header length is correct. */
122 header_len = GetKernelHeaderLen(image); 120 header_len = GetKernelHeaderLen(image);
123 if (header_len != image->header_len) { 121 if (header_len != image->header_len) {
124 debug("Header length mismatch. Got: %d, Expected: %d\n", 122 debug("Header length mismatch. Got: %d, Expected: %d\n",
125 image->header_len, header_len); 123 image->header_len, header_len);
126 Free(kernel_buf); 124 Free(kernel_buf);
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 // Clean up and return the blob. 749 // Clean up and return the blob.
752 done3: 750 done3:
753 Free(bootloader_buf); 751 Free(bootloader_buf);
754 done2: 752 done2:
755 Free(config_buf); 753 Free(config_buf);
756 done1: 754 done1:
757 Free(kernel_buf); 755 Free(kernel_buf);
758 done0: 756 done0:
759 return blob; 757 return blob;
760 } 758 }
OLDNEW
« no previous file with comments | « src/platform/vboot_reference/utility/kernel_utility.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698