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

Side by Side Diff: src/platform/vboot_reference/tests/kernel_image_tests.c

Issue 1088001: Add --describe flag to {firmware|kernel}_utility. (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
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 * Tests for kernel image library. 5 * Tests for kernel image library.
6 */ 6 */
7 7
8 #include <stdio.h> 8 #include <stdio.h>
9 #include <stdlib.h> 9 #include <stdlib.h>
10 10
11 #include "file_keys.h" 11 #include "file_keys.h"
12 #include "kernel_image.h" 12 #include "kernel_image.h"
13 #include "rsa_utility.h" 13 #include "rsa_utility.h"
14 #include "sha_utility.h"
15 #include "utility.h" 14 #include "utility.h"
16 15
17 /* ANSI Color coding sequences. */ 16 /* ANSI Color coding sequences. */
18 #define COL_GREEN "\e[1;32m" 17 #define COL_GREEN "\e[1;32m"
19 #define COL_RED "\e[0;31m" 18 #define COL_RED "\e[0;31m"
20 #define COL_STOP "\e[m" 19 #define COL_STOP "\e[m"
21 20
22 int TEST_EQ(int result, int expected_result, char* testname) { 21 int TEST_EQ(int result, int expected_result, char* testname) {
23 if (result == expected_result) { 22 if (result == expected_result) {
24 fprintf(stderr, "%s Test " COL_GREEN " PASSED\n" COL_STOP, testname); 23 fprintf(stderr, "%s Test " COL_GREEN " PASSED\n" COL_STOP, testname);
25 return 1; 24 return 1;
26 } 25 }
27 else { 26 else {
28 fprintf(stderr, "%s Test " COL_RED " FAILED\n" COL_STOP, testname); 27 fprintf(stderr, "%s Test " COL_RED " FAILED\n" COL_STOP, testname);
29 return 0; 28 return 0;
30 } 29 }
31 } 30 }
32 31
33 KernelImage* GenerateTestKernelImage(int firmware_sign_algorithm, 32 KernelImage* GenerateTestKernelImage(int firmware_sign_algorithm,
34 int kernel_sign_algorithm, 33 int kernel_sign_algorithm,
35 uint8_t* kernel_sign_key, 34 uint8_t* kernel_sign_key,
36 int kernel_key_version, 35 int kernel_key_version,
37 int kernel_version, 36 int kernel_version,
38 int kernel_len) { 37 int kernel_len) {
39 KernelImage* image = KernelImageNew(); 38 KernelImage* image = KernelImageNew();
40 uint8_t* header_checksum;
41 DigestContext ctx;
42 39
43 Memcpy(image->magic, KERNEL_MAGIC, KERNEL_MAGIC_SIZE); 40 Memcpy(image->magic, KERNEL_MAGIC, KERNEL_MAGIC_SIZE);
44 image->header_version = 1; 41 image->header_version = 1;
45 image->firmware_sign_algorithm = firmware_sign_algorithm; 42 image->firmware_sign_algorithm = firmware_sign_algorithm;
46 image->kernel_sign_algorithm = kernel_sign_algorithm; 43 image->kernel_sign_algorithm = kernel_sign_algorithm;
47 image->kernel_key_version = kernel_key_version; 44 image->kernel_key_version = kernel_key_version;
48 image->kernel_sign_key = (uint8_t*) Malloc( 45 image->kernel_sign_key = (uint8_t*) Malloc(
49 RSAProcessedKeySize(image->kernel_sign_algorithm)); 46 RSAProcessedKeySize(image->kernel_sign_algorithm));
50 Memcpy(image->kernel_sign_key, kernel_sign_key, 47 Memcpy(image->kernel_sign_key, kernel_sign_key,
51 RSAProcessedKeySize(image->kernel_sign_algorithm)); 48 RSAProcessedKeySize(image->kernel_sign_algorithm));
52 49
53 /* Update correct header length. */ 50 /* Update correct header length. */
54 image->header_len = GetKernelHeaderLen(image); 51 image->header_len = GetKernelHeaderLen(image);
55 52
56 /* Calculate SHA-512 digest on header and populate header_checksum. */ 53 /* Calculate SHA-512 digest on header and populate header_checksum. */
57 DigestInit(&ctx, SHA512_DIGEST_ALGORITHM); 54 CalculateKernelHeaderChecksum(image, image->header_checksum);
58 DigestUpdate(&ctx, (uint8_t*) &image->header_version,
59 sizeof(image->header_version));
60 DigestUpdate(&ctx, (uint8_t*) &image->header_len,
61 sizeof(image->header_len));
62 DigestUpdate(&ctx, (uint8_t*) &image->firmware_sign_algorithm,
63 sizeof(image->firmware_sign_algorithm));
64 DigestUpdate(&ctx, (uint8_t*) &image->kernel_sign_algorithm,
65 sizeof(image->kernel_sign_algorithm));
66 DigestUpdate(&ctx, (uint8_t*) &image->kernel_key_version,
67 sizeof(image->kernel_key_version));
68 DigestUpdate(&ctx, image->kernel_sign_key,
69 RSAProcessedKeySize(image->kernel_sign_algorithm));
70 header_checksum = DigestFinal(&ctx);
71 Memcpy(image->header_checksum, header_checksum, SHA512_DIGEST_SIZE);
72 Free(header_checksum);
73 55
74 /* Populate kernel options and data with dummy data. */ 56 /* Populate kernel options and data with dummy data. */
75 image->kernel_version = kernel_version; 57 image->kernel_version = kernel_version;
76 image->options.version[0] = 1; 58 image->options.version[0] = 1;
77 image->options.version[1] = 0; 59 image->options.version[1] = 0;
78 Memset(image->options.cmd_line, 0, sizeof(image->options.cmd_line)); 60 Memset(image->options.cmd_line, 0, sizeof(image->options.cmd_line));
79 image->options.kernel_len = kernel_len; 61 image->options.kernel_len = kernel_len;
80 image->options.kernel_load_addr = 0; 62 image->options.kernel_load_addr = 0;
81 image->options.kernel_entry_addr = 0; 63 image->options.kernel_entry_addr = 0;
82 image->kernel_key_signature = image->kernel_signature = NULL; 64 image->kernel_key_signature = image->kernel_signature = NULL;
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 214
233 failure: 215 failure:
234 Free(kernel_blob); 216 Free(kernel_blob);
235 KernelImageFree(image); 217 KernelImageFree(image);
236 Free(kernel_sign_key_buf); 218 Free(kernel_sign_key_buf);
237 Free(firmware_key_blob); 219 Free(firmware_key_blob);
238 RSAPublicKeyFree(firmware_key); 220 RSAPublicKeyFree(firmware_key);
239 221
240 return error_code; 222 return error_code;
241 } 223 }
OLDNEW
« no previous file with comments | « src/platform/vboot_reference/tests/firmware_image_tests.c ('k') | src/platform/vboot_reference/utils/firmware_image.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698