Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pcsc-tools for openSUSE:Factory 
checked in at 2022-01-31 22:57:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pcsc-tools (Old)
 and      /work/SRC/openSUSE:Factory/.pcsc-tools.new.1898 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pcsc-tools"

Mon Jan 31 22:57:22 2022 rev:7 rq:950149 version:1.6.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/pcsc-tools/pcsc-tools.changes    2021-11-09 
23:55:17.979973698 +0100
+++ /work/SRC/openSUSE:Factory/.pcsc-tools.new.1898/pcsc-tools.changes  
2022-01-31 22:58:12.225225326 +0100
@@ -1,0 +2,9 @@
+Sun Jan 30 19:16:40 UTC 2022 - Martin Hauke <[email protected]>
+
+- Update to version 1.6.0
+  * 48 new ATRs
+  * pcsc_scan:
+   + drastically reduce the number of SCardGetStatusChange() calls
+   + faster spinning animation
+
+-------------------------------------------------------------------

Old:
----
  pcsc-tools-1.5.8.tar.bz2
  pcsc-tools-1.5.8.tar.bz2.asc

New:
----
  pcsc-tools-1.6.0.tar.bz2
  pcsc-tools-1.6.0.tar.bz2.asc

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

Other differences:
------------------
++++++ pcsc-tools.spec ++++++
--- /var/tmp/diff_new_pack.rlFm6Q/_old  2022-01-31 22:58:12.749221798 +0100
+++ /var/tmp/diff_new_pack.rlFm6Q/_new  2022-01-31 22:58:12.757221744 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package pcsc-tools
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           pcsc-tools
-Version:        1.5.8
+Version:        1.6.0
 Release:        0
 Summary:        Smart card tools
 License:        GPL-2.0-or-later AND GPL-3.0-or-later

++++++ pcsc-tools-1.5.8.tar.bz2 -> pcsc-tools-1.6.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-tools-1.5.8/Changelog 
new/pcsc-tools-1.6.0/Changelog
--- old/pcsc-tools-1.5.8/Changelog      2021-11-07 17:08:52.000000000 +0100
+++ new/pcsc-tools-1.6.0/Changelog      2022-01-29 18:51:13.000000000 +0100
@@ -1,4 +1,150 @@
-commit 53923ef8e98062c478f99e3bfcc8eb4654996c27 (HEAD -> master, origin/master)
+commit c6e9fa746d00e08fc71c57c79e305669ff2e3106 (HEAD -> master, zotac/master, 
origin/master)
+Author: Ludovic Rousseau <[email protected]>
+Date:   Sat Jan 29 18:46:30 2022 +0100
+
+    Release 1.6.0
+    
+    Signed-off-by: Ludovic Rousseau <[email protected]>
+
+ README       | 7 +++++++
+ configure.ac | 2 +-
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+commit 94b335cee7281442f69e76cddea54b04ffe58c6e
+Author: Ludovic Rousseau <[email protected]>
+Date:   Sat Jan 29 18:46:09 2022 +0100
+
+    8 new ATRs
+
+ smartcard_list.txt | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+commit a740e87d24d69855ca26639ba513228f9cb7e405
+Author: Ludovic Rousseau <[email protected]>
+Date:   Fri Jan 28 10:43:17 2022 +0100
+
+    pcsc_scan: handle Ctrl-C on macOS
+    
+    macOS does not support the plug & play mechanism "\\?PnP?\Notification"
+    for SCardGetStatusChange() and uses instead an active polling loop over
+    SCardListReaders().
+    
+    There is no SCardGetStatusChange() that can be cancled by SCardCancel()
+    so we must handle the interruption by ourself.
+
+ pcsc_scan.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit ad38b2a420b1c808ae6e2a3fd9c9dcb3fbce5592
+Author: Ludovic Rousseau <[email protected]>
+Date:   Fri Jan 21 14:53:43 2022 +0100
+
+    10 new ATRs
+
+ smartcard_list.txt | 39 +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 39 insertions(+)
+
+commit 2d685e74833d9d8ac01faef1d33b4a19155c4d62
+Author: Philippe Teuwen <[email protected]>
+Date:   Fri Jan 14 23:23:59 2022 +0100
+
+    smartcard_list.txt: fix typos
+
+ smartcard_list.txt | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit f0412761544dd6782b2c152a51ba760d0c946af6
+Author: Ludovic Rousseau <[email protected]>
+Date:   Wed Jan 12 17:48:43 2022 +0100
+
+    10 new ATRs
+
+ smartcard_list.txt | 32 +++++++++++++++++++++++++++++++-
+ 1 file changed, 31 insertions(+), 1 deletion(-)
+
+commit dd64def92639534aa5381306fcd3ffebfecfa53e
+Author: Ludovic Rousseau <[email protected]>
+Date:   Tue Jan 4 19:09:58 2022 +0100
+
+    10 new ATRs
+
+ smartcard_list.txt | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+commit bffb77bafeaf99b8cd263145445632ba984dd7a7
+Author: Ludovic Rousseau <[email protected]>
+Date:   Sat Dec 25 11:13:02 2021 +0100
+
+    pcsc_scan: start the spinning thread before use
+    
+    The spinning mechanism can be used when waiting for the first reader.
+    The thread must be started before that.
+
+ pcsc_scan.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit c1d6a4b7a5dadcb4e329c87caf3944727a4ea53a
+Author: Ludovic Rousseau <[email protected]>
+Date:   Fri Dec 24 20:33:52 2021 +0100
+
+    pcsc_scan: fix spinning in quiet mode
+    
+    It was not possible to exit on Windows in quiet mode (-q)
+
+ pcsc_scan.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b5d15785da131d06a8c6786f63938ec4023778b4
+Author: Ludovic Rousseau <[email protected]>
+Date:   Fri Dec 24 20:32:25 2021 +0100
+
+    pcsc_scan: no "-n" option on Windows
+
+ pcsc_scan.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit d8846288750a147f9dd082e2a635cc16f71ecc6c
+Author: Ludovic Rousseau <[email protected]>
+Date:   Fri Dec 24 14:15:21 2021 +0100
+
+    pcsc_scan: fix compiler warning
+    
+    pcsc_scan.c:372:33: warning: declaration of ???hContext??? shadows a 
global declaration [-Wshadow]
+      372 | static LONG stress(SCARDCONTEXT hContext, const char *readerName)
+          |                    ~~~~~~~~~~~~~^~~~~~~~
+    pcsc_scan.c:138:14: note: shadowed declaration is here
+      138 | SCARDCONTEXT hContext;
+          |              ^~~~~~~~
+
+ pcsc_scan.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8ba170ed2c5c20540f9c71ecc49cd1ee9ad3a29a
+Author: Ludovic Rousseau <[email protected]>
+Date:   Fri Dec 24 14:09:03 2021 +0100
+
+    pcsc_scan: reduce the number of SCardGetStatusChange() calls
+    
+    SCardGetStatusChange() was called every 1 second. This generated a lot
+    of pcscd logs (when debugging) and was not a good use of CPU resources.
+    
+    We now use a thread to animate the spining characters.
+    SCardGetStatusChange() is called with a timeout of 1 hour and
+    SCardCancel() is used to stop it.
+
+ pcsc_scan.c | 181 +++++++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 101 insertions(+), 80 deletions(-)
+
+commit 8d2829455dac2b4d0326a5930b71f3f2758635d3
+Author: Ludovic Rousseau <[email protected]>
+Date:   Sat Dec 11 14:29:00 2021 +0100
+
+    10 new ATRs
+
+ smartcard_list.txt | 57 ++++++++++++++++++++++++++++++++++--------------------
+ 1 file changed, 36 insertions(+), 21 deletions(-)
+
+commit 53923ef8e98062c478f99e3bfcc8eb4654996c27 (tag: 1.5.8, github/master)
 Author: Ludovic Rousseau <[email protected]>
 Date:   Sun Nov 7 16:50:44 2021 +0100
 
