diff --git a/nshlib/nsh_codeccmd.c b/nshlib/nsh_codeccmd.c index 796bcffd9..91b3953ff 100644 --- a/nshlib/nsh_codeccmd.c +++ b/nshlib/nsh_codeccmd.c @@ -509,6 +509,26 @@ int cmd_md5(FAR struct nsh_vtbl_s *vtbl, int argc, FAR char **argv) return ret; } } + else if (argc == 1) + { + MD5_CTX ctx; + + md5_init(&ctx); + + while (1) + { + ret = nsh_read(vtbl, digest, sizeof(digest)); + if (ret <= 0) + { + ret = ret < 0 ? -errno : 0; + break; + } + + md5_update(&ctx, digest, ret); + } + + md5_final(digest, &ctx); + } else { md5_sum((FAR unsigned char *)argv[1], strlen(argv[1]), digest); diff --git a/nshlib/nsh_command.c b/nshlib/nsh_command.c index dc8fab481..7bbaf69be 100644 --- a/nshlib/nsh_command.c +++ b/nshlib/nsh_command.c @@ -353,7 +353,8 @@ static const struct cmdmap_s g_cmdmap[] = #if defined(CONFIG_NETUTILS_CODECS) && defined(CONFIG_CODECS_HASH_MD5) # ifndef CONFIG_NSH_DISABLE_MD5 - CMD_MAP("md5", cmd_md5, 2, 3, "[-f] "), + CMD_MAP("md5", cmd_md5, 1, 3, + "[string] or [-f ] or read stdin"), # endif #endif