View | Details | Raw Unified | Return to bug 225919 | Differences between
and this patch

Collapse All | Expand All

(-)net/liboauth/Makefile (-3 lines)
Lines 12-20 Link Here
12
LICENSE=	MIT
12
LICENSE=	MIT
13
LICENSE_FILE=	${WRKSRC}/COPYING.MIT
13
LICENSE_FILE=	${WRKSRC}/COPYING.MIT
14
14
15
BROKEN_SSL=	openssl-devel
16
BROKEN_SSL_REASON_openssl-devel=	error: variable has incomplete type 'EVP_MD_CTX' (aka 'struct evp_md_ctx_st')
17
18
LIB_DEPENDS=	libcurl.so:ftp/curl
15
LIB_DEPENDS=	libcurl.so:ftp/curl
19
16
20
USES=		libtool pkgconfig ssl
17
USES=		libtool pkgconfig ssl
(-)net/liboauth/files/patch-OpenSSL-1.1 (+137 lines)
Line 0 Link Here
1
--- src/hash.c.orig	2013-10-04 13:02:50 UTC
2
+++ src/hash.c
3
@@ -362,6 +362,11 @@ looser:
4
 #include "oauth.h" // base64 encode fn's.
5
 #include <openssl/hmac.h>
6
 
7
+#if OPENSSL_VERSION_NUMBER < 0x10100000
8
+#define EVP_MD_CTX_new EVP_MD_CTX_create
9
+#define EVP_MD_CTX_free EVP_MD_CTX_destroy
10
+#endif
11
+
12
 char *oauth_sign_hmac_sha1 (const char *m, const char *k) {
13
   return(oauth_sign_hmac_sha1_raw (m, strlen(m), k, strlen(k)));
14
 }
15
@@ -386,7 +391,7 @@ char *oauth_sign_rsa_sha1 (const char *m
16
   unsigned char *sig = NULL;
17
   unsigned char *passphrase = NULL;
18
   unsigned int len=0;
19
-  EVP_MD_CTX md_ctx;
20
+  EVP_MD_CTX *md_ctx;
21
 
22
   EVP_PKEY *pkey;
23
   BIO *in;
24
@@ -399,24 +404,32 @@ char *oauth_sign_rsa_sha1 (const char *m
25
     return xstrdup("liboauth/OpenSSL: can not read private key");
26
   }
27
 
28
+	md_ctx = EVP_MD_CTX_new();
29
+	if (md_ctx == NULL) {
30
+		return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
31
+	}
32
+
33
+
34
   len = EVP_PKEY_size(pkey);
35
   sig = (unsigned char*)xmalloc((len+1)*sizeof(char));
36
 
37
-  EVP_SignInit(&md_ctx, EVP_sha1());
38
-  EVP_SignUpdate(&md_ctx, m, strlen(m));
39
-  if (EVP_SignFinal (&md_ctx, sig, &len, pkey)) {
40
+  EVP_SignInit(md_ctx, EVP_sha1());
41
+  EVP_SignUpdate(md_ctx, m, strlen(m));
42
+  if (EVP_SignFinal (md_ctx, sig, &len, pkey)) {
43
     char *tmp;
44
     sig[len] = '\0';
45
     tmp = oauth_encode_base64(len,sig);
46
     OPENSSL_free(sig);
47
     EVP_PKEY_free(pkey);
48
+		EVP_MD_CTX_free(md_ctx);
49
     return tmp;
50
   }
51
+	EVP_MD_CTX_free(md_ctx);
52
   return xstrdup("liboauth/OpenSSL: rsa-sha1 signing failed");
53
 }
54
 
55
 int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {
56
-  EVP_MD_CTX md_ctx;
57
+  EVP_MD_CTX *md_ctx;
58
   EVP_PKEY *pkey;
59
   BIO *in;
60
   X509 *cert = NULL;
61
@@ -437,13 +450,18 @@ int oauth_verify_rsa_sha1 (const char *m
62
     return -2;
63
   }
64
 
65
+	md_ctx = EVP_MD_CTX_new();
66
+	if (md_ctx == NULL) {
67
+		return -2;
68
+	}
69
+
70
   b64d= (unsigned char*) xmalloc(sizeof(char)*strlen(s));
71
   slen = oauth_decode_base64(b64d, s);
72
 
73
-  EVP_VerifyInit(&md_ctx, EVP_sha1());
74
-  EVP_VerifyUpdate(&md_ctx, m, strlen(m));
75
-  err = EVP_VerifyFinal(&md_ctx, b64d, slen, pkey);
76
-  EVP_MD_CTX_cleanup(&md_ctx);
77
+  EVP_VerifyInit(md_ctx, EVP_sha1());
78
+  EVP_VerifyUpdate(md_ctx, m, strlen(m));
79
+  err = EVP_VerifyFinal(md_ctx, b64d, slen, pkey);
80
+  EVP_MD_CTX_free(md_ctx);
81
   EVP_PKEY_free(pkey);
82
   xfree(b64d);
83
   return (err);
84
@@ -455,35 +473,41 @@ int oauth_verify_rsa_sha1 (const char *m
85
  */
86
 char *oauth_body_hash_file(char *filename) {
87
   unsigned char fb[BUFSIZ];
88
-  EVP_MD_CTX ctx;
89
+  EVP_MD_CTX *ctx;
90
   size_t len=0;
91
   unsigned char *md;
92
   FILE *F= fopen(filename, "r");
93
   if (!F) return NULL;
94
 
95
-  EVP_MD_CTX_init(&ctx);
96
-  EVP_DigestInit(&ctx,EVP_sha1());
97
+	ctx = EVP_MD_CTX_new();
98
+	if (ctx == NULL) {
99
+		return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
100
+	}
101
+	EVP_DigestInit(ctx,EVP_sha1());
102
   while (!feof(F) && (len=fread(fb,sizeof(char),BUFSIZ, F))>0) {
103
-    EVP_DigestUpdate(&ctx, fb, len);
104
+    EVP_DigestUpdate(ctx, fb, len);
105
   }
106
   fclose(F);
107
   len=0;
108
   md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));
109
-  EVP_DigestFinal(&ctx, md,(unsigned int*) &len);
110
-  EVP_MD_CTX_cleanup(&ctx);
111
+  EVP_DigestFinal(ctx, md,(unsigned int*) &len);
112
+  EVP_MD_CTX_free(ctx);
113
   return oauth_body_hash_encode(len, md);
114
 }
115
 
116
 char *oauth_body_hash_data(size_t length, const char *data) {
117
-  EVP_MD_CTX ctx;
118
+  EVP_MD_CTX *ctx;
119
   size_t len=0;
120
   unsigned char *md;
121
   md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));
122
-  EVP_MD_CTX_init(&ctx);
123
-  EVP_DigestInit(&ctx,EVP_sha1());
124
-  EVP_DigestUpdate(&ctx, data, length);
125
-  EVP_DigestFinal(&ctx, md,(unsigned int*) &len);
126
-  EVP_MD_CTX_cleanup(&ctx);
127
+	ctx = EVP_MD_CTX_new();
128
+ 	if (ctx == NULL) {
129
+		return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
130
+	}
131
+	EVP_DigestInit(ctx,EVP_sha1());
132
+	EVP_DigestUpdate(ctx, data, length);
133
+	EVP_DigestFinal(ctx, md,(unsigned int*) &len);
134
+	EVP_MD_CTX_free(ctx);
135
   return oauth_body_hash_encode(len, md);
136
 }
137
 

Return to bug 225919