X-Git-Url: https://jxself.org/git/?p=skeinsum.git;a=blobdiff_plain;f=skein_cli.c;h=d6e7649480d4b930cf53cd415ac606a5283fd9ca;hp=220809768a12a5ec51ca78806adc39ec201b4a1f;hb=6f9f4910116e2463dc4f9c842177fdf3e5b4ebae;hpb=8ea6967db4d5d3f06d54cf83d3df1105d5207a6d diff --git a/skein_cli.c b/skein_cli.c index 2208097..d6e7649 100644 --- a/skein_cli.c +++ b/skein_cli.c @@ -210,6 +210,7 @@ void HashStdin(int tag) } } +/* Return: -1 = Error, 0 = Mismatch, 1 = Match */ int HashMatch(const char StoredDigest[], const char *filename, int quiet) { char mode = 't'; @@ -220,17 +221,19 @@ int HashMatch(const char StoredDigest[], const char *filename, int quiet) char MsgDigest[hashbitlen/2]; if (HashWithMode(filename, MsgDigest, mode) < 0) - return 0; + return -1; if (strcmp(MsgDigest, StoredDigest)) { printf("%s: FAILED\n", filename); return 0; } + if (quiet > 0) printf("%s: OK\n", filename); return 1; } +/* Return: -1 = some errors/mismatches, 1 = all ok */ int VerifyHashesFromFile(FILE *fp, int status, int warn, int quiet) { char hash[PATH_MAX + hashbitlen/4 + 4]; @@ -243,7 +246,7 @@ int VerifyHashesFromFile(FILE *fp, int status, int warn, int quiet) char file_tmp[PATH_MAX]; line ++; Computed++; - unsigned int hashVersion = decomposeHashLine(hash,MsgDigest_tmp,file_tmp); + int hashVersion = decomposeHashLine(hash,MsgDigest_tmp,file_tmp); if (hashVersion == -1) { fprintf(stderr, "skein%d: %s is using newer version of skein%d algorithm\n",hashbitlen,file_tmp,hashbitlen); @@ -263,7 +266,7 @@ int VerifyHashesFromFile(FILE *fp, int status, int warn, int quiet) NotProper ++; NoMatch ++; } - else if (!HashMatch(MsgDigest_tmp, file_tmp, quiet)) + else if (HashMatch(MsgDigest_tmp, file_tmp, quiet) <= 0) { NoMatch++; } @@ -280,17 +283,18 @@ int VerifyHashesFromFile(FILE *fp, int status, int warn, int quiet) return (NotProper || NoMatch) ? -1 : 1; } -int isProper(char MsgDigest[]) +int isProper(const char MsgDigest[]) { - if ((strlen(MsgDigest) - hashbitlen/4) != 0) + int len = strlen(MsgDigest); + if (len != (hashbitlen / 4)) return 0; int index = 0; - char c = 0; - for(index = 0; index < strlen(MsgDigest);index++) + for (index = 0; index < len; index++) { - c = MsgDigest[index]; - if(!(( c >= '0' && c <= '9' ) || ( c >= 'A' && c <= 'F'))) - return 0; + char c = MsgDigest[index]; + if (c >= '0' && c <= '9') continue; + if (c >= 'A' && c <= 'F') continue; + return 0; } return 1;