Changed the encoding function to use the OpenSSL EVP_EncodeBlock
authorHarishankar <v.harishankar@gmail.com>
Sun, 10 May 2020 10:16:45 +0000 (15:46 +0530)
committerHarishankar <v.harishankar@gmail.com>
Sun, 10 May 2020 10:19:11 +0000 (15:49 +0530)
Changed the encoding hash to use the OpenSSL function instead
of the generic version

wordblah.h

index 328148d..372ca60 100644 (file)
@@ -103,21 +103,13 @@ 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)
+/* encode the binary data to readable text format using OpenSSL */
+void encode_binary (char *encoded, unsigned char *binary_data, 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); 
+
+       EVP_EncodeBlock ((unsigned char*)encoded, 
+                                                       (const unsigned char*)binary_data, len);
+       OPENSSL_free (binary_data);
 }
 
 /* get a number from the user */
@@ -142,7 +134,7 @@ bool verify_solution_password (Puzzle *p, const char* password)
        digest_message ((const unsigned char *)password, strlen(password),
                                                &hashed_sol_password, &len);
        char hashed_hex_pwd[256] = { (char) NULL };
-       to_hexadecimal (hashed_hex_pwd, hashed_sol_password, len);
+       encode_binary (hashed_hex_pwd, hashed_sol_password, len);
        
        if (strcmp (p->hashed_solution_password, hashed_hex_pwd) == 0)
                return true;
@@ -164,7 +156,7 @@ bool verify_master_password (Puzzle *p, const char* password)
        digest_message ((const unsigned char *)password, strlen(password),
                                                &hashed_mas_password, &len);
        char hashed_hex_pwd[256] = { (char) NULL };
-       to_hexadecimal (hashed_hex_pwd, hashed_mas_password, len);
+       encode_binary (hashed_hex_pwd, hashed_mas_password, len);
        
        if (strcmp (p->hashed_master_password, hashed_hex_pwd) == 0)
                return true;
@@ -188,7 +180,7 @@ void set_solution_password (Puzzle *p, const char *password)
                /* the hashedpwd contains binary data - we will convert it to 
                   hexadecimal data and store in file */
 
-               to_hexadecimal (p->hashed_solution_password, hashedpwd, len);
+               encode_binary (p->hashed_solution_password, hashedpwd, len);
        }
 }
 
@@ -208,7 +200,7 @@ void set_master_password (Puzzle *p, const char *password)
                /* the hashedpwd contains binary data - we will convert it to 
                   hexadecimal data and store in file */
 
-               to_hexadecimal (p->hashed_master_password, hashedpwd, len);
+               encode_binary (p->hashed_master_password, hashedpwd, len);
        }
 }