From d6bf6a0b936019e65e4ca15e9c23a1b847f392db Mon Sep 17 00:00:00 2001 From: Frank Morgner Date: Tue, 9 Jul 2013 07:34:05 +0200 Subject: [PATCH] fixed extracting reference flags for select --- .../src/vpicc/virtualsmartcard/ConstantDefinitions.py | 3 ++- .../src/vpicc/virtualsmartcard/SmartcardFilesystem.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/virtualsmartcard/src/vpicc/virtualsmartcard/ConstantDefinitions.py b/virtualsmartcard/src/vpicc/virtualsmartcard/ConstantDefinitions.py index 70480b5..34a38e3 100644 --- a/virtualsmartcard/src/vpicc/virtualsmartcard/ConstantDefinitions.py +++ b/virtualsmartcard/src/vpicc/virtualsmartcard/ConstantDefinitions.py @@ -223,6 +223,7 @@ REF = { "NUMBER_TO_LAST" : 0x05, "NUMBER_FROM_LAST" : 0x06, "NUMBER_CONTROL" : 0x07, - "REFERENCE_CONTROL" : 0x07, + "REFERENCE_CONTROL_RECORD" : 0x07, + "REFERENCE_CONTROL_SELECT" : 0x03, } diff --git a/virtualsmartcard/src/vpicc/virtualsmartcard/SmartcardFilesystem.py b/virtualsmartcard/src/vpicc/virtualsmartcard/SmartcardFilesystem.py index 9addf58..73efaee 100644 --- a/virtualsmartcard/src/vpicc/virtualsmartcard/SmartcardFilesystem.py +++ b/virtualsmartcard/src/vpicc/virtualsmartcard/SmartcardFilesystem.py @@ -656,7 +656,7 @@ class MF(DF): else: index_current = self.content.index(df) selected = self.select('dfname', data, p2 & - REF["REFERENCE_CONTROL"], index_current) + REF["REFERENCE_CONTROL_SELECT"], index_current) else: logging.debug("unknown selection method: p1 =%s" % p1) selected = None @@ -934,7 +934,7 @@ class MF(DF): self.current = ef ef.resetRecordPointer() - return ef, num_id, p2 & REF["REFERENCE_CONTROL"] + return ef, num_id, p2 & REF["REFERENCE_CONTROL_RECORD"] def readRecordPlain(self, p1, p2, data): """ @@ -1049,7 +1049,7 @@ class MF(DF): :returns: the status bytes as two byte long integer and the response data as binary string. """ - if p1 != 0 or (p2 & REF["REFERENCE_CONTROL"]) != 0: + if p1 != 0 or (p2 & REF["REFERENCE_CONTROL_RECORD"]) != 0: raise SwError(SW["ERR_INCORRECTP1P2"]) ef, num_id, reference = self.recordHandlingDecode(p1, p2) sw = ef.appendrecord(data)