diff options
author | Khem Raj <raj.khem@gmail.com> | 2018-09-04 10:59:52 -0700 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2018-09-08 13:32:12 -0700 |
commit | 5d7efc7479f27412b9efc744f6f4244786914b4e (patch) | |
tree | 2ba00c13225b0498494e7839527023f09c52c22e /meta-oe | |
parent | bfbcc00cb95633c2e55f5adb3f1969867e1d1f89 (diff) | |
download | meta-openembedded-5d7efc7479f27412b9efc744f6f4244786914b4e.tar.gz |
liboauth: Fix build with openSSL 1.1.x
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-oe')
-rw-r--r-- | meta-oe/recipes-support/liboauth/liboauth/0001-Support-OpenSSL-1.1.0.patch | 151 | ||||
-rw-r--r-- | meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb | 4 |
2 files changed, 154 insertions, 1 deletions
diff --git a/meta-oe/recipes-support/liboauth/liboauth/0001-Support-OpenSSL-1.1.0.patch b/meta-oe/recipes-support/liboauth/liboauth/0001-Support-OpenSSL-1.1.0.patch new file mode 100644 index 000000000..8691eae2b --- /dev/null +++ b/meta-oe/recipes-support/liboauth/liboauth/0001-Support-OpenSSL-1.1.0.patch | |||
@@ -0,0 +1,151 @@ | |||
1 | From c14d9bf71753a38df57cc6538b22ed389d2c2cb1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Tue, 4 Sep 2018 17:18:51 -0700 | ||
4 | Subject: [PATCH] Support OpenSSL 1.1.0 | ||
5 | |||
6 | Taken from https://github.com/x42/liboauth/issues/9 | ||
7 | |||
8 | Upstream-Status: Submitted[https://github.com/x42/liboauth/issues/9] | ||
9 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
10 | --- | ||
11 | src/hash.c | 65 ++++++++++++++++++++++++++++++++++++------------------ | ||
12 | 1 file changed, 44 insertions(+), 21 deletions(-) | ||
13 | |||
14 | diff --git a/src/hash.c b/src/hash.c | ||
15 | index 17ff5c8..e128826 100644 | ||
16 | --- a/src/hash.c | ||
17 | +++ b/src/hash.c | ||
18 | @@ -362,6 +362,11 @@ looser: | ||
19 | #include "oauth.h" // base64 encode fn's. | ||
20 | #include <openssl/hmac.h> | ||
21 | |||
22 | +#if OPENSSL_VERSION_NUMBER < 0x10100000 | ||
23 | +#define EVP_MD_CTX_new EVP_MD_CTX_create | ||
24 | +#define EVP_MD_CTX_free EVP_MD_CTX_destroy | ||
25 | +#endif | ||
26 | + | ||
27 | char *oauth_sign_hmac_sha1 (const char *m, const char *k) { | ||
28 | return(oauth_sign_hmac_sha1_raw (m, strlen(m), k, strlen(k))); | ||
29 | } | ||
30 | @@ -386,7 +391,7 @@ char *oauth_sign_rsa_sha1 (const char *m, const char *k) { | ||
31 | unsigned char *sig = NULL; | ||
32 | unsigned char *passphrase = NULL; | ||
33 | unsigned int len=0; | ||
34 | - EVP_MD_CTX md_ctx; | ||
35 | + EVP_MD_CTX *md_ctx; | ||
36 | |||
37 | EVP_PKEY *pkey; | ||
38 | BIO *in; | ||
39 | @@ -399,24 +404,31 @@ char *oauth_sign_rsa_sha1 (const char *m, const char *k) { | ||
40 | return xstrdup("liboauth/OpenSSL: can not read private key"); | ||
41 | } | ||
42 | |||
43 | + md_ctx = EVP_MD_CTX_new(); | ||
44 | + if (md_ctx == NULL) { | ||
45 | + return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX"); | ||
46 | + } | ||
47 | + | ||
48 | len = EVP_PKEY_size(pkey); | ||
49 | sig = (unsigned char*)xmalloc((len+1)*sizeof(char)); | ||
50 | |||
51 | - EVP_SignInit(&md_ctx, EVP_sha1()); | ||
52 | - EVP_SignUpdate(&md_ctx, m, strlen(m)); | ||
53 | - if (EVP_SignFinal (&md_ctx, sig, &len, pkey)) { | ||
54 | + EVP_SignInit(md_ctx, EVP_sha1()); | ||
55 | + EVP_SignUpdate(md_ctx, m, strlen(m)); | ||
56 | + if (EVP_SignFinal (md_ctx, sig, &len, pkey)) { | ||
57 | char *tmp; | ||
58 | sig[len] = '\0'; | ||
59 | tmp = oauth_encode_base64(len,sig); | ||
60 | OPENSSL_free(sig); | ||
61 | EVP_PKEY_free(pkey); | ||
62 | + EVP_MD_CTX_free(md_ctx); | ||
63 | return tmp; | ||
64 | } | ||
65 | + EVP_MD_CTX_free(md_ctx); | ||
66 | return xstrdup("liboauth/OpenSSL: rsa-sha1 signing failed"); | ||
67 | } | ||
68 | |||
69 | int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) { | ||
70 | - EVP_MD_CTX md_ctx; | ||
71 | + EVP_MD_CTX *md_ctx; | ||
72 | EVP_PKEY *pkey; | ||
73 | BIO *in; | ||
74 | X509 *cert = NULL; | ||
75 | @@ -437,13 +449,18 @@ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) { | ||
76 | return -2; | ||
77 | } | ||
78 | |||
79 | + md_ctx = EVP_MD_CTX_new(); | ||
80 | + if (md_ctx == NULL) { | ||
81 | + return -2; | ||
82 | + } | ||
83 | + | ||
84 | b64d= (unsigned char*) xmalloc(sizeof(char)*strlen(s)); | ||
85 | slen = oauth_decode_base64(b64d, s); | ||
86 | |||
87 | - EVP_VerifyInit(&md_ctx, EVP_sha1()); | ||
88 | - EVP_VerifyUpdate(&md_ctx, m, strlen(m)); | ||
89 | - err = EVP_VerifyFinal(&md_ctx, b64d, slen, pkey); | ||
90 | - EVP_MD_CTX_cleanup(&md_ctx); | ||
91 | + EVP_VerifyInit(md_ctx, EVP_sha1()); | ||
92 | + EVP_VerifyUpdate(md_ctx, m, strlen(m)); | ||
93 | + err = EVP_VerifyFinal(md_ctx, b64d, slen, pkey); | ||
94 | + EVP_MD_CTX_free(md_ctx); | ||
95 | EVP_PKEY_free(pkey); | ||
96 | xfree(b64d); | ||
97 | return (err); | ||
98 | @@ -455,35 +472,41 @@ int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) { | ||
99 | */ | ||
100 | char *oauth_body_hash_file(char *filename) { | ||
101 | unsigned char fb[BUFSIZ]; | ||
102 | - EVP_MD_CTX ctx; | ||
103 | + EVP_MD_CTX *ctx; | ||
104 | size_t len=0; | ||
105 | unsigned char *md; | ||
106 | FILE *F= fopen(filename, "r"); | ||
107 | if (!F) return NULL; | ||
108 | |||
109 | - EVP_MD_CTX_init(&ctx); | ||
110 | - EVP_DigestInit(&ctx,EVP_sha1()); | ||
111 | + ctx = EVP_MD_CTX_new(); | ||
112 | + if (ctx == NULL) { | ||
113 | + return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX"); | ||
114 | + } | ||
115 | + EVP_DigestInit(ctx,EVP_sha1()); | ||
116 | while (!feof(F) && (len=fread(fb,sizeof(char),BUFSIZ, F))>0) { | ||
117 | - EVP_DigestUpdate(&ctx, fb, len); | ||
118 | + EVP_DigestUpdate(ctx, fb, len); | ||
119 | } | ||
120 | fclose(F); | ||
121 | len=0; | ||
122 | md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char)); | ||
123 | - EVP_DigestFinal(&ctx, md,(unsigned int*) &len); | ||
124 | - EVP_MD_CTX_cleanup(&ctx); | ||
125 | + EVP_DigestFinal(ctx, md,(unsigned int*) &len); | ||
126 | + EVP_MD_CTX_free(ctx); | ||
127 | return oauth_body_hash_encode(len, md); | ||
128 | } | ||
129 | |||
130 | char *oauth_body_hash_data(size_t length, const char *data) { | ||
131 | - EVP_MD_CTX ctx; | ||
132 | + EVP_MD_CTX *ctx; | ||
133 | size_t len=0; | ||
134 | unsigned char *md; | ||
135 | md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char)); | ||
136 | - EVP_MD_CTX_init(&ctx); | ||
137 | - EVP_DigestInit(&ctx,EVP_sha1()); | ||
138 | - EVP_DigestUpdate(&ctx, data, length); | ||
139 | - EVP_DigestFinal(&ctx, md,(unsigned int*) &len); | ||
140 | - EVP_MD_CTX_cleanup(&ctx); | ||
141 | + ctx = EVP_MD_CTX_new(); | ||
142 | + if (ctx == NULL) { | ||
143 | + return xstrdup("liboauth/OpenSSL: failed to allocate EVP_MD_CTX"); | ||
144 | + } | ||
145 | + EVP_DigestInit(ctx,EVP_sha1()); | ||
146 | + EVP_DigestUpdate(ctx, data, length); | ||
147 | + EVP_DigestFinal(ctx, md,(unsigned int*) &len); | ||
148 | + EVP_MD_CTX_free(ctx); | ||
149 | return oauth_body_hash_encode(len, md); | ||
150 | } | ||
151 | |||
diff --git a/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb b/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb index 3311da5a8..498764ac8 100644 --- a/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb +++ b/meta-oe/recipes-support/liboauth/liboauth_1.0.3.bb | |||
@@ -9,7 +9,9 @@ LIC_FILES_CHKSUM = "file://COPYING.MIT;md5=6266718a5241c045c8099d9be48817df \ | |||
9 | SECTION = "libs" | 9 | SECTION = "libs" |
10 | DEPENDS = "curl openssl" | 10 | DEPENDS = "curl openssl" |
11 | 11 | ||
12 | SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BP}.tar.gz" | 12 | SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BP}.tar.gz \ |
13 | file://0001-Support-OpenSSL-1.1.0.patch \ | ||
14 | " | ||
13 | SRC_URI[md5sum] = "689b46c2b3ab1a39735ac33f714c4f7f" | 15 | SRC_URI[md5sum] = "689b46c2b3ab1a39735ac33f714c4f7f" |
14 | SRC_URI[sha256sum] = "0df60157b052f0e774ade8a8bac59d6e8d4b464058cc55f9208d72e41156811f" | 16 | SRC_URI[sha256sum] = "0df60157b052f0e774ade8a8bac59d6e8d4b464058cc55f9208d72e41156811f" |
15 | 17 | ||