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

Side by Side Diff: src/platform/vboot_reference/utility/kernel_utility.cc

Issue 2183001: Code cleanup. (Closed) Base URL: ssh://git@chromiumos-git/chromeos
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 | « no previous file | 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 // Utility for manipulating verified boot kernel images. 5 // Utility for manipulating verified boot kernel images.
6 // 6 //
7 7
8 #include "kernel_utility.h" 8 #include "kernel_utility.h"
9 9
10 #include <errno.h> 10 #include <errno.h>
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 "--config <file>\t\t\tPopulate contents of kernel config from a file\n" 73 "--config <file>\t\t\tPopulate contents of kernel config from a file\n"
74 "--vblock\t\t\tJust output the verification block\n\n" 74 "--vblock\t\t\tJust output the verification block\n\n"
75 "<algoid> (for --*_sign_algorithm) is one of the following:\n"; 75 "<algoid> (for --*_sign_algorithm) is one of the following:\n";
76 for (int i = 0; i < kNumAlgorithms; i++) { 76 for (int i = 0; i < kNumAlgorithms; i++) {
77 cerr << i << " for " << algo_strings[i] << "\n"; 77 cerr << i << " for " << algo_strings[i] << "\n";
78 } 78 }
79 cerr << "\n\n"; 79 cerr << "\n\n";
80 } 80 }
81 81
82 bool KernelUtility::ParseCmdLineOptions(int argc, char* argv[]) { 82 bool KernelUtility::ParseCmdLineOptions(int argc, char* argv[]) {
83 int option_index; 83 int option_index, i;
84 enum {
85 OPT_FIRMWARE_KEY = 1000,
86 OPT_FIRMWARE_KEY_PUB,
87 OPT_KERNEL_KEY,
88 OPT_KERNEL_KEY_PUB,
89 OPT_FIRMWARE_SIGN_ALGORITHM,
90 OPT_KERNEL_SIGN_ALGORITHM,
91 OPT_KERNEL_KEY_VERSION,
92 OPT_KERNEL_VERSION,
93 OPT_IN,
94 OPT_OUT,
95 OPT_GENERATE,
96 OPT_VERIFY,
97 OPT_DESCRIBE,
98 OPT_CONFIG,
99 OPT_VBLOCK,
100 };
84 static struct option long_options[] = { 101 static struct option long_options[] = {
85 {"firmware_key", 1, 0, 0}, 102 {"firmware_key", 1, 0, OPT_FIRMWARE_KEY },
86 {"firmware_key_pub", 1, 0, 0}, 103 {"firmware_key_pub", 1, 0, OPT_FIRMWARE_KEY_PUB },
87 {"kernel_key", 1, 0, 0}, 104 {"kernel_key", 1, 0, OPT_KERNEL_KEY },
88 {"kernel_key_pub", 1, 0, 0}, 105 {"kernel_key_pub", 1, 0, OPT_KERNEL_KEY_PUB },
89 {"firmware_sign_algorithm", 1, 0, 0}, 106 {"firmware_sign_algorithm", 1, 0, OPT_FIRMWARE_SIGN_ALGORITHM },
90 {"kernel_sign_algorithm", 1, 0, 0}, 107 {"kernel_sign_algorithm", 1, 0, OPT_KERNEL_SIGN_ALGORITHM },
91 {"kernel_key_version", 1, 0, 0}, 108 {"kernel_key_version", 1, 0, OPT_KERNEL_KEY_VERSION },
92 {"kernel_version", 1, 0, 0}, 109 {"kernel_version", 1, 0, OPT_KERNEL_VERSION },
93 {"in", 1, 0, 0}, 110 {"in", 1, 0, OPT_IN },
94 {"out", 1, 0, 0}, 111 {"out", 1, 0, OPT_OUT },
95 {"generate", 0, 0, 0}, 112 {"generate", 0, 0, OPT_GENERATE },
96 {"verify", 0, 0, 0}, 113 {"verify", 0, 0, OPT_VERIFY },
97 {"describe", 0, 0, 0}, 114 {"describe", 0, 0, OPT_DESCRIBE },
98 {"config", 1, 0, 0}, 115 {"config", 1, 0, OPT_CONFIG },
99 {"vblock", 0, 0, 0}, 116 {"vblock", 0, 0, OPT_VBLOCK },
100 {NULL, 0, 0, 0} 117 {NULL, 0, 0, 0}
101 }; 118 };
102 while (1) { 119 while ((i = getopt_long(argc, argv, "", long_options, &option_index)) != -1) {
103 int i = getopt_long(argc, argv, "", long_options, &option_index); 120 switch (i) {
104 if (-1 == i) // Done with option processing. 121 case '?':
122 return false;
105 break; 123 break;
106 if ('?' == i) // Invalid option found. 124 case OPT_FIRMWARE_KEY:
107 return false; 125 firmware_key_file_ = optarg;
108 126 break;
109 if (0 == i) { 127 case OPT_FIRMWARE_KEY_PUB:
110 switch (option_index) { 128 firmware_key_pub_file_ = optarg;
111 case 0: // firmware_key 129 break;
112 firmware_key_file_ = optarg; 130 case OPT_KERNEL_KEY:
113 break; 131 kernel_key_file_ = optarg;
114 case 1: // firmware_key_pub 132 break;
115 firmware_key_pub_file_ = optarg; 133 case OPT_KERNEL_KEY_PUB:
116 break; 134 kernel_key_pub_file_ = optarg;
117 case 2: // kernel_key 135 break;
118 kernel_key_file_ = optarg; 136 case OPT_FIRMWARE_SIGN_ALGORITHM:
119 break; 137 errno = 0; // strtol() returns an error via errno
120 case 3: // kernel_key_pub 138 firmware_sign_algorithm_ = strtol(optarg,
121 kernel_key_pub_file_ = optarg; 139 reinterpret_cast<char**>(NULL), 10);
122 break; 140 if (errno)
123 case 4: // firmware_sign_algorithm 141 return false;
124 errno = 0; // strtol() returns an error via errno 142 break;
125 firmware_sign_algorithm_ = strtol(optarg, 143 case OPT_KERNEL_SIGN_ALGORITHM:
126 reinterpret_cast<char**>(NULL), 10); 144 errno = 0;
127 if (errno) 145 kernel_sign_algorithm_ = strtol(optarg,
128 return false; 146 reinterpret_cast<char**>(NULL), 10);
129 break; 147 if (errno)
130 case 5: // kernel_sign_algorithm 148 return false;
131 errno = 0; 149 break;
132 kernel_sign_algorithm_ = strtol(optarg, 150 case OPT_KERNEL_KEY_VERSION:
133 reinterpret_cast<char**>(NULL), 10); 151 errno = 0;
134 if (errno) 152 kernel_key_version_ = strtol(optarg,
135 return false;
136 break;
137 case 6: // kernel_key_version
138 errno = 0;
139 kernel_key_version_ = strtol(optarg,
140 reinterpret_cast<char**>(NULL), 10);
141 if (errno)
142 return false;
143 break;
144 case 7: // kernel_version
145 errno = 0;
146 kernel_version_ = strtol(optarg,
147 reinterpret_cast<char**>(NULL), 10); 153 reinterpret_cast<char**>(NULL), 10);
148 if (errno) 154 if (errno)
149 return false; 155 return false;
150 break; 156 break;
151 case 8: // in 157 case OPT_KERNEL_VERSION:
152 in_file_ = optarg; 158 errno = 0;
153 break; 159 kernel_version_ = strtol(optarg,
154 case 9: // out 160 reinterpret_cast<char**>(NULL), 10);
155 out_file_ = optarg; 161 if (errno)
156 break; 162 return false;
157 case 10: // generate 163 break;
158 is_generate_ = true; 164 case OPT_IN:
159 break; 165 in_file_ = optarg;
160 case 11: // verify 166 break;
161 is_verify_ = true; 167 case OPT_OUT:
162 break; 168 out_file_ = optarg;
163 case 12: // describe 169 break;
164 is_describe_ = true; 170 case OPT_GENERATE:
165 break; 171 is_generate_ = true;
166 case 13: // config 172 break;
167 config_file_ = optarg; 173 case OPT_VERIFY:
168 break; 174 is_verify_ = true;
169 case 14: // vblock 175 break;
170 is_only_vblock_ = true; 176 case OPT_DESCRIBE:
171 break; 177 is_describe_ = true;
172 } 178 break;
179 case OPT_CONFIG:
180 config_file_ = optarg;
181 break;
182 case OPT_VBLOCK:
183 is_only_vblock_ = true;
184 break;
173 } 185 }
174 } 186 }
175 return CheckOptions(); 187 return CheckOptions();
176 } 188 }
177 189
178 void KernelUtility::OutputSignedImage(void) { 190 void KernelUtility::OutputSignedImage(void) {
179 if (image_) { 191 if (image_) {
180 if (!WriteKernelImage(out_file_.c_str(), image_, is_only_vblock_)) { 192 if (!WriteKernelImage(out_file_.c_str(), image_, is_only_vblock_)) {
181 cerr << "Couldn't write verified boot kernel image to file " 193 cerr << "Couldn't write verified boot kernel image to file "
182 << out_file_ <<".\n"; 194 << out_file_ <<".\n";
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 return false; 237 return false;
226 } 238 }
227 Memcpy(image_->kernel_config, 239 Memcpy(image_->kernel_config,
228 kernel_config_, len); 240 kernel_config_, len);
229 } else { 241 } else {
230 Memset(image_->kernel_config, 0, 242 Memset(image_->kernel_config, 0,
231 sizeof(image_->kernel_config)); 243 sizeof(image_->kernel_config));
232 } 244 }
233 image_->kernel_data = BufferFromFile(in_file_.c_str(), 245 image_->kernel_data = BufferFromFile(in_file_.c_str(),
234 &image_->kernel_len); 246 &image_->kernel_len);
235 if (!image_) 247 if (!image_->kernel_data)
236 return false; 248 return false;
237 // Generate and add the signatures. 249 // Generate and add the signatures.
238 if (!AddKernelKeySignature(image_, firmware_key_file_.c_str())) { 250 if (!AddKernelKeySignature(image_, firmware_key_file_.c_str())) {
239 cerr << "Couldn't write key signature to verified boot kernel image.\n"; 251 cerr << "Couldn't write key signature to verified boot kernel image.\n";
240 return false; 252 return false;
241 } 253 }
242 254
243 if (!AddKernelSignature(image_, kernel_key_file_.c_str())) { 255 if (!AddKernelSignature(image_, kernel_key_file_.c_str())) {
244 cerr << "Couldn't write firmware signature to verified boot kernel image.\n" ; 256 cerr << "Couldn't write firmware signature to verified boot kernel image.\n" ;
245 return false; 257 return false;
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 } 356 }
345 else if (ku.is_verify()) { 357 else if (ku.is_verify()) {
346 cerr << "Verification "; 358 cerr << "Verification ";
347 if (ku.VerifySignedImage()) 359 if (ku.VerifySignedImage())
348 cerr << "SUCCESS.\n"; 360 cerr << "SUCCESS.\n";
349 else 361 else
350 cerr << "FAILURE.\n"; 362 cerr << "FAILURE.\n";
351 } 363 }
352 return 0; 364 return 0;
353 } 365 }
OLDNEW
« 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