Re: [PATCH v1] cmd: md5sum: use hash_command
Hi Tom, On Sat, Mar 2, 2024 at 12:31 AM Tom Rini wrote: > On Sun, Feb 11, 2024 at 07:56:16PM +0100, Igor Opaniuk wrote: > > > From: Igor Opaniuk > > > > Drop old implementation and use hash_command() instead, as > > how it's currently done for crc32 and sha1sum cmds. > > > > Test: > > => md5sum 0x6000 0x200 > > md5 for 6000 ... 61ff ==> e6bbbe95f5b41996f4a9b9af7bbd4050 > > > > Signed-off-by: Igor Opaniuk > > --- > > > > cmd/md5sum.c | 149 --- > > 1 file changed, 9 insertions(+), 140 deletions(-) > > This breaks building of imx8mm_phg. > Thanks, fixed and sent v2. > -- > Tom > -- Best regards - Atentamente - Meilleures salutations Igor Opaniuk mailto: igor.opan...@gmail.com skype: igor.opanyuk http://ua.linkedin.com/in/iopaniuk
Re: [PATCH v1] cmd: md5sum: use hash_command
On Sun, Feb 11, 2024 at 07:56:16PM +0100, Igor Opaniuk wrote: > From: Igor Opaniuk > > Drop old implementation and use hash_command() instead, as > how it's currently done for crc32 and sha1sum cmds. > > Test: > => md5sum 0x6000 0x200 > md5 for 6000 ... 61ff ==> e6bbbe95f5b41996f4a9b9af7bbd4050 > > Signed-off-by: Igor Opaniuk > --- > > cmd/md5sum.c | 149 --- > 1 file changed, 9 insertions(+), 140 deletions(-) This breaks building of imx8mm_phg. -- Tom signature.asc Description: PGP signature
Re: [PATCH v1] cmd: md5sum: use hash_command
Hello Tom, On Sun, Feb 11, 2024 at 7:56 PM Igor Opaniuk wrote: > From: Igor Opaniuk > > Drop old implementation and use hash_command() instead, as > how it's currently done for crc32 and sha1sum cmds. > > Test: > => md5sum 0x6000 0x200 > md5 for 6000 ... 61ff ==> e6bbbe95f5b41996f4a9b9af7bbd4050 > > Signed-off-by: Igor Opaniuk > --- > > cmd/md5sum.c | 149 --- > 1 file changed, 9 insertions(+), 140 deletions(-) > > diff --git a/cmd/md5sum.c b/cmd/md5sum.c > index 0f0e1d3dd68..618265e8d50 100644 > --- a/cmd/md5sum.c > +++ b/cmd/md5sum.c > @@ -7,7 +7,6 @@ > * Wolfgang Denk, DENX Software Engineering, w...@denx.de. > */ > > -#include > #include > #include > #include > @@ -15,158 +14,28 @@ > #include > #include > > -/* > - * Store the resulting sum to an address or variable > - */ > -static void store_result(const u8 *sum, const char *dest) > -{ > - unsigned int i; > - > - if (*dest == '*') { > - u8 *ptr; > - > - ptr = (u8 *)hextoul(dest + 1, NULL); > - for (i = 0; i < 16; i++) > - *ptr++ = sum[i]; > - } else { > - char str_output[33]; > - char *str_ptr = str_output; > - > - for (i = 0; i < 16; i++) { > - sprintf(str_ptr, "%02x", sum[i]); > - str_ptr += 2; > - } > - env_set(dest, str_output); > - } > -} > - > -#ifdef CONFIG_MD5SUM_VERIFY > -static int parse_verify_sum(char *verify_str, u8 *vsum) > -{ > - if (*verify_str == '*') { > - u8 *ptr; > - > - ptr = (u8 *)hextoul(verify_str + 1, NULL); > - memcpy(vsum, ptr, 16); > - } else { > - unsigned int i; > - char *vsum_str; > - > - if (strlen(verify_str) == 32) > - vsum_str = verify_str; > - else { > - vsum_str = env_get(verify_str); > - if (vsum_str == NULL || strlen(vsum_str) != 32) > - return 1; > - } > - > - for (i = 0; i < 16; i++) { > - char *nullp = vsum_str + (i + 1) * 2; > - char end = *nullp; > - > - *nullp = '\0'; > - *(u8 *)(vsum + i) = > - hextoul(vsum_str + (i * 2), NULL); > - *nullp = end; > - } > - } > - return 0; > -} > - > -int do_md5sum(struct cmd_tbl *cmdtp, int flag, int argc, char *const > argv[]) > +static int do_md5sum(struct cmd_tbl *cmdtp, int flag, int argc, > +char *const argv[]) > { > - ulong addr, len; > - unsigned int i; > - u8 output[16]; > - u8 vsum[16]; > - int verify = 0; > + int flags = HASH_FLAG_ENV; > int ac; > - char * const *av; > - void *buf; > + char *const *av; > > if (argc < 3) > return CMD_RET_USAGE; > > av = argv + 1; > ac = argc - 1; > - if (strcmp(*av, "-v") == 0) { > - verify = 1; > + if (IS_ENABLED(CONFIG_MD5SUM_VERIFY) && strcmp(*av, "-v") == 0) { > + flags |= HASH_FLAG_VERIFY; > av++; > ac--; > - if (ac < 3) > - return CMD_RET_USAGE; > } > > - addr = hextoul(*av++, NULL); > - len = hextoul(*av++, NULL); > - > - buf = map_sysmem(addr, len); > - md5_wd(buf, len, output, CHUNKSZ_MD5); > - unmap_sysmem(buf); > - > - if (!verify) { > - printf("md5 for %08lx ... %08lx ==> ", addr, addr + len - > 1); > - for (i = 0; i < 16; i++) > - printf("%02x", output[i]); > - printf("\n"); > - > - if (ac > 2) > - store_result(output, *av); > - } else { > - char *verify_str = *av++; > - > - if (parse_verify_sum(verify_str, vsum)) { > - printf("ERROR: %s does not contain a valid md5 > sum\n", > - verify_str); > - return 1; > - } > - if (memcmp(output, vsum, 16) != 0) { > - printf("md5 for %08lx ... %08lx ==> ", addr, > - addr + len - 1); > - for (i = 0; i < 16; i++) > - printf("%02x", output[i]); > - printf(" != "); > - for (i = 0; i < 16; i++) > - printf("%02x", vsum[i]); > - printf(" ** ERROR **\n"); > - return 1; > - } > - } > - > - return 0; > -} > -#else > -static int do_md5sum(struct cmd_tbl *cmdtp, int flag, int
[PATCH v1] cmd: md5sum: use hash_command
From: Igor Opaniuk Drop old implementation and use hash_command() instead, as how it's currently done for crc32 and sha1sum cmds. Test: => md5sum 0x6000 0x200 md5 for 6000 ... 61ff ==> e6bbbe95f5b41996f4a9b9af7bbd4050 Signed-off-by: Igor Opaniuk --- cmd/md5sum.c | 149 --- 1 file changed, 9 insertions(+), 140 deletions(-) diff --git a/cmd/md5sum.c b/cmd/md5sum.c index 0f0e1d3dd68..618265e8d50 100644 --- a/cmd/md5sum.c +++ b/cmd/md5sum.c @@ -7,7 +7,6 @@ * Wolfgang Denk, DENX Software Engineering, w...@denx.de. */ -#include #include #include #include @@ -15,158 +14,28 @@ #include #include -/* - * Store the resulting sum to an address or variable - */ -static void store_result(const u8 *sum, const char *dest) -{ - unsigned int i; - - if (*dest == '*') { - u8 *ptr; - - ptr = (u8 *)hextoul(dest + 1, NULL); - for (i = 0; i < 16; i++) - *ptr++ = sum[i]; - } else { - char str_output[33]; - char *str_ptr = str_output; - - for (i = 0; i < 16; i++) { - sprintf(str_ptr, "%02x", sum[i]); - str_ptr += 2; - } - env_set(dest, str_output); - } -} - -#ifdef CONFIG_MD5SUM_VERIFY -static int parse_verify_sum(char *verify_str, u8 *vsum) -{ - if (*verify_str == '*') { - u8 *ptr; - - ptr = (u8 *)hextoul(verify_str + 1, NULL); - memcpy(vsum, ptr, 16); - } else { - unsigned int i; - char *vsum_str; - - if (strlen(verify_str) == 32) - vsum_str = verify_str; - else { - vsum_str = env_get(verify_str); - if (vsum_str == NULL || strlen(vsum_str) != 32) - return 1; - } - - for (i = 0; i < 16; i++) { - char *nullp = vsum_str + (i + 1) * 2; - char end = *nullp; - - *nullp = '\0'; - *(u8 *)(vsum + i) = - hextoul(vsum_str + (i * 2), NULL); - *nullp = end; - } - } - return 0; -} - -int do_md5sum(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) +static int do_md5sum(struct cmd_tbl *cmdtp, int flag, int argc, +char *const argv[]) { - ulong addr, len; - unsigned int i; - u8 output[16]; - u8 vsum[16]; - int verify = 0; + int flags = HASH_FLAG_ENV; int ac; - char * const *av; - void *buf; + char *const *av; if (argc < 3) return CMD_RET_USAGE; av = argv + 1; ac = argc - 1; - if (strcmp(*av, "-v") == 0) { - verify = 1; + if (IS_ENABLED(CONFIG_MD5SUM_VERIFY) && strcmp(*av, "-v") == 0) { + flags |= HASH_FLAG_VERIFY; av++; ac--; - if (ac < 3) - return CMD_RET_USAGE; } - addr = hextoul(*av++, NULL); - len = hextoul(*av++, NULL); - - buf = map_sysmem(addr, len); - md5_wd(buf, len, output, CHUNKSZ_MD5); - unmap_sysmem(buf); - - if (!verify) { - printf("md5 for %08lx ... %08lx ==> ", addr, addr + len - 1); - for (i = 0; i < 16; i++) - printf("%02x", output[i]); - printf("\n"); - - if (ac > 2) - store_result(output, *av); - } else { - char *verify_str = *av++; - - if (parse_verify_sum(verify_str, vsum)) { - printf("ERROR: %s does not contain a valid md5 sum\n", - verify_str); - return 1; - } - if (memcmp(output, vsum, 16) != 0) { - printf("md5 for %08lx ... %08lx ==> ", addr, - addr + len - 1); - for (i = 0; i < 16; i++) - printf("%02x", output[i]); - printf(" != "); - for (i = 0; i < 16; i++) - printf("%02x", vsum[i]); - printf(" ** ERROR **\n"); - return 1; - } - } - - return 0; -} -#else -static int do_md5sum(struct cmd_tbl *cmdtp, int flag, int argc, -char *const argv[]) -{ - unsigned long addr, len; - unsigned int i; - u8 output[16]; - void *buf; - - if (argc < 3) - return CMD_RET_USAGE; - - addr = hextoul(argv[1], NULL); - len = hextoul(argv[2], NULL); - - buf = map_sysmem(addr, len); - md5_wd(buf, len, output,