From 5a3a8506fc7b8517bef7f6f55c735f97ec81ae9a Mon Sep 17 00:00:00 2001 From: Chris Oei Date: Mon, 3 Sep 2012 00:57:10 -0700 Subject: [PATCH] Bug fixes in display code --- lib/genpass/genpass.c | 27 +++++++++++++++++++++++---- lib/genpass/genpass.h | 3 +++ main.c | 13 ++++++++----- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/lib/genpass/genpass.c b/lib/genpass/genpass.c index 20876ee..ea8ca88 100644 --- a/lib/genpass/genpass.c +++ b/lib/genpass/genpass.c @@ -141,13 +141,32 @@ checkparams(uint32_t maxmem, uint32_t megaops, return (0); } -static int -getsalt(uint8_t salt[32], void* site) +int +bintohex(char* outstring, size_t nbytes, uint8_t* data) +{ + int i; + for (i = 0; i < nbytes; i++) + sprintf(outstring + 2 * i, "%02x", data[i]); + outstring[2 * nbytes] = '\0'; + return 0; +} + +int +sha256string(uint8_t hash[32], char* s) { SHA256_CTX sha256_ctx; SHA256_Init(&sha256_ctx); - SHA256_Update(&sha256_ctx, site, strlen(site)); - SHA256_Final(salt, &sha256_ctx); + SHA256_Update(&sha256_ctx, (void*) s, strlen(s)); + SHA256_Final(hash, &sha256_ctx); +} + +static int +getsalt(uint8_t salt[32], void* site) +{ + sha256string(salt, site); + char buf[65]; + bintohex(buf, 32, salt); + printf("Site hex: %s\n", buf); return (0); } diff --git a/lib/genpass/genpass.h b/lib/genpass/genpass.h index 89ed85f..2c77855 100644 --- a/lib/genpass/genpass.h +++ b/lib/genpass/genpass.h @@ -71,6 +71,9 @@ * 12 error writing output file * 13 error reading input file */ +int bintohex(char* outstring, size_t nbytes, uint8_t* data); + +int sha256string(uint8_t* hash, char* s); int genpass(uint8_t dk[64], const uint8_t * passwd, size_t passwdlen, void* site, diff --git a/main.c b/main.c index 5a14246..debd9a1 100644 --- a/main.c +++ b/main.c @@ -94,6 +94,11 @@ main(int argc, char *argv[]) dec ? NULL : "Please confirm passphrase", 1)) exit(1); } + uint8_t passhash[32]; + sha256string(passhash, passwd); + char buf1[65]; + bintohex(buf1, 32, passhash); + printf("Master hex: %s\n", buf1); uint8_t dk[64]; rc = genpass(dk, (uint8_t *)passwd, strlen(passwd), (void*) *argv, @@ -103,11 +108,9 @@ main(int argc, char *argv[]) memset(passwd, 0, strlen(passwd)); free(passwd); - char buf[65]; - for (i = 0; i < 64; i++) { - sprintf(buf + i, "%x", dk[i]); - } - printf("Result: %s\n", buf); + char buf[129]; + bintohex(buf, 64, dk); + printf("Hex passkey: %s\n", buf); /* If we failed, print the right error message and exit. */ if (rc != 0) {