@@ -10,7 +156,7 @@
  configure.ac |  2 +-
  2 files changed, 13 insertions(+), 1 deletion(-)
 
-commit a954b5f306e7eb1371f3d264262020726694b763 (zotac/master)
+commit a954b5f306e7eb1371f3d264262020726694b763
 Author: Ludovic Rousseau <[email protected]>
 Date:   Sun Nov 7 16:56:23 2021 +0100
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-tools-1.5.8/Makefile.in 
new/pcsc-tools-1.6.0/Makefile.in
--- old/pcsc-tools-1.5.8/Makefile.in    2021-11-07 17:06:42.000000000 +0100
+++ new/pcsc-tools-1.6.0/Makefile.in    2022-01-29 18:51:11.000000000 +0100
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.16.4 from Makefile.am.
+# Makefile.in generated by automake 1.16.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2021 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-tools-1.5.8/README new/pcsc-tools-1.6.0/README
--- old/pcsc-tools-1.5.8/README 2021-11-07 17:06:39.000000000 +0100
+++ new/pcsc-tools-1.6.0/README 2022-01-29 18:50:17.000000000 +0100
@@ -130,6 +130,13 @@
 History:
 ========
 
+1.6.0 - 29 January 2022, Ludovic ROUSSEAU
+    - 48 new ATRs
+    - pcsc_scan:
+     . drastically reduce the number of SCardGetStatusChange() calls
+     . faster spinning animation
+     . handle Ctrl-C on macOS
+
 1.5.8 - 7 November 2021, Ludovic ROUSSEAU
     - 360 new ATRs
     - ATR_analysis:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-tools-1.5.8/aclocal.m4 
new/pcsc-tools-1.6.0/aclocal.m4
--- old/pcsc-tools-1.5.8/aclocal.m4     2021-11-07 17:06:41.000000000 +0100
+++ new/pcsc-tools-1.6.0/aclocal.m4     2022-01-29 18:51:11.000000000 +0100
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.16.4 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.5 -*- Autoconf -*-
 
 # Copyright (C) 1996-2021 Free Software Foundation, Inc.
 
@@ -311,7 +311,7 @@
 [am__api_version='1.16'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.16.4], [],
