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 ()
{
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;
}
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);
+
}
}