From 371e360a000d4a3fab6c3eca9f9a2f91a852708a Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Fri, 24 Aug 2018 02:36:14 +0200 Subject: [PATCH] libmesode: Backport for openssl 1.1.1 support --- packages/libmesode/openssl-1.1-compat.patch | 46 +++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 packages/libmesode/openssl-1.1-compat.patch diff --git a/packages/libmesode/openssl-1.1-compat.patch b/packages/libmesode/openssl-1.1-compat.patch new file mode 100644 index 000000000..730cfbc64 --- /dev/null +++ b/packages/libmesode/openssl-1.1-compat.patch @@ -0,0 +1,46 @@ +From 5ab52edb943985fc3943b33d9a6be1b23045a052 Mon Sep 17 00:00:00 2001 +From: Jelle van der Waa +Date: Wed, 15 Mar 2017 20:25:53 +0100 +Subject: [PATCH] Fix build with OpenSSL 1.1.x + +OpenSSL 1.1.x made many structs opaque and helpers are required to access +members of struct. TX509_PUBKEY_get0_param returns 1 for succes and 0 on +failure, this has not been handled yet by this patch. +--- + src/tls_openssl.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/src/tls_openssl.c b/src/tls_openssl.c +index 3118adc..89e2643 100644 +--- a/src/tls_openssl.c ++++ b/src/tls_openssl.c +@@ -168,7 +168,15 @@ static struct _tlscert_t *_x509_to_tlscert(xmpp_ctx_t *ctx, X509 *cert) + } + + tlscert->keyalg = NULL; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + int alg_nid = OBJ_obj2nid(cert->cert_info->key->algor->algorithm); ++#else ++ X509_PUBKEY *pubkey = X509_get_X509_PUBKEY(cert); ++ ASN1_OBJECT *ppkalg; ++ // FIXME: handle 0 on error. ++ X509_PUBKEY_get0_param(&ppkalg, NULL, NULL, NULL, NULL); ++ int alg_nid = OBJ_obj2nid(ppkalg); ++#endif + if (alg_nid != NID_undef) { + const char* keyalg = OBJ_nid2ln(alg_nid); + if (keyalg) { +@@ -177,7 +185,13 @@ static struct _tlscert_t *_x509_to_tlscert(xmpp_ctx_t *ctx, X509 *cert) + } + + tlscert->sigalg = NULL; ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + alg_nid = OBJ_obj2nid(cert->sig_alg->algorithm); ++#else ++ const X509_ALGOR *palg; ++ X509_get0_signature(NULL, &palg, cert); ++ alg_nid = OBJ_obj2nid(palg->algorithm); ++#endif + if (alg_nid != NID_undef) { + const char* sigalg = OBJ_nid2ln(alg_nid); + if (sigalg) {