diff options
Diffstat (limited to 'futility/misc.c')
-rw-r--r-- | futility/misc.c | 52 |
1 files changed, 9 insertions, 43 deletions
diff --git a/futility/misc.c b/futility/misc.c index 8366bc92..85358b29 100644 --- a/futility/misc.c +++ b/futility/misc.c @@ -27,6 +27,7 @@ #include "cgptlib_internal.h" #include "file_type.h" #include "futility.h" +#include "host_misc.h" /* Default is to support everything we can */ enum vboot_version vboot_version = VBOOT_VERSION_ALL; @@ -420,53 +421,18 @@ enum futil_file_type ft_recognize_gpt(uint8_t *buf, uint32_t len) return FILE_TYPE_CHROMIUMOS_DISK; } -static int parse_hex(uint8_t *val, const char *str) +void parse_digest_or_die(uint8_t *buf, int len, const char *str) { - uint8_t v = 0; - char c; - int digit; - - for (digit = 0; digit < 2; digit++) { - c = *str; - if (!c) - return 0; - if (!isxdigit(c)) - return 0; - c = tolower(c); - if (c >= '0' && c <= '9') - v += c - '0'; - else - v += 10 + c - 'a'; - if (!digit) - v <<= 4; - str++; + if (!parse_hash(buf, len, str)) { + fprintf(stderr, "Invalid DIGEST \"%s\"\n", str); + exit(1); } - - *val = v; - return 1; } -void parse_digest_or_die(uint8_t *buf, int len, const char *str) +void print_bytes(const void *ptr, size_t len) { - const char *s = str; - int i; - - for (i = 0; i < len; i++) { - /* skip whitespace */ - while (*s && isspace(*s)) - s++; - if (!*s) - break; - if (!parse_hex(buf, s)) - break; - - /* on to the next byte */ - s += 2; - buf++; - } + const uint8_t *buf = (const uint8_t *)ptr; - if ((i != len) || *s) { - fprintf(stderr, "Invalid DIGEST \"%s\"\n", str); - exit(1); - } + for (size_t i = 0; i < len; i++) + printf("%02x", *buf++); } |