--- /tmp/hashalot-0.1.0/hashalot.c Fri Aug 22 16:07:07 2003 +++ hashalot.c Sun Dec 7 17:46:35 2003 @@ -50,7 +50,14 @@ memset (tmp, 0, PASSWDBUFFLEN); /* paranoia */ memset (key, 0, RMD160_HASH_SIZE * 2); /* paranoia */ - return 0; + return HASHBUFFLEN; +} + +static int +phash_rmd160compat(char dest[HASHBUFFLEN], const char src[], size_t src_len) +{ + phash_rmd160(dest,src,src_len); + return 16; } static int @@ -58,7 +65,7 @@ { memset(dest, 0, HASHBUFFLEN); sha256_hash_buffer((char *) src, src_len, dest, HASHBUFFLEN); - return 0; + return HASHBUFFLEN; } static int @@ -66,7 +73,7 @@ { memset(dest, 0, HASHBUFFLEN); sha384_hash_buffer((char *) src, src_len, dest, HASHBUFFLEN); - return 0; + return HASHBUFFLEN; } static int @@ -74,7 +81,7 @@ { memset(dest, 0, HASHBUFFLEN); sha512_hash_buffer((char *) src, src_len, dest, HASHBUFFLEN); - return 0; + return HASHBUFFLEN; } struct func_table_t { @@ -83,6 +90,7 @@ } static func_table[] = { { "ripemd160", phash_rmd160 }, { "rmd160", phash_rmd160 }, + { "rmd160compat", phash_rmd160compat }, { "sha256", phash_sha256 }, { "sha384", phash_sha384 }, { "sha512", phash_sha512 }, @@ -168,6 +176,7 @@ { char *pass, passhash[HASHBUFFLEN]; phash_func_t func; + int hashlen; if (!(func = phash_lookup(basename(argv[0])))) /* lookup failed, so try argv[1] */ @@ -187,10 +196,10 @@ /* here we acquire the precious passphrase... */ pass = xgetpass("Enter passphrase: "); - func(passhash, pass, strlen(pass)); + hashlen = func(passhash, pass, strlen(pass)); memset (pass, 0, strlen (pass)); /* paranoia */ - if (write(STDOUT_FILENO, passhash, HASHBUFFLEN) != HASHBUFFLEN) + if (write(STDOUT_FILENO, passhash, hashlen) != hashlen) perror("write()"); memset (passhash, 0, HASHBUFFLEN); /* paranoia again */