diff options
-rw-r--r-- | dev-libs/opensc/Manifest | 1 | ||||
-rw-r--r-- | dev-libs/opensc/files/opensc-0.17.0-build.patch | 100 | ||||
-rw-r--r-- | dev-libs/opensc/opensc-0.17.0.ebuild | 60 |
3 files changed, 161 insertions, 0 deletions
diff --git a/dev-libs/opensc/Manifest b/dev-libs/opensc/Manifest index c55f52e15fd..f8e3c0ca396 100644 --- a/dev-libs/opensc/Manifest +++ b/dev-libs/opensc/Manifest @@ -1 +1,2 @@ DIST opensc-0.16.0.tar.gz 1760418 SHA256 3ac8c29542bb48179e7086d35a1b8907a4e86aca3de3323c2f48bd74eaaf5729 SHA512 15f7d62388dde6dad226acab3cd54f8e2f2f53684dc0cb976c6fc6fbdb4487be931ca69bf965ab07c51efd16be64d5411f10bacea11a07fc823c92dd7bb25139 WHIRLPOOL 8207606e4994d7744fc93cc6aef1b0cde8a2073e791aebf71e82669013d261f82abc6e41ddf971fb136d4580c21ea475bb2e36bbdec600b354f5e1decec4b02a +DIST opensc-0.17.0.tar.gz 1900483 SHA256 4cd8928c5c5787dd8beee6c77be25032996dedaa4df8bfdd369bcbcde9980bd1 SHA512 64c4f44be64e315fba96974c23331b06805b258ea6296bcc741b8f50b35bba4ab5aace8137f2642e114210465e6312a38e83d3261952b56ab7c06a43d475a7f7 WHIRLPOOL d48e591ec47589945dd8b4b358ce5c51c980ec75f7ab0724884fa2fe28cedeeacbc575a5ae4b0a354afcc5ffc608e0502c28244c8f3ebd3867dd7e5b7f270259 diff --git a/dev-libs/opensc/files/opensc-0.17.0-build.patch b/dev-libs/opensc/files/opensc-0.17.0-build.patch new file mode 100644 index 00000000000..8a51d7ac445 --- /dev/null +++ b/dev-libs/opensc/files/opensc-0.17.0-build.patch @@ -0,0 +1,100 @@ +From 65b302e33b710833d4d14bf8eaf00acdaa436c39 Mon Sep 17 00:00:00 2001 +From: Frank Morgner <frankmorgner@gmail.com> +Date: Wed, 19 Jul 2017 00:09:36 +0200 +Subject: [PATCH] sc-hsm: fixed building with --disable-sm + +Closes https://github.com/OpenSC/OpenSC/pull/1103 +--- + src/libopensc/card-sc-hsm.c | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +diff --git a/src/libopensc/card-sc-hsm.c b/src/libopensc/card-sc-hsm.c +index cfa084a06..1f61e0138 100644 +--- a/src/libopensc/card-sc-hsm.c ++++ b/src/libopensc/card-sc-hsm.c +@@ -284,7 +284,9 @@ static int sc_hsm_soc_select_minbioclient(sc_card_t *card) + }; + + /* Select MinBioClient */ ++#ifdef ENABLE_SM + sc_sm_stop(card); ++#endif + sc_format_apdu(card, &apdu, SC_APDU_CASE_3_SHORT, 0xA4, 0x04, 0x0C); + apdu.data = minBioClient_aid.value; + apdu.datalen = minBioClient_aid.len; +@@ -533,7 +535,9 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data, + sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data; + sc_apdu_t apdu; + u8 cmdbuff[16]; ++#ifdef ENABLE_SM + u8 rbuf[SC_MAX_APDU_BUFFER_SIZE]; ++#endif + int r; + int cmd = data->cmd; + size_t pin2_len = data->pin2.len; +@@ -563,7 +567,10 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data, + if ((card->type == SC_CARD_TYPE_SC_HSM_SOC || card->reader->uid.len + || cmd == SC_PIN_CMD_GET_SESSION_PIN) + && (data->cmd != SC_PIN_CMD_GET_INFO) +- && card->sm_ctx.sm_mode != SM_MODE_TRANSMIT) { ++#ifdef ENABLE_SM ++ && card->sm_ctx.sm_mode != SM_MODE_TRANSMIT ++#endif ++ ) { + LOG_TEST_RET(card->ctx, + sc_hsm_perform_chip_authentication(card), + "Could not perform chip authentication"); +@@ -604,6 +611,7 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data, + data->apdu = &apdu; + } + ++#ifdef ENABLE_SM + if ((data->cmd == SC_PIN_CMD_GET_INFO) + && (card->sm_ctx.sm_mode == SM_MODE_TRANSMIT)) { + /* JCOP's SM accelerator is incapable of using case 1 APDU in SM */ +@@ -612,6 +620,7 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data, + apdu.resplen = sizeof rbuf; + data->apdu = &apdu; + } ++#endif + + data->pin1.offset = 5; + data->pin1.length_offset = 4; +@@ -627,11 +636,17 @@ static int sc_hsm_pin_cmd(sc_card_t *card, struct sc_pin_cmd_data *data, + data->cmd = SC_PIN_CMD_GET_SESSION_PIN; + if (data->pin_reference == 0x81) { + u8 recvbuf[SC_MAX_APDU_BUFFER_SIZE]; ++#ifdef ENABLE_SM + if (card->sm_ctx.sm_mode != SM_MODE_TRANSMIT) { + sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, + "Session PIN generation only supported in SM"); + LOG_FUNC_RETURN(card->ctx, SC_SUCCESS); + } ++#else ++ sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, ++ "Session PIN generation only supported in SM"); ++ LOG_FUNC_RETURN(card->ctx, SC_SUCCESS); ++#endif + sc_format_apdu(card, &apdu, SC_APDU_CASE_2_SHORT, 0x5A, 0x01, data->pin_reference); + apdu.cla = 0x80; + apdu.resp = recvbuf; +@@ -669,7 +684,9 @@ static int sc_hsm_logout(sc_card_t * card) + sc_path_t path; + sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data; + memset(priv->sopin, 0, sizeof(priv->sopin)); ++#ifdef ENABLE_SM + sc_sm_stop(card); ++#endif + + sc_path_set(&path, SC_PATH_TYPE_DF_NAME, sc_hsm_aid.value, sc_hsm_aid.len, 0, 0); + +@@ -1586,7 +1603,9 @@ static int sc_hsm_init(struct sc_card *card) + static int sc_hsm_finish(sc_card_t * card) + { + sc_hsm_private_data_t *priv = (sc_hsm_private_data_t *) card->drv_data; ++#ifdef ENABLE_SM + sc_sm_stop(card); ++#endif + if (priv->serialno) { + free(priv->serialno); + } diff --git a/dev-libs/opensc/opensc-0.17.0.ebuild b/dev-libs/opensc/opensc-0.17.0.ebuild new file mode 100644 index 00000000000..0612c40f2bb --- /dev/null +++ b/dev-libs/opensc/opensc-0.17.0.ebuild @@ -0,0 +1,60 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit ltprune + +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="doc +pcsc-lite secure-messaging openct ctapi readline libressl ssl zlib" + +RDEPEND="zlib? ( sys-libs/zlib ) + readline? ( sys-libs/readline:0= ) + ssl? ( + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + ) + openct? ( >=dev-libs/openct-0.5.0 ) + pcsc-lite? ( >=sys-apps/pcsc-lite-1.3.0 )" +DEPEND="${RDEPEND} + virtual/pkgconfig + app-text/docbook-xsl-stylesheets + dev-libs/libxslt" + +REQUIRED_USE=" + pcsc-lite? ( !openct !ctapi ) + openct? ( !pcsc-lite !ctapi ) + ctapi? ( !pcsc-lite !openct ) + || ( pcsc-lite openct ctapi )" + +PATCHES=( + "${FILESDIR}/${P}-build.patch" +) + +src_configure() { + econf \ + --docdir="/usr/share/doc/${PF}" \ + --htmldir='$(docdir)/html' \ + --disable-static \ + --disable-openpace \ + $(use_enable doc) \ + $(use_enable openct) \ + $(use_enable readline) \ + $(use_enable zlib) \ + $(use_enable secure-messaging sm) \ + $(use_enable ssl openssl) \ + $(use_enable pcsc-lite pcsc) \ + $(use_enable openct) \ + $(use_enable ctapi) +} + +src_install() { + default + prune_libtool_files --all +} |