commit fe4d6b20b42f10933a1ebd3ba696bf3d8d3e83eb
parent 05253d635403fd644d161a5039e250bde237c84a
Author: parazyd <parazyd@dyne.org>
Date: Mon, 26 Nov 2018 15:37:07 +0100
dev-libs/opensc: Add 0.19.0 with libressl patches.
Diffstat:
5 files changed, 244 insertions(+), 0 deletions(-)
diff --git a/dev-libs/opensc/Manifest b/dev-libs/opensc/Manifest
@@ -0,0 +1 @@
+DIST opensc-0.19.0.tar.gz 2080320 BLAKE2B c07df317f26562107680ed586e9a1ea83252c10a7dd227cffe51de709d9c888874963f6835a68f83f212d83f264b0231ea7428ed8d3ecce74cb9265d8191040a SHA512 90659133fb593cbf82ed6502e3858f34119bff051e3090489b7622659dcb1c26d389a4715892aa60a5606bc0ce115bd6c504521abfb965de9ad46441e4ed2b8e
diff --git a/dev-libs/opensc/files/libressl.patch b/dev-libs/opensc/files/libressl.patch
@@ -0,0 +1,44 @@
+diff --git a/src/libopensc/sc-ossl-compat.h b/src/libopensc/sc-ossl-compat.h
+index 8ef5a94..2124eb5 100644
+--- a/src/libopensc/sc-ossl-compat.h
++++ b/src/libopensc/sc-ossl-compat.h
+@@ -97,7 +97,7 @@ extern "C" {
+ #if !defined(LIBRESSL_VERSION_NUMBER) || LIBRESSL_VERSION_NUMBER < 0x2050300fL
+ #define X509_up_ref(cert) CRYPTO_add(&cert->references, 1, CRYPTO_LOCK_X509)
+ #endif
+-#if !defined(LIBRESSL_VERSION_NUMBER) || LIBRESSL_VERSION_NUMBER < 0x20700000L
++#if !defined(LIBRESSL_VERSION_NUMBER) || LIBRESSL_VERSION_NUMBER
+ #define OPENSSL_malloc_init CRYPTO_malloc_init
+ #define EVP_PKEY_get0_RSA(x) (x->pkey.rsa)
+ #define EVP_PKEY_get0_EC_KEY(x) (x->pkey.ec)
+@@ -138,7 +138,7 @@ extern "C" {
+ # endif
+ #endif
+
+-#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2050300fL)
++#if OPENSSL_VERSION_NUMBER < 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER))
+
+ #define RSA_bits(R) (BN_num_bits(R->n))
+
+diff --git a/src/tools/sc-hsm-tool.c b/src/tools/sc-hsm-tool.c
+index 9c1d7c1..2111caf 100644
+--- a/src/tools/sc-hsm-tool.c
++++ b/src/tools/sc-hsm-tool.c
+@@ -1761,16 +1761,10 @@ int main(int argc, char *argv[])
+ }
+ }
+
+-#if OPENSSL_VERSION_NUMBER >= 0x10100000L || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x20700000L)
+- OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS
+- | OPENSSL_INIT_ADD_ALL_CIPHERS
+- | OPENSSL_INIT_ADD_ALL_DIGESTS,
+- NULL);
+-#else
++
+ CRYPTO_malloc_init();
+ ERR_load_crypto_strings();
+ OpenSSL_add_all_algorithms();
+-#endif
+
+ memset(&ctx_param, 0, sizeof(sc_context_param_t));
+ ctx_param.app_name = app_name;
diff --git a/dev-libs/opensc/files/opensc-0.19.0-p11test_common.h.patch b/dev-libs/opensc/files/opensc-0.19.0-p11test_common.h.patch
@@ -0,0 +1,108 @@
+From d1e4f4879b8d0a7423afc1c9a3632da4763ee31c Mon Sep 17 00:00:00 2001
+From: Alon Bar-Lev <alon.barlev@gmail.com>
+Date: Sat, 15 Sep 2018 11:04:13 +0300
+Subject: [PATCH] missing include
+
+---
+ src/tests/p11test/p11test_common.h | 89 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 89 insertions(+)
+ create mode 100644 src/tests/p11test/p11test_common.h
+
+diff --git a/src/tests/p11test/p11test_common.h b/src/tests/p11test/p11test_common.h
+new file mode 100644
+index 0000000..d3ca304
+--- /dev/null
++++ b/src/tests/p11test/p11test_common.h
+@@ -0,0 +1,89 @@
++/*
++ * p11test_common.h: Test suite shared declarations for PKCS#11 API
++ *
++ * Copyright (C) 2016 Martin Strhársky <strharsky.martin@gmail.com>
++ * Copyright (C) 2016, 2017 Red Hat, Inc.
++ *
++ * Author: Jakub Jelen <jjelen@redhat.com>
++ *
++ * This library is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Lesser General Public
++ * License as published by the Free Software Foundation; either
++ * version 2.1 of the License, or (at your option) any later version.
++ *
++ * This library is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * Lesser General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program. If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#ifndef P11TEST_COMMON_H
++#define P11TEST_COMMON_H
++#include "config.h"
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <setjmp.h>
++#include <cmocka.h>
++#include "pkcs11/pkcs11.h"
++#include "libopensc/sc-ossl-compat.h"
++
++#define MAX_MECHS 200
++
++#ifndef NDEBUG
++ #define debug_print(fmt, ...) \
++ { fprintf(stderr, fmt "\n", ##__VA_ARGS__); } while (0)
++#else
++ #define debug_print(fmt, ...)
++#endif
++
++#define FLAGS_SIGN 0x01
++#define FLAGS_SIGN_OPENSSL 0x02
++#define FLAGS_SIGN_ANY ( FLAGS_SIGN | FLAGS_SIGN_OPENSSL )
++#define FLAGS_DECRYPT 0x04
++#define FLAGS_DECRYPT_OPENSSL 0x08
++#define FLAGS_DECRYPT_ANY ( FLAGS_DECRYPT | FLAGS_DECRYPT_OPENSSL )
++
++typedef struct {
++ char *outfile;
++ FILE *fd;
++ int in_test;
++ int first;
++ int in_data;
++ int first_data;
++} log_context_t;
++
++typedef struct {
++ CK_MECHANISM_TYPE mech;
++ CK_MECHANISM_TYPE hash;
++ CK_RSA_PKCS_MGF_TYPE mgf;
++ int salt;
++ int usage_flags;
++ int result_flags;
++} test_mech_t;
++
++typedef struct {
++ CK_FUNCTION_LIST_PTR function_pointer;
++ CK_SLOT_ID slot_id;
++ CK_SESSION_HANDLE session_handle;
++ CK_UTF8CHAR* pin;
++ size_t pin_length;
++ char *library_path;
++ unsigned int interactive;
++ log_context_t log;
++
++ test_mech_t rsa_mechs[MAX_MECHS];
++ size_t num_rsa_mechs;
++ test_mech_t ec_mechs[MAX_MECHS];
++ size_t num_ec_mechs;
++ test_mech_t keygen_mechs[MAX_MECHS];
++ size_t num_keygen_mechs;
++} token_info_t;
++
++token_info_t token;
++
++#endif /* P11TEST_COMMON_H */
++
+--
+2.16.4
+
diff --git a/dev-libs/opensc/metadata.xml b/dev-libs/opensc/metadata.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>crypto@gentoo.org</email>
+ <name>Crypto</name>
+ </maintainer>
+ <longdescription>
+ OpenSC is a library for accessing SmartCard devices. It is also
+ the core library of the OpenSC project.
+
+ Basic functionality (e.g. SELECT FILE, READ BINARY) should work on
+ any ISO 7816-4 compatible SmartCard. Encryption and decryption
+ using private keys on the SmartCard is possible with PKCS #15
+ compatible cards, such as the FINEID (Finnish Electronic IDentity)
+ card.
+ </longdescription>
+ <use>
+ <flag name="ctapi">Use CT-API for accessing Smartcard hardware</flag>
+ <flag name="notify">Enable notifications</flag>
+ <flag name="openct">Use <pkg>dev-libs/openct</pkg> (and CT-API) for accessing Smartcard hardware</flag>
+ <flag name="pcsc-lite">Use <pkg>sys-apps/pcsc-lite</pkg> (and PC/SC API) for accessing Smartcard hardware</flag>
+ <flag name="secure-messaging">Enable secure messaging</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">OpenSC/OpenSC</remote-id>
+ <remote-id type="sourceforge">opensc</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-libs/opensc/opensc-0.19.0-r2.ebuild b/dev-libs/opensc/opensc-0.19.0-r2.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit bash-completion-r1
+
+DESCRIPTION="Libraries and applications to access smartcards"
+HOMEPAGE="https://github.com/OpenSC/OpenSC/wiki"
+SRC_URI="https://github.com/OpenSC/OpenSC/releases/download/${PV}/${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="ctapi doc libressl openct notify +pcsc-lite readline secure-messaging ssl test zlib"
+
+RDEPEND="zlib? ( sys-libs/zlib )
+ readline? ( sys-libs/readline:0= )
+ libressl? ( dev-libs/libressl:0= )
+ openct? ( >=dev-libs/openct-0.5.0 )
+ pcsc-lite? ( >=sys-apps/pcsc-lite-1.3.0 )
+ notify? ( dev-libs/glib:2= )"
+DEPEND="${RDEPEND}
+ app-text/docbook-xsl-stylesheets
+ dev-libs/libxslt
+ test? ( dev-util/cmocka )"
+BDEPEND="virtual/pkgconfig"
+
+REQUIRED_USE="
+ pcsc-lite? ( !openct !ctapi )
+ openct? ( !pcsc-lite !ctapi )
+ ctapi? ( !pcsc-lite !openct )
+ || ( pcsc-lite openct ctapi )"
+
+PATCHES=(
+ "${FILESDIR}/${P}-p11test_common.h.patch"
+ "${FILESDIR}/libressl.patch"
+)
+
+src_configure() {
+ econf \
+ --with-completiondir="$(get_bashcompdir)" \
+ --disable-openpace \
+ --disable-static \
+ --enable-man \
+ $(use_enable ctapi) \
+ $(use_enable doc) \
+ $(use_enable notify ) \
+ $(use_enable openct) \
+ $(use_enable openct) \
+ $(use_enable pcsc-lite pcsc) \
+ $(use_enable readline) \
+ $(use_enable secure-messaging sm) \
+ $(use_enable ssl openssl) \
+ $(use_enable test tests) \
+ $(use_enable zlib)
+}
+
+src_install() {
+ default
+ find "${D}" -name '*.la' -delete || die
+}