Line data Source code
1 : #include "burp.h"
2 : #include "alloc.h"
3 : #include "conf.h"
4 : #include "log.h"
5 : #include "md5.h"
6 :
7 : #if OPENSSL_VERSION_NUMBER < 0x30000000L
8 :
9 47 : struct md5 *md5_alloc(
10 : const char *func
11 : ) {
12 : struct md5 *md5;
13 47 : if(!(md5=(struct md5 *)calloc_w(1, sizeof(struct md5), func)))
14 : return NULL;
15 47 : if(!(md5->ctx=(MD5_CTX *)calloc_w(1, sizeof(MD5_CTX), func)))
16 0 : md5_free(&md5);
17 47 : return md5;
18 : }
19 :
20 47 : void md5_free(
21 : struct md5 **md5
22 : ) {
23 47 : if(!md5 || !*md5)
24 : return;
25 47 : free_v((void **)&(*md5)->ctx);
26 47 : free_v((void **)md5);
27 : }
28 :
29 47 : int md5_init(
30 : struct md5 *md5
31 : ) {
32 47 : return MD5_Init(md5->ctx);
33 : }
34 :
35 18 : int md5_update(
36 : struct md5 *md5,
37 : const void *data,
38 : unsigned long len
39 : ) {
40 18 : return MD5_Update(md5->ctx, data, len);
41 : }
42 :
43 24 : int md5_final(
44 : struct md5 *md5,
45 : unsigned char *md
46 : ) {
47 24 : return MD5_Final(md, md5->ctx);
48 : }
49 :
50 : #else
51 :
52 : struct md5 *md5_alloc(
53 : const char *func
54 : ) {
55 : struct md5 *md5;
56 : if(!(md5=(struct md5 *)calloc_w(1, sizeof(struct md5), func)))
57 : return NULL;
58 : if((md5->ctx=EVP_MD_CTX_create()))
59 : {
60 : #ifdef UTEST
61 : alloc_count++;
62 : #endif
63 : return md5;
64 : }
65 : log_oom_w(__func__, func);
66 : md5_free(&md5);
67 : return NULL;
68 : }
69 :
70 : void md5_free(
71 : struct md5 **md5
72 : ) {
73 : if(!md5 || !*md5)
74 : return;
75 : if ((*md5)->ctx)
76 : EVP_MD_CTX_free((*md5)->ctx);
77 : free_v((void **)md5);
78 : #ifdef UTEST
79 : alloc_count--;
80 : #endif
81 : *md5=NULL;
82 : }
83 :
84 : int md5_init(
85 : struct md5 *md5
86 : ) {
87 : return EVP_DigestInit_ex(md5->ctx, EVP_md5(), NULL);
88 : }
89 :
90 : int md5_update(
91 : struct md5 *md5,
92 : const void *data,
93 : unsigned long len
94 : ) {
95 : return EVP_DigestUpdate(md5->ctx, data, len);
96 : }
97 :
98 : int md5_final(
99 : struct md5 *md5,
100 : unsigned char *md
101 : ) {
102 : return EVP_DigestFinal_ex(md5->ctx, md, NULL);
103 : }
104 :
105 : #endif
|