summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-crypt/qca')
-rw-r--r--app-crypt/qca/files/qca-2.1.1-libressl-230-sha0.patch48
-rw-r--r--app-crypt/qca/files/qca-2.1.1-libressl-230-sslv3.patch28
-rw-r--r--app-crypt/qca/qca-2.1.1-r1.ebuild124
3 files changed, 200 insertions, 0 deletions
diff --git a/app-crypt/qca/files/qca-2.1.1-libressl-230-sha0.patch b/app-crypt/qca/files/qca-2.1.1-libressl-230-sha0.patch
new file mode 100644
index 000000000000..3e112c622a50
--- /dev/null
+++ b/app-crypt/qca/files/qca-2.1.1-libressl-230-sha0.patch
@@ -0,0 +1,48 @@
+commit 0dbed8eb38afd1561907a52283091c37e7b85156
+Author: Heiko Becker <heirecka@exherbo.org>
+Date: Thu Sep 24 23:05:21 2015 +0200
+
+ qca-ossl: Fix build without support for SHA-0
+
+ LibreSSL >= 2.3.0 removed support for SHA-0, so there's no EVP_sha
+ anymore.
+ Wikipedia says about SHA-0: "160-bit hash function published in 1993
+ under the name SHA. It was withdrawn shortly after publication due to
+ an undisclosed "significant flaw" and replaced by the slightly revised
+ version SHA-1.'
+
+ REVIEW: 125387
+
+diff --git a/plugins/qca-ossl/CMakeLists.txt b/plugins/qca-ossl/CMakeLists.txt
+index 3124f02..cdeaeca 100644
+--- a/plugins/qca-ossl/CMakeLists.txt
++++ b/plugins/qca-ossl/CMakeLists.txt
+@@ -25,6 +25,13 @@ if(OPENSSL_FOUND)
+ message(WARNING "qca-ossl will be compiled without AES CTR mode encryption support")
+ endif(HAVE_OPENSSL_AES_CTR)
+
++ check_function_exists(EVP_sha HAVE_OPENSSL_SHA0)
++ if(HAVE_OPENSSL_SHA0)
++ add_definitions(-DHAVE_OPENSSL_SHA0)
++ else(HAVE_OPENSSL_SHA0)
++ message(WARNING "qca-ossl will be compiled without SHA-0 digest algorithm support")
++ endif(HAVE_OPENSSL_SHA0)
++
+ set(QCA_OSSL_SOURCES qca-ossl.cpp)
+
+ my_automoc( QCA_OSSL_SOURCES )
+diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp
+index b34ecc1..61d9e43 100644
+--- a/plugins/qca-ossl/qca-ossl.cpp
++++ b/plugins/qca-ossl/qca-ossl.cpp
+@@ -7135,8 +7135,10 @@ public:
+ return new opensslInfoContext(this);
+ else if ( type == "sha1" )
+ return new opensslHashContext( EVP_sha1(), this, type);
++#ifdef HAVE_OPENSSL_SHA0
+ else if ( type == "sha0" )
+ return new opensslHashContext( EVP_sha(), this, type);
++#endif
+ else if ( type == "ripemd160" )
+ return new opensslHashContext( EVP_ripemd160(), this, type);
+ #ifdef HAVE_OPENSSL_MD2
diff --git a/app-crypt/qca/files/qca-2.1.1-libressl-230-sslv3.patch b/app-crypt/qca/files/qca-2.1.1-libressl-230-sslv3.patch
new file mode 100644
index 000000000000..accefc49c3d3
--- /dev/null
+++ b/app-crypt/qca/files/qca-2.1.1-libressl-230-sslv3.patch
@@ -0,0 +1,28 @@
+commit 20a587d77636186edb044cd2b71d6d90fe98d232
+Author: Heiko Becker <heirecka@exherbo.org>
+Date: Thu Sep 24 22:54:41 2015 +0200
+
+ qca-ossl: Fix build without SSLv3
+
+ This fixes building with LibreSSL >= 2.3.0 which has removed support
+ for SSLv3 completely. As far as I know OpenSSL can be configured to
+ build without it, so it might be helpful there as well.
+
+ REVIEW: 125386
+
+diff --git a/plugins/qca-ossl/qca-ossl.cpp b/plugins/qca-ossl/qca-ossl.cpp
+index cfb1e9f..b34ecc1 100644
+--- a/plugins/qca-ossl/qca-ossl.cpp
++++ b/plugins/qca-ossl/qca-ossl.cpp
+@@ -5403,9 +5403,11 @@ public:
+ ctx = SSL_CTX_new(SSLv2_client_method());
+ break;
+ #endif
++#ifndef OPENSSL_NO_SSL3_METHOD
+ case TLS::SSL_v3:
+ ctx = SSL_CTX_new(SSLv3_client_method());
+ break;
++#endif
+ case TLS::TLS_v1:
+ ctx = SSL_CTX_new(TLSv1_client_method());
+ break;
diff --git a/app-crypt/qca/qca-2.1.1-r1.ebuild b/app-crypt/qca/qca-2.1.1-r1.ebuild
new file mode 100644
index 000000000000..158e45af25d5
--- /dev/null
+++ b/app-crypt/qca/qca-2.1.1-r1.ebuild
@@ -0,0 +1,124 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit cmake-utils multibuild qmake-utils
+
+DESCRIPTION="Qt Cryptographic Architecture (QCA)"
+HOMEPAGE="http://delta.affinix.com/qca/"
+SRC_URI="mirror://kde/stable/${PN}/${PV}/src/${P}.tar.xz"
+
+LICENSE="LGPL-2.1"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~sparc-solaris"
+
+IUSE="botan debug doc examples gcrypt gpg libressl logger nss +openssl pkcs11 +qt4 qt5 sasl softstore test"
+REQUIRED_USE="|| ( qt4 qt5 )"
+
+RDEPEND="
+ !app-crypt/qca-cyrus-sasl
+ !app-crypt/qca-gnupg
+ !app-crypt/qca-logger
+ !app-crypt/qca-ossl
+ !app-crypt/qca-pkcs11
+ botan? ( dev-libs/botan )
+ gcrypt? ( dev-libs/libgcrypt:= )
+ gpg? ( app-crypt/gnupg )
+ nss? ( dev-libs/nss )
+ openssl? (
+ !libressl? ( >=dev-libs/openssl-1.0.1:0 )
+ libressl? ( dev-libs/libressl )
+ )
+ pkcs11? (
+ !libressl? ( dev-libs/openssl:0 )
+ libressl? ( dev-libs/libressl )
+ dev-libs/pkcs11-helper
+ )
+ qt4? ( dev-qt/qtcore:4 )
+ qt5? (
+ dev-qt/qtcore:5
+ dev-qt/qtconcurrent:5
+ dev-qt/qtnetwork:5
+ )
+ sasl? ( dev-libs/cyrus-sasl:2 )
+"
+DEPEND="${RDEPEND}
+ doc? ( app-doc/doxygen )
+ test? (
+ qt4? ( dev-qt/qttest:4 )
+ qt5? ( dev-qt/qttest:5 )
+ )
+"
+
+DOCS=( README TODO )
+
+PATCHES=(
+ "${FILESDIR}/${PN}-disable-pgp-test.patch"
+ "${FILESDIR}/${P}-libressl-230-sslv3.patch"
+ "${FILESDIR}/${P}-libressl-230-sha0.patch"
+)
+
+qca_plugin_use() {
+ echo -DWITH_${2:-$1}_PLUGIN=$(usex "$1")
+}
+
+pkg_setup() {
+ MULTIBUILD_VARIANTS=( $(usev qt4) $(usev qt5) )
+}
+
+src_configure() {
+ myconfigure() {
+ local mycmakeargs=(
+ -DQCA_FEATURE_INSTALL_DIR="${EPREFIX}$(${MULTIBUILD_VARIANT}_get_mkspecsdir)/features"
+ -DQCA_PLUGINS_INSTALL_DIR="${EPREFIX}$(${MULTIBUILD_VARIANT}_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 openssl ossl)
+ $(qca_plugin_use pkcs11)
+ $(qca_plugin_use sasl cyrus-sasl)
+ $(qca_plugin_use softstore)
+ -DBUILD_TESTS=$(usex test)
+ )
+
+ if [[ ${MULTIBUILD_VARIANT} == qt4 ]]; then
+ mycmakeargs+=(-DQT4_BUILD=ON)
+ fi
+
+ cmake-utils_src_configure
+ }
+
+ multibuild_foreach_variant myconfigure
+}
+
+src_compile() {
+ multibuild_foreach_variant cmake-utils_src_compile
+}
+
+src_test() {
+ mytest() {
+ local -x QCA_PLUGIN_PATH="${BUILD_DIR}/lib/qca"
+ cmake-utils_src_test
+ }
+
+ multibuild_foreach_variant mytest
+}
+
+src_install() {
+ multibuild_foreach_variant cmake-utils_src_install
+
+ if use doc; then
+ pushd "${BUILD_DIR}" >/dev/null || die
+ doxygen Doxyfile.in || die
+ dodoc -r apidocs/html
+ popd >/dev/null || die
+ fi
+
+ if use examples; then
+ dodoc -r "${S}"/examples
+ fi
+}