diff options
-rw-r--r-- | app-crypt/qca/Manifest | 1 | ||||
-rw-r--r-- | app-crypt/qca/files/qca-2.3.1-libressl.patch | 104 | ||||
-rw-r--r-- | app-crypt/qca/qca-2.3.1.ebuild | 91 |
3 files changed, 196 insertions, 0 deletions
diff --git a/app-crypt/qca/Manifest b/app-crypt/qca/Manifest index b72a547..0694198 100644 --- a/app-crypt/qca/Manifest +++ b/app-crypt/qca/Manifest @@ -1,2 +1,3 @@ DIST qca-2.2.1.tar.xz 691676 BLAKE2B d5bcc0d6e791811e1efcdbf2e09916fe40ad682b0e59b2993c73a5bd79e09fc28facdec81259a982bee05223c8dfce78b9a6b729ca4e566c0901a13b91575379 SHA512 3a0e8aa7cf3ea9a7244facaf1d521ebca2753af37636e7bf5f21c57ae880ac9682ae7d6d9fa5ce41b73568ff9538214956b89cd41228c2cb828d9068c2031a9c DIST qca-2.3.0.tar.xz 729504 BLAKE2B 71cf9dfae00066c14e1055da1fa1a8e1210f538b1addfde1b99a9b26b1e8f7dd61e289d0f505b5ec04d5f4745216d4fd0f8be8f8de9e9cbf74123907ba703d0e SHA512 ca9251868e073834562fa62ffc64b3e7817c9ddadc6bc3fb99cf8b5c8d859969562170a98874be9590c617b2dd8e5590d2c83792554f54bb880c677902db22fe +DIST qca-2.3.1.tar.xz 725984 BLAKE2B a99121dd95822ef5e1057dc9ad9250bb14486f42b0571936453644bc7c5649f16cbc918fa04d4a5af2c62bc35cc672159a84e27a86e685cfe320518a42076052 SHA512 092704a8d7c5973f05c82584ea55b4f8f874965aea943277e50fde873913a9bdad6a51ea74fc0036bbb632a13141cb4c030504229c06779890286205929f6021 diff --git a/app-crypt/qca/files/qca-2.3.1-libressl.patch b/app-crypt/qca/files/qca-2.3.1-libressl.patch new file mode 100644 index 0000000..0424378 --- /dev/null +++ b/app-crypt/qca/files/qca-2.3.1-libressl.patch @@ -0,0 +1,104 @@ +From 56f60bc221d88e0753494c3e7ee320dc0f9de030 Mon Sep 17 00:00:00 2001 +From: Stefan Strogin <steils@gentoo.org> +Date: Wed, 26 Feb 2020 04:41:28 +0200 +Subject: [PATCH] Fix build with LibreSSL + +Signed-off-by: Stefan Strogin <steils@gentoo.org> +--- + plugins/qca-ossl/qca-ossl.cpp | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp +index ee872d72..4ee5d7c8 100644 +--- a/plugins/qca-ossl/qca-ossl.cpp ++++ b/plugins/qca-ossl/qca-ossl.cpp +@@ -41,7 +41,13 @@ + #include <openssl/pkcs12.h> + #include <openssl/ssl.h> + ++#ifndef RSA_F_RSA_OSSL_PRIVATE_DECRYPT ++#define RSA_F_RSA_OSSL_PRIVATE_DECRYPT RSA_F_RSA_EAY_PRIVATE_DECRYPT ++#endif ++ ++#ifndef LIBRESSL_VERSION_NUMBER + #include <openssl/kdf.h> ++#endif + + using namespace QCA; + +@@ -1262,6 +1268,7 @@ public: + protected: + }; + ++#ifndef LIBRESSL_VERSION_NUMBER + class opensslHkdfContext : public HKDFContext + { + Q_OBJECT +@@ -1291,6 +1298,7 @@ public: + return out; + } + }; ++#endif // LIBRESSL_VERSION_NUMBER + + class opensslHMACContext : public MACContext + { +@@ -4990,7 +4998,11 @@ public: + case TLS::TLS_v1: + ctx = SSL_CTX_new(TLS_client_method()); + SSL_CTX_set_min_proto_version(ctx, TLS1_VERSION); ++#ifdef TLS1_3_VERSION + SSL_CTX_set_max_proto_version(ctx, TLS1_3_VERSION); ++#else ++ SSL_CTX_set_max_proto_version(ctx, TLS1_2_VERSION); ++#endif + break; + case TLS::DTLS_v1: + default: +@@ -5011,7 +5023,11 @@ public: + QStringList cipherList; + for(int i = 0; i < sk_SSL_CIPHER_num(sk); ++i) { + const SSL_CIPHER *thisCipher = sk_SSL_CIPHER_value(sk, i); ++#ifndef LIBRESSL_VERSION_NUMBER + cipherList += QString::fromLatin1(SSL_CIPHER_standard_name(thisCipher)); ++#else ++ cipherList += QString::fromLatin1(SSL_CIPHER_get_name(thisCipher)); ++#endif + } + sk_SSL_CIPHER_free(sk); + +@@ -5404,7 +5420,11 @@ public: + sessInfo.version = TLS::TLS_v1; + } + ++#ifndef LIBRESSL_VERSION_NUMBER + sessInfo.cipherSuite = QString::fromLatin1(SSL_CIPHER_standard_name(SSL_get_current_cipher(ssl))); ++#else ++ sessInfo.cipherSuite = QString::fromLatin1(SSL_CIPHER_get_name(SSL_get_current_cipher(ssl))); ++#endif + + sessInfo.cipherMaxBits = SSL_get_cipher_bits(ssl, &(sessInfo.cipherBits)); + +@@ -6751,7 +6771,9 @@ public: + #endif + list += QStringLiteral("pbkdf1(sha1)"); + list += QStringLiteral("pbkdf2(sha1)"); ++#ifndef LIBRESSL_VERSION_NUMBER + list += QStringLiteral("hkdf(sha256)"); ++#endif + list += QStringLiteral("pkey"); + list += QStringLiteral("dlgroup"); + list += QStringLiteral("rsa"); +@@ -6820,8 +6842,10 @@ public: + #endif + else if ( type == QLatin1String("pbkdf2(sha1)") ) + return new opensslPbkdf2Context( this, type ); ++#ifndef LIBRESSL_VERSION_NUMBER + else if ( type == QLatin1String("hkdf(sha256)") ) + return new opensslHkdfContext( this, type ); ++#endif + else if ( type == QLatin1String("hmac(md5)") ) + return new opensslHMACContext( EVP_md5(), this, type ); + else if ( type == QLatin1String("hmac(sha1)") ) +-- +2.27.0 + diff --git a/app-crypt/qca/qca-2.3.1.ebuild b/app-crypt/qca/qca-2.3.1.ebuild new file mode 100644 index 0000000..ebe13eb --- /dev/null +++ b/app-crypt/qca/qca-2.3.1.ebuild @@ -0,0 +1,91 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit kde.org cmake qmake-utils + +DESCRIPTION="Qt Cryptographic Architecture (QCA)" +HOMEPAGE="https://userbase.kde.org/QCA" +SRC_URI="mirror://kde/stable/${PN}/${PV}/${P}.tar.xz" + +LICENSE="LGPL-2.1" +SLOT="2" +KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris" +IUSE="botan debug doc examples gcrypt gpg libressl logger nss pkcs11 sasl softstore +ssl test" + +RESTRICT="!test? ( test )" + +BDEPEND=" + doc? ( app-doc/doxygen ) +" +RDEPEND=" + dev-qt/qtcore:5 + botan? ( dev-libs/botan:= ) + gcrypt? ( dev-libs/libgcrypt:= ) + gpg? ( app-crypt/gnupg ) + nss? ( dev-libs/nss ) + pkcs11? ( + !libressl? ( >=dev-libs/openssl-1.1 ) + libressl? ( dev-libs/libressl:0= ) + dev-libs/pkcs11-helper + ) + sasl? ( dev-libs/cyrus-sasl:2 ) + ssl? ( + !libressl? ( >=dev-libs/openssl-1.1:0= ) + libressl? ( dev-libs/libressl:= ) + ) +" +DEPEND="${RDEPEND} + test? ( + dev-qt/qtnetwork:5 + dev-qt/qttest:5 + ) +" + +PATCHES=( + "${FILESDIR}/${PN}-disable-pgp-test.patch" + "${FILESDIR}/${P}-libressl.patch" +) + +qca_plugin_use() { + echo -DWITH_${2:-$1}_PLUGIN=$(usex "$1") +} + +src_configure() { + local mycmakeargs=( + -DQCA_FEATURE_INSTALL_DIR="${EPREFIX}$(qt5_get_mkspecsdir)/features" + -DQCA_PLUGINS_INSTALL_DIR="${EPREFIX}$(qt5_get_plugindir)" + $(qca_plugin_use botan) + $(qca_plugin_use gcrypt) + $(qca_plugin_use gpg gnupg) + $(qca_plugin_use logger) + $(qca_plugin_use nss) + $(qca_plugin_use pkcs11) + $(qca_plugin_use sasl cyrus-sasl) + $(qca_plugin_use softstore) + $(qca_plugin_use ssl ossl) + -DBUILD_TESTS=$(usex test) + ) + cmake_src_configure +} + +src_test() { + local -x QCA_PLUGIN_PATH="${BUILD_DIR}/lib/qca" + cmake_src_test +} + +src_install() { + cmake_src_install + + if use doc; then + pushd "${BUILD_DIR}" >/dev/null || die + doxygen Doxyfile || die + dodoc -r apidocs/html + popd >/dev/null || die + fi + + if use examples; then + dodoc -r "${S}"/examples + fi +} |