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 | |
| 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>
| -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 0000000000..8691eae2b5 --- /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 3311da5a8f..498764ac83 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 | ||
