Sync from SUSE:SLFO:Main pcsc-lite revision 0cb566dd107a5b6f4d163731ff674730

This commit is contained in:
Adrian Schröter 2024-05-03 17:46:10 +02:00
commit d0c02aa9b4
13 changed files with 1894 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

2
README.SUSE Normal file
View File

@ -0,0 +1,2 @@
On openSUSE, drivers for various card readers can be found
in separate packages named pcsc-<drivername>

7
baselibs.conf Normal file
View File

@ -0,0 +1,7 @@
libpcsclite1
obsoletes "pscs-lite-<targettype> <= 1.4.102"
provides "pscs-lite-<targettype> = <version>"
libpcscspy0
pcsc-lite-devel
requires "libpcsclite1-<targettype> = <version>"
requires "libpcscspy0-<targettype> = <version>"

View File

@ -0,0 +1,22 @@
Index: pcsc-lite-1.9.4/etc/pcscd.service.in
===================================================================
--- pcsc-lite-1.9.4.orig/etc/pcscd.service.in
+++ pcsc-lite-1.9.4/etc/pcscd.service.in
@@ -4,6 +4,17 @@ Requires=pcscd.socket
Documentation=man:pcscd(8)
[Service]
+# added automatically, for details please see
+# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
+ProtectSystem=full
+ProtectHome=true
+ProtectHostname=true
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectKernelLogs=true
+ProtectControlGroups=true
+RestrictRealtime=true
+# end of automatic additions
Environment="PCSCD_OPTIONS="
EnvironmentFile=-/etc/sysconfig/pcscd
ExecStart=@sbindir_exp@/pcscd --foreground $PCSCD_OPTIONS

BIN
pcsc-lite-2.0.1.tar.bz2 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEE9eEbn/6REUb0HZU9eKG03+j5xX4FAmVg0D8ACgkQeKG03+j5
xX7HkA//RPkUPl61xQ/XO499z4yGoIv0rbL4nRPbj/Ta1nSF8WCA5SwPcYWZWZRh
eerKwciTzkrHn2hC04eJn344ISrEXoTHOnz3oYJz6YO0RCgxPiIdToN/6ykiKze1
Usti5HVan//hHim6/UMd+O3Io8iOq27rKPSLDaQjP67D1b6MvrC6s5tIyT92KeWa
sFM/eB8VbGl2sdVzAhoVYPrvvWSFwws2xMvamjUSDXCbJs/61K2kYM+LMcLvqubg
NpVDHwz4zQ9O+tGD8KbuSfQ2nbjWjL2VGn1nf/xBa2+OkwRfIWRg3/tQF3af0wdJ
qsTMxIZmuM63xfdPalyHrCysqyx0ceEX6gYbzGOgSEZnHu4cokNFsAepXEiBCWWF
PnZzQYxkiIzgsUkrqLKMP92+fvI0vtUqwOlVQv187p7qvkGebyYr0cTHVd121TOP
JdFlU+VqTGj+fD0Nu4cpKPw7OxSAMRAhSuSq0DfXjAUkYrIDWWReBENvOlVw0n9W
uMZLaBABmT26Q+f3kP9pif5qQ1YGOt6m+bs7qDvogHhju0MPg8hyuSQT79k2axyY
D9JJW1gotvRa7BqEParyGQhP9tLDphTNG7RLqcFAe1volMGQEcn+q4enuWr+L3lC
cldYphIrQG9fvC1NSvDAIo5D6Lo7EiVvJYGkvccY0xfNWKLPDSQ=
=s+PA
-----END PGP SIGNATURE-----

13
pcsc-lite-reader-conf Normal file
View File

@ -0,0 +1,13 @@
# Configuration file for pcsc-lite
#
# This file has to be configured for serial and PCMCIA readers only.
# normal USB readers shall _not_ be configured here!
#
# David Corcoran <corcoran@linuxnet.com>
#FRIENDLYNAME "Generic Reader"
#DEVICENAME /dev/ttySx_not_configured
#LIBPATH @ifddir@/libgen_ifd.so
#CHANNELID 0x0103F8
# End of file

1217
pcsc-lite.changes Normal file

File diff suppressed because it is too large Load Diff

340
pcsc-lite.keyring Normal file
View File

