X-Git-Url: https://harishankar.org/repos/?p=wordblah.git;a=blobdiff_plain;f=wordblox.h;fp=wordblox.h;h=f7a3ce4ae39f08eadbd96452aa85a15dd6af0ee8;hp=b6579861deb0ae4a99b7b4ac866ad352974e53b0;hb=e9f447d1fbbf9c6098d6f3ea9c4695b60a68cead;hpb=f5202f7c1ec8a765f4d0325e56f6d89ca22bef28 diff --git a/wordblox.h b/wordblox.h index b657986..f7a3ce4 100644 --- a/wordblox.h +++ b/wordblox.h @@ -101,6 +101,23 @@ err: exit (2); } +/* convert the hashed binary password to hexadecimal representation and + free the hashed binary password */ +void to_hexadecimal (char *hex, unsigned char *binary_pwd, unsigned int len) +{ + char buf[3]; + /* keep reference to beginning of the hashed password */ + unsigned char *binary_pw_begin = binary_pwd; + for (int i = 0; i < len; i ++) + { + sprintf (buf, "%02x", (*binary_pwd)&0xff); + strcat (hex, buf); + binary_pwd ++; + } + /* free the hashed password */ + OPENSSL_free (binary_pw_begin); +} + /* get a number from the user */ int get_num () { @@ -122,13 +139,12 @@ bool verify_password (Puzzle *p, const char* password) unsigned int len; digest_message ((const unsigned char *)password, strlen(password), &hashed_password, &len); + char hashed_hex_pwd[256] = { (char) NULL }; + to_hexadecimal (hashed_hex_pwd, hashed_password, len); - if (strcmp (p->hashed_password, (const char*) hashed_password) == 0) - { - OPENSSL_free (hashed_password); + if (strcmp (p->hashed_password, hashed_hex_pwd) == 0) return true; - } - OPENSSL_free (hashed_password); + return false; } @@ -148,9 +164,14 @@ void set_puzzle_password (Puzzle *p, const char *password) unsigned int len; digest_message ((const unsigned char *)password, strlen(password), &hashedpwd, &len); - strcpy (p->hashed_password, (const char *)hashedpwd); + /* the hashedpwd contains binary data - we will convert it to + hexadecimal data and store in file */ + + to_hexadecimal (p->hashed_password, hashedpwd, len); + printf ("%s\n", p->hashed_password); + strcpy (p->salt, "\0"); - OPENSSL_free (hashedpwd); + } }