laforge submitted this change.

View Change


Approvals: fixeria: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, approved
pcsc: open reader/card in EXCLUSIVE mode by default

There was a support request hinting that other applications
concurrently accessed the SIM and were messing up the card state while
pySim-shell was running.

Let's avoid such situations by opening the card/reader in EXCLUSIVE mode
by default. If somebody really has a special use case, they can now add
the --pcsc-shared flag to restore the legacy behavior (SHARED mode).

Change-Id: I90d887714b559a4604708d3c6dd23b5e05f40576
---
M pySim/transport/pcsc.py
1 file changed, 22 insertions(+), 0 deletions(-)

diff --git a/pySim/transport/pcsc.py b/pySim/transport/pcsc.py
index 47976ae..9198816 100644
--- a/pySim/transport/pcsc.py
+++ b/pySim/transport/pcsc.py
@@ -25,6 +25,7 @@
from smartcard.CardRequest import CardRequest
from smartcard.Exceptions import NoCardException, CardRequestTimeoutException, CardConnectionException
from smartcard.System import readers
+from smartcard.ExclusiveConnectCardConnection import ExclusiveConnectCardConnection

from pySim.exceptions import NoCardError, ProtocolError, ReaderError
from pySim.transport import LinkBase
@@ -56,6 +57,8 @@
raise ReaderError('No matching reader found for regex %s' % opts.pcsc_regex)

self._con = self._reader.createConnection()
+ if not opts.pcsc_shared:
+ self._con = ExclusiveConnectCardConnection(self._con)

def __del__(self):
try:
@@ -119,6 +122,8 @@
Windows, MacOS X and Linux. Most vendors of smart card readers provide drivers that offer a PC/SC
interface, if not even a generic USB CCID driver is used. You can use a tool like ``pcsc_scan -r``
to obtain a list of readers available on your system. """)
+ pcsc_group.add_argument('--pcsc-shared', action='store_true',
+ help='Open PC/SC reaer in SHARED access (default: EXCLUSIVE)')
dev_group = pcsc_group.add_mutually_exclusive_group()
dev_group.add_argument('-p', '--pcsc-device', type=int, dest='pcsc_dev', metavar='PCSC', default=None,
help='Number of PC/SC reader to use for SIM access')

To view, visit change 36273. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I90d887714b559a4604708d3c6dd23b5e05f40576
Gerrit-Change-Number: 36273
Gerrit-PatchSet: 4
Gerrit-Owner: laforge <laforge@osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier@sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-MessageType: merged