diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8d62887 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/ccid-1.4.29.tar.bz2 +SOURCES/gpgkey-F5E11B9FFE911146F41D953D78A1B4DFE8F9C57E.gpg diff --git a/.pcsc-lite-ccid.metadata b/.pcsc-lite-ccid.metadata new file mode 100644 index 0000000..b0ff504 --- /dev/null +++ b/.pcsc-lite-ccid.metadata @@ -0,0 +1,2 @@ +f21605dd2bf82710b69f454b0379ce68fe5aba5e SOURCES/ccid-1.4.29.tar.bz2 +13df650b9548b4ef1b24ad11ef6b573af4d48011 SOURCES/gpgkey-F5E11B9FFE911146F41D953D78A1B4DFE8F9C57E.gpg diff --git a/SOURCES/ccid-1.4.26-omnikey-3121.patch b/SOURCES/ccid-1.4.26-omnikey-3121.patch new file mode 100644 index 0000000..d1b97cd --- /dev/null +++ b/SOURCES/ccid-1.4.26-omnikey-3121.patch @@ -0,0 +1,133 @@ +diff -up ccid-1.4.26/src/ccid.c.omnikey ccid-1.4.26/src/ccid.c +--- ccid-1.4.26/src/ccid.c.omnikey 2017-02-24 10:04:25.742132234 +0100 ++++ ccid-1.4.26/src/ccid.c 2017-02-24 10:07:26.145976335 +0100 +@@ -55,8 +55,16 @@ int ccid_open_hack_pre(unsigned int read + { + _ccid_descriptor *ccid_descriptor = get_ccid_descriptor(reader_index); + ++ ccid_descriptor->dwNonStandardFlags = 0; ++ + switch (ccid_descriptor->readerID) + { ++ case CARDMAN3121: ++ ccid_descriptor->dwNonStandardFlags = CCID_NON_STAND_OMK_3121_T1; ++ ccid_descriptor->dwFeatures &= ~CCID_CLASS_EXCHANGE_MASK; ++ ccid_descriptor->dwFeatures |= CCID_CLASS_TPDU; ++ break; ++ + case MYSMARTPAD: + ccid_descriptor->dwMaxIFSD = 254; + break; +diff -up ccid-1.4.26/src/ccid.h.omnikey ccid-1.4.26/src/ccid.h +--- ccid-1.4.26/src/ccid.h.omnikey 2017-01-07 15:50:47.000000000 +0100 ++++ ccid-1.4.26/src/ccid.h 2017-02-24 10:04:25.742132234 +0100 +@@ -137,6 +137,7 @@ typedef struct + */ + char zlp; + #endif ++ unsigned int dwNonStandardFlags; + } _ccid_descriptor; + + /* Features from dwFeatures */ +@@ -153,6 +154,9 @@ typedef struct + #define CCID_CLASS_EXTENDED_APDU 0x00040000 + #define CCID_CLASS_EXCHANGE_MASK 0x00070000 + ++/* Features from the swNonStandardFlags */ ++#define CCID_NON_STAND_OMK_3121_T1 0x00000001 ++ + /* Features from bPINSupport */ + #define CCID_CLASS_PIN_VERIFY 0x01 + #define CCID_CLASS_PIN_MODIFY 0x02 +diff -up ccid-1.4.26/src/commands.c.omnikey ccid-1.4.26/src/commands.c +--- ccid-1.4.26/src/commands.c.omnikey 2017-01-07 15:50:47.000000000 +0100 ++++ ccid-1.4.26/src/commands.c 2017-02-24 10:11:21.297778870 +0100 +@@ -1292,6 +1292,39 @@ RESPONSECODE CmdXfrBlock(unsigned int re + return return_value; + } /* CmdXfrBlock */ + ++static RESPONSECODE omnikey_transmit_tpdu(unsigned int reader_index, ++ _ccid_descriptor *ccid_descriptor, unsigned int tx_length, ++ const unsigned char *tx_buffer) ++{ ++ unsigned char cmd[11+CMD_BUF_SIZE]; /* CCID + APDU buffer */ ++ status_t ret; ++ ++ cmd[0] = 0x6B; /* 3121 escape */ ++ i2dw(tx_length+1, cmd+1); /* APDU length */ ++ cmd[5] = ccid_descriptor->bCurrentSlotIndex; /* slot number */ ++ cmd[6] = (*ccid_descriptor->pbSeq)++; ++ cmd[7] = 0; ++ cmd[8] = 0; ++ cmd[9] = 0; ++ cmd[10] = 0x1A; ++ ++ /* check that the command is not too large */ ++ if (tx_length > CMD_BUF_SIZE) ++ { ++ DEBUG_CRITICAL2("TX Length too big: %d", tx_length); ++ return IFD_NOT_SUPPORTED; ++ } ++ ++ memcpy(cmd+11, tx_buffer, tx_length); ++ ++ ret = WritePort(reader_index, 11+tx_length, cmd); ++ if (STATUS_NO_SUCH_DEVICE == ret) ++ return IFD_NO_SUCH_DEVICE; ++ if (ret != STATUS_SUCCESS) ++ return IFD_COMMUNICATION_ERROR; ++ ++ return IFD_SUCCESS; ++} /* omnikey_transmit_tpdu */ + + /***************************************************************************** + * +@@ -1348,6 +1381,13 @@ RESPONSECODE CCID_Transmit(unsigned int + } + #endif + ++ /* hack for Onmikey 3121 */ ++ if ((ccid_descriptor->dwNonStandardFlags & CCID_NON_STAND_OMK_3121_T1) && ++ (ccid_descriptor->cardProtocol == SCARD_PROTOCOL_T1)) { ++ return omnikey_transmit_tpdu(reader_index, ccid_descriptor, tx_length, ++ tx_buffer); ++ } ++ + cmd[0] = 0x6F; /* XfrBlock */ + i2dw(tx_length, cmd+1); /* APDU length */ + cmd[5] = ccid_descriptor->bCurrentSlotIndex; /* slot number */ +@@ -1373,8 +1413,9 @@ RESPONSECODE CCID_Transmit(unsigned int + RESPONSECODE CCID_Receive(unsigned int reader_index, unsigned int *rx_length, + unsigned char rx_buffer[], unsigned char *chain_parameter) + { +- unsigned char cmd[10+CMD_BUF_SIZE]; /* CCID + APDU buffer */ ++ unsigned char cmd[11+CMD_BUF_SIZE]; /* CCID + APDU buffer */ + unsigned int length; ++ unsigned char *rx_ptr = cmd+10; + RESPONSECODE return_value = IFD_SUCCESS; + status_t ret; + _ccid_descriptor *ccid_descriptor = get_ccid_descriptor(reader_index); +@@ -1565,6 +1606,14 @@ time_request: + } + + length = dw2i(cmd, 1); ++ ++ if (length && ++ (ccid_descriptor->dwNonStandardFlags & CCID_NON_STAND_OMK_3121_T1) && ++ (ccid_descriptor->cardProtocol == SCARD_PROTOCOL_T1)) { ++ length--; ++ rx_ptr = cmd+11; ++ } ++ + if (length <= *rx_length) + *rx_length = length; + else +@@ -1581,7 +1630,7 @@ time_request: + return_value = IFD_COMMUNICATION_ERROR; + } + else +- memcpy(rx_buffer, cmd+10, length); ++ memcpy(rx_buffer, rx_ptr, length); + + /* Extended case? + * Only valid for RDR_to_PC_DataBlock frames */ diff --git a/SOURCES/ccid-1.4.29-maxreaders.patch b/SOURCES/ccid-1.4.29-maxreaders.patch new file mode 100644 index 0000000..30f8208 --- /dev/null +++ b/SOURCES/ccid-1.4.29-maxreaders.patch @@ -0,0 +1,12 @@ +diff -up ./src/ccid_ifdhandler.h.readers_32 ./src/ccid_ifdhandler.h +--- ./src/ccid_ifdhandler.h.readers_32 2018-08-20 16:06:34.080905748 -0700 ++++ ./src/ccid_ifdhandler.h 2018-08-20 16:07:04.638097096 -0700 +@@ -47,7 +47,7 @@ extern int DriverOptions; + * The maximum number of readers is also limited in pcsc-lite (16 by default) + * see the definition of PCSCLITE_MAX_READERS_CONTEXTS in src/PCSC/pcsclite.h + */ +-#define CCID_DRIVER_MAX_READERS 16 ++#define CCID_DRIVER_MAX_READERS 32 + + /* + * CCID driver specific functions diff --git a/SOURCES/ccid-1.4.29.tar.bz2.asc b/SOURCES/ccid-1.4.29.tar.bz2.asc new file mode 100644 index 0000000..3d722c8 --- /dev/null +++ b/SOURCES/ccid-1.4.29.tar.bz2.asc @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIzBAABCAAdFiEE9eEbn/6REUb0HZU9eKG03+j5xX4FAlqNMrsACgkQeKG03+j5 +xX40SQ//aKOwy7IlntVNrLhD0udAjPHXJZuKjAg7PSxnNxUXhFl8m9RXbF/NHvHF +lIDda6iq7fBaXLwOwSSOMRTQyQoMsRT6eBcjeJnhBzT06DwTcgajvQyOBBEJOJDh +5kjsPBSOb0w92C+VxArpZO78Mz5Ifo0P+2p8Xy2l8/QcrYG2yJEHfNI1kq37BSBI +nZJCMMknQrkADi88cyArwUT6+Pf6HUKssyw1ug7JR3qDmBc7NaUHVfHi8zPBsOnh +Ln27RAZZMiG0ikDpze06y++vIgifDVn2vuUGE2OJFXnst6R3yarFQ0AM2d7+x7a7 +BWPgFVFuPbxDOBHeqDQsU/CzM6TmhXz9vB7fwBpObfiqJ5WIEwE0vo5Ym/wroIEc +7u2cFXhJMhywaepv3ZuPgDgg5NH0uF+2MQgRADDbczNFLUv7RoizdL0VEKlrBhba +ogpVE9/+Yci4MeArrFLu4XCH1VJSorBoagZgD9Ur+oNEfC4p9LQQpABZUPUmU2IC +frkScS2R5TLSNtalgCtytOYvdOrwtm3m5+LArBwBixS7jlFVnSU3z05Guujajrth +Bfzca9n7Bv51XtbkI9NRFObFLuYWTBPXTkjof7NnD5W+N8wvsBXxa5KJ8qxgeNEV +TMWNmTocmJN3EM/dzoaT8pR327OD8lRL0d2f8N1MFefChO2pPDE= +=pLJ7 +-----END PGP SIGNATURE----- diff --git a/SPECS/pcsc-lite-ccid.spec b/SPECS/pcsc-lite-ccid.spec new file mode 100644 index 0000000..8129357 --- /dev/null +++ b/SPECS/pcsc-lite-ccid.spec @@ -0,0 +1,322 @@ +%global dropdir %(pkg-config libpcsclite --variable usbdropdir 2>/dev/null) +%global pcsc_lite_ver 1.8.9 +%global upstream_build 4238 + +Name: pcsc-lite-ccid +Version: 1.4.29 +Release: 3%{?dist} +Summary: Generic USB CCID smart card reader driver + +Group: System Environment/Libraries +License: LGPLv2+ +URL: http://pcsclite.alioth.debian.org/ccid.html +Source0: https://alioth.debian.org/frs/download.php/file/%{upstream_build}/ccid-%{version}.tar.bz2 +Source1: ccid-%{version}.tar.bz2.asc +Source2: gpgkey-F5E11B9FFE911146F41D953D78A1B4DFE8F9C57E.gpg +Patch0: ccid-1.4.26-omnikey-3121.patch +Patch1: ccid-1.4.29-maxreaders.patch + +BuildRequires: perl-interpreter +BuildRequires: perl-Getopt-Long +BuildRequires: libusb1-devel +BuildRequires: pcsc-lite-devel >= %{pcsc_lite_ver} +BuildRequires: gnupg2 gcc +Requires(post): systemd +Requires(postun): systemd +Requires: pcsc-lite%{?_isa} >= %{pcsc_lite_ver} +Provides: pcsc-ifd-handler +# Provide upgrade path from 'ccid' package +Obsoletes: ccid < 1.4.0-3 +Provides: ccid = %{version}-%{release} + +%description +Generic USB CCID (Chip/Smart Card Interface Devices) driver for use with the +PC/SC Lite daemon. + + +%prep +gpgv2 --keyring %{SOURCE2} %{SOURCE1} %{SOURCE0} +%setup -q -n ccid-%{version} +%patch0 -p1 -b .omnikey +%patch1 -p0 -b .maxreaders + + +%build +%configure --enable-twinserial +make %{?_smp_mflags} + + +%install +make install DESTDIR=$RPM_BUILD_ROOT +cp -p src/openct/LICENSE LICENSE.openct + + +%post +/bin/systemctl try-restart pcscd.service >/dev/null 2>&1 || : + +%postun +/bin/systemctl try-restart pcscd.service >/dev/null 2>&1 || : + + +%files +%doc AUTHORS ChangeLog COPYING LICENSE.openct README +%{dropdir}/ifd-ccid.bundle/ +%{dropdir}/serial/ +%config(noreplace) %{_sysconfdir}/reader.conf.d/libccidtwin + + +%changelog +* Fri Sep 7 2018 Bob Relyea - 1.4.29-3 +- fix broken dist variable in spec file. + +* Fri Aug 24 2018 Bob Relyea - 1.4.29-2 +- Increase readers from 16 to 32. + +* Wed Feb 21 2018 Jakub Jelen - 1.4.29-1 +- New upstream release (#1547482) + +* Thu Feb 08 2018 Fedora Release Engineering - 1.4.28-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Oct 20 2017 Jakub Jelen - 1.4.28-1 +- New upstream release (#1504404) + +* Thu Aug 03 2017 Fedora Release Engineering - 1.4.27-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.4.27-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 22 2017 Jakub Jelen - 1.4.27-1 +- New upstream release (#1453026) + +* Thu Mar 02 2017 Jakub Jelen - 1.4.26-3 +- Return support for OMNIKEY CardMan 3121 long writes (#1420024) + +* Sat Feb 11 2017 Fedora Release Engineering - 1.4.26-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Jan 9 2017 Nikos Mavrogiannopoulos - 1.4.26-1 +- Updated to 1.4.26 + +* Mon Nov 21 2016 Nikos Mavrogiannopoulos - 1.4.25-1 +- Updated to 1.4.25 + +* Tue Jun 21 2016 Nikos Mavrogiannopoulos - 1.4.24-1 +- Updated to 1.4.24 + +* Mon Apr 25 2016 Nikos Mavrogiannopoulos - 1.4.23-1 +- Updated to 1.4.23 (#1328849, #1330087) +- Added gpg verification of package as part of build process + +* Thu Feb 04 2016 Fedora Release Engineering - 1.4.22-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jan 11 2016 Nikos Mavrogiannopoulos - 1.4.22-1 +- Updated to 1.4.22 + +* Thu Nov 12 2015 Nikos Mavrogiannopoulos - 1.4.21-1 +- Updated to 1.4.21 + +* Wed Aug 5 2015 Nikos Mavrogiannopoulos - 1.4.20-1 +- Updated to 1.4.20 + +* Fri Jul 10 2015 Nikos Mavrogiannopoulos - 1.4.19-1 +- Updated to 1.4.19 (#1241842) + +* Thu Jun 18 2015 Fedora Release Engineering - 1.4.18-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Sep 18 2014 Nikos Mavrogiannopoulos - 1.4.18-1 +- Update to 1.4.18 + +* Sun Aug 17 2014 Fedora Release Engineering - 1.4.17-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Jun 12 2014 Nikos Mavrogiannopoulos - 1.4.17-1 +- Update to 1.4.17 + +* Fri Jun 06 2014 Fedora Release Engineering - 1.4.13-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sun Oct 20 2013 Kalev Lember - 1.4.13-1 +- Update to 1.4.13 +- Tighten pcsc-lite deps with %%{?_isa} + +* Sat Aug 03 2013 Fedora Release Engineering - 1.4.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Jun 12 2013 Kalev Lember - 1.4.11-1 +- Update to 1.4.11 + +* Wed Apr 17 2013 Kalev Lember - 1.4.10-1 +- Update to 1.4.10 + +* Thu Feb 28 2013 Kalev Lember - 1.4.9-1 +- Update to 1.4.9 + +* Thu Feb 14 2013 Fedora Release Engineering - 1.4.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sun Oct 07 2012 Kalev Lember - 1.4.8-1 +- Update to 1.4.8 + +* Fri Jul 20 2012 Fedora Release Engineering - 1.4.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jun 26 2012 Kalev Lember - 1.4.7-1 +- Update to 1.4.7 + +* Sat Apr 07 2012 Kalev Lember - 1.4.6-1 +- Update to 1.4.6 + +* Fri Jan 13 2012 Fedora Release Engineering - 1.4.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Oct 14 2011 Kalev Lember - 1.4.5-1 +- Update to 1.4.5 +- Switch to systemctl for restarting pcscd after upgrade now that it is using + native systemd unit files. + +* Fri May 27 2011 Kalev Lember - 1.4.4-1 +- Update to 1.4.4 +- Clean up the spec file for modern rpmbuild + +* Sat Apr 02 2011 Kalev Lember - 1.4.3-1 +- Update to 1.4.3 +- GPLv2+ licensed RSA_SecurID no longer gets installed, which changes + the license of the binary RPM from 'LGPLv2+ and GPLv2+' to 'LGPLv2+'. + +* Tue Mar 29 2011 Kalev Lember - 1.4.2-2 +- Don't install the udev rules + +* Fri Feb 25 2011 Kalev Lember - 1.4.2-1 +- Update to 1.4.2 + +* Tue Feb 08 2011 Fedora Release Engineering - 1.4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Dec 13 2010 Kalev Lember - 1.4.1-1 +- Update to 1.4.1 + +* Thu Dec 09 2010 Kalev Lember - 1.4.0-4 +- Install src/openct/LICENSE file as LICENSE.openct in docs (#660600) +- Added 'and GPLv2+' to license tag to cover RSA_SecurID (#660600) + +* Tue Dec 07 2010 Kalev Lember - 1.4.0-3 +- Renamed ccid package to pcsc-lite-ccid (#654377) +- Mark files under reader.conf.d as config(noreplace) +- Don't mark udev rules as config + +* Tue Dec 07 2010 Kalev Lember - 1.4.0-2 +- Removed ExcludeArch: s390 s390x as these arches now have libusb1 +- Updated description + +* Wed Aug 04 2010 Kalev Lember - 1.4.0-1 +- Update to 1.4.0 +- Build against libusb1 instead of libusb 0.1 +- Install libccidtwin configuration file +- Spec file clean up + +* Sun Jul 04 2010 Kalev Lember - 1.3.13-1 +- Update to 1.3.13 + +* Thu Nov 19 2009 Kalev Lember - 1.3.11-1 +- Updated to ccid 1.3.11 +- Removed iso-8859-1 to utf-8 conversion as the files are in utf-8 now + +* Fri Jul 24 2009 Fedora Release Engineering - 1.3.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Feb 24 2009 Bob Relyea - 1.3.9-1 +- update to ccid 1.3.9 + +* Mon Feb 23 2009 Fedora Release Engineering - 1.3.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Aug 26 2008 Bob Relyea - 1.3.8-1 +- update to ccid 1.3.8 + +* Tue Feb 19 2008 Fedora Release Engineering - 1.2.1-4 +- Autorebuild for GCC 4.3 + +* Mon Aug 20 2007 Bob Relyea - 1.2.1-3 +- Update License description to the new Fedora standard + +* Mon Apr 30 2007 Bob Relyea - 1.2.1-2 +- Fix the missed use of the version macro + +* Tue Feb 06 2007 Bob Relyea - 1.2.1-1 +- Pick up ccid 1.2.1 +- use pcscd 'hotplug' feature instead of restarting the daemon +- add enable_udev + +* Mon Nov 06 2006 Bob Relyea - 1.1.0-2 +- Fix version macro to remove '-' + +* Thu Nov 02 2006 Bob Relyea - 1.1.0-1 +- Pickup ccid 1.1.0 + +* Thu Jul 20 2006 Florian La Roche - 1.0.1-5 +- require initscripts for post/postun + +* Sun Jul 16 2006 Florian La Roche - 1.0.1-4 +- fix excludearch line + +* Wed Jul 12 2006 Jesse Keating - 1.0.1-3.1 +- rebuild + +* Mon Jul 10 2006 Bob Relyea - 1.0.1-3 +- remove s390 from the build + +* Mon Jun 5 2006 Bob Relyea - 1.0.1-2 +- Move to Fedora Core, removed %%{_dist}. + +* Sat Apr 22 2006 Ville Skyttä - 1.0.1-1 +- 1.0.1. + +* Mon Mar 6 2006 Ville Skyttä - 1.0.0-1 +- 1.0.0, license changed to LGPL. + +* Wed Feb 15 2006 Ville Skyttä - 0.4.1-7 +- Rebuild. + +* Thu Nov 3 2005 Ville Skyttä - 0.4.1-6 +- Clean up build dependencies. +- Convert docs to UTF-8. + +* Thu Apr 7 2005 Michael Schwendt - 0.4.1-5 +- rebuilt + +* Fri Feb 25 2005 Ville Skyttä - 0.4.1-4 +- Drop Epoch: 0. +- Improve summary. +- Build with dependency tracking disabled. + +* Thu Jul 1 2004 Ville Skyttä - 0:0.4.1-0.fdr.3 +- Restart pcscd in post(un)install phase if it's available and running. + +* Thu May 13 2004 Ville Skyttä - 0:0.4.1-0.fdr.2 +- Provide pcsc-ifd-handler (idea from Debian). + +* Sat Feb 14 2004 Ville Skyttä - 0:0.4.1-0.fdr.1 +- Update to 0.4.1. + +* Fri Feb 13 2004 Ville Skyttä - 0:0.4.0-0.fdr.1 +- Update to 0.4.0. + +* Wed Nov 5 2003 Ville Skyttä - 0:0.3.2-0.fdr.1 +- Update to 0.3.2. +- Update URL. + +* Thu Oct 16 2003 Ville Skyttä - 0:0.3.1-0.fdr.1 +- Update to 0.3.1. + +* Wed Sep 10 2003 Ville Skyttä - 0:0.3.0-0.fdr.1 +- Update to 0.3.0. + +* Wed Aug 27 2003 Ville Skyttä - 0:0.2.0-0.fdr.1 +- Update to 0.2.0. + +* Tue Aug 19 2003 Ville Skyttä - 0:0.1.0-0.fdr.1 +- First build.