Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pcsc-ccid for openSUSE:Factory 
checked in at 2023-02-03 22:05:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pcsc-ccid (Old)
 and      /work/SRC/openSUSE:Factory/.pcsc-ccid.new.4462 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pcsc-ccid"

Fri Feb  3 22:05:43 2023 rev:66 rq:1062957 version:1.5.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/pcsc-ccid/pcsc-ccid.changes      2022-11-16 
15:44:01.931992154 +0100
+++ /work/SRC/openSUSE:Factory/.pcsc-ccid.new.4462/pcsc-ccid.changes    
2023-02-03 22:13:13.650072559 +0100
@@ -1,0 +2,16 @@
+Thu Feb  2 18:26:15 UTC 2023 - Ben Greiner <c...@bnavigator.de>
+
+- version 1.5.2
+  * Add support of
+    - KAPELSE KAP-LINK
+    - LDU LANDI
+    - Sensyl SSC-HV Reader
+    - TOKEN2 MFA NFC Reader
+    - TOKEN2 Molto2
+    - Thales RF Reader
+   * Alcor Micro AU9560: Remove high speeds since they are not
+     supported
+  * Hack for AlcorMicro AU9560 and Acos-ID card
+  * configure.ac: disable the use of --disable-usbdropdir
+
+-------------------------------------------------------------------

Old:
----
  ccid-1.5.1.tar.bz2
  ccid-1.5.1.tar.bz2.asc

New:
----
  ccid-1.5.2.tar.bz2
  ccid-1.5.2.tar.bz2.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pcsc-ccid.spec ++++++
--- /var/tmp/diff_new_pack.n1ydrx/_old  2023-02-03 22:13:14.050074882 +0100
+++ /var/tmp/diff_new_pack.n1ydrx/_new  2023-02-03 22:13:14.054074906 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package pcsc-ccid
 #
-# Copyright (c) 2022 SUSE LLC
+# 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
@@ -18,7 +18,7 @@
 
 Name:           pcsc-ccid
 %define _name ccid
-Version:        1.5.1
+Version:        1.5.2
 Release:        0
 Summary:        PCSC Driver for CCID Based Smart Card Readers and GemPC Twin 
Serial Reader
 License:        LGPL-2.1-or-later
@@ -80,7 +80,7 @@
 %files
 %defattr(-,root,root)
 # NEWS is empty