+m4_if([$1], [1.16.5], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -327,7 +327,7 @@
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.16.4])dnl
+[AM_AUTOMAKE_VERSION([1.16.5])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -704,6 +704,10 @@
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
 [AC_PREREQ([2.65])dnl
+m4_ifdef([_$0_ALREADY_INIT],
+  [m4_fatal([$0 expanded multiple times
+]m4_defn([_$0_ALREADY_INIT]))],
+  [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-tools-1.5.8/configure 
new/pcsc-tools-1.6.0/configure
--- old/pcsc-tools-1.5.8/configure      2021-11-07 17:06:42.000000000 +0100
+++ new/pcsc-tools-1.6.0/configure      2022-01-29 18:51:11.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for pcsc-tools 1.5.8.
+# Generated by GNU Autoconf 2.71 for pcsc-tools 1.6.0.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -607,8 +607,8 @@
 # Identity of this package.
 PACKAGE_NAME='pcsc-tools'
 PACKAGE_TARNAME='pcsc-tools'
-PACKAGE_VERSION='1.5.8'
-PACKAGE_STRING='pcsc-tools 1.5.8'
+PACKAGE_VERSION='1.6.0'
+PACKAGE_STRING='pcsc-tools 1.6.0'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -1315,7 +1315,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 pcsc-tools 1.5.8 to adapt to many kinds of systems.
+\`configure' configures pcsc-tools 1.6.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1386,7 +1386,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pcsc-tools 1.5.8:";;
+     short | recursive ) echo "Configuration of pcsc-tools 1.6.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1484,7 +1484,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pcsc-tools configure 1.5.8
+pcsc-tools configure 1.6.0
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1640,7 +1640,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by pcsc-tools $as_me 1.5.8, which was
+It was created by pcsc-tools $as_me 1.6.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -2910,7 +2910,7 @@
 
 # Define the identity of the package.
  PACKAGE='pcsc-tools'
- VERSION='1.5.8'
+ VERSION='1.6.0'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -5288,7 +5288,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by pcsc-tools $as_me 1.5.8, which was
+This file was extended by pcsc-tools $as_me 1.6.0, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5356,7 +5356,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-pcsc-tools config.status 1.5.8
+pcsc-tools config.status 1.6.0
 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/pcsc-tools-1.5.8/configure.ac 
new/pcsc-tools-1.6.0/configure.ac
--- old/pcsc-tools-1.5.8/configure.ac   2021-11-07 17:06:39.000000000 +0100
+++ new/pcsc-tools-1.6.0/configure.ac   2022-01-29 18:50:50.000000000 +0100
@@ -2,7 +2,7 @@
 
 AC_PREREQ([2.69])
 
-AC_INIT([pcsc-tools], [1.5.8])
+AC_INIT([pcsc-tools],[1.6.0])
 AC_CONFIG_SRCDIR([pcsc_scan.c])
 AM_INIT_AUTOMAKE([1.8 dist-bzip2 no-dist-gzip foreign])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-tools-1.5.8/pcsc_scan.c 
new/pcsc-tools-1.6.0/pcsc_scan.c
--- old/pcsc-tools-1.5.8/pcsc_scan.c    2021-11-07 16:52:58.000000000 +0100
+++ new/pcsc-tools-1.6.0/pcsc_scan.c    2022-01-29 18:49:21.000000000 +0100
@@ -26,6 +26,7 @@
 typedef void (*sighandler_t)(int);
 #include <sysexits.h>
 #include <sys/time.h>
+#include <pthread.h>
 
 #ifdef __APPLE__
 #include <PCSC/wintypes.h>
@@ -48,7 +49,7 @@
        True = TRUE, False = FALSE
 } Boolean;
 
-#define TIMEOUT 1000   /* 1 second timeout */
+#define TIMEOUT 3600*1000      /* 1 hour timeout */
 
 
 /* command used to parse (on screen) the ATR */
@@ -98,7 +99,9 @@
        printf("%s usage:\n\n\t%s [ -h | -V | -n | -r | -c | -s | -t secs 
]\n\n", pname, pname);
        printf("\t\t  -h : this help\n");
        printf("\t\t  -V : print version number\n");
+#ifndef WIN32
        printf("\t\t  -n : no ATR analysis\n");
+#endif
        printf("\t\t  -r : only lists readers\n");
        printf("\t\t  -c : only lists cards\n");
        printf("\t\t  -s : stress mode\n");
@@ -118,6 +121,7 @@
 const char *cpl = "";
 
 time_t start_time;
+_Atomic Boolean Interrupted = False;
 
 typedef struct
 {
@@ -133,6 +137,8 @@
 
 static options_t Options;
 
+SCARDCONTEXT hContext;
+
 static Boolean is_member(const char *  item, const char * list[])
 {
        int i = 0;
@@ -170,14 +176,14 @@
        }
        else
        {
-               cub2 = "\033[2D";
-               cub3 = "\033[3D";
+               cub2 = "\033[2D"; /* move back 2 characters */
+               cub3 = "\033[3D"; /* move back 3 characters */
                cpl = "\033[";
        }
 }
 /* There should be no \033 beyond this line! */
 
-static Boolean reached_maxtime(void)
+static Boolean should_exit(void)
 {
        if (Options.maxtime)
        {
@@ -185,82 +191,99 @@
                if (t - start_time > Options.maxtime)
                        return True;
        }
+
+#ifdef WIN32
+       if (GetKeyState(VK_SHIFT) & 0x80)
+               return True;
+#endif
+
+       if (Interrupted)
+               return True;
+
        return False;
 }
 
-Boolean spinning_interrupted = False;
-unsigned int spin_state = 0;
+typedef enum
+{
+       SpinDisabled = -2,
+       SpinStopped = -1,
+       SpinRunning = 0
+} SpinState_t;
+
+_Atomic SpinState_t spin_state = SpinStopped;
+
 static void spin_start(void)
 {
-       spin_state = 0;
+       spin_state = Options.verbose ? SpinRunning : SpinDisabled;
 }
 
-static void spin_update(void)
+static void spin_stop(void)
 {
-       char patterns[] = {'-', '\\', '|', '/'};
-       char c = patterns[spin_state];
-
-       if (reached_maxtime())
-               spinning_interrupted = 1;
+       spin_state = SpinStopped;
 
-       if (! Options.verbose)
-               return;
-
-       spin_state++;
-       if (spin_state >= sizeof patterns)
-               spin_state = 0;
-       printf("%s %c ", cub3, c);
+       /* clean previous output */
+       printf("%s %s ", cub2, cub2);
        fflush(stdout);
 }
 
-static void spin_suspend(void)
+static void *spin_update(void *p)
 {
-       if (! Options.verbose)
-               return;
+       char patterns[] = {'-', '\\', '|', '/'};
 
-       printf("%s %s", cub2, cub2);
-       fflush(stdout);
-       if (spinning_interrupted)
-       {
-               printf("\n");
-               exit(EX_OK);
-       }
-}
+       /* 100 ms wait */
+       struct timespec wait_time = {.tv_sec = 0, .tv_nsec = 1000*1000*100};
 
-static sighandler_t old_interrupt_signal_handler;
-#define EX_USER_INTERRUPT (1)
+       (void)p;
 
-static void user_interrupt_signal_handler(int signal)
-{
-       if (spinning_interrupted)
+again:
+       /* wait untill spinning starts */
+       do
        {
-               /*
-                * If the user interrupts twice, before the program exits,
-                * then we call the old interrupt signal handler,
-                * or by default we exit.
-                */
-
-               if (old_interrupt_signal_handler == SIG_IGN)
+               if (should_exit())
                {
-                       return;
+                       if (SpinDisabled == spin_state)
+                       {
+                               SCardCancel(hContext);
+                               pthread_exit(NULL);
+                       }
                }
 
-               if (old_interrupt_signal_handler == SIG_DFL)
+               nanosleep(&wait_time, NULL);
+       } while (spin_state < 0);
+
+       do
+       {
+               char c = patterns[spin_state];
+
+               if (should_exit())
                {
-                       exit(EX_USER_INTERRUPT);
+                       SCardCancel(hContext);
+                       pthread_exit(NULL);
                }
 
-               old_interrupt_signal_handler(signal);
-       }
-       else
-       {
-               spinning_interrupted = True;
-       }
+               spin_state++;
+               if (spin_state >= (int)sizeof patterns)
+                       spin_state = SpinRunning;
+               printf("%s %c ", cub3, c);
+               fflush(stdout);
+
+               nanosleep(&wait_time, NULL);
+       } while (spin_state >= SpinRunning);
+
+       goto again;
+
+       return NULL;
+}
+
+static void user_interrupt_signal_handler(int signal)
+{
+       (void)signal;
+       Interrupted = True;
 }
 
 static void initialize_signal_handlers(void)
 {
-       old_interrupt_signal_handler = signal(SIGINT, 
user_interrupt_signal_handler);
+       signal(SIGINT, user_interrupt_signal_handler);
 }
 
 
@@ -280,10 +303,11 @@
        options->only_list_cards = False;
 }
 
+#define OPTIONS_BASE "Vhvrcst:q"
 #ifdef WIN32
-#define OPTIONS "Vhvrcst:q"
+#define OPTIONS OPTIONS_BASE
 #else
-#define OPTIONS "Vhnvrcst:q"
+#define OPTIONS OPTIONS_BASE "n"
 #endif
 
 static int parse_options(int argc, char *argv[], options_t *options)
@@ -348,7 +372,7 @@
        return EX_OK;
 }
 
-static LONG stress(SCARDCONTEXT hContext, const char *readerName)
+static LONG stress(SCARDCONTEXT hContext2, const char *readerName)
 {
        LONG rv, ret_rv = SCARD_S_SUCCESS;
        SCARDHANDLE hCard;
@@ -361,7 +385,7 @@
        }
        else
                printf("\n");
-       rv = SCardConnect(hContext, readerName, SCARD_SHARE_SHARED,
+       rv = SCardConnect(hContext2, readerName, SCARD_SHARE_SHARED,
                        SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &hCard, 
&dwActiveProtocol);
        if (rv != SCARD_S_SUCCESS)
        {
@@ -409,6 +433,9 @@
                        ret_rv = rv;
                        break;
                }
+
+               if (Interrupted)
+                       exit(EX_OSERR);
        }
 
        gettimeofday(&time_end, NULL);
@@ -460,7 +487,6 @@
 #else
        LONG rv;
 #endif
-       SCARDCONTEXT hContext;
        SCARD_READERSTATE *rgReaderStates_t = NULL;
        SCARD_READERSTATE rgReaderStates[1];
        DWORD dwReaders = 0, dwReadersOld;
@@ -471,6 +497,7 @@
        char atr[MAX_ATR_SIZE*3+1];     /* ATR in ASCII */
        char atr_command[sizeof(atr)+sizeof(ATR_PARSER)+2+1];
        int pnp = TRUE;
+       pthread_t spin_pthread;
 
        start_time = time(NULL);
        initialize_terminal();
@@ -516,6 +543,9 @@
                }
        }
 
+       /* start spining thread */
+       rv = pthread_create(&spin_pthread, NULL, spin_update, NULL);
+
 get_readers:
        /* free memory possibly allocated in a previous loop */
        if (NULL != readers)
@@ -596,14 +626,9 @@
                        do
                        {
                                rv = SCardGetStatusChange(hContext, TIMEOUT, 
rgReaderStates, 1);
-                               spin_update();
-#ifdef WIN32
-                               if (GetKeyState(VK_SHIFT) & 0x80)
-                                       spinning_interrupted = TRUE;
-#endif
                        }
-                       while ((SCARD_E_TIMEOUT == rv) && 
!spinning_interrupted);
-                       spin_suspend();
+                       while (SCARD_E_TIMEOUT == rv);
+                       spin_stop();
 
                        test_rv("SCardGetStatusChange", rv, hContext);
                }
@@ -611,15 +636,20 @@
                {
                        rv = SCARD_S_SUCCESS;
                        spin_start();
-                       while ((SCARD_S_SUCCESS == rv) && (dwReaders == 
dwReadersOld) && !spinning_interrupted)
+                       while ((SCARD_S_SUCCESS == rv) && (dwReaders == 
dwReadersOld))
                        {
                                rv = SCardListReaders(hContext, NULL, NULL, 
&dwReaders);
                                if (SCARD_E_NO_READERS_AVAILABLE == rv)
                                        rv = SCARD_S_SUCCESS;
                                sleep(1);
-                               spin_update();
+
+                               if (should_exit())
+                               {
+                                       printf("\n");
+                                       exit(EX_OK);
+                               }
                        }
-                       spin_suspend();
+                       spin_stop();
                }
                if (Options.verbose)
                {
@@ -691,7 +721,10 @@
         * We only stop in case of an error
         */
        rv = SCardGetStatusChange(hContext, TIMEOUT, rgReaderStates_t, 
nbReaders);
-       while (((rv == SCARD_S_SUCCESS) || (rv == SCARD_E_TIMEOUT)) && 
!spinning_interrupted)
+
+       spin_stop();
+
+       while ((rv == SCARD_S_SUCCESS) || (rv == SCARD_E_TIMEOUT))
        {
                time_t t;
 
@@ -711,7 +744,6 @@
                                        SCARD_STATE_CHANGED)
 #endif
                        {
-                               spin_suspend();
                                goto get_readers;
                        }
                }
@@ -721,14 +753,12 @@
                        if ((SCardListReaders(hContext, NULL, NULL, &dwReaders)
                                == SCARD_S_SUCCESS) && (dwReaders != 
dwReadersOld))
                        {
-                               spin_suspend();
                                goto get_readers;
                        }
                }
 
                if (rv != SCARD_E_TIMEOUT)
                {
-                       spin_suspend();
                        /* Timestamp the event as we get notified */
                        t = time(NULL);
                        printf("\n%s", ctime(&t));
@@ -761,8 +791,6 @@
                         * above.
                         */
 
-                       spin_suspend();
-
                        /* Specify the current reader's number and name */
                        printf(" Reader %d: %s%s%s\n", current_reader,
                                magenta, 
rgReaderStates_t[current_reader].szReader,
@@ -861,7 +889,7 @@
                                do
                                {
                                        rv = stress(hContext, 
rgReaderStates_t[current_reader].szReader);
-                               } while (SCARD_S_SUCCESS == rv && ! 
spinning_interrupted);
+                               } while (SCARD_S_SUCCESS == rv);
 
                                rgReaderStates_t[current_reader].dwCurrentState 
= SCARD_STATE_UNAWARE;
                        }
@@ -870,25 +898,27 @@
                if (Options.only_list_cards)
                        break;
 
+               spin_start();
+
                rv = SCardGetStatusChange(hContext, TIMEOUT, rgReaderStates_t,
                        nbReaders);
 
-               spin_update();
-
-#ifdef WIN32
-       if (GetKeyState(VK_SHIFT) & 0x80)
-               spinning_interrupted = TRUE;
-#endif
+               spin_stop();
        } /* while */
 
-       spin_suspend();
-
        /* A reader disappeared */
        if (SCARD_E_UNKNOWN_READER == rv)
                goto get_readers;
 
        /* If we get out the loop, GetStatusChange() was unsuccessful */
-       test_rv("SCardGetStatusChange", rv, hContext);
+       if (rv != SCARD_E_CANCELLED)
+               test_rv("SCardGetStatusChange", rv, hContext);
+       else
+       {
+               printf("%s", cub3);
+               fflush(stdout);
+               pthread_join(spin_pthread, NULL);
+       }
 
        /* We try to leave things as clean as possible */
        rv = SCardReleaseContext(hContext);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pcsc-tools-1.5.8/smartcard_list.txt 
new/pcsc-tools-1.6.0/smartcard_list.txt
--- old/pcsc-tools-1.5.8/smartcard_list.txt     2021-11-07 16:52:58.000000000 
+0100
+++ new/pcsc-tools-1.6.0/smartcard_list.txt     2022-01-29 18:50:17.000000000 
+0100
@@ -1269,6 +1269,9 @@
 3B 5F 96 00 80 5A 2C 11 00 10 10 00 FF FF FF FF 82 90 00
        Calypso (Transport)
 
+3B 60 00 00
+       Meano (Bank)
+
 3B 61 00 00 80
        blank A40CR card (JavaCard)
 
@@ -1990,7 +1993,7 @@
        Schlumberger MicroPayflex S card
 
 3B 69 00 00 49 44 35 30 56 31 2E .. ..
-       eID Card to user autheticate and save paswords in the Card. Product 
ID50 Password manager from IDENTOS GmbH (eID)
+       eID Card to user authenticate and save paswords in the Card. Product 
ID50 Password manager from IDENTOS GmbH (eID)
        https://identos.com/id50-password-manager/
 
 3B 69 00 00 49 44 36 30 56 31 2E .. ..
@@ -2260,6 +2263,10 @@
        Maestro debit card, issued by Caixa Geral de Dep??sitos (Bank)
        
https://www.cgd.pt/Particulares/Cartoes/Cartoes-de-Debito/Pages/Cartao-Debito-Cauxautomatica-Maestro.aspx
 
+3B 6B 00 00 00 31 C0 64 08 48 41 08 0F 90 00
+       Monizze card. Card use to pay only meal. (Other)
+       http://www.monizze.be
+
 3B 6B 00 00 00 31 C0 64 13 14 02 00 0F 90 00
        UBA Card PREPAID (Bank)
 
@@ -2339,6 +2346,9 @@
 3B 6B 00 00 00 31 C1 64 08 60 32 20 0F 90 00
        Twisto (Bank)
 
+3B 6B 00 00 00 31 C1 64 08 60 32 21 07 90 00
+       DSK Bank Debit Mastercard (Bank)
+
 3B 6B 00 00 00 31 C1 64 08 77 71 30 0F 90 00
        Apple Card (from launch) (Bank)
        https://www.apple.com/apple-card/
@@ -2603,26 +2613,8 @@
 3B 6D 00 00 57 44 29 6C 80 86 93 D6 03 EE 08 2A 3D
        SCSTA (Transport)
 
-3B 6D 00 00 57 44 36 41 01 86 93 07 30 37 37 36 33
-       Watchdata USB Key (PKI)
-
-3B 6D 00 00 57 44 36 41 01 86 93 07 31 31 32 32 35
-       Watchdata Proxkey (PKI)
-       https://www.watchdata.com/
-
-3B 6D 00 00 57 44 36 41 01 86 93 07 32 31 34 34 31
-       Watchdata USB Key (PKI)
-
-3B 6D 00 00 57 44 36 41 01 86 93 07 32 31 36 34 32
-       Watchdata USB Key (Other)
-
-3B 6D 00 00 57 44 36 41 01 86 93 07 33 32 35 35 30
-       Watchdata Proxkey (PKI)
-       https://www.watchdata.com/
-
-3B 6D 00 00 57 44 36 41 01 86 93 07 39 .. .. .. ..
-       WatchData Proxkey with VID:PID as 0x163C:0x0417 (PKI)
-       http://www.watchdata.com/class.php?id=19
+3B 6D 00 00 57 44 36 41 01 86 93 .. .. .. .. .. ..
+       WatchData Proxkey (PKI)
 
 3B 6D 00 00 80 31 80 65 49 53 01 00 01 83 07 90 00
        Yandex money world card (Bank)
@@ -3240,6 +3232,10 @@
        Visa credit card, issued by Klarna (Bank) (Bank)
        https://www.klarna.com/se/kort/
 
+3B 6F 00 00 00 31 C1 73 C8 21 10 64 57 49 30 36 00 90 00
+       neat MasterCard  (Bank)
+       https://www.neatcommerce.com/
+
 3B 6F 00 00 00 31 C1 73 C8 21 10 64 57 49 31 31 00 90 00
        Banca Popolare Di Sondrio (IT) - Ateneo+ Card for University of Brescia 
(Bank)
        https://www.ateneopiu.it/home
@@ -3434,7 +3430,7 @@
        https://www.bankain.si/BIN/vstopna.seam
 
 3B 6F 00 00 80 31 E0 6B 04 52 05 02 BB 55 55 55 55 55 55
-       AlfaBROU - Mastercard (prepaid card emited by Banco Republica - 
Uruguay) (Bank)
+       AlfaBROU - Mastercard (prepaid card emitted by Banco Republica - 
Uruguay) (Bank)
        https://www.brou.com.uy/personas/tarjetas/prepaga-alfabrou
 
 3B 6F 00 00 80 31 E0 6B 04 52 05 02 FD 55 55 55 55 55 55
@@ -3609,6 +3605,10 @@
        Montreal OPUS Transportation Card for the STM, STL, RTM and RTL 
(Transport)
        http://www.stm.info/en/info/fares/opus-cards-and-other-fare-media
 
+3B 6F 00 00 80 5A 08 06 08 20 12 23 C1 D9 5A 43 82 90 00
+       Transport card for the Quebec Province in Canada, namely the ARTM 
Transport Agency and others??? (Transport)
+       https://opusenligne.ca/
+
 3B 6F 00 00 80 5A 08 06 08 20 12 23 C1 E2 F6 C6 82 90 00
        STM Opus Card - Montreal Transit Pay Card (Other)
        https://en.wikipedia.org/wiki/OPUS_card
@@ -3628,10 +3628,18 @@
        OPUS Card  RTC Quebec's Bus system (Canada) (Transport)
        https://opusenligne.ca
 
+3B 6F 00 00 80 5A 08 06 08 20 12 23 C2 04 D0 7F 82 90 00
+       OPUS Card (Transport)
+       https://en.wikipedia.org/wiki/OPUS_card
+
 3B 6F 00 00 80 5A 08 06 08 20 12 23 C2 11 13 A6 82 90 00
        OPUS (Montreal and Quebec transport card) (Transport) (Transport)
        
https://www.stm.info/en/info/fares/opus-cards-and-other-fare-media/opus-card
 
+3B 6F 00 00 80 5A 08 06 08 20 12 23 C2 12 90 FD 82 90 00
+       OPUS Montreal Soci??t?? des Transports de Montr??al Metro and Bus card. 
(Transport)
+       https://www.stm.info/en/info/fares/opus-cards-and-other-fare-media
+
 3B 6F 00 00 80 5A 0A 01 01 20 03 11 03 DC B3 1B 82 90 00
        Card Transport "Lignes d'Azur" of "M??tropole Nice C??te d'Azur"
 
@@ -3818,7 +3826,7 @@
        Navigo (Transport)
 
 3B 6F 00 00 80 5A 28 11 42 10 12 2B 27 64 E7 35 82 90 00
-       Navigo pass, Paris (France) trasport network 
(https://en.wikipedia.org/wiki/Navigo_pass) (Transport)
+       Navigo pass, Paris (France) transport network 
(https://en.wikipedia.org/wiki/Navigo_pass) (Transport)
 
 3B 6F 00 00 80 5A 28 11 42 10 12 2B 27 65 62 F7 82 90 00
        French NAVIGO Card (simple Navigo model, not annual or Imagin'R) 
(Transport)
@@ -3896,6 +3904,10 @@
        KorriGo, smart transport card in France region Brittany (Transport)
        https://www.ter.sncf.com/bretagne/offres/carte-korrigo
 
+3B 6F 00 00 80 5A 28 13 02 10 12 2B 75 03 FB 01 82 90 00
+       origo (France)  (Transport)
+       https://www.breizhgo.bzh/se-deplacer-en-bretagne/KorriGo
+
 3B 6F 00 00 80 5A 28 13 02 10 12 2B 92 92 E6 42 82 90 00
        Transport card in c??te d'or France (mobigo)
 
@@ -3945,6 +3957,9 @@
 3B 6F 00 00 80 5A 2C 06 08 10 10 05 93 23 46 E2 82 90 00
        Lisboa Viva (Transport)
 
+3B 6F 00 00 80 5A 2C 06 08 10 10 05 93 23 7A 11 82 90 00
+       Portuguese Lisboa Viva Viagem Transport Card (Transport)
+
 3B 6F 00 00 80 5A 2C 11 C3 10 10 05 7B 01 00 4B 82 90 00
        French Military Circulation card (Transport)
 
@@ -4023,6 +4038,10 @@
        Lisboa Viva, Lisbon public transport card (Transport)
        https://www.portalviva.pt/
 
+3B 6F 00 00 80 5A 2D 06 08 10 10 02 78 32 4D 6F 82 90 00
+       Lisboa Viva card, public transport card of Lisbon (Portugal) (Transport)
+       https://www.portalviva.pt
+
 3B 6F 00 00 80 5A 2D 06 08 10 10 02 78 35 ED CE 82 90 00
        Lisbon Transportation SmartCard (Transport)
 
@@ -4057,6 +4076,9 @@
        Navigo d??couverte Paris (Transport)
        http://www.navigo.fr/titres/le-forfait-navigo-semaine-presentation/
 
+3B 6F 00 00 80 5A 3C 11 42 14 10 01 27 B3 C8 1B 82 90 00
+       Transport card for Paris (France) and its region. Market name is Navigo 
(Transport)
+
 3B 6F 00 00 80 5A 3C 11 42 14 10 01 C1 29 54 D4 82 90 00
        Public transportation card (navigo) for Paris and Ile-de-France 
r??gion, France (Transport)
        
https://www.iledefrance-mobilites.fr/en/tickets-fares/detail/navigo-monthly-ticket
@@ -4483,7 +4505,7 @@
 3B 7A 96 00 00 80 65 A2 01 20 01 3D 72 D6 41
        Oman eID (eID)
 
-3B 7A 97 00 00 80 65 B0 85 20 04 02 72 D6 41
+3B 7A 97 00 00 80 65 B0 85 20 04 02 72 D6 4.
        OMAN EID CARD (eID)
 
 3B 7B .. 00 00 80 62 0. 51 56 46 69 6E 45 49 44
@@ -4959,6 +4981,9 @@
 3B 7F 13 00 00 80 31 C0 52 15 54 64 05 66 98 36 83 83 90 00
        VISA Card from Banc Sabadell in Spain
 
+3B 7F 13 00 00 80 31 C0 52 15 63 64 02 00 64 71 83 83 90 00
+       VISA CREDIT (Bank)
+
 3B 7F 13 00 00 80 31 C0 52 15 B8 64 02 00 64 71 83 83 90 00
        Debit classic card banorte "banco mercantilmdel norte" (Bank)
        https://www.banorte.com/
@@ -5518,6 +5543,10 @@
        VISA Caisse d'Epargne  (Bank)
        VISA BNP Paribas (NFC) (Bank)
 
+3B 85 80 01 20 63 CB B7 00 3B
+       Visa card issued by OTP Bank (Hungary) (Bank)
+       https://www.otpbank.hu/portal/en/Retail/Bankcards
+
 3B 85 80 01 20 63 CB B7 20 1B
        Halifax Clarity Mastercard (Bank)
 
@@ -5582,6 +5611,10 @@
 3B 86 80 01 39 30 43 30 32 31 7E
        Chase Freedom VISA card
 
+3B 86 80 01 43 68 69 70 31 37 33
+       PostFinance Switzerland (Bank)
+       http://www.postfinance.ch
+
 3B 86 80 01 44 49 20 30 32 4D 65
        Lufthansa Miles & More Gold MasterCard PayPass
        Raiffeizen Bank, Russia, MasterCard paypass card
@@ -5681,6 +5714,10 @@
 3B 87 80 01 80 31 B8 73 84 01 E0 19
        Personalausweis (German Identity Card) (eID)
 
+3B 87 80 01 80 31 B8 73 86 01 E0 1B
+       Personalausweis (German Identity Card) (eID)
+       https://www.personalausweisportal.de/
+
 3B 87 80 01 80 31 B9 73 84 21 60 B8
        Hungarian eID (2016) (eID)
        http://kekkh.gov.hu/Eszemelyi/
@@ -5717,6 +5754,10 @@
        Kaztoken (eID)
        http://kaztoken.kz/
 
+3B 88 01 80 56 53 6F 6C 6F 20 32 72
+       SoloKeys Solo 2 Security Key (PKI)
+       https://github.com/solokeys/solo2
+
 3B 88 80 01 00 00 00 00 00 00 00 00 09
        Personalausweis (German Identity Card) (eID)
 
@@ -5867,6 +5908,9 @@
        elesec - TCOS 3.0 Signature Card (eID)
        
https://www.telesec.de/de/tcos/support/downloadbereich/category/28-leistungsbeschreibung
 
+3B 88 80 01 30 AB AB 01 77 81 B7 00 79
+       Italian healtcare card (TS) National Service Card (CNS) (HealthCare)
+
 3B 88 80 01 31 CC CC 01 77 81 C1 00 0E
        Ideal v 1.4 (Transport)
 
@@ -6047,6 +6091,9 @@
        Found a reference pointing to NXP
        http://www.usingrfid.com/news/read.asp?lc=l17607hx1500zk
 
+3B 89 80 01 45 50 43 4F 53 56 35 2E 39 36
+       EPCOSV5.9 (eID)
+
 3B 89 80 01 4A 43 4F 50 32 34 32 52 32 4A
        NXP JCOP J3D
 
@@ -6095,6 +6142,11 @@
 3B 89 80 01 53 50 4B 32 35 44 49 90 00 DA
        SPK 2.5 D1
 
+3B 89 80 01 53 77 69 73 73 50 61 73 73 74
+       SwissPass - key to mobility and leisure in Switzerland (Transport)
+       https://www.swisspass.ch
+       https://www.allianceswisspass.ch/de/informationen-ov-nutzende/SwissPass
+
 3B 89 80 01 66 49 46 58 42 53 32 47 6F 32
        Blockchain Security 2Go (JavaCard)
        https://github.com/Infineon/Blockchain
@@ -6121,6 +6173,10 @@
        Coinbase Card, Visa Debit (Paysafe / TCT FCU) (Bank)
        https://coinbase.com/card
 
+3B 89 80 01 80 64 16 04 01 86 82 90 00 6B
+       LUKB (Bank)
+       https://www.lukb.ch
+
 3B 89 80 01 80 64 16 04 02 82 82 90 00 6C
        Maestro card (from Mastercard) used by BCGE (switzerland) bank (Bank)
 
@@ -6285,6 +6341,10 @@
 3B 8B 80 01 00 31 C1 64 08 60 32 12 00 90 00 46
        AMEX Silver Credit (Bank)
 
+3B 8B 80 01 00 31 C1 64 08 60 32 1F 00 90 00 4B
+       Hanseatic Bank Visa Card (Bank)
+       https://www.hanseaticbank.de/kreditkarte/genialcard
+
 3B 8B 80 01 00 31 C1 64 08 60 32 20 00 90 00 74
        IDEMIA (Other)
 
@@ -6295,6 +6355,10 @@
 3B 8B 80 01 00 31 C1 64 09 11 21 30 00 90 00 07
        SmartMX (Other)
 
+3B 8B 80 01 00 31 C1 64 09 24 33 1E 00 90 00 0E
+       Cumulus Mastercard (Bank)
+       https://www.migros.ch/cumulus/mastercard
+
 3B 8B 80 01 00 31 C1 64 09 37 72 13 00 90 00 51
        French ID Card 2021 (contactless interface) (eID)
        
https://ants.gouv.fr/Les-titres/Carte-nationale-d-identite/La-puce-de-la-nouvelle-carte-nationale-d-identite
@@ -6503,6 +6567,10 @@
 3B 8C 80 01 50 54 67 13 79 00 00 00 00 F7 81 C1 B3
        Tessera Sanitaria italian health care card (HealthCare)
 
+3B 8C 80 01 50 5C 4B 71 A1 52 74 53 43 77 81 83 D9
+       RUTOKEN ECP 3.0 (PKI)
+       https://www.rutoken.ru/products/catalogue/id_114.html
+
 3B 8C 80 01 50 5C F5 A9 45 30 AA AA 01 77 81 D7 08
        Indonesia ektp (eID)
 
@@ -6600,6 +6668,10 @@
        Navigo Annuel (France) (Transport)
        
https://www.iledefrance-mobilites.fr/titres-et-tarifs/detail/forfait-navigo-annuel
 
+3B 8C 80 01 50 C1 4C FD 23 00 00 00 00 00 71 71 0E
+       Navigo (Transport)
+       https://www.iledefrance-mobilites.fr/
+
 3B 8C 80 01 50 C1 6A 34 72 00 00 00 00 00 71 71 B0
        Navigo pass (RATP) (Transport)
        http://www.navigo.fr/
@@ -6612,6 +6684,10 @@
        Navigo Easy (France) transport card (Transport)
        https://www.ratp.fr/titres-et-tarifs/passe-navigo-easy
 
+3B 8C 80 01 50 C2 B9 36 86 00 00 00 00 00 71 71 96
+       Passe Navigo (Transport)
+       
https://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-decouverte
+
 3B 8C 80 01 50 C7 25 1C 5A 00 00 00 11 F7 81 81 1F
        MOBIB Belgian public transport Card (Transport)
        https://mobib.be/fr.html
@@ -6739,6 +6815,10 @@
 3B 8D 80 01 00 73 C8 00 13 64 54 37 47 31 00 90 00 45
        Tangerine ATM/ABM Card
 
+3B 8D 80 01 00 85 14 10 10 85 01 11 20 02 75 90 00 CF
+       Sahl Payment Card (Other)
+       https://www.english.sahlpay.app/
+
 3B 8D 80 01 0D 78 80 84 02 00 73 C8 40 13 00 90 FF F8
        Nokia 6212 phone seen as NFC device
 
@@ -6771,6 +6851,9 @@
 3B 8D 80 01 80 91 E1 31 80 65 B0 83 11 11 AC 83 00 34
        TOP DM GX4 Cards [TOP DM GX4 on Gemalto Prox]
 
+3B 8D 80 01 80 91 E1 65 02 30 78 01 13 73 D4 41 40 67
+       passport (passport)
+
 3B 8D 80 01 80 91 E1 65 D0 00 5B 01 02 73 D4 41 40 B7
        Portuguese Passport (passport)
        http://www.pep.pt/PagesPT/Caracteristicas.aspx
@@ -6886,6 +6969,10 @@
 3B 8F 80 01 00 31 B8 64 04 B0 EC C1 73 94 01 80 82 90 00 0E
        Contactless CPS v3 Card (Carte de Professionnel de Sant??)
 
+3B 8F 80 01 00 31 C1 73 C8 00 10 64 57 49 49 43 00 90 00 B5
+       ICC Solutions Card for Certification (Other)
+       https://www.iccsolutions.com/
+
 3B 8F 80 01 00 31 C1 73 C8 21 10 64 41 4D 33 30 07 90 00 88
        ING-VISA-Card (Bank)
        https://www.ing.de/girokonto/karten-bargeld/
@@ -6920,6 +7007,10 @@
        DKB Visa Credit Card (Bank)
        https://www.dkb.de
 
+3B 8F 80 01 43 43 31 69 A9 20 00 00 20 20 20 20 20 20 20 FF
+       Reka (Bank)
+       https://reka.ch
+
 3B 8F 80 01 43 44 32 69 AB 41 20 20 20 20 20 20 FF FF FF 47
        BKB VISA Card Switzerland (Bank)
        
https://www.bkb.ch/de/privatkunden/konten-und-karten/kreditkarten/world-mastercard-silber-oder-visa-classic/factsheet
@@ -7190,7 +7281,7 @@
 
 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 00 00 00 00 00 6B
        buss/train pass for use with Sk??netrafiken (www.skanetrafiken.se) 
busses and trains.
-       public libary of D??sseldorf
+       public library of D??sseldorf
        http://www.duesseldorf.de/stadtbuechereien/
        specialized Mifare Ultralight card
 
@@ -7486,6 +7577,9 @@
        au IC-card ver.001 (for CDMA2000) (Telecommunication)
        https://ja.wikipedia.org/wiki/Au_IC%E3%82%AB%E3%83%BC%E3%83%89
 
+3B 97 11 00 02 02 04 22 00 3F 03
+       China Unicom (Telecommunication)
+
 3B 97 11 80 1F 41 80 31 A0 73 BE 21 00 A6
        Comprion UT3 simulator SIM (Other)
 
@@ -7664,6 +7758,9 @@
 3B 9B 97 C0 0A 31 FE 45 80 67 05 67 B6 04 01 00 00 81 05 FE
        Company Card for Tachograph Data (Transport)
 
+3B 9C 11 00 68 86 8D 0C 86 98 02 56 40 8B 05 00
+       China Mobile (Telecommunication)
+
 3B 9C 13 11 81 64 72 65 61 6D 63 72 79 70 74 00 04 08
        XPlusTV & INXCT Access Card-9 (FIRECrypt)
 
@@ -7762,6 +7859,9 @@
 3B 9D 95 80 3F C7 A0 80 31 A0 73 BE 21 13 51 05 83 05 90 00 7C
        NTT docomo Xi(LTE) DN05(DNP) Pink SIM (Telecommunication)
 
+3B 9D 96 00 53 49 23 03 03 00 20 00 04 00 F5 90 00
+       shell (Transport)
+
 3B 9E 94 80 1F 42 80 31 00 73 BE 21 10 66 54 59 53 04 4C 25 CF
        MCI (Mobile Communication Company of Iran) SIM
 
@@ -8434,6 +8534,10 @@
        GSM-SIM Beeline RU (Telecommunication)
        http://beeline.ru
 
+3B 9F 94 80 1F C7 80 31 E0 73 FE 21 1B 57 3F 86 60 96 A1 00 00 0C
+       Lycamobile UICC/SIM card. (Telecommunication)
+       https://www.lycamobile.com.au
+
 3B 9F 94 80 1F C7 80 31 E0 73 FE 21 1B 57 3F 86 60 AF 01 00 00 95
        Gotanet SE USIM (Telecommunication)
 
@@ -8545,9 +8649,15 @@
 3B 9F 95 80 1F C7 80 31 A0 73 B6 A1 00 67 CF 17 13 C4 1D 2D 36 49
        Idemia card (Telecommunication)
 
+3B 9F 95 80 1F C7 80 31 A0 73 B6 A1 00 67 CF 17 94 AA 28 99 3F 28
+       Glaier Programable LTE USIM Card  (Telecommunication)
+
 3B 9F 95 80 1F C7 80 31 A0 73 B6 A1 00 67 CF 32 11 B2 52 C6 79 F3
        open5gs (Telecommunication)
 
+3B 9F 95 80 1F C7 80 31 A0 73 B6 A1 00 67 CF 32 15 A9 8F D7 09 50
+       LTE Card (Telecommunication)
+
 3B 9F 95 80 1F C7 80 31 A0 73 BE 21 00 53 04 D0 80 83 05 90 00 BE
        NTT_DoCoMo (Telecommunication)
 
@@ -8713,6 +8823,9 @@
 3B 9F 95 81 31 FE 9F 00 66 46 53 05 10 04 31 71 DF 00 00 39 00 00 1F
        Feitian ePass2003 (PKI)
 
+3B 9F 95 81 31 FE 9F 00 66 46 53 05 10 06 31 71 DF 00 00 00 00 00 24
+       FT ePass2003Auto USB Token (PKI)
+
 3B 9F 95 81 31 FE 9F 00 66 46 53 05 20 03 25 71 DF 00 00 00 00 00 05
        Feitian ePass2003 token
 
@@ -9276,6 +9389,10 @@
 3B 9F 96 80 3F C7 82 80 31 E0 73 F6 21 57 57 4A 33 05 81 05 30 00 CE
        COMPRION M2M eUICC (Telecommunication)
 
+3B 9F 96 80 3F C7 82 80 31 E0 73 F6 21 57 57 4A 4D 02 0B 60 01 00 69
+       eSIM GSMA Card (Telecommunication)
+       https://www.gsma.com/newsroom/wp-content/uploads/SGP.22_v2.2.pdf
+
 3B 9F 96 80 3F C7 A0 80 31 E0 73 F6 21 56 57 4A 4D 02 0B 34 44 00 5B
        Norwegian telenor (Telecommunication)
        http://www.telenor.no
@@ -9729,6 +9846,9 @@
        GSM SIM Elisa Estonia; 2007
        GSM SIM from 'fonic' Germany
 
+3B BC 94 00 40 14 47 47 33 53 34 43 45 43 32 30 30 30
+       Era-PL SIM Card (Telecommunication)
+
 3B BD 18 00 81 31 FE 45 80 51 02 67 04 14 B1 01 01 02 00 81 05 3D
        Austrian "e-Card" (=Health Card)
        special Version of Starcos 3.1
@@ -10350,7 +10470,7 @@
        NXP Javacard with Athena SCS OS (JavaCard)
 
 3B DC 96 FF 81 B1 FE 43 1F C3 0B 46 41 52 45 47 4F 53 41 4D 56 32 CC
-       Penis (Pay TV)
+       Multismartcard SAM (used in proprietary Scheidt&Bachmann Smartcard 
Reader v2)
 
 3B DD 18 00 81 31 FE 45 80 F9 A0 00 00 00 77 01 00 70 0A 90 00 8B
        National ID Card of Peru issued by RENIEC from Oberthur
@@ -10485,7 +10605,7 @@
        http://www.smartcardfocus.com/shop/ilp/id~265/p/index.shtml
 
 3B DF 18 FF 81 91 FE 1F C3 00 31 38 64 47 90 EC C2 73 14 01 50 82 90 00 BA
-       Card store authentification and signature keys (JavaCard)
+       Card store authentication and signature keys (JavaCard)
        
https://ants.gouv.fr/Les-titres/Cartes-Agents/Adhesion/Telechargement-et-support
 
 3B DF 18 FF 81 91 FE 1F C3 00 31 B8 64 00 00 EC 00 73 94 00 00 82 90 00 FE
@@ -10622,6 +10742,9 @@
 3B E5 00 FF 81 31 FE 45 80 73 C6 01 08 2D
        MUFG (.jp) (Bank)
 
+3B E6 00 00 80 31 80 66 B1 A3 04 01 11 0B 83
+       Java Jcop J2A040 (JavaCard)
+
 3B E6 00 00 80 31 80 66 B1 A3 04 01 11 0B 83 00 90 00
        VISA Credit Card (Bank)
 
@@ -10901,7 +11024,7 @@
        Optelio D72 FXR1 (MD) T=1
 
 3B EE 00 00 81 31 FE 45 00 31 80 71 86 65 01 67 02 A0 0A 83 90 00 1B
-       IBM JCOP "Java Card 2.1.1" et "Open Plaform 2.0.1"
+       IBM JCOP "Java Card 2.1.1" et "Open Platform 2.0.1"
 
 3B EE 00 00 81 31 FE 45 80 31 80 66 40 90 93 06 0F 17 83 01 90 00 FD
        Health insurance (HealthCare)
@@ -11173,12 +11296,18 @@
        EC Card Sparkasse Mittelfranken Sued (Bank)
        https://www.spkmfrs.de
 
+3B EF 00 FF 81 31 FE 45 65 63 11 15 62 02 50 00 10 0A 00 2E FC 07 20 C6
+       maestro BankCard (Bank)
+
 3B EF 00 FF 81 31 FE 45 65 63 11 15 62 02 50 00 10 0A 09 AC 03 07 20 B2
        Girocard Sparkasse Darmstadt (Bank)
 
 3B EF 00 FF 81 31 FE 45 65 63 19 01 62 02 80 00 0F 00 35 00 42 06 20 BB
        Credit card (Germany, Postbank AG): VISA
 
+3B EF 00 FF 81 31 FE 45 65 63 1D 02 84 02 50 00 23 05 09 A0 D9 01 01 82
+       Debit card (Bank)
+
 3B EF 00 FF 81 31 FE 45 65 63 1D 02 84 02 50 00 23 18 09 20 E7 01 01 21
        Deutsche Kreditbank AG (DKB AG) bank card (Bank)
        https://www.dkb.de/info/tan-verfahren/chipTAN/
@@ -11407,6 +11536,10 @@
 3B F7 13 00 00 81 31 FE 45 4A 43 4F 50 32 34 .. ..
        NXP JCOP v2.4.x (see hist bytes for more info)
 
+3B F7 13 00 00 81 31 FE 45 80 65 4A 50 30 31 04 15
+       Nichizeiren Denshi-shomei (eID)
+       https://www.nichizeiren.or.jp/taxaccount/auth/fifth/
+
 3B F7 18 00 00 80 31 FE 45 73 66 74 65 2D 6E 66 C4
        SmartCafe Expert 3.2 72K
 
@@ -11441,6 +11574,10 @@
 3B F8 11 20 03 40 FF FF FF FF FF 12 10 90 00
        G&D (STARCOS SV 1.1)
 
+3B F8 13 00 00 10 00 00 73 C8 40 11 00 90 00
+       Vivid Money Visa Debit (Bank)
+       https://vivid.money
+
 3B F8 13 00 00 81 31 FE 15 59 75 62 69 6B 65 79 34 D4
        Yubico Yubikey 4 OTP+CCID
 
@@ -12138,6 +12275,14 @@
        GiroCard Haspa Hamburger Sparkasse (Bank)
        
https://www.haspa.de/privatkunden/ihr-online-banking/unser-angebot/haspa-digital-services-96198/
 
+3B FF 13 00 00 10 00 31 01 F1 56 40 11 00 19 00 00 00 00 00 00 00
+       BVG Guthabenkarte (Prepaid Payment Card for Berlin/Brandenburg Public 
Transport) (Transport)
+       https://www.bvg.de/de/service-und-kontakt/guthabenkarte
+
+3B FF 13 00 00 10 00 31 01 F1 56 40 11 00 1D 00 00 00 00 00 00 00
+       albo (Bank)
+       https://www.albo.mx/
+
 3B FF 13 00 00 81 31 FE 45 00 31 B9 64 04 04 EC C1 73 94 01 80 82 90 00 52
        AKD kID (eID)
        https://www.id.hr
@@ -12262,7 +12407,7 @@
        https://tscns.regione.sardegna.it/
 
 3B FF 18 00 00 81 31 FE 45 00 6B 11 05 07 00 01 11 01 43 4E 53 11 31 80 7B
-       Italian National Fire Corps  -special indentification card (eID)
+       Italian National Fire Corps  -special identification card (eID)
 
 3B FF 18 00 00 81 31 FE 45 00 6B 11 05 07 00 01 21 01 43 4E 53 10 31 80 4A
        Oberthur ID-One Cosmo V7-n it's a java card 2.2.2
@@ -13104,6 +13249,10 @@
 3F FD 11 25 02 50 80 0F 41 B0 0D 69 FF 4A 50 F0 80 00 56 54 03
        Viasat (Pay TV)
 
+3F FD 11 25 02 50 80 0F 41 B0 0F 69 FF 4A 50 F0 80 00 5A 4A 03
+       Telekom Romania Communications (DVB-C) (Pay TV)
+       https://www.telekom.ro/
+
 3F FD 13 25 02 50 00 0F 33 B0 0F 69 FF 4A 50 D0 00 00 53 59 02
        Sky Digital (DSS satellite TV card) 2009 issue
 

Reply via email to