aboutsummaryrefslogtreecommitdiff
path: root/net/liboauth
diff options
context:
space:
mode:
authorAntoine Brodin <antoine@FreeBSD.org>2018-10-10 19:28:18 +0000
committerAntoine Brodin <antoine@FreeBSD.org>2018-10-10 19:28:18 +0000
commitdd0ac20cef58d011714d7ee99eb79cb6a52fb48c (patch)
tree0febdb93d9aff4e4975f699ba685abc71c0fb353 /net/liboauth
parentece2f583bc5a338a09661dc5b69977cb1779d1b9 (diff)
downloadports-dd0ac20cef58d011714d7ee99eb79cb6a52fb48c.tar.gz
ports-dd0ac20cef58d011714d7ee99eb79cb6a52fb48c.zip
Fix build with openssl 1.1.1
PR: 225919 Submitted by: Nathan Owens Obtained from: https://github.com/x42/liboauth/issues/9 With hat: portmgr
Notes
Notes: svn path=/head/; revision=481766
Diffstat (limited to 'net/liboauth')
-rw-r--r--net/liboauth/Makefile6
-rw-r--r--net/liboauth/files/patch-src_hash.c137
2 files changed, 139 insertions, 4 deletions
diff --git a/net/liboauth/Makefile b/net/liboauth/Makefile
index f442a5b8ac98..46b905417a3b 100644
--- a/net/liboauth/Makefile
+++ b/net/liboauth/Makefile
@@ -2,7 +2,7 @@
PORTNAME= liboauth
PORTVERSION= 1.0.3
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= net
MASTER_SITES= SF/${PORTNAME}
@@ -12,13 +12,11 @@ COMMENT= C library implementing the OAuth Core standard
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/COPYING.MIT
-BROKEN_SSL= openssl-devel
-BROKEN_SSL_REASON_openssl-devel= error: variable has incomplete type 'EVP_MD_CTX' (aka 'struct evp_md_ctx_st')
-
LIB_DEPENDS= libcurl.so:ftp/curl
USES= libtool pkgconfig ssl
USE_LDCONFIG= yes
+
GNU_CONFIGURE= yes
MAKE_ARGS= pkgconfigdir="${PREFIX}/libdata/pkgconfig"
INSTALL_TARGET= install-strip
diff --git a/net/liboauth/files/patch-src_hash.c b/net/liboauth/files/patch-src_hash.c
new file mode 100644
index 000000000000..32fb6bb402da
--- /dev/null
+++ b/net/liboauth/files/patch-src_hash.c
@@ -0,0 +1,137 @@
+--- src/hash.c.orig 2013-10-04 13:02:50 UTC
++++ src/hash.c
+@@ -362,6 +362,11 @@ looser:
+ #include "oauth.h" // base64 encode fn's.
+ #include <openssl/hmac.h>
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000
++#define EVP_MD_CTX_new EVP_MD_CTX_create
++#define EVP_MD_CTX_free EVP_MD_CTX_destroy
++#endif
++
+ char *oauth_sign_hmac_sha1 (const char *m, const char *k) {
+ return(oauth_sign_hmac_sha1_raw (m, strlen(m), k, strlen(k)));
+ }
+@@ -386,7 +391,7 @@ char *oauth_sign_rsa_sha1 (const char *m
+ unsigned char *sig = NULL;
+ unsigned char *passphrase = NULL;
+ unsigned int len=0;
+- EVP_MD_CTX md_ctx;
++ EVP_MD_CTX *md_ctx;
+
+ EVP_PKEY *pkey;
+ BIO *in;
+@@ -399,24 +404,32 @@ char *oauth_sign_rsa_sha1 (const char *m
+ return xstrdup("liboauth/OpenSSL: can not read private key");
+ }
+
++ md_ctx = EVP_MD_CTX_new();
++ if (md_ctx == NULL) {
++ return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
++ }
++
++
+ len = EVP_PKEY_size(pkey);
+ sig = (unsigned char*)xmalloc((len+1)*sizeof(char));
+
+- EVP_SignInit(&md_ctx, EVP_sha1());
+- EVP_SignUpdate(&md_ctx, m, strlen(m));
+- if (EVP_SignFinal (&md_ctx, sig, &len, pkey)) {
++ EVP_SignInit(md_ctx, EVP_sha1());
++ EVP_SignUpdate(md_ctx, m, strlen(m));
++ if (EVP_SignFinal (md_ctx, sig, &len, pkey)) {
+ char *tmp;
+ sig[len] = '\0';
+ tmp = oauth_encode_base64(len,sig);
+ OPENSSL_free(sig);
+ EVP_PKEY_free(pkey);
++ EVP_MD_CTX_free(md_ctx);
+ return tmp;
+ }
++ EVP_MD_CTX_free(md_ctx);
+ return xstrdup("liboauth/OpenSSL: rsa-sha1 signing failed");
+ }
+
+ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {
+- EVP_MD_CTX md_ctx;
++ EVP_MD_CTX *md_ctx;
+ EVP_PKEY *pkey;
+ BIO *in;
+ X509 *cert = NULL;
+@@ -437,13 +450,18 @@ int oauth_verify_rsa_sha1 (const char *m
+ return -2;
+ }
+
++ md_ctx = EVP_MD_CTX_new();
++ if (md_ctx == NULL) {
++ return -2;
++ }
++
+ b64d= (unsigned char*) xmalloc(sizeof(char)*strlen(s));
+ slen = oauth_decode_base64(b64d, s);
+
+- EVP_VerifyInit(&md_ctx, EVP_sha1());
+- EVP_VerifyUpdate(&md_ctx, m, strlen(m));
+- err = EVP_VerifyFinal(&md_ctx, b64d, slen, pkey);
+- EVP_MD_CTX_cleanup(&md_ctx);
++ EVP_VerifyInit(md_ctx, EVP_sha1());
++ EVP_VerifyUpdate(md_ctx, m, strlen(m));
++ err = EVP_VerifyFinal(md_ctx, b64d, slen, pkey);
++ EVP_MD_CTX_free(md_ctx);
+ EVP_PKEY_free(pkey);
+ xfree(b64d);
+ return (err);
+@@ -455,35 +473,41 @@ int oauth_verify_rsa_sha1 (const char *m
+ */
+ char *oauth_body_hash_file(char *filename) {
+ unsigned char fb[BUFSIZ];
+- EVP_MD_CTX ctx;
++ EVP_MD_CTX *ctx;
+ size_t len=0;
+ unsigned char *md;
+ FILE *F= fopen(filename, "r");
+ if (!F) return NULL;
+
+- EVP_MD_CTX_init(&ctx);
+- EVP_DigestInit(&ctx,EVP_sha1());
++ ctx = EVP_MD_CTX_new();
++ if (ctx == NULL) {
++ return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
++ }
++ EVP_DigestInit(ctx,EVP_sha1());
+ while (!feof(F) && (len=fread(fb,sizeof(char),BUFSIZ, F))>0) {
+- EVP_DigestUpdate(&ctx, fb, len);
++ EVP_DigestUpdate(ctx, fb, len);
+ }
+ fclose(F);
+ len=0;
+ md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));
+- EVP_DigestFinal(&ctx, md,(unsigned int*) &len);
+- EVP_MD_CTX_cleanup(&ctx);
++ EVP_DigestFinal(ctx, md,(unsigned int*) &len);
++ EVP_MD_CTX_free(ctx);
+ return oauth_body_hash_encode(len, md);
+ }
+
+ char *oauth_body_hash_data(size_t length, const char *data) {
+- EVP_MD_CTX ctx;
++ EVP_MD_CTX *ctx;
+ size_t len=0;
+ unsigned char *md;
+ md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));
+- EVP_MD_CTX_init(&ctx);
+- EVP_DigestInit(&ctx,EVP_sha1());
+- EVP_DigestUpdate(&ctx, data, length);
+- EVP_DigestFinal(&ctx, md,(unsigned int*) &len);
+- EVP_MD_CTX_cleanup(&ctx);
++ ctx = EVP_MD_CTX_new();
++ if (ctx == NULL) {
++ return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX");
++ }
++ EVP_DigestInit(ctx,EVP_sha1());
++ EVP_DigestUpdate(ctx, data, length);
++ EVP_DigestFinal(ctx, md,(unsigned int*) &len);
++ EVP_MD_CTX_free(ctx);
+ return oauth_body_hash_encode(len, md);
+ }
+