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

Side by Side Diff: utility/vbutil_key.c

Issue 3303018: New tools to help debug vboot failures. (Closed) Base URL: http://git.chromium.org/git/vboot_reference.git
Patch Set: Respond to comments. Created 10 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « utility/vbutil_kernel.c ('k') | utility/vbutil_keyblock.c » ('j') | 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 * Verified boot key utility 5 * Verified boot key utility
6 */ 6 */
7 7
8 #include <getopt.h> 8 #include <getopt.h>
9 #include <inttypes.h> /* For PRIu64 */ 9 #include <inttypes.h> /* For PRIu64 */
10 #include <stdarg.h> 10 #include <stdarg.h>
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 } 101 }
102 Free(privkey); 102 Free(privkey);
103 return 0; 103 return 0;
104 } 104 }
105 105
106 error("Unable to parse either .keyb or .pem from %s\n", infile); 106 error("Unable to parse either .keyb or .pem from %s\n", infile);
107 return 1; 107 return 1;
108 } 108 }
109 109
110 110
111 static void PrintDigest(const uint8_t* buf, uint64_t buflen) {
112 uint8_t *digest = DigestBuf(buf, buflen, SHA1_DIGEST_ALGORITHM);
113 int i;
114 for (i=0; i<SHA1_DIGEST_SIZE; i++)
115 printf("%02x", digest[i]);
116 printf("\n");
117 Free(digest);
118 }
119
120 /* Unpack a .vbpubk or .vbprivk */ 111 /* Unpack a .vbpubk or .vbprivk */
121 static int Unpack(const char *infile, const char *outfile) { 112 static int Unpack(const char *infile, const char *outfile) {
122 VbPublicKey* pubkey; 113 VbPublicKey* pubkey;
123 VbPrivateKey* privkey; 114 VbPrivateKey* privkey;
124 115
125 if (!infile) { 116 if (!infile) {
126 fprintf(stderr, "Need file to unpack\n"); 117 fprintf(stderr, "Need file to unpack\n");
127 return 1; 118 return 1;
128 } 119 }
129 120
130 if ((pubkey = PublicKeyRead(infile))) { 121 if ((pubkey = PublicKeyRead(infile))) {
131 printf("Public Key file: %s\n", infile); 122 printf("Public Key file: %s\n", infile);
132 printf("Algorithm: %" PRIu64 " %s\n", pubkey->algorithm, 123 printf("Algorithm: %" PRIu64 " %s\n", pubkey->algorithm,
133 (pubkey->algorithm < kNumAlgorithms ? 124 (pubkey->algorithm < kNumAlgorithms ?
134 algo_strings[pubkey->algorithm] : "(invalid)")); 125 algo_strings[pubkey->algorithm] : "(invalid)"));
135 printf("Key Version: %" PRIu64 "\n", pubkey->key_version); 126 printf("Key Version: %" PRIu64 "\n", pubkey->key_version);
136 printf("Key sha1sum: "); 127 printf("Key sha1sum: ");
137 PrintDigest(((uint8_t *)pubkey) + pubkey->key_offset, pubkey->key_size); 128 PrintPubKeySha1Sum(pubkey);
129 printf("\n");
138 if (outfile) { 130 if (outfile) {
139 if (0 != PublicKeyWrite(outfile, pubkey)) { 131 if (0 != PublicKeyWrite(outfile, pubkey)) {
140 fprintf(stderr, "vbutil_key: Error writing key copy.\n"); 132 fprintf(stderr, "vbutil_key: Error writing key copy.\n");
141 Free(pubkey); 133 Free(pubkey);
142 return 1; 134 return 1;
143 } 135 }
144 } 136 }
145 Free(pubkey); 137 Free(pubkey);
146 return 0; 138 return 0;
147 } 139 }
148 140
149
150 if ((privkey = PrivateKeyRead(infile))) { 141 if ((privkey = PrivateKeyRead(infile))) {
151 printf("Private Key file: %s\n", infile); 142 printf("Private Key file: %s\n", infile);
152 printf("Algorithm: %" PRIu64 " %s\n", privkey->algorithm, 143 printf("Algorithm: %" PRIu64 " %s\n", privkey->algorithm,
153 (privkey->algorithm < kNumAlgorithms ? 144 (privkey->algorithm < kNumAlgorithms ?
154 algo_strings[privkey->algorithm] : "(invalid)")); 145 algo_strings[privkey->algorithm] : "(invalid)"));
155 if (outfile) { 146 if (outfile) {
156 if (0 != PrivateKeyWrite(outfile, privkey)) { 147 if (0 != PrivateKeyWrite(outfile, privkey)) {
157 fprintf(stderr, "vbutil_key: Error writing key copy.\n"); 148 fprintf(stderr, "vbutil_key: Error writing key copy.\n");
158 Free(privkey); 149 Free(privkey);
159 return 1; 150 return 1;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 switch(mode) { 226 switch(mode) {
236 case OPT_MODE_PACK: 227 case OPT_MODE_PACK:
237 return Pack(infile, outfile, algorithm, version); 228 return Pack(infile, outfile, algorithm, version);
238 case OPT_MODE_UNPACK: 229 case OPT_MODE_UNPACK:
239 return Unpack(infile, outfile); 230 return Unpack(infile, outfile);
240 default: 231 default:
241 printf("Must specify a mode.\n"); 232 printf("Must specify a mode.\n");
242 return PrintHelp(progname); 233 return PrintHelp(progname);
243 } 234 }
244 } 235 }
OLDNEW
« no previous file with comments | « utility/vbutil_kernel.c ('k') | utility/vbutil_keyblock.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698