Index: utility/vbutil_keyblock.c |
diff --git a/utility/vbutil_keyblock.c b/utility/vbutil_keyblock.c |
index dbdcbd3fb6bb56b382c47cdb25b181c074aedd70..7c3f027957ec984f7826e4afb9785c99097b4692 100644 |
--- a/utility/vbutil_keyblock.c |
+++ b/utility/vbutil_keyblock.c |
@@ -9,6 +9,7 @@ |
#include <inttypes.h> /* For PRIu64 */ |
#include <stdio.h> |
#include <stdlib.h> |
+#include <string.h> |
#include "cryptolib.h" |
#include "host_common.h" |
@@ -22,7 +23,6 @@ enum { |
OPT_DATAPUBKEY, |
OPT_SIGNPUBKEY, |
OPT_SIGNPRIVATE, |
- OPT_ALGORITHM, |
OPT_FLAGS, |
}; |
@@ -32,45 +32,38 @@ static struct option long_opts[] = { |
{"datapubkey", 1, 0, OPT_DATAPUBKEY }, |
{"signpubkey", 1, 0, OPT_SIGNPUBKEY }, |
{"signprivate", 1, 0, OPT_SIGNPRIVATE }, |
- {"algorithm", 1, 0, OPT_ALGORITHM }, |
{"flags", 1, 0, OPT_FLAGS }, |
{NULL, 0, 0, 0} |
}; |
/* Print help and return error */ |
-static int PrintHelp(void) { |
- int i; |
- |
- puts("vbutil_keyblock - Verified boot key block utility\n" |
- "\n" |
- "Usage: vbutil_keyblock <--pack|--unpack> <file> [OPTIONS]\n" |
- "\n" |
- "For '--pack <file>', required OPTIONS are:\n" |
- " --datapubkey <file> Data public key in .vbpubk format\n" |
- " --signprivate <file> Signing private key in .pem format\n" |
- " --algorithm <algoid> Signing algorithm for key, one of:"); |
- |
- for (i = 0; i < kNumAlgorithms; i++) |
- printf(" %d (%s)\n", i, algo_strings[i]); |
- |
- puts("\n" |
- "Optional OPTIONS are:\n" |
- " --flags <number> Flags\n" |
- "\n" |
- "For '--unpack <file>', required OPTIONS are:\n" |
- " --signpubkey <file> Signing public key in .vbpubk format\n" |
- "Optional OPTIONS are:\n" |
- " --datapubkey <file> Data public key output file\n" |
- ""); |
+static int PrintHelp(char *progname) { |
+ fprintf(stderr, |
+ "Verified boot key block utility\n" |
+ "\n" |
+ "Usage: %s <--pack|--unpack> <file> [OPTIONS]\n" |
+ "\n" |
+ "For '--pack <file>', required OPTIONS are:\n" |
+ " --datapubkey <file> Data public key in .vbpubk format\n" |
+ " --signprivate <file>" |
+ " Signing private key in .vbprivk format\n" |
+ "\n" |
+ "Optional OPTIONS are:\n" |
+ " --flags <number> Flags\n" |
+ "\n" |
+ "For '--unpack <file>', required OPTIONS are:\n" |
+ " --signpubkey <file> Signing public key in .vbpubk format\n" |
+ "Optional OPTIONS are:\n" |
+ " --datapubkey <file> Data public key output file\n", |
+ progname); |
return 1; |
} |
/* Pack a .keyblock */ |
static int Pack(const char* outfile, const char* datapubkey, |
- const char* signprivate, uint64_t algorithm, |
- uint64_t flags) { |
+ const char* signprivate, uint64_t flags) { |
VbPublicKey* data_key; |
VbPrivateKey* signing_key; |
VbKeyBlockHeader* block; |
@@ -83,17 +76,13 @@ static int Pack(const char* outfile, const char* datapubkey, |
fprintf(stderr, "vbutil_keyblock: Must specify all keys\n"); |
return 1; |
} |
- if (algorithm >= kNumAlgorithms) { |
- fprintf(stderr, "Invalid algorithm\n"); |
- return 1; |
- } |
data_key = PublicKeyRead(datapubkey); |
if (!data_key) { |
fprintf(stderr, "vbutil_keyblock: Error reading data key.\n"); |
return 1; |
} |
- signing_key = PrivateKeyReadPem(signprivate, algorithm); |
+ signing_key = PrivateKeyRead(signprivate); |
if (!signing_key) { |
fprintf(stderr, "vbutil_keyblock: Error reading signing key.\n"); |
return 1; |
@@ -168,12 +157,17 @@ int main(int argc, char* argv[]) { |
char* signpubkey = NULL; |
char* signprivate = NULL; |
uint64_t flags = 0; |
- uint64_t algorithm = kNumAlgorithms; |
int mode = 0; |
int parse_error = 0; |
char* e; |
int i; |
+ char *progname = strrchr(argv[0], '/'); |
+ if (progname) |
+ progname++; |
+ else |
+ progname = argv[0]; |
+ |
while ((i = getopt_long(argc, argv, "", long_opts, NULL)) != -1) { |
switch (i) { |
case '?': |
@@ -200,14 +194,6 @@ int main(int argc, char* argv[]) { |
signprivate = optarg; |
break; |
- case OPT_ALGORITHM: |
- algorithm = strtoul(optarg, &e, 0); |
- if (!*optarg || (e && *e)) { |
- printf("Invalid --algorithm\n"); |
- parse_error = 1; |
- } |
- break; |
- |
case OPT_FLAGS: |
flags = strtoul(optarg, &e, 0); |
if (!*optarg || (e && *e)) { |
@@ -219,15 +205,15 @@ int main(int argc, char* argv[]) { |
} |
if (parse_error) |
- return PrintHelp(); |
+ return PrintHelp(progname); |
switch(mode) { |
case OPT_MODE_PACK: |
- return Pack(filename, datapubkey, signprivate, algorithm, flags); |
+ return Pack(filename, datapubkey, signprivate, flags); |
case OPT_MODE_UNPACK: |
return Unpack(filename, datapubkey, signpubkey); |
default: |
printf("Must specify a mode.\n"); |
- return PrintHelp(); |
+ return PrintHelp(progname); |
} |
} |