opensc-0.19.0-1
This commit is contained in:
parent
3cdb296563
commit
539bf23b2a
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,3 +5,4 @@
|
||||
/opensc-0.16.0-git0362439.tar.gz
|
||||
/opensc-0.17.0.tar.gz
|
||||
/opensc-0.18.0.tar.gz
|
||||
/opensc-0.19.0.tar.gz
|
||||
|
@ -1,171 +0,0 @@
|
||||
From 14afdf38e371e57db39d6236f60f5458a0bdb0d8 Mon Sep 17 00:00:00 2001
|
||||
From: David Ward <david.ward@ll.mit.edu>
|
||||
Date: Fri, 18 May 2018 07:11:49 -0400
|
||||
Subject: [PATCH] Do not temporarily set SC_READER_REMOVED on all readers
|
||||
(#1335)
|
||||
|
||||
* reader-pcsc: Do not temporarily set SC_READER_REMOVED on all readers
|
||||
|
||||
Fixes #1324.
|
||||
|
||||
* reader-cryptotokenkit: Do not temporarily set SC_READER_REMOVED on all readers
|
||||
|
||||
See #1324.
|
||||
---
|
||||
src/libopensc/reader-cryptotokenkit.m | 51 ++++++++++++++++-----------------
|
||||
src/libopensc/reader-pcsc.c | 53 +++++++++++++++++++----------------
|
||||
2 files changed, 55 insertions(+), 49 deletions(-)
|
||||
|
||||
diff --git a/src/libopensc/reader-cryptotokenkit.m b/src/libopensc/reader-cryptotokenkit.m
|
||||
index cf0774697..449b9f86d 100644
|
||||
--- a/src/libopensc/reader-cryptotokenkit.m
|
||||
+++ b/src/libopensc/reader-cryptotokenkit.m
|
||||
@@ -543,8 +543,10 @@ int cryptotokenkit_use_reader(sc_context_t *ctx, void *pcsc_context_handle, void
|
||||
static int cryptotokenkit_detect_readers(sc_context_t *ctx)
|
||||
{
|
||||
size_t i;
|
||||
+ NSUInteger j;
|
||||
int r;
|
||||
TKSmartCardSlotManager *mngr = [TKSmartCardSlotManager defaultManager];
|
||||
+ NSMutableArray *slotNames;
|
||||
|
||||
LOG_FUNC_CALLED(ctx);
|
||||
|
||||
@@ -554,38 +556,37 @@ static int cryptotokenkit_detect_readers(sc_context_t *ctx)
|
||||
goto err;
|
||||
}
|
||||
|
||||
- /* temporarily mark all readers as removed */
|
||||
- for (i=0; i < sc_ctx_get_reader_count(ctx); i++) {
|
||||
- sc_reader_t *reader = sc_ctx_get_reader(ctx, i);
|
||||
- reader->flags |= SC_READER_REMOVED;
|
||||
- }
|
||||
-
|
||||
sc_log(ctx, "Probing CryptoTokenKit readers");
|
||||
|
||||
- for (NSString *slotName in [mngr slotNames]) {
|
||||
- sc_reader_t *old_reader;
|
||||
- int found = 0;
|
||||
- const char *reader_name = [slotName UTF8String];
|
||||
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
|
||||
+ slotNames = [[mngr slotNames] mutableCopy];
|
||||
|
||||
- for (i=0; i < sc_ctx_get_reader_count(ctx) && !found; i++) {
|
||||
- old_reader = sc_ctx_get_reader(ctx, i);
|
||||
- if (old_reader == NULL) {
|
||||
- r = SC_ERROR_INTERNAL;
|
||||
- goto err;
|
||||
- }
|
||||
- if (!strcmp(old_reader->name, reader_name)) {
|
||||
- found = 1;
|
||||
- }
|
||||
+ /* check if existing readers were returned in the list */
|
||||
+ for (i = 0; i < sc_ctx_get_reader_count(ctx); i++) {
|
||||
+ sc_reader_t *reader = sc_ctx_get_reader(ctx, i);
|
||||
+
|
||||
+ if (reader == NULL) {
|
||||
+ r = SC_ERROR_INTERNAL;
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ for (j = 0; j < [slotNames count]; j++) {
|
||||
+ if (!strcmp(reader->name, [slotNames[j] UTF8String]))
|
||||
+ break;
|
||||
}
|
||||
|
||||
- /* Reader already available, skip */
|
||||
- if (found) {
|
||||
- old_reader->flags &= ~SC_READER_REMOVED;
|
||||
- continue;
|
||||
+ if (j < [slotNames count]) {
|
||||
+ /* existing reader found; remove it from the list */
|
||||
+ [slotNames removeObjectAtIndex:j];
|
||||
+ } else {
|
||||
+ /* existing reader not found */
|
||||
+ reader->flags |= SC_READER_REMOVED;
|
||||
}
|
||||
+ }
|
||||
|
||||
- sc_log(ctx, "Found new CryptoTokenKit reader '%s'", reader_name);
|
||||
+ /* add readers remaining in the list */
|
||||
+ for (NSString *slotName in slotNames) {
|
||||
+ dispatch_semaphore_t sema = dispatch_semaphore_create(0);
|
||||
+ sc_log(ctx, "Found new CryptoTokenKit reader '%s'", [slotName UTF8String]);
|
||||
[mngr getSlotWithName:slotName reply:^(TKSmartCardSlot *slot) {
|
||||
cryptotokenkit_use_reader(ctx, slot, NULL);
|
||||
dispatch_semaphore_signal(sema);
|
||||
diff --git a/src/libopensc/reader-pcsc.c b/src/libopensc/reader-pcsc.c
|
||||
index 18d97f0c8..c9edad608 100644
|
||||
--- a/src/libopensc/reader-pcsc.c
|
||||
+++ b/src/libopensc/reader-pcsc.c
|
||||
@@ -1298,12 +1298,6 @@ static int pcsc_detect_readers(sc_context_t *ctx)
|
||||
goto out;
|
||||
}
|
||||
|
||||
- /* temporarily mark all readers as removed */
|
||||
- for (i=0;i < sc_ctx_get_reader_count(ctx);i++) {
|
||||
- sc_reader_t *reader = sc_ctx_get_reader(ctx, i);
|
||||
- reader->flags |= SC_READER_REMOVED;
|
||||
- }
|
||||
-
|
||||
sc_log(ctx, "Probing PC/SC readers");
|
||||
|
||||
do {
|
||||
@@ -1359,28 +1353,39 @@ static int pcsc_detect_readers(sc_context_t *ctx)
|
||||
goto out;
|
||||
}
|
||||
|
||||
- for (reader_name = reader_buf; *reader_name != '\x0';
|
||||
- reader_name += strlen(reader_name) + 1) {
|
||||
- sc_reader_t *reader = NULL, *old_reader = NULL;
|
||||
- struct pcsc_private_data *priv = NULL;
|
||||
- int found = 0;
|
||||
+ /* check if existing readers were returned in the list */
|
||||
+ for (i = 0; i < sc_ctx_get_reader_count(ctx); i++) {
|
||||
+ sc_reader_t *reader = sc_ctx_get_reader(ctx, i);
|
||||
|
||||
- for (i=0;i < sc_ctx_get_reader_count(ctx) && !found;i++) {
|
||||
- old_reader = sc_ctx_get_reader(ctx, i);
|
||||
- if (old_reader == NULL) {
|
||||
- ret = SC_ERROR_INTERNAL;
|
||||
- goto out;
|
||||
- }
|
||||
- if (!strcmp(old_reader->name, reader_name)) {
|
||||
- found = 1;
|
||||
- }
|
||||
+ if (!reader) {
|
||||
+ ret = SC_ERROR_INTERNAL;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
- /* Reader already available, skip */
|
||||
- if (found) {
|
||||
- old_reader->flags &= ~SC_READER_REMOVED;
|
||||
- continue;
|
||||
+ for (reader_name = reader_buf; *reader_name != '\x0';
|
||||
+ reader_name += strlen(reader_name) + 1) {
|
||||
+ if (!strcmp(reader->name, reader_name))
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (*reader_name != '\x0') {
|
||||
+ /* existing reader found; remove it from the list */
|
||||
+ char *next_reader_name = reader_name + strlen(reader_name) + 1;
|
||||
+
|
||||
+ memmove(reader_name, next_reader_name,
|
||||
+ (reader_buf + reader_buf_size) - next_reader_name);
|
||||
+ reader_buf_size -= (next_reader_name - reader_name);
|
||||
+ } else {
|
||||
+ /* existing reader not found */
|
||||
+ reader->flags |= SC_READER_REMOVED;
|
||||
}
|
||||
+ }
|
||||
+
|
||||
+ /* add readers remaining in the list */
|
||||
+ for (reader_name = reader_buf; *reader_name != '\x0';
|
||||
+ reader_name += strlen(reader_name) + 1) {
|
||||
+ sc_reader_t *reader = NULL;
|
||||
+ struct pcsc_private_data *priv = NULL;
|
||||
|
||||
ret = pcsc_add_reader(ctx, reader_name, strlen(reader_name), &reader);
|
||||
if (ret != SC_SUCCESS) {
|
1909
opensc-0.19.0-rsa-pss.patch
Normal file
1909
opensc-0.19.0-rsa-pss.patch
Normal file
File diff suppressed because it is too large
Load Diff
22
opensc.spec
22
opensc.spec
@ -2,8 +2,8 @@
|
||||
%define nssdb %{_sysconfdir}/pki/nssdb
|
||||
|
||||
Name: opensc
|
||||
Version: 0.18.0
|
||||
Release: 4%{?dist}
|
||||
Version: 0.19.0
|
||||
Release: 1%{?dist}
|
||||
Summary: Smart card library and applications
|
||||
|
||||
Group: System Environment/Libraries
|
||||
@ -11,6 +11,7 @@ License: LGPLv2+
|
||||
URL: https://github.com/OpenSC/OpenSC/wiki
|
||||
Source0: https://github.com/OpenSC/OpenSC/releases/download/%{version}/%{name}-%{version}.tar.gz
|
||||
Source1: opensc.module
|
||||
Patch1: opensc-0.19.0-rsa-pss.patch
|
||||
|
||||
BuildRequires: pcsc-lite-devel
|
||||
BuildRequires: readline-devel
|
||||
@ -24,8 +25,8 @@ Requires: pcsc-lite
|
||||
Obsoletes: mozilla-opensc-signer < 0.12.0
|
||||
Obsoletes: opensc-devel < 0.12.0
|
||||
Obsoletes: coolkey <= 1.1.0-36
|
||||
# https://github.com/OpenSC/OpenSC/issues/1324 (#1579933)
|
||||
Patch1: opensc-0.18.0-WaitForSlotEvent.patch
|
||||
# https://github.com/OpenSC/OpenSC/pull/1435
|
||||
Patch2: opensc-0.19.0-rsa-pss.patch
|
||||
|
||||
%description
|
||||
OpenSC provides a set of libraries and utilities to work with smart cards. Its
|
||||
@ -39,12 +40,12 @@ every software/card that does so, too.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -p1 -b .wait
|
||||
%patch2 -p1 -b .pss
|
||||
|
||||
cp -p src/pkcs15init/README ./README.pkcs15init
|
||||
cp -p src/scconf/README.scconf .
|
||||
# No {_libdir} here to avoid multilib conflicts; it's just an example
|
||||
sed -i -e 's|/usr/local/towitoko/lib/|/usr/lib/ctapi/|' etc/opensc.conf.in
|
||||
sed -i -e 's|/usr/local/towitoko/lib/|/usr/lib/ctapi/|' etc/opensc.conf.example.in
|
||||
|
||||
|
||||
%build
|
||||
@ -54,6 +55,7 @@ sed -i -e 's|"/lib /usr/lib\b|"/%{_lib} %{_libdir}|' configure # lib64 rpaths
|
||||
%configure --disable-static \
|
||||
--disable-assert \
|
||||
--enable-pcsc \
|
||||
--disable-tests \
|
||||
--enable-sm \
|
||||
--with-pcsc-provider=libpcsclite.so.1
|
||||
make %{?_smp_mflags} V=1
|
||||
@ -77,7 +79,7 @@ rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/opensc
|
||||
rm -f $RPM_BUILD_ROOT%{_libdir}/libopensc.so
|
||||
rm -f $RPM_BUILD_ROOT%{_libdir}/libsmm-local.so
|
||||
%if 0%{?rhel} && 0%{?rhel} < 7
|
||||
rm -rf %{buildroot}%{_sysconfdir}/bash_completion.d/
|
||||
rm -rf %{buildroot}%{_datadir}/bash-completion/
|
||||
%endif
|
||||
|
||||
# the npa-tool builds to nothing since we do not have OpenPACE library
|
||||
@ -111,7 +113,7 @@ fi
|
||||
%doc COPYING NEWS README*
|
||||
|
||||
%if ! 0%{?rhel} || 0%{?rhel} >= 7
|
||||
%{_sysconfdir}/bash_completion.d/*
|
||||
%{_datadir}/bash-completion/*
|
||||
%endif
|
||||
|
||||
%config(noreplace) %{_sysconfdir}/opensc-%{_arch}.conf
|
||||
@ -171,6 +173,10 @@ fi
|
||||
|
||||
|
||||
%changelog
|
||||
* Tue Sep 25 2018 Jakub Jelen <jjelen@redhat.com> - 0.19.0-1
|
||||
- New upstream release fixing various CVE's
|
||||
- Add support for RSA-PSS signatures
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.18.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (opensc-0.18.0.tar.gz) = dc90cff3e0e639c14bfb11d1d0455964d24d08aa27728592ab0d8b487a1ffee1ca71cb9bbf5d0f101b2ebd85cf9478988f686d45effa72315e6ffc843d398768
|
||||
SHA512 (opensc-0.19.0.tar.gz) = 90659133fb593cbf82ed6502e3858f34119bff051e3090489b7622659dcb1c26d389a4715892aa60a5606bc0ce115bd6c504521abfb965de9ad46441e4ed2b8e
|
||||
|
Loading…
Reference in New Issue
Block a user