@ -0,0 +1,340 @@
pub 1024D/E07F1CF9 2001-03-05
uid Ludovic Rousseau <rousseau@debian.org>
uid Ludovic Rousseau <ludovic.rousseau@free.fr>
sub 1024g/D5338005 2001-03-05
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.19 (GNU/Linux)
mQGiBDqkC1kRBACo4DCPjVuwce76Mv2A6O5Mo9Wzmvru6g+ABCK6E8W4w6stZnhf
yAu93Qn5WioEpUEnW+0uWaIFaTj3h073EtCurBmbi+QT9b0nN7PFa0H0oQTneVFM
5s0u6XmLZsaZMiI7PYiqwwEobKi7xe6p8FHtr1NFrMqaZmFkcpV4P8OgMwCgmZnu
Ge7vaD2i7QFkCGH6h6DUZLMD/167p8LLKPdnctiDqAbDK12sLmsg08TLOJKEes4B
ZXK2P+ht1aRAI0Lxg0wzyZGqFJ+jLzeHz03egHLA//64RRVxnnZQzfSdZqqjuOx7
TE5EB7MOGVG8fo7rz3nG1XyQrKZcVaM61dyf9zd9jbcYbpXBi61db64l/8y1pz5M
fRh8A/4qZ4HpKGAgaBtGjn78QAvweZPD8sGb/DatnYy4nUEFNQnvRIZB280r2GOY
DqW+27V9c+rzcl+wvGLPZESFJR7B9+rmEvACHntc1KyaHePNn1vqQqgqCfeC92JO
H9LXm58ikZRMOuerQPVckTzlvz0Ql99zHs+hqkH/IIS81XSDSbQmTHVkb3ZpYyBS
b3Vzc2VhdSA8cm91c3NlYXVAZGViaWFuLm9yZz6IXwQTEQIAFwUCO83hDwULBwoD
BAMVAwIDFgIBAheAABIJED9Kio/gfxz5B2VHUEcAAQFl3QCdEsOQCvuq25kojzda
FTDTPJGNU7sAnR5zvAgm7C/7o0K9RUO0q4HqYOdBtCtMdWRvdmljIFJvdXNzZWF1
IDxsdWRvdmljLnJvdXNzZWF1QGZyZWUuZnI+iF8EExECABcFAjqkC1kFCwcKAwQD
FQMCAxYCAQIXgAASCRA/SoqP4H8c+QdlR1BHAAEBFlEAn1uIjs/NEQu2pqRCFLDh
C2o6z3EBAJ9CKh3g7TdGLFludHqRORx+/B6oyrkBDQQ6pAtcEAQAg4Hs0NG5nH8p
atOk/SBX7y0i6hgNC2gFxz87NySX0Q3YjGrZlFIeRqRFs44Gyuwze/PtU7K63Ev0
DQ31rjwCb9wgGauu2uRGkn5Awk+LKtSFkN+T8kO9v5OKp69IO+jaIRr8yuDP5Yil
dTVzpLehIsIStHwMfTxwjfT7sWojw8cAAwUD/ixrQdahUCx6DC0u+GCC4f5XvNmu
NEdYrY2/KqAKsS2nWD/EZPadvIGga/jIU1HLQYfUD4meDDol+dBXb7yXN/LZojh4
lQ4z63iZXyuMTI3i4ZNKx/9D1Z18Lk6/e0yDoqIb2jLvCejZEBUVnRl7oyIQxWPw
TBgmA1dKkTKX6k3AiE4EGBECAAYFAjqkC1wAEgkQP0qKj+B/HPkHZUdQRwABARYd
AKCXbqMkNr5QNdPi37LtspMzCHlvoACgknJVGCR6Fmz7s1wL38ZLkcqYgsM=
=ItMa
-----END PGP PUBLIC KEY BLOCK-----
pub 4096R/E8F9C57E 2010-09-19
uid Ludovic Rousseau <ludovic.rousseau@free.fr>
uid Ludovic Rousseau <rousseau@debian.org>
sub 4096R/2F1BEFF0 2010-09-19
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
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
pRP4yT/Kvsj1Rz0cYYI=
=a5wl
-----END PGP PUBLIC KEY BLOCK-----

212
pcsc-lite.spec Normal file
View File

