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

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

Issue 1079009: Vboot Reference: Add kernel image verification benchmark. (Closed)
Patch Set: Review fixes. Created 10 years, 9 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/tests/kernel_verify_benchmark.c ('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 */ 6 */
7 7
8 #include "kernel_image.h" 8 #include "kernel_image.h"
9 9
10 #include <fcntl.h> 10 #include <fcntl.h>
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 FIELD_LEN(options.kernel_load_addr)); 243 FIELD_LEN(options.kernel_load_addr));
244 StatefulMemcpy_r(&st, &image->options.kernel_entry_addr, 244 StatefulMemcpy_r(&st, &image->options.kernel_entry_addr,
245 FIELD_LEN(options.kernel_entry_addr)); 245 FIELD_LEN(options.kernel_entry_addr));
246 if (st.remaining_len != 0) { /* Overrun or Underrun. */ 246 if (st.remaining_len != 0) { /* Overrun or Underrun. */
247 Free(config_blob); 247 Free(config_blob);
248 return NULL; 248 return NULL;
249 } 249 }
250 return config_blob; 250 return config_blob;
251 } 251 }
252 252
253 uint8_t* GetKernelBlob(const KernelImage* image, int* blob_len) { 253 uint8_t* GetKernelBlob(const KernelImage* image, uint64_t* blob_len) {
254 int kernel_key_signature_len; 254 int kernel_key_signature_len;
255 int kernel_signature_len; 255 int kernel_signature_len;
256 uint8_t* kernel_blob = NULL; 256 uint8_t* kernel_blob = NULL;
257 uint8_t* header_blob = NULL; 257 uint8_t* header_blob = NULL;
258 uint8_t* config_blob = NULL; 258 uint8_t* config_blob = NULL;
259 MemcpyState st; 259 MemcpyState st;
260 260
261 if (!image) 261 if (!image)
262 return NULL; 262 return NULL;
263 kernel_key_signature_len = siglen_map[image->firmware_sign_algorithm]; 263 kernel_key_signature_len = siglen_map[image->firmware_sign_algorithm];
(...skipping 26 matching lines...) Expand all
290 Free(kernel_blob); 290 Free(kernel_blob);
291 return NULL; 291 return NULL;
292 } 292 }
293 return kernel_blob; 293 return kernel_blob;
294 } 294 }
295 295
296 int WriteKernelImage(const char* input_file, 296 int WriteKernelImage(const char* input_file,
297 const KernelImage* image) { 297 const KernelImage* image) {
298 int fd; 298 int fd;
299 uint8_t* kernel_blob; 299 uint8_t* kernel_blob;
300 int blob_len; 300 uint64_t blob_len;
301 301
302 if (!image) 302 if (!image)
303 return 0; 303 return 0;
304 if (-1 == (fd = creat(input_file, S_IRWXU))) { 304 if (-1 == (fd = creat(input_file, S_IRWXU))) {
305 fprintf(stderr, "Couldn't open file for writing kernel image: %s\n", 305 fprintf(stderr, "Couldn't open file for writing kernel image: %s\n",
306 input_file); 306 input_file);
307 return 0; 307 return 0;
308 } 308 }
309 kernel_blob = GetKernelBlob(image, &blob_len); 309 kernel_blob = GetKernelBlob(image, &blob_len);
310 if (!kernel_blob) { 310 if (!kernel_blob) {
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 kernel_signing_key_file, 703 kernel_signing_key_file,
704 image->kernel_sign_algorithm))) { 704 image->kernel_sign_algorithm))) {
705 fprintf(stderr, "Could not compute signature on the kernel.\n"); 705 fprintf(stderr, "Could not compute signature on the kernel.\n");
706 return 0; 706 return 0;
707 } 707 }
708 image->kernel_signature = (uint8_t*) Malloc(signature_len); 708 image->kernel_signature = (uint8_t*) Malloc(signature_len);
709 Memcpy(image->kernel_signature, kernel_signature, signature_len); 709 Memcpy(image->kernel_signature, kernel_signature, signature_len);
710 Free(kernel_signature); 710 Free(kernel_signature);
711 return 1; 711 return 1;
712 } 712 }
OLDNEW
« no previous file with comments | « src/platform/vboot_reference/tests/kernel_verify_benchmark.c ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698