-%doc AUTHORS ChangeLog README.md README.towitoko 
contrib/Kobil_mIDentity_switch/README_Kobil_mIDentity_switch.txt 
SCARDGETATTRIB.txt
+%doc AUTHORS ChangeLog README.md README.towitoko 
contrib/Kobil_mIDentity_switch/README_Kobil_mIDentity_switch.txt 
SCARDGETATTRIB.md
 %license COPYING LICENSE.openct
 %config (noreplace) %{_sysconfdir}/reader.conf.d/*
 %{ifddir}/*

++++++ ccid-1.5.1.tar.bz2 -> ccid-1.5.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/ChangeLog new/ccid-1.5.2/ChangeLog
--- old/ccid-1.5.1/ChangeLog    2022-11-14 11:42:47.000000000 +0100
+++ new/ccid-1.5.2/ChangeLog    2023-01-31 16:28:44.000000000 +0100
@@ -1,4 +1,520 @@
-commit 64a1780ac6b9947223a7d65c363556f2aed8d4c9 (HEAD -> master, zotac/master)
+commit 9a7ad431a184771fdb7228da922c89daf5d55acb (HEAD -> master, zotac/master)
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Tue Jan 31 16:26:09 2023 +0100
+
+    Release 1.5.2
+    
+    Signed-off-by: Ludovic Rousseau <ludovic.rouss...@free.fr>
+
+ README.md    | 12 ++++++++++++
+ configure.ac |  2 +-
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+commit ae7e716f8b0fee0effabe80aeea7bca2c066a291 (zotac/AlcorMicro)
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Sun Jan 15 15:06:32 2023 +0100
+
+    Hack for AlcorMicro AU9560 and Acos-ID card
+    
+    Perform a double reset cold + hot so that the Acos-ID card uses a lower
+    communication speed.
+    
+    The cold ATR of this card is:
+    3B DF 96 FF 91 01 31 FE 46 80 31 90 52 41 02 64 05 02 00 AC 73 D6 22 C0 17
+    While the hot ATR is:
+    3B DF 18 FF 91 01 31 FE 46 80 31 90 52 41 02 64 05 02 00 AC 73 D6 22 C0 99
+    
+    Note how TA1 changed from 0x96 (250000 bits/s at 4 MHz) to 0x18
+    (129032 bits/s at 4.00 MHz).
+    
+    The pcscd trace is:
+    00000002 [] ifdhandler.c:926:IFDHSetProtocolParameters() Set adapted speed 
to 115625 bauds
+    00000003 [] ifdhandler.c:1039:IFDHSetProtocolParameters() BWI/CWI (TB3) 
present: 0x46
+    00000002 [] ifdhandler.c:1074:IFDHSetProtocolParameters() IFSC (TA3) 
present: 254
+    00000002 [] ifdhandler.c:1078:IFDHSetProtocolParameters() Timeout: 2928 ms
+    00000003 [] commands.c:2324:SetParameters() length: 7 bytes
+    00000006 [] -> 000000 61 07 00 00 00 00 0D 01 00 00 95 10 FF 46 00 FE 00
+    02267701 [] <- 000000 82 00 00 00 00 00 0D 41 FE 00
+    00000021 [] commands.c:2351:SetParameters Card absent or mute
+    00000011 [] ifdhandler.c:1246:IFDHPowerICC() action: Reset, 
usb:058f/9540:libudev:0:/dev/bus/usb/003/003 (lun: 0)
+    00000006 [] -> 000000 62 00 00 00 00 00 0E 00 00 00
+    00194208 [] <- 000000 80 19 00 00 00 00 0E 00 00 00 3B DF 96 FF 91 01 31 
FE 46 80 31 90 52 41 02 64 05 02 00 AC 73 D6 22 C0 17
+    00000025 [] ifdhandler.c:1246:IFDHPowerICC() action: Reset, 
usb:058f/9540:libudev:0:/dev/bus/usb/003/003 (lun: 0)
+    00000007 [] -> 000000 62 00 00 00 00 00 0F 00 00 00
+    00056894 [] <- 000000 80 19 00 00 00 00 0F 00 00 00 3B DF 18 FF 91 01 31 
FE 46 80 31 90 52 41 02 64 05 02 00 AC 73 D6 22 C0 99
+    00000022 [] winscard.c:430:SCardConnect() Active Protocol: T=1
+
+ src/ifdhandler.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 02f953b72bf55005f2483163fc35b2f6f0bbd30a
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Jan 11 16:04:08 2023 +0100
+
+    Hack for AlcorMicro AU9560 and Acos-ID card
+    
+    The Acos-ID card 3BDF96FF910131FE4680319052410264050200AC73D622C017 does
+    not like when the driver tries to negotiate a speed lower than its
+    TA1=0x96
+    
+    The AlcorMicro AU9560 does not support the card speed so must negotiate a
+    lower speed using Set Paramaters.
+    But that fails:
+    00000004 [] ifdhandler.c:858:IFDHSetProtocolParameters() Card can work at 
231250 bauds
+    00000003 [] ifdhandler.c:897:IFDHSetProtocolParameters() Reader can't do 
more than 200000 bauds
+    00000002 [] ifdhandler.c:2176:find_baud_rate() Card baud rate: 115625
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 1807
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 1989
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 2409
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 2487
+    00000001 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 3315
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 3613
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 3978
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 4818
+    00000001 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 4973
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 6631
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 7227
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 7957
+    00000001 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 9635
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 9946
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 13262
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 14453
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 15914
+    00000004 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 19271
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 19892
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 21680
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 23871
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 26523
+    00000001 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 28906
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 29839
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 31828
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 36133
+    00000001 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 38542
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 39785
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 43359
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 48177
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 49731
+    00000001 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 53047
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 57813
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 59677
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 63656
+    00000001 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 66308
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 72266
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 77083
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 79570
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 86719
+    00000001 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 96354
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 99462
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 106093
+    00000002 [] ifdhandler.c:2185:find_baud_rate() Reader can do: 115625
+    00000002 [] ifdhandler.c:926:IFDHSetProtocolParameters() Set adapted speed 
to 115625 bauds
+    00000002 [] ifdhandler.c:1039:IFDHSetProtocolParameters() BWI/CWI (TB3) 
present: 0x46
+    00000003 [] ifdhandler.c:1074:IFDHSetProtocolParameters() IFSC (TA3) 
present: 254
+    00000002 [] ifdhandler.c:1078:IFDHSetProtocolParameters() Timeout: 2928 ms
+    00000003 [] commands.c:2324:SetParameters() length: 7 bytes
+    00000006 [] -> 000000 61 07 00 00 00 00 4B 01 00 00 95 10 FF 46 00 FE 00
+    02267435 [] <- 000000 82 00 00 00 00 00 4B 41 FE 00
+    00000023 [] commands.c:2351:SetParameters Card absent or mute
+    
+    The idea is to reset the card and do NOT try to use lower the speed.
+
+ src/ifdhandler.c | 18 +++++++++++++++++-
+ 1 file changed, 17 insertions(+), 1 deletion(-)
+
+commit 5fb1e2c3d4b1ee40dd5c370cbb5fe8c1f7de8851
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Jan 25 14:41:11 2023 +0100
+
+    Alcor Micro AU9560: check the list exists before truncation
+    
+    The reader may be in a incorrect state and not respond to the
+    GET_DATA_RATES command. The list is then empty and we should not try to
+    truncate it (or the driver would crash).
+    
+    The logs are:
+    00000003 [] ccid_usb.c:1432:ControlUSB() request: 0x03
+    00000259 [] ccid_usb.c:1443:ControlUSB() control failed (1/3): 
LIBUSB_ERROR_IO
+    00000003 [] ccid_usb.c:1377:get_data_rates() IFD does not support 
GET_DATA_RATES request: -1
+    then crash
+
+ src/ccid.c | 25 +++++++++++++++----------
+ 1 file changed, 15 insertions(+), 10 deletions(-)
+
+commit 2f78bca94a4d815231638d1ff434b549f20913bf
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Fri Jan 20 16:15:17 2023 +0100
+
+    Add Sensyl SSC-HV Reader
+
+ readers/Sensyl_SSC-HV_Reader.txt | 100 +++++++++++++++++++++++++++++++++++++++
+ readers/supported_readers.txt    |   3 +-
+ 2 files changed, 102 insertions(+), 1 deletion(-)
+
+commit 98fb549ba17954f0623cb7a0e737e52d78f6149b
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Fri Jan 20 12:37:42 2023 +0100
+
+    Makefile: fix 'make dist'
+    
+    make[2]: *** No rule to make target 'SCARDGETATTRIB.txt', needed by 
'distdir-am'.  Stop.
+
+ Makefile.am | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 772f64885ecc421b5002dbed6d897d5471a9e3c9
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Fri Jan 20 10:55:39 2023 +0100
+
+    Rename SCARDGETATTRIB from .txt to .md
+
+ SCARDGETATTRIB.txt => SCARDGETATTRIB.md | 86 +++++++++++++++++++--------------
+ 1 file changed, 49 insertions(+), 37 deletions(-)
+
+commit 23948c5b7ff038c2a84a570274b50486eed5d43f
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Fri Jan 20 10:37:35 2023 +0100
+
+    Convert SCARDCONTOL from .txt to .md
+
+ SCARDCONTOL.md  | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ SCARDCONTOL.txt | 63 ----------------------------------------------------
+ 2 files changed, 68 insertions(+), 63 deletions(-)
+
+commit 62a62d3fcc10beb639de0c96258c36225e560754
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Dec 7 11:31:07 2022 +0100
+
+    ccid_open_hack_pre: fix build error on macOS
+    
+    clang compiler does not like to have variables declared in a case: block
+    without a { } block.
+    
+    ccid.c:107:4: error: expected expression
+                            unsigned int *uint_array = 
ccid_descriptor->arrayOfSupportedDataRates;
+                            ^
+    ccid.c:112:12: error: use of undeclared identifier 'uint_array'
+                            after = uint_array;
+                                    ^
+    ccid.c:113:29: error: use of undeclared identifier 'uint_array'
+                            while ((current_speed = *uint_array++) != 0)
+                                                     ^
+    3 errors generated.
+
+ src/ccid.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 3f42960bcd71a1053a6e330ccf33de617895e62e
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Nov 23 15:29:36 2022 +0100
+
+    IFDHSetProtocolParameters: add logs to speed selection
+    
+    We now log:
+    - the baud rate the card can use
+    - the maxiumum baud rate the reader can use
+    
+    So it you use a card with TA1=0x96 (250000 bits/s at 4 MHz) and the
+    reader can't use this speed you will have something like:
+    ifdhandler.c:858:IFDHSetProtocolParameters() Card can work at 231250 bauds
+    ifdhandler.c:897:IFDHSetProtocolParameters() Reader can't do more than 
187500 bauds
+    ifdhandler.c:2160:find_baud_rate() Card baud rate: 115625
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 1807
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 1989
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 2409
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 2487
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 3315
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 3613
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 3978
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 4818
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 4973
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 6631
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 7227
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 7957
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 9635
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 9946
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 13262
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 14453
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 15914
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 19271
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 19892
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 21680
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 23871
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 26523
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 28906
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 29839
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 31828
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 36133
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 38542
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 39785
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 43359
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 48177
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 49731
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 53047
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 57813
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 59677
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 63656
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 66308
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 72266
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 77083
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 79570
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 86719
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 96354
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 99462
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 106093
+    ifdhandler.c:2169:find_baud_rate() Reader can do: 115625
+    ifdhandler.c:926:IFDHSetProtocolParameters() Set adapted speed to 115625 
bauds
+    
+    This is the case with the "NXP JCOP 4, J3R200P0X3U/0ZA16CP NXD6.2
+    (JavaCard)" card
+    
https://smartcard-atr.apdu.fr/parse?ATR=3BDC96FF8111FE8031C8544356350773FFA1C03C
+    and the Alcor Micro AU9560 reader.
+
+ src/ifdhandler.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit c81c512ba7159ad35a41deaf4d294ee4cc399920
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Tue Nov 22 17:56:47 2022 +0100
+
+    Alcor Micro AU9560: Remove high speeds
+    
+    The reader does NOT support high speeds even if it declares so.
+    
+    We remove all baud rates higher than 200000.
+    
+    00000026 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 1807 
bps
+    00000005 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 1989 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 2409 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 2487 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 3315 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 3613 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 3978 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 4818 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 4973 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 6631 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 7227 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 7957 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 9635 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 9946 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
13262 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
14453 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
15914 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
19271 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
19892 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
21680 bps
+    00000007 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
23871 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
26523 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
28906 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
29839 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
31828 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
36133 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
38542 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
39785 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
43359 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
48177 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
49731 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
53047 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
57813 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
59677 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
63656 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
66308 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
72266 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
77083 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
79570 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
86719 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
96354 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
99462 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
106093 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
115625 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
119355 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
132616 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
144531 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
154167 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
159140 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
198925 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
212186 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
231250 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
318280 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 2344 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 2581 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 3125 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 3226 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 4301 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 4688 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 5161 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 5859 
bps
+    00000007 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 6250 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 6452 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 7813 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 8065 
bps
+    00000009 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 8602 
bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 9375 
bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
10323 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
10753 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
11719 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
12500 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
12903 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
15625 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
16129 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
17204 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
18750 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
20645 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
21505 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
23438 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
25000 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
25806 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
28125 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
30968 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
31250 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
32258 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
34409 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
37500 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
38710 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
41290 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
43011 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
46875 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
50000 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
51613 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
56250 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
62500 bps
+    00000005 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
64516 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
68817 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
70313 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
75000 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
77419 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
82581 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
86022 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
93750 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
96774 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
100000 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
103226 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
112500 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
117188 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
125000 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
127312 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
129032 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
137634 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
150000 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
156250 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
161290 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
165161 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
172043 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
187500 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
200000 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
206452 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
215054 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
250000 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
258065 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
275269 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
300000 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
308333 bps
+    00000005 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
344086 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
375000 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
400000 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
412903 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
424373 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
462500 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
500000 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
516129 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
550538 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
600000 bps
+    00000003 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
636559 bps
+    00000002 [140214768158720] ccid_usb.c:1412:get_data_rates() declared: 
688172 bps
+    00001534 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 212186
+    00000015 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 231250
+    00000004 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 318280
+    00000003 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 206452
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 215054
+    00000003 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 250000
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 258065
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 275269
+    00000003 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 300000
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 308333
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 344086
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 375000
+    00000003 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 400000
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 412903
+    00000003 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 424373
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 462500
+    00000003 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 500000
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 516129
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 550538
+    00000005 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 600000
+    00000003 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 636559
+    00000002 [140214768158720] ccid.c:117:ccid_open_hack_pre() Remove 
baudrate: 688172
+    
+    Cards with TA1=0x96 or 0x97 are now working with this reader after
+    negotiating a lower speed.
+
+ src/ccid.c | 24 ++++++++++++++++++++++++
+ src/ccid.h |  1 +
+ 2 files changed, 25 insertions(+)
+
+commit 1af59ba4d1b4b4557085f3e7938b0275282e66c8
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Jan 18 14:34:56 2023 +0100
+
+    Add KAPELSE KAP-LINK
+
+ readers/KAPELSE_KAP-LINK.txt  | 102 ++++++++++++++++++++++++++++++++++++++++++
+ readers/supported_readers.txt |   5 ++-
+ 2 files changed, 106 insertions(+), 1 deletion(-)
+
+commit 171ba932c94473ec699a0f2279cdb1bcef949caa
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Fri Jan 13 21:54:50 2023 +0100
+
+    configure.ac: disable the use of --disable-usbdropdir
+    
+    The configure will now fails with the error:
+    use --enable-usbdropdir=DIR
+    
+    It is not possible to build the driver without specifying a USB dropdir.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6ba85f0626cb00af18be7fd17ff1c0144d373405 (origin/master, origin/HEAD, 
github/master)
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Tue Dec 6 17:22:14 2022 +0100
+
+    Add LDU LANDI
+
+ readers/LDU_LANDI.txt         | 51 +++++++++++++++++++++++++++++++++++++++++++
+ readers/supported_readers.txt |  5 ++++-
+ 2 files changed, 55 insertions(+), 1 deletion(-)
+
+commit 2b568a65c887b5416c3d3a7ed7d44407ba7d8e91
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Fri Nov 18 11:09:21 2022 +0100
+
+    Add TOKEN2 MFA NFC Reader
+
+ readers/TOKEN2_MFA_NFC_Reader.txt | 100 ++++++++++++++++++++++++++++++++++++++
+ readers/supported_readers.txt     |   5 +-
+ 2 files changed, 104 insertions(+), 1 deletion(-)
+
+commit cd1df07d90487c77f07ecebf098ee64f85b64873
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Thu Nov 17 21:52:35 2022 +0100
+
+    Add Thales RF Reader
+
+ readers/Thales_RF_Reader.txt  | 57 +++++++++++++++++++++++++++++++++++++++++++
+ readers/supported_readers.txt |  3 ++-
+ 2 files changed, 59 insertions(+), 1 deletion(-)
+
+commit 7ddec0a46fe7592a06b1ed22b4afdcc8e301465e
+Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
+Date:   Wed Nov 16 14:52:48 2022 +0100
+
+    Add TOKEN2 Molto2
+
+ readers/TOKEN2_Molto2.txt     | 50 +++++++++++++++++++++++++++++++++++++++++++
+ readers/supported_readers.txt |  5 ++++-
+ 2 files changed, 54 insertions(+), 1 deletion(-)
+
+commit 64a1780ac6b9947223a7d65c363556f2aed8d4c9 (tag: 1.5.1)
 Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
 Date:   Mon Nov 14 11:41:23 2022 +0100
 
@@ -10,7 +526,7 @@
  configure.ac |  2 +-
  2 files changed, 29 insertions(+), 1 deletion(-)
 
-commit 67b825199a6d3510168b49d90e16265cdaead00d (origin/master, origin/HEAD)
+commit 67b825199a6d3510168b49d90e16265cdaead00d
 Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
 Date:   Tue Nov 8 18:13:48 2022 +0100
 
@@ -116,7 +632,7 @@
  PCSC | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-commit 89bddc85d819df57ff1e0cf7e28c92ae08708fb5 (github/master)
+commit 89bddc85d819df57ff1e0cf7e28c92ae08708fb5
 Author: Ludovic Rousseau <ludovic.rouss...@free.fr>
 Date:   Mon Nov 7 17:28:57 2022 +0100
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/Makefile.am new/ccid-1.5.2/Makefile.am
--- old/ccid-1.5.1/Makefile.am  2022-09-28 18:58:36.000000000 +0200
+++ new/ccid-1.5.2/Makefile.am  2023-01-31 16:26:41.000000000 +0100
@@ -2,7 +2,8 @@
 
 SUBDIRS = readers examples contrib src
 
-EXTRA_DIST = bootstrap ChangeLog SCARDGETATTRIB.txt \
+EXTRA_DIST = bootstrap ChangeLog \
+       SCARDGETATTRIB.md \
        README.md \
        $(AUX_DIST) \
        MacOSX/configure \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/Makefile.in new/ccid-1.5.2/Makefile.in
--- old/ccid-1.5.1/Makefile.in  2022-11-14 11:42:41.000000000 +0100
+++ new/ccid-1.5.2/Makefile.in  2023-01-31 16:27:19.000000000 +0100
@@ -355,7 +355,8 @@
 usbdropdir = @usbdropdir@
 ACLOCAL_AMFLAGS = -I m4
 SUBDIRS = readers examples contrib src
-EXTRA_DIST = bootstrap ChangeLog SCARDGETATTRIB.txt \
+EXTRA_DIST = bootstrap ChangeLog \
+       SCARDGETATTRIB.md \
        README.md \
        $(AUX_DIST) \
        MacOSX/configure \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/README.md new/ccid-1.5.2/README.md
--- old/ccid-1.5.1/README.md    2022-11-14 11:41:59.000000000 +0100
+++ new/ccid-1.5.2/README.md    2023-01-31 16:26:41.000000000 +0100
@@ -117,6 +117,18 @@
 History:
 ========
 
+1.5.2 - 31 January 2023, Ludovic Rousseau
+   - Add support of
+     - KAPELSE KAP-LINK
+     - LDU LANDI
+     - Sensyl SSC-HV Reader
+     - TOKEN2 MFA NFC Reader
+     - TOKEN2 Molto2
+     - Thales RF Reader
+   - Alcor Micro AU9560: Remove high speeds since they are not supported
+   - Hack for AlcorMicro AU9560 and Acos-ID card
+   - configure.ac: disable the use of --disable-usbdropdir
+
 1.5.1 - 14 November 2022, Ludovic Rousseau
    - Add support of
      - Access IS ATR220 with idProduct: 0x0184
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/SCARDGETATTRIB.md 
new/ccid-1.5.2/SCARDGETATTRIB.md
--- old/ccid-1.5.1/SCARDGETATTRIB.md    1970-01-01 01:00:00.000000000 +0100
+++ new/ccid-1.5.2/SCARDGETATTRIB.md    2023-01-31 16:26:41.000000000 +0100
@@ -0,0 +1,112 @@
+# List of SCardGetAttrib() commands supported by the CCID driver
+
+PC/SC provides the `SCardGetAttrib()` function to request some attributes from
+the driver.
+
+
+## PC/SC function prototype
+
+See also 
[SCardGetAttrib()](https://pcsclite.apdu.fr/api/group__API.html#gaacfec51917255b7a25b94c5104961602)
 in the pcsclite API documentation.
+
+```C
+LONG SCardGetAttrib(SCARDHANDLE hCard,
+    DWORD dwAttrId,
+    LPBYTE pbAttr,
+    LPDWORD pcbAttrLen);
+```
+
+Parameters:
+
+* `hCard`       IN      Connection made from `SCardConnect()`
+* `dwAttrId`    IN      Identifier for the attribute to get
+* `pbAttr`      OUT     Pointer to a buffer that receives the attribute
+* `pcbAttrLen`  IN/OUT  Length of the `pbAttr` buffer in bytes
+
+If the attribute is not supported the applications receive the error
+`SCARD_E_UNSUPPORTED_FEATURE`.
+
+
+## supported attributes
+
+* `SCARD_ATTR_ATR_STRING`
+
+    ATR of the card
+
+* `SCARD_ATTR_ICC_INTERFACE_STATUS`
+
+    Single byte:
+    * Zero if smart card electrical contact is not active
+    * nonzero if contact is active.
+
+* `SCARD_ATTR_ICC_PRESENCE`
+
+    Single byte indicating smart card presence:
+    * 0 = not present
+    * 1 = card present but not swallowed (applies only if reader supports
+      smart card swallowing)
+    * 2 = card present (and swallowed if reader supports smart card
+      swallowing)
+    * 4 = card confiscated.
+
+* `SCARD_ATTR_VENDOR_IFD_VERSION`
+
+    Vendor-supplied interface device version
+
+    DWORD in the form 0xMMmmbbbb where
+    * MM = major version,
+    * mm = minor version,
+    * and bbbb = build number
+    It is the bcdDevice USB field.
+
+* `SCARD_ATTR_VENDOR_NAME`
+
+   name of the IFD (reader) vendor. It is the iManufacturer USB field
+   (if any).
+
+* `SCARD_ATTR_MAXINPUT`
+
+   maximum size of an APDU supported by the reader.
+
+   format is unsigned 32-bit unsing the byte order of the platform.
+   Correct readers should support up to 261 bytes (CLA + INS + P1 + P2 +
+   Lc + 255 bytes of data) but some readers support less (253 bytes only
+   for example). It is a problem for T=1 cards when the reader works in
+   APDU mode instead of TPDU and for T=0 cards.
+
+* `SCARD_ATTR_VENDOR_IFD_SERIAL_NO`
+
+    reader serial number (if available).
+
+* `SCARD_ATTR_CHANNEL_ID`
+
+    DWORD in the form 0xDDDDCCCC with:
+    * DDDD equal to 0x0020 for USB devices
+    * CCCC equal to bus number in the high byte and device address in the
+      low byte
+
+## Sample code
+
+```C
+#include <reader.h>
+
+{
+    [...]
+
+    unsigned char pbAtr[MAX_ATR_SIZE];
+    DWORD dwAtrLen;
+
+    /* use a NULL buffer to just get the needed length */
+    rv = SCardGetAttrib(hCard, SCARD_ATTR_ATR_STRING, NULL, &dwAtrLen);
+    if (rv == SCARD_S_SUCCESS)
+        printf("ATR length: %ld\n", dwAtrLen);
+
+    dwAtrLen = sizeof(pbAtr);
+    rv = SCardGetAttrib(hCard, SCARD_ATTR_ATR_STRING, pbAtr, &dwAtrLen);
+    if (rv == SCARD_S_SUCCESS)
+    {
+        for (i = 0; i < dwAtrLen; i++)
+            printf("%02X ", pbAtr[i]);
+        printf("\n");
+    }
+}
+```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/SCARDGETATTRIB.txt 
new/ccid-1.5.2/SCARDGETATTRIB.txt
--- old/ccid-1.5.1/SCARDGETATTRIB.txt   2022-09-28 18:58:36.000000000 +0200
+++ new/ccid-1.5.2/SCARDGETATTRIB.txt   1970-01-01 01:00:00.000000000 +0100
@@ -1,100 +0,0 @@
-List of SCardGetAttrib() commands supported by the CCID driver
-==============================================================
-
-PC/SC provides the SCardGetAttrib() function to request some attributes from
-the driver.
-
-
-PC/SC function prototype
-"""""""""""""""""""""""""
-
-LONG SCardGetAttrib(SCARDHANDLE hCard,
-    DWORD dwAttrId,
-    LPBYTE pbAttr,
-    LPDWORD pcbAttrLen);
-
-Parameters:
-
-hCard       IN      Connection made from SCardConnect
-dwAttrId    IN      Identifier for the attribute to get
-pbAttr      OUT     Pointer to a buffer that receives the attribute
-pcbAttrLen  IN/OUT  Length of the pbAttr buffer in bytes
-
-If the attribute is not supported the applications receive the error
-SCARD_E_UNSUPPORTED_FEATURE (or SCARD_E_NOT_TRANSACTED for pcsc-lite
-version < 1.3.3)
-
-
-supported attributes
-""""""""""""""""""""
-
-SCARD_ATTR_ATR_STRING
-    ATR of the card
-
-SCARD_ATTR_ICC_INTERFACE_STATUS
-    Single byte. Zero if smart card electrical contact is not active;
-    nonzero if contact is active.
-
-SCARD_ATTR_ICC_PRESENCE
-    Single byte indicating smart card presence:
-    0 = not present
-    1 = card present but not swallowed (applies only if reader supports
-    smart card swallowing)
-    2 = card present (and swallowed if reader supports smart card swallowing)
-    4 = card confiscated.
-
-SCARD_ATTR_VENDOR_IFD_VERSION
-    Vendor-supplied interface device version
-    DWORD in the form 0xMMmmbbbb where
-    MM = major version,
-    mm = minor version,
-    and bbbb = build number
-    It is the bcdDevice USB field.
-
-SCARD_ATTR_VENDOR_NAME
-   name of the IFD (reader) vendor. It is the iManufacturer USB field
-   (if any).
-
-SCARD_ATTR_MAXINPUT
-   maximum size of an APDU supported by the reader.
-   format is unsigned 32-bit unsing the byte order of the platform.
-   Correct readers should support up to 261 bytes (CLA + INS + P1 + P2 +
-   Lc + 255 bytes of data) but some readers support less (253 bytes only
-   for example). It is a problem for T=1 cards when the reader works in
-   APDU mode instead of TPDU and for T=0 cards.
-
-SCARD_ATTR_VENDOR_IFD_SERIAL_NO
-    reader serial number (if available).
-
-SCARD_ATTR_CHANNEL_ID
-    DWORD in the form 0xDDDDCCCC with:
-    DDDD equal to 0x0020 for USB devices
-    CCCC equal to bus number in the high byte and device address in the
-    low byte
-
-Sample code
-===========
-
-#include <reader.h>
-
-{
-    [...]
-
-    unsigned char pbAtr[MAX_ATR_SIZE];
-    DWORD dwAtrLen;
-
-    /* use a NULL buffer to just get the needed length */
-    rv = SCardGetAttrib(hCard, SCARD_ATTR_ATR_STRING, NULL, &dwAtrLen);
-    if (rv == SCARD_S_SUCCESS)
-        printf("ATR length: %ld\n", dwAtrLen);
-
-    dwAtrLen = sizeof(pbAtr);
-    rv = SCardGetAttrib(hCard, SCARD_ATTR_ATR_STRING, pbAtr, &dwAtrLen);
-    if (rv == SCARD_S_SUCCESS)
-    {
-        for (i = 0; i < dwAtrLen; i++)
-            printf("%02X ", pbAtr[i]);
-        printf("\n");
-    }
-}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/aclocal.m4 new/ccid-1.5.2/aclocal.m4
--- old/ccid-1.5.1/aclocal.m4   2022-11-14 11:42:40.000000000 +0100
+++ new/ccid-1.5.2/aclocal.m4   2023-01-31 16:27:09.000000000 +0100
@@ -543,7 +543,7 @@
 AC_LANG_POP
 ])dnl AX_PTHREAD
 
-# pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-
+# pkg.m4 - Macros to locate and use pkg-config.   -*- Autoconf -*-
 # serial 12 (pkg-config-0.29.2)
 
 dnl Copyright © 2004 Scott James Remnant <sc...@netsplit.com>.
@@ -631,7 +631,7 @@
 dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
 dnl
 dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
-dnl only at the first occurence in configure.ac, so if the first place
+dnl only at the first occurrence in configure.ac, so if the first place
 dnl it's called might be skipped (such as if it is within an "if", you
 dnl have to call PKG_CHECK_EXISTS manually
 AC_DEFUN([PKG_CHECK_EXISTS],
@@ -700,14 +700,14 @@
         AC_MSG_RESULT([no])
         _PKG_SHORT_ERRORS_SUPPORTED
         if test $_pkg_short_errors_supported = yes; then
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "$2" 2>&1`
+                $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "$2" 2>&1`
         else
-               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"$2" 2>&1`
+                $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"$2" 2>&1`
         fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+        # Put the nasty error message in config.log where it belongs
+        echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
 
-       m4_default([$4], [AC_MSG_ERROR(
+        m4_default([$4], [AC_MSG_ERROR(
 [Package requirements ($2) were not met:
 
 $$1_PKG_ERRORS
@@ -719,7 +719,7 @@
         ])
 elif test $pkg_failed = untried; then
         AC_MSG_RESULT([no])
-       m4_default([$4], [AC_MSG_FAILURE(
+        m4_default([$4], [AC_MSG_FAILURE(
 [The pkg-config script could not be found or is too old.  Make sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
@@ -729,10 +729,10 @@
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
         ])
 else
-       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+        $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
         AC_MSG_RESULT([yes])
-       $3
+        $3
 fi[]dnl
 ])dnl PKG_CHECK_MODULES
 
@@ -819,6 +819,74 @@
 AS_VAR_IF([$1], [""], [$5], [$4])dnl
 ])dnl PKG_CHECK_VAR
 
+dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND],
+dnl   [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------
+dnl
+dnl Prepare a "--with-" configure option using the lowercase
+dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and
+dnl PKG_CHECK_MODULES in a single macro.
+AC_DEFUN([PKG_WITH_MODULES],
+[
+m4_pushdef([with_arg], m4_tolower([$1]))
+
+m4_pushdef([description],
+           [m4_default([$5], [build with ]with_arg[ support])])
+
+m4_pushdef([def_arg], [m4_default([$6], [auto])])
+m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes])
+m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no])
+
+m4_case(def_arg,
+            [yes],[m4_pushdef([with_without], [--without-]with_arg)],
+            [m4_pushdef([with_without],[--with-]with_arg)])
+
+AC_ARG_WITH(with_arg,
+     AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),,
+    [AS_TR_SH([with_]with_arg)=def_arg])
+
+AS_CASE([$AS_TR_SH([with_]with_arg)],
+            [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)],
+            [auto],[PKG_CHECK_MODULES([$1],[$2],
+                                        [m4_n([def_action_if_found]) $3],
+                                        [m4_n([def_action_if_not_found]) $4])])
+
+m4_popdef([with_arg])
+m4_popdef([description])
+m4_popdef([def_arg])
+
+])dnl PKG_WITH_MODULES
+
+dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [DESCRIPTION], [DEFAULT])
+dnl -----------------------------------------------
+dnl
+dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES
+dnl check._[VARIABLE-PREFIX] is exported as make variable.
+AC_DEFUN([PKG_HAVE_WITH_MODULES],
+[
+PKG_WITH_MODULES([$1],[$2],,,[$3],[$4])
+
+AM_CONDITIONAL([HAVE_][$1],
+               [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"])
+])dnl PKG_HAVE_WITH_MODULES
+
+dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES,
+dnl   [DESCRIPTION], [DEFAULT])
+dnl ------------------------------------------------------
+dnl
+dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after
+dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make
+dnl and preprocessor variable.
+AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES],
+[
+PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4])
+
+AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"],
+        [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])])
+])dnl PKG_HAVE_DEFINE_WITH_MODULES
+
 # Copyright (C) 2002-2021 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/configure new/ccid-1.5.2/configure
--- old/ccid-1.5.1/configure    2022-11-14 11:42:41.000000000 +0100
+++ new/ccid-1.5.2/configure    2023-01-31 16:27:19.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for ccid 1.5.1.
+# Generated by GNU Autoconf 2.71 for ccid 1.5.2.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -618,8 +618,8 @@
 # Identity of this package.
 PACKAGE_NAME='ccid'
 PACKAGE_TARNAME='ccid'
-PACKAGE_VERSION='1.5.1'
-PACKAGE_STRING='ccid 1.5.1'
+PACKAGE_VERSION='1.5.2'
+PACKAGE_STRING='ccid 1.5.2'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1408,7 +1408,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures ccid 1.5.1 to adapt to many kinds of systems.
+\`configure' configures ccid 1.5.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1479,7 +1479,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of ccid 1.5.1:";;
+     short | recursive ) echo "Configuration of ccid 1.5.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1628,7 +1628,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-ccid configure 1.5.1
+ccid configure 1.5.2
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1941,7 +1941,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by ccid $as_me 1.5.1, which was
+It was created by ccid $as_me 1.5.2, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3212,7 +3212,7 @@
 
 # Define the identity of the package.
  PACKAGE='ccid'
- VERSION='1.5.1'
+ VERSION='1.5.2'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -5555,12 +5555,12 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               PCSC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libpcsclite >= $PCSC_NEEDED_VERSION" 2>&1`
+                PCSC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libpcsclite >= $PCSC_NEEDED_VERSION" 2>&1`
         else