@ -0,0 +1,212 @@
#
# spec file for package pcsc-lite
#
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
#Compat macro for new _fillupdir macro introduced in Nov 2017
%if ! %{defined _fillupdir}
%define _fillupdir /var/adm/fillup-templates
%endif
# FIXME: Maybe we should use /usr/lib/pcsc/drivers as others do:
%define ifddir %{_libdir}/readers
%define PKG_USER scard
%define PKG_GROUP scard
Name: pcsc-lite
Version: 2.0.1
Release: 0
Summary: PC/SC Smart Cards Library
License: BSD-3-Clause AND GPL-3.0-or-later
Group: Productivity/Security
URL: https://pcsclite.apdu.fr/
Source: https://pcsclite.apdu.fr/files/%{name}-%{version}.tar.bz2
Source1: %{name}.sysconfig
Source2: README.SUSE
Source4: baselibs.conf
Source6: pcsc-lite-reader-conf
Source7: https://pcsclite.apdu.fr/files/%{name}-%{version}.tar.bz2.asc
Source8: %{name}.keyring
Source9: %{name}.sysusers
Patch0: systemd-service.patch
Patch1: harden_pcscd.service.patch
BuildRequires: flex
BuildRequires: gcc
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: readline-devel
BuildRequires: sysuser-tools
BuildRequires: pkgconfig(libsystemd)
Requires: libpcsclite1 = %{version}
Requires(post): %fillup_prereq
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: polkit-devel
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(libudev)
%{?systemd_requires}
%sysusers_requires
%description
PC/SC Lite provides a Windows SCard interface in a small form factor
for communication with smart cards and readers.
Security aware people should read the SECURITY file for possible
vulnerabilities of pcsclite and how to fix them. For information on how
to install drivers please read the DRIVERS file.
Memory cards will be supported through the MCT specification, which is
an APDU like manner sent normally through the SCardTransmit() function.
This functionality is exercised in the driver.
%package -n libpcsclite1
Summary: PC/SC Smart Card Library
License: BSD-3-Clause
Group: System/Libraries
Recommends: pcsc-lite >= %{version}
%description -n libpcsclite1
PC/SC Lite provides a Windows SCard interface in a small form factor
for communication with smart cards and readers.
Security aware people should read the SECURITY file for possible
vulnerabilities of pcsclite and how to fix them. For information on how
to install drivers please read the DRIVERS file.
Memory cards will be supported through the MCT specification, which is
an APDU like manner sent normally through the SCardTransmit() function.
This functionality is exercised in the driver.
%package -n libpcscspy0
Summary: PC/SC Smart Card Library
License: GPL-3.0-or-later
Group: System/Libraries
%description -n libpcscspy0
Supporting library for the PC/SC spy tool.
%package devel
Summary: Development package for the MUSCLE project SmartCards library
License: BSD-3-Clause AND GPL-3.0-or-later
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
Requires: glibc-devel
Requires: libpcsclite1 = %{version}
Requires: libpcscspy0 = %{version}
%description devel
This package contains the development files for pcsc-lite. It allows to
compile plugins for the pcsc-lite package.
%prep
%setup -q
%patch0 -p1
cp -a %{SOURCE1} %{SOURCE2} %{SOURCE6} .
%patch1 -p1
%build
%sysusers_generate_pre %{SOURCE9} %{PKG_USER} %{PKG_USER}.conf
%configure \
--disable-silent-rules \
--docdir=%{_docdir}/%{name} \
--enable-usbdropdir=%{ifddir} \
--with-systemdsystemunitdir=%{_unitdir} \
--enable-polkit \
--enable-filter \
--disable-static
make %{?_smp_mflags}
%install
%make_install
mkdir -p %{buildroot}%{ifddir}
mkdir -p %{buildroot}%{_sysconfdir}/reader.conf.d/
sed s:@ifddir@:%{ifddir}: <pcsc-lite-reader-conf >%{buildroot}%{_sysconfdir}/reader.conf.d/reader.conf
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcpcscd
mkdir -p %{buildroot}%{_fillupdir}
cp %{name}.sysconfig %{buildroot}%{_fillupdir}/sysconfig.pcscd
mkdir -p %{buildroot}%{_docdir}/%{name}
cp -a AUTHORS ChangeLog COPYING HELP NEWS README README.SUSE SECURITY TODO %{buildroot}%{_docdir}/%{name}
# Remove useless la files
find %{buildroot} -type f -name "*.la" -delete -print
install -Dm0644 %{SOURCE9} %{buildroot}%{_sysusersdir}/%{PKG_USER}.conf
%pre -f %{PKG_USER}.pre
%service_add_pre pcscd.service pcscd.socket
%post
%service_add_post pcscd.service pcscd.socket
%fillup_only -n pcscd
%preun
%service_del_preun pcscd.service pcscd.socket
%postun
%service_del_postun pcscd.service pcscd.socket
%post -n libpcsclite1 -p /sbin/ldconfig
%postun -n libpcsclite1 -p /sbin/ldconfig
%post -n libpcscspy0 -p /sbin/ldconfig
%postun -n libpcscspy0 -p /sbin/ldconfig
%files
%defattr(-,root,root)
%docdir %{_docdir}/%{name}
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/AUTHORS
%{_docdir}/%{name}/COPYING
%{_docdir}/%{name}/HELP
%{_docdir}/%{name}/NEWS
%{_docdir}/%{name}/README
%{_docdir}/%{name}/README.SUSE
%{_docdir}/%{name}/README.polkit
%{_docdir}/%{name}/SECURITY
%{_docdir}/%{name}/TODO
%{_docdir}/%{name}/install_spy.sh
%{_docdir}/%{name}/uninstall_spy.sh
%doc %{_mandir}/man?/*.*
%{_sbindir}/*
%dir %{_sysconfdir}/reader.conf.d
%config(noreplace) %{_sysconfdir}/reader.conf.d/reader.conf
%{ifddir}
%{_unitdir}/*
%{_sysusersdir}/%{PKG_USER}.conf
%{_fillupdir}/sysconfig.pcscd
# libpcsclite.so should stay in the main package (#732911). Third party packages may need it for dlopen().
%{_libdir}/libpcsclite.so
%{_datadir}/polkit-1/actions/org.debian.pcsc-lite.policy
%files -n libpcsclite1
%defattr(-,root,root)
%{_libdir}/libpcsclite.so.*
%files -n libpcscspy0
%defattr(-,root,root)
%{_libdir}/libpcscspy.so.*
%files devel
%defattr(-,root,root)
%docdir %{_docdir}/%{name}
%dir %{_docdir}/%{name}
%{_docdir}/%{name}/Change*
%{_includedir}/*
%{_libdir}/pkgconfig/*.pc
%{_libdir}/*.so
%{_bindir}/*
# libpcsclite.so should stay in the main package (#732911). Third party packages may need it for dlopen().
%exclude %{_libdir}/libpcsclite.so
%changelog

20
pcsc-lite.sysconfig Normal file
View File

@ -0,0 +1,20 @@
## Path: Hardware/SmartCard
## Description: pcscd(8) command-line options
## Type: string
## Default:
## ServiceReload: pcscd
#
# Command line options for pcscd(8) init script.
#
PCSCD_OPTIONS=""
## Path: Hardware/SmartCard
## Description: reader names filtering criteria
## Type: string
## Default:
## ServiceReload: pcscd
#
# provide a regexp to identify some readers that should stay invisible to pcscd
# (https://ludovicrousseau.blogspot.com/2015/12/remove-andor-customize-pcsc-reader-names.html)
#
PCSCLITE_FILTER_IGNORE_READER_NAMES=""

2
pcsc-lite.sysusers Normal file
View File

@ -0,0 +1,2 @@
#Type Name ID GECOS Home directory Shell
u scard - "Smart Card Reader" /run/pcscd -

17
systemd-service.patch Normal file
View File

@ -0,0 +1,17 @@
diff --git a/etc/pcscd.service.in b/etc/pcscd.service.in
index 65ad6a6..f0929cd 100644
--- a/etc/pcscd.service.in
+++ b/etc/pcscd.service.in
@@ -4,9 +4,10 @@ Requires=pcscd.socket
Documentation=man:pcscd(8)
[Service]
-ExecStart=@sbindir_exp@/pcscd --foreground --auto-exit $PCSCD_ARGS
+Environment="PCSCD_OPTIONS="
+EnvironmentFile=-/etc/sysconfig/pcscd
+ExecStart=@sbindir_exp@/pcscd --foreground $PCSCD_OPTIONS
ExecReload=@sbindir_exp@/pcscd --hotplug
-EnvironmentFile=-@sysconfdir@/default/pcscd
[Install]
Also=pcscd.socket