Move iso specific get response code to iso class

This commit is contained in:
Henryk Plötz 2010-10-15 17:25:05 +02:00
parent 367b41a061
commit 2cc37817d7
2 changed files with 16 additions and 6 deletions

View File

@ -149,12 +149,8 @@ class Card:
if self.check_sw(result.sw, self.PURPOSE_GET_RESPONSE): if self.check_sw(result.sw, self.PURPOSE_GET_RESPONSE):
## Need to call GetResponse ## Need to call GetResponse
gr_apdu = C_APDU(self.COMMAND_GET_RESPONSE, le = result.sw2, cla=apdu.cla) # FIXME gr_apdu = self.COMMAND_GET_RESPONSE
result = R_APDU(self._real_send(gr_apdu)) result = self._real_send(gr_apdu)
elif self.check_sw(result.sw, self.PURPOSE_RETRY) and apdu.Le == 0:
## Retry with correct Le
gr_apdu = C_APDU(apdu, le = result.sw2)
result = R_APDU(self._real_send(gr_apdu))
return result return result

View File

@ -125,6 +125,20 @@ class ISO_Card(Card):
return result return result
def _send_with_retry(self, apdu):
result = self._real_send(apdu)
if self.check_sw(result.sw, self.PURPOSE_GET_RESPONSE):
## Need to call GetResponse
gr_apdu = C_APDU(self.COMMAND_GET_RESPONSE, le = result.sw2, cla=apdu.cla) # FIXME
result = R_APDU(self._real_send(gr_apdu))
elif self.check_sw(result.sw, self.PURPOSE_RETRY) and apdu.Le == 0:
## Retry with correct Le
gr_apdu = C_APDU(apdu, le = result.sw2)
result = R_APDU(self._real_send(gr_apdu))
return result
def verify_pin(self, pin_number, pin_value): def verify_pin(self, pin_number, pin_value):