-               PCSC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libpcsclite >= $PCSC_NEEDED_VERSION" 2>&1`
+                PCSC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libpcsclite >= $PCSC_NEEDED_VERSION" 2>&1`
         fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$PCSC_PKG_ERRORS" >&5
+        # Put the nasty error message in config.log where it belongs
+        echo "$PCSC_PKG_ERRORS" >&5
 
 
        if test -f /usr/local/lib/pkgconfig/libpcsclite.pc -a "x$PKG_CONFIG" != 
x ; then
@@ -5582,8 +5582,8 @@
          fi
 
 else
-       PCSC_CFLAGS=$pkg_cv_PCSC_CFLAGS
-       PCSC_LIBS=$pkg_cv_PCSC_LIBS
+        PCSC_CFLAGS=$pkg_cv_PCSC_CFLAGS
+        PCSC_LIBS=$pkg_cv_PCSC_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
@@ -13958,12 +13958,12 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libusb-1.0 >= $LIBUSB_NEEDED_VERSION" 2>&1`
+                LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libusb-1.0 >= $LIBUSB_NEEDED_VERSION" 2>&1`
         else
-               LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libusb-1.0 >= $LIBUSB_NEEDED_VERSION" 2>&1`
+                LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libusb-1.0 >= $LIBUSB_NEEDED_VERSION" 2>&1`
         fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$LIBUSB_PKG_ERRORS" >&5
+        # Put the nasty error message in config.log where it belongs
+        echo "$LIBUSB_PKG_ERRORS" >&5
 
 
                { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: install 
libusb $LIBUSB_NEEDED_VERSION or later" >&5
@@ -14020,14 +14020,14 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libusb-1.0" 2>&1`
+                LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libusb-1.0" 2>&1`
         else
-               LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libusb-1.0" 2>&1`
+                LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libusb-1.0" 2>&1`
         fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$LIBUSB_PKG_ERRORS" >&5
+        # Put the nasty error message in config.log where it belongs
+        echo "$LIBUSB_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (libusb-1.0) were not met:
+        as_fn_error $? "Package requirements (libusb-1.0) were not met:
 
 $LIBUSB_PKG_ERRORS
 
@@ -14040,7 +14040,7 @@
 elif test $pkg_failed = untried; then
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-       { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" 
>&5
+        { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" 
>&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "The pkg-config script could not be found or is too old.  Make 
sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
@@ -14053,8 +14053,8 @@
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details" "$LINENO" 5; }
 else
-       LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS
-       LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS
+        LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS
+        LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
@@ -14118,14 +14118,14 @@
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libusb-1.0" 2>&1`
+                LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors 
--cflags --libs "libusb-1.0" 2>&1`
         else
-               LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libusb-1.0" 2>&1`
+                LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs 
"libusb-1.0" 2>&1`
         fi
-       # Put the nasty error message in config.log where it belongs
-       echo "$LIBUSB_PKG_ERRORS" >&5
+        # Put the nasty error message in config.log where it belongs
+        echo "$LIBUSB_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (libusb-1.0) were not met:
+        as_fn_error $? "Package requirements (libusb-1.0) were not met:
 
 $LIBUSB_PKG_ERRORS
 
@@ -14138,7 +14138,7 @@
 elif test $pkg_failed = untried; then
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
 printf "%s\n" "no" >&6; }
-       { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" 
>&5
+        { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" 
>&5
 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
 as_fn_error $? "The pkg-config script could not be found or is too old.  Make 
sure it
 is in your PATH or set the PKG_CONFIG environment variable to the full
@@ -14151,16 +14151,16 @@
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details" "$LINENO" 5; }
 else
-       LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS
-       LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS
+        LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS
+        LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
 fi
 
 else
-       LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS
-       LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS
+        LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS
+        LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 printf "%s\n" "yes" >&6; }
 
@@ -15078,7 +15078,7 @@
 
 printf "%s\n" "#define PCSCLITE_HP_DROPDIR \"$usbdropdir\"" >>confdefs.h
 
-if test "${usbdropdir}" = "" ; then
+if test "${usbdropdir}" = "" -o "${usbdropdir}" = "no" ; then
        as_fn_error $? "use --enable-usbdropdir=DIR" "$LINENO" 5
 fi
 
@@ -15862,7 +15862,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by ccid $as_me 1.5.1, which was
+This file was extended by ccid $as_me 1.5.2, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15930,7 +15930,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-ccid config.status 1.5.1
+ccid config.status 1.5.2
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/configure.ac new/ccid-1.5.2/configure.ac
--- old/ccid-1.5.1/configure.ac 2022-11-14 11:41:59.000000000 +0100
+++ new/ccid-1.5.2/configure.ac 2023-01-31 16:27:03.000000000 +0100
@@ -4,7 +4,7 @@
 # Require autoconf 2.61
 AC_PREREQ([2.69])
 
-AC_INIT([ccid],[1.5.1])
+AC_INIT([ccid],[1.5.2])
 AC_CONFIG_SRCDIR(src/ifdhandler.c)
 AC_CONFIG_AUX_DIR([.])
 AM_INIT_AUTOMAKE(1.8 dist-bzip2 no-dist-gzip subdir-objects foreign)
@@ -183,7 +183,7 @@
        usbdropdir=`$PKG_CONFIG libpcsclite --variable=usbdropdir`
 fi
 AC_DEFINE_UNQUOTED(PCSCLITE_HP_DROPDIR, "$usbdropdir", [directory containing 
USB drivers])
-if test "${usbdropdir}" = "" ; then
+if test "${usbdropdir}" = "" -o "${usbdropdir}" = "no" ; then
        AC_MSG_ERROR([use --enable-usbdropdir=DIR])
 fi
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/readers/supported_readers.txt 
new/ccid-1.5.2/readers/supported_readers.txt
--- old/ccid-1.5.1/readers/supported_readers.txt        2022-11-07 
15:42:25.000000000 +0100
+++ new/ccid-1.5.2/readers/supported_readers.txt        2023-01-31 
16:26:41.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # List of readers supported by the CCID driver
-# Generated: 2022-10-27
+# Generated: 2023-01-20
 #
 # DO NOT EDIT BY HAND
 
@@ -599,6 +599,9 @@
 0x2A18:0x5001:KACST HSID Reader Single Storage
 0x2A18:0x5002:KACST HSID Reader Dual Storage
 
+# KAPELSE
+0x2947:0x0101:KAPELSE KAP-LINK
+
 # Kapsch TrafficCom
 0x28B9:0x0002:Kapsch TrafficCom USB SAM reader
 
@@ -621,6 +624,9 @@
 0x2D25:0x0000:KRONEGGER NFC blue Reader Platform
 0x2D25:0x0001:KRONEGGER Micro Core Platform
 
+# LDU
+0x0925:0x900A:LDU LANDI
+
 # Ledger
 0x2C97:0x0001:Ledger Nano S
 0x2C97:0x0004:Ledger Nano X
@@ -780,6 +786,7 @@
 
 # Sensyl
 0x356F:0x22FC:Sensyl SSC-NFC Reader
+0x356F:0x23FE:Sensyl SSC-HV Reader
 
 # Sitecom
 0x0DF6:0x800A:Sitecom Sitecom USB simcard reader MD-010
@@ -849,6 +856,7 @@
 
 # Thales
 0x08E6:0x34C7:Thales Shield M4 Reader
+0x17B9:0x400B:Thales RF Reader
 
 # THURSBY SOFTWARE
 0x1976:0x0001:THURSBY SOFTWARE TSS-PK1
@@ -862,6 +870,12 @@
 0x0B0C:0x0050:Todos Argos Mini II
 0x0B0C:0x0052:Todos CX00
 
+# TOKEN2
+0x349E:0x0300:TOKEN2 Molto2
+
+# TOKEN2 MFA
+0x349E:0x0430:TOKEN2 MFA NFC Reader
+
 # TOPPAN FORMS CO.,LTD
 0x23EB:0x0003:TOPPAN FORMS CO.,LTD TC63CUT021
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/src/ccid.c new/ccid-1.5.2/src/ccid.c
--- old/ccid-1.5.1/src/ccid.c   2022-11-07 17:09:49.000000000 +0100
+++ new/ccid-1.5.2/src/ccid.c   2023-01-31 16:26:41.000000000 +0100
@@ -102,6 +102,37 @@
                        /* The SCM SCL011 reader needs 350 ms to answer */
                        ccid_descriptor->readTimeout = DEFAULT_COM_READ_TIMEOUT 
* 4;
                        break;
+
+               case ALCORMICRO_AU9540:
+                       {
+                       unsigned int *uint_array = 
ccid_descriptor->arrayOfSupportedDataRates;
+                       unsigned int max_speed = 200000;
+                       unsigned int *after, current_speed;
+
+                       /* check the list exists */
+                       if (uint_array != NULL)
+                       {
+                               /* keep in the list only the baud rates lower 
than
+                                * max_speed */
+                               after = uint_array;
+                               while ((current_speed = *uint_array++) != 0)
+                               {
+                                       if (current_speed > max_speed)
+                                       {
+                                               DEBUG_INFO2("Remove baudrate: 
%d", current_speed);
+                                               continue;
+                                       }
+
+                                       *after++ = current_speed;
+                               }
+                               /* terminate the (new) list */
+                               *after = 0;
+                       }
+
+                       /* update the max data rate with the new value */
+                       ccid_descriptor->dwMaxDataRate = max_speed;
+                       }
+                       break;
        }
 
        /* CCID */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/src/ccid.h new/ccid-1.5.2/src/ccid.h
--- old/ccid-1.5.1/src/ccid.h   2022-11-07 17:13:23.000000000 +0100
+++ new/ccid-1.5.2/src/ccid.h   2023-01-31 16:26:41.000000000 +0100
@@ -250,6 +250,7 @@
 #define SAFENET_ETOKEN_5100            0x05290620
 #define ALCOR_LINK_AK9567              0x2CE39567
 #define ALCOR_LINK_AK9572              0x2CE39573
+#define ALCORMICRO_AU9540              0x058f9540
 
 #define VENDOR_GEMALTO 0x08E6
 #define GET_VENDOR(readerID) ((readerID >> 16) & 0xFFFF)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ccid-1.5.1/src/ifdhandler.c 
new/ccid-1.5.2/src/ifdhandler.c
--- old/ccid-1.5.1/src/ifdhandler.c     2022-11-14 11:37:14.000000000 +0100
+++ new/ccid-1.5.2/src/ifdhandler.c     2023-01-31 16:26:41.000000000 +0100
@@ -855,6 +855,8 @@
                        default_baudrate = (unsigned int) (1000 * 
ccid_desc->dwDefaultClock
                                * ATR_DEFAULT_D / ATR_DEFAULT_F);
 
+                       DEBUG_COMM2("Card can work at %d bauds", card_baudrate);
+
                        /* if the card does not try to lower the default speed 
*/
                        if ((card_baudrate > default_baudrate)
                                /* and the reader is fast enough */
@@ -892,6 +894,9 @@
                                {
                                        unsigned char old_TA1;
 
+                                       DEBUG_COMM2("Reader can't do more than 
%d bauds",
+                                               ccid_desc->dwMaxDataRate);
+
                                        old_TA1 = 
atr.ib[0][ATR_INTERFACE_BYTE_TA].value;
                                        while 
(atr.ib[0][ATR_INTERFACE_BYTE_TA].value > 0x94)
                                        {
@@ -1078,7 +1083,29 @@
                {
                        ret = SetParameters(reader_index, 1, sizeof(param), 
param);
                        if (IFD_SUCCESS != ret)
-                               return ret;
+                       {
+                               if (ALCORMICRO_AU9540 == ccid_desc -> readerID)
+                               {
+                                       /* Set Parameters failed
+                                        * reset the card and continue without 
Set Parameters */
+
+                                       UCHAR atr2[MAX_ATR_SIZE];
+                                       DWORD atr2length;
+                                       RESPONSECODE ret2;
+
+                                       /* 1st (cold?) reset */
+                                       ret2 = IFDHPowerICC(Lun, IFD_RESET, 
atr2, &atr2length);
+                                       if (IFD_SUCCESS != ret2)
+                                               return ret;
+
+                                       /* hot reset */
+                                       ret2 = IFDHPowerICC(Lun, IFD_RESET, 
atr2, &atr2length);
+                                       if (IFD_SUCCESS != ret2)
+                                               return ret;
+                               }
+                               else
+                                       return ret;
+                       }
                }
        }
        else

Reply via email to