https://github.com/OpenSC/OpenSC/releases/tag/0.23.0
my smart card keeps working with the opensc-pkcs11.so module as tested in
firefox, chrome and qdigidoc4.
Upstream tries to find a library to link against for dlopen(3) unless
LDL_LIB is already set, so instead of patching it for systems like ours
where dlopen(3) comes from libc, pass the empty string to skip detection;
I can upstream a proper fix later.
LibreSSL macro guards needed fixing, but I'm not 100% sure I got them right.
major bump due to symbol removal.
Feedback? OK?
Index: Makefile
===================================================================
RCS file: /cvs/ports/security/opensc/Makefile,v
retrieving revision 1.63
diff -u -p -r1.63 Makefile
--- Makefile 5 Nov 2022 17:07:24 -0000 1.63
+++ Makefile 20 Jun 2023 10:49:04 -0000
@@ -1,10 +1,9 @@
COMMENT= set of libraries and utilities to access smart cards
-V= 0.22.0
-REVISION= 3
+V= 0.23.0
DISTNAME= opensc-${V}
-SHARED_LIBS += opensc 7.3 # 8.0
+SHARED_LIBS += opensc 8.0 # 9.0
SHARED_LIBS += smm-local 3.1
CATEGORIES= security
@@ -14,8 +13,7 @@ HOMEPAGE= https://github.com/OpenSC/Open
# LGPLv2.1+
PERMIT_PACKAGE= Yes
-WANTLIB= c crypto curses ffi gio-2.0 glib-2.0 gmodule-2.0 gobject-2.0 \
- iconv intl pcre2-8 pthread readline z
+WANTLIB= c crypto curses gio-2.0 gobject-2.0 iconv pthread readline z
MASTER_SITES= https://github.com/OpenSC/OpenSC/releases/download/${V}/
@@ -24,7 +22,8 @@ BUILD_DEPENDS= security/pcsc-lite \
textproc/docbook-xsl
RUN_DEPENDS= devel/desktop-file-utils \
security/ccid
-TEST_DEPENDS= shells/bash
+TEST_DEPENDS= security/softhsm2 \
+ shells/bash
LIB_DEPENDS= devel/glib2
LIBTOOL_FLAGS= --tag=disable-static
@@ -37,7 +36,8 @@ CONFIGURE_ARGS= --enable-static \
--disable-cryptotokenkit \
--with-pkcs11-provider=${LOCALBASE}/lib/pkcs11/opensc-pkcs11.so
\
--with-xsl-stylesheetsdir=${LOCALBASE}/share/xsl/docbook
-CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include/PCSC"
+CONFIGURE_ENV= CPPFLAGS="-I${LOCALBASE}/include/PCSC" \
+ LDL_LIBS=' '
FAKE_FLAGS= mandir="${PREFIX}/man/" \
sysconfdir="${PREFIX}/share/examples/opensc/"
Index: distinfo
===================================================================
RCS file: /cvs/ports/security/opensc/distinfo,v
retrieving revision 1.17
diff -u -p -r1.17 distinfo
--- distinfo 10 Mar 2022 14:37:15 -0000 1.17
+++ distinfo 20 Jun 2023 07:38:18 -0000
@@ -1,2 +1,2 @@
-SHA256 (opensc-0.22.0.tar.gz) = jU5TRxlevqMyvlhd9h3MRwMxwmlp5LBEfIUfsIRMcYY=
-SIZE (opensc-0.22.0.tar.gz) = 2287020
+SHA256 (opensc-0.23.0.tar.gz) = pIRKbqA6Ui7PNeSWWXFtrLa+A/fAEKGlg6rz65Fe0uA=
+SIZE (opensc-0.23.0.tar.gz) = 2366469
Index: patches/patch-configure_ac
===================================================================
RCS file: /cvs/ports/security/opensc/patches/patch-configure_ac,v
retrieving revision 1.14
diff -u -p -r1.14 patch-configure_ac
--- patches/patch-configure_ac 28 Jun 2022 10:13:51 -0000 1.14
+++ patches/patch-configure_ac 20 Jun 2023 10:38:19 -0000
@@ -1,7 +1,7 @@
Index: configure.ac
--- configure.ac.orig
+++ configure.ac
-@@ -414,7 +414,7 @@ AC_FUNC_STAT
+@@ -427,7 +427,7 @@ AC_FUNC_STAT
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([ \
getpass gettimeofday getline memset mkdir \
Index: patches/patch-src_libopensc_card-iasecc_c
===================================================================
RCS file: patches/patch-src_libopensc_card-iasecc_c
diff -N patches/patch-src_libopensc_card-iasecc_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_libopensc_card-iasecc_c 20 Jun 2023 10:38:44 -0000
@@ -0,0 +1,16 @@
+LibreSSL does provide an EVP_MD_CTX_md_data() accessor
+
+Index: src/libopensc/card-iasecc.c
+--- src/libopensc/card-iasecc.c.orig
++++ src/libopensc/card-iasecc.c
+@@ -45,10 +45,6 @@
+ * LibreSSL
+ */
+
+-#if defined(LIBRESSL_VERSION_NUMBER)
+-# define EVP_MD_CTX_md_data(x) (x->md_data)
+-#endif
+-
+ #include "internal.h"
+ #include "asn1.h"
+ #include "cardctl.h"
Index: patches/patch-src_libopensc_sc-ossl-compat_h
===================================================================
RCS file:
/cvs/ports/security/opensc/patches/patch-src_libopensc_sc-ossl-compat_h,v
retrieving revision 1.6
diff -u -p -r1.6 patch-src_libopensc_sc-ossl-compat_h
--- patches/patch-src_libopensc_sc-ossl-compat_h 10 Mar 2022 14:37:15
-0000 1.6
+++ patches/patch-src_libopensc_sc-ossl-compat_h 20 Jun 2023 10:40:03
-0000
@@ -1,12 +1,18 @@
+LibreSSL does provide EVP_sha3_*() and EVP_PKEY_new(3)
+
Index: src/libopensc/sc-ossl-compat.h
--- src/libopensc/sc-ossl-compat.h.orig
+++ src/libopensc/sc-ossl-compat.h
-@@ -71,7 +71,7 @@ extern "C" {
- #define EVP_PKEY_base_id(x) (x->type)
+@@ -49,12 +49,6 @@ extern "C" {
+ #if LIBRESSL_VERSION_NUMBER < 0x30500000L
+ #define FIPS_mode() (0)
+ #endif
+-#define EVP_sha3_224() (NULL)
+-#define EVP_sha3_256() (NULL)
+-#define EVP_sha3_384() (NULL)
+-#define EVP_sha3_512() (NULL)
+-#define EVP_PKEY_new_raw_public_key(t, e, p, l) (NULL)
+-#define EVP_PKEY_get_raw_public_key(p, pu, l) (0)
#endif
--#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L
- #define RSA_PKCS1_OpenSSL RSA_PKCS1_SSLeay
-
- #define X509_get_extension_flags(x) (x->ex_flags)
+ /* OpenSSL 1.1.1 has FIPS_mode function */
Index: patches/patch-src_libopensc_sc_c
===================================================================
RCS file: /cvs/ports/security/opensc/patches/patch-src_libopensc_sc_c,v
retrieving revision 1.4
diff -u -p -r1.4 patch-src_libopensc_sc_c
--- patches/patch-src_libopensc_sc_c 13 Oct 2022 13:11:27 -0000 1.4
+++ patches/patch-src_libopensc_sc_c 20 Jun 2023 09:29:45 -0000
@@ -7,7 +7,7 @@ but we might as well use this which conc
Index: src/libopensc/sc.c
--- src/libopensc/sc.c.orig
+++ src/libopensc/sc.c
-@@ -912,14 +912,18 @@ void *sc_mem_secure_alloc(size_t len)
+@@ -923,14 +923,18 @@ void *sc_mem_secure_alloc(size_t len)
len = pages * page_size;
}
@@ -28,7 +28,7 @@ Index: src/libopensc/sc.c
#endif
return p;
-@@ -927,10 +931,14 @@ void *sc_mem_secure_alloc(size_t len)
+@@ -938,10 +942,14 @@ void *sc_mem_secure_alloc(size_t len)
void sc_mem_secure_free(void *ptr, size_t len)
{
Index: patches/patch-src_pkcs11_Makefile_am
===================================================================
RCS file: /cvs/ports/security/opensc/patches/patch-src_pkcs11_Makefile_am,v
retrieving revision 1.6
diff -u -p -r1.6 patch-src_pkcs11_Makefile_am
--- patches/patch-src_pkcs11_Makefile_am 28 Jun 2022 10:13:51 -0000
1.6
+++ patches/patch-src_pkcs11_Makefile_am 20 Jun 2023 10:41:38 -0000
@@ -1,3 +1,6 @@
+- Fix lib and pkgconfig directories
+- Neuter install-exec-hook target
+
Index: src/pkcs11/Makefile.am
--- src/pkcs11/Makefile.am.orig
+++ src/pkcs11/Makefile.am
@@ -9,9 +12,9 @@ Index: src/pkcs11/Makefile.am
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in $(srcdir)/versioninfo-pkcs11.rc
$(srcdir)/versioninfo-pkcs11-spy.rc
EXTRA_DIST = Makefile.mak versioninfo-pkcs11.rc.in
versioninfo-pkcs11-spy.rc.in opensc-pkcs11.pc.in opensc-pkcs11.dll.manifest
onepin-opensc-pkcs11.dll.manifest
-@@ -24,10 +26,6 @@ OPENSC_PKCS11_LIBS = \
- $(top_builddir)/src/common/libcompat.la \
- $(OPENPACE_LIBS) $(OPTIONAL_OPENSSL_LIBS) $(PTHREAD_LIBS)
+@@ -27,10 +29,6 @@ if WIN32
+ OPENSC_PKCS11_LIBS += -lshlwapi
+ endif
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = opensc-pkcs11.pc
@@ -20,19 +23,11 @@ Index: src/pkcs11/Makefile.am
opensc_pkcs11_la_SOURCES = $(OPENSC_PKCS11_SRC) $(OPENSC_PKCS11_INC)
opensc_pkcs11_la_CFLAGS = $(OPENSC_PKCS11_CFLAGS)
opensc_pkcs11_la_LIBADD = $(OPENSC_PKCS11_LIBS)
-@@ -69,15 +67,6 @@ install-exec-hook:
- for l in opensc-pkcs11.dll pkcs11-spy.dll; do \
- mv "$(DESTDIR)$(libdir)/$$l" "$(DESTDIR)$(bindir)/$$l"; \
- done
--else
--# see http://wiki.cacert.org/wiki/Pkcs11TaskForce
--install-exec-hook:
-- $(MKDIR_P) "$(DESTDIR)$(pkcs11dir)"
-- for l in opensc-pkcs11$(DYN_LIB_EXT) onepin-opensc-pkcs11$(DYN_LIB_EXT)
pkcs11-spy$(DYN_LIB_EXT); do \
-- rm -f "$(DESTDIR)$(pkcs11dir)/$$l"; \
-- $(LN_S) ../$$l "$(DESTDIR)$(pkcs11dir)/$$l"; \
-- done
--
- endif
-
- TIDY_FLAGS = $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS)
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) $(OPENSC_PKCS11_CFLAGS)
+@@ -81,6 +79,7 @@ uninstall-hook:
+ else
+ # see http://wiki.cacert.org/wiki/Pkcs11TaskForce
+ install-exec-hook:
++neutered:
+ $(MKDIR_P) "$(DESTDIR)$(pkcs11dir)"
+ for l in opensc-pkcs11$(DYN_LIB_EXT) onepin-opensc-pkcs11$(DYN_LIB_EXT)
pkcs11-spy$(DYN_LIB_EXT); do \
+ rm -f "$(DESTDIR)$(pkcs11dir)/$$l"; \
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/security/opensc/pkg/PLIST,v
retrieving revision 1.16
diff -u -p -r1.16 PLIST
--- pkg/PLIST 16 Mar 2022 10:16:26 -0000 1.16
+++ pkg/PLIST 20 Jun 2023 10:31:55 -0000
@@ -7,7 +7,6 @@
@bin bin/goid-tool
@bin bin/iasecc-tool
@bin bin/netkey-tool
-@bin bin/npa-tool
@bin bin/openpgp-tool
@bin bin/opensc-asn1
@bin bin/opensc-explorer
@@ -106,8 +105,6 @@ share/opensc/iasecc_generic_oberthur.pro
share/opensc/iasecc_generic_pki.profile
share/opensc/incrypto34.profile
share/opensc/isoApplet.profile
-share/opensc/jcop.profile
-share/opensc/miocos.profile
share/opensc/muscle.profile
share/opensc/myeid.profile
share/opensc/oberthur.profile