From 5afec9c781406a0aa3080c9aacb17c3f75abc0aa Mon Sep 17 00:00:00 2001 From: Jean-Christophe PLAGNIOL-VILLARD Date: Wed, 25 Mar 2015 12:56:12 +0100 Subject: command: digest/hashsum: set key at command level and only set the key when specified Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Sascha Hauer --- commands/hashsum.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'commands/hashsum.c') diff --git a/commands/hashsum.c b/commands/hashsum.c index dc48af53d8..e2dc70e68d 100644 --- a/commands/hashsum.c +++ b/commands/hashsum.c @@ -34,7 +34,7 @@ static int do_hash(char *algo, int argc, char *argv[]) struct digest *d; unsigned char *key = NULL; size_t keylen = 0; - int opt; + int opt, ret; while((opt = getopt(argc, argv, "h:")) > 0) { switch(opt) { @@ -49,15 +49,22 @@ static int do_hash(char *algo, int argc, char *argv[]) char *tmp = asprintf("hmac(%s)", algo); d = digest_alloc(tmp); free(tmp); + BUG_ON(!d); + + ret = digest_set_key(d, key, keylen); + if (ret) { + perror("set_key"); + return ret; + } } else { d = digest_alloc(algo); + BUG_ON(!d); } - BUG_ON(!d); argc -= optind; argv += optind; - return __do_digest(d, key, keylen, NULL, argc, argv); + return __do_digest(d, NULL, argc, argv); } #ifdef CONFIG_CMD_MD5SUM -- cgit v1.2.3