@@ -19,13 +19,51 @@ SQLITE_EXTENSION_INIT1
1919#include <string.h>
2020
2121#ifdef USE_OPENSSL
22- #include <openssl/md5.h>
23- #include <openssl/sha.h>
22+ #include <openssl/evp.h>
23+
24+ static void digest_md5 (const void * a , size_t alen , const void * b , size_t blen , unsigned char out [16 ]) {
25+ EVP_MD_CTX * ctx = EVP_MD_CTX_new ();
26+ unsigned int len ;
27+ EVP_DigestInit_ex (ctx , EVP_md5 (), NULL );
28+ EVP_DigestUpdate (ctx , a , alen );
29+ EVP_DigestUpdate (ctx , b , blen );
30+ EVP_DigestFinal_ex (ctx , out , & len );
31+ EVP_MD_CTX_free (ctx );
32+ }
33+
34+ static void digest_sha1 (const void * a , size_t alen , const void * b , size_t blen , unsigned char out [20 ]) {
35+ EVP_MD_CTX * ctx = EVP_MD_CTX_new ();
36+ unsigned int len ;
37+ EVP_DigestInit_ex (ctx , EVP_sha1 (), NULL );
38+ EVP_DigestUpdate (ctx , a , alen );
39+ EVP_DigestUpdate (ctx , b , blen );
40+ EVP_DigestFinal_ex (ctx , out , & len );
41+ EVP_MD_CTX_free (ctx );
42+ }
2443#endif
2544
2645#ifdef USE_COMMONCRYPTO
2746#define COMMON_DIGEST_FOR_OPENSSL
2847#include <CommonCrypto/CommonDigest.h>
48+
49+ #pragma clang diagnostic push
50+ #pragma clang diagnostic ignored "-Wdeprecated-declarations"
51+ static void digest_md5 (const void * a , size_t alen , const void * b , size_t blen , unsigned char out [16 ]) {
52+ MD5_CTX ctx ;
53+ MD5_Init (& ctx );
54+ MD5_Update (& ctx , a , alen );
55+ MD5_Update (& ctx , b , blen );
56+ MD5_Final (out , & ctx );
57+ }
58+
59+ static void digest_sha1 (const void * a , size_t alen , const void * b , size_t blen , unsigned char out [20 ]) {
60+ SHA_CTX ctx ;
61+ SHA1_Init (& ctx );
62+ SHA1_Update (& ctx , a , alen );
63+ SHA1_Update (& ctx , b , blen );
64+ SHA1_Final (out , & ctx );
65+ }
66+ #pragma clang diagnostic pop
2967#endif
3068
3169#ifdef USE_DEFAULT_ENTRY_POINT
@@ -85,12 +123,8 @@ static void uuid3(
85123
86124 uuid_t uu ;
87125
88- MD5_CTX mdctx ;
89- unsigned char md_value [MD5_DIGEST_LENGTH ];
90- MD5_Init (& mdctx );
91- MD5_Update (& mdctx , namespace_uuid , sizeof (uuid_t ));
92- MD5_Update (& mdctx , name , strlen ((const char * )name ));
93- MD5_Final (md_value , & mdctx );
126+ unsigned char md_value [16 ];
127+ digest_md5 (namespace_uuid , sizeof (uuid_t ), name , strlen ((const char * )name ), md_value );
94128
95129 SET_VARIANT (md_value );
96130 SET_VERSION (md_value , 3 );
@@ -139,12 +173,8 @@ static void uuid5(
139173
140174 uuid_t uu ;
141175
142- SHA_CTX mdctx ;
143- unsigned char md_value [SHA_DIGEST_LENGTH ];
144- SHA1_Init (& mdctx );
145- SHA1_Update (& mdctx , namespace_uuid , sizeof (uuid_t ));
146- SHA1_Update (& mdctx , name , strlen ((const char * )name ));
147- SHA1_Final (md_value , & mdctx );
176+ unsigned char md_value [20 ];
177+ digest_sha1 (namespace_uuid , sizeof (uuid_t ), name , strlen ((const char * )name ), md_value );
148178
149179 SET_VARIANT (md_value );
150180 SET_VERSION (md_value , 5 );
0 commit comments