|
3 | 3 | #include "config.h" |
4 | 4 | #include "log.h" |
5 | 5 |
|
6 | | -#include <openssl/md5.h> |
| 6 | +#include <openssl/evp.h> |
7 | 7 | #include <uuid/uuid.h> |
8 | 8 |
|
9 | 9 | #include <errno.h> |
@@ -114,17 +114,27 @@ char *generate_salt(void) |
114 | 114 |
|
115 | 115 | char *generate_md5sum(const char *str) |
116 | 116 | { |
117 | | - MD5_CTX c; |
118 | | - unsigned char md5[MD5_DIGEST_LENGTH]; |
119 | 117 | size_t len = strnlen(str, MAX_PATH_LEN); |
120 | 118 | char *out = CALLOC(MD5_HASH_LEN + 1, sizeof(char)); |
121 | 119 |
|
122 | | - MD5_Init(&c); |
123 | | - MD5_Update(&c, str, len); |
124 | | - MD5_Final(md5, &c); |
| 120 | + EVP_MD_CTX *mdctx; |
| 121 | + unsigned char *md5_digest; |
| 122 | + unsigned int md5_digest_len = EVP_MD_size(EVP_md5()); |
125 | 123 |
|
126 | | - for (int i = 0; i < MD5_DIGEST_LENGTH; i++) { |
127 | | - sprintf(out + 2 * i, "%02x", md5[i]); |
| 124 | + // MD5_Init |
| 125 | + mdctx = EVP_MD_CTX_new(); |
| 126 | + EVP_DigestInit_ex(mdctx, EVP_md5(), NULL); |
| 127 | + |
| 128 | + // MD5_Update |
| 129 | + EVP_DigestUpdate(mdctx, str, len); |
| 130 | + |
| 131 | + // MD5_Final |
| 132 | + md5_digest = (unsigned char *)OPENSSL_malloc(md5_digest_len); |
| 133 | + EVP_DigestFinal_ex(mdctx, md5_digest, &md5_digest_len); |
| 134 | + EVP_MD_CTX_free(mdctx); |
| 135 | + |
| 136 | + for (unsigned int i = 0; i < md5_digest_len; i++) { |
| 137 | + sprintf(out + 2 * i, "%02x", md5_digest[i]); |
128 | 138 | } |
129 | 139 | return out; |
130 | 140 | } |
|
0 commit comments