From 3f54fc75c3cf1910d8e62903e099ac645e7c80d8 Mon Sep 17 00:00:00 2001 From: tkellner Date: Tue, 11 Mar 2014 23:32:51 +0000 Subject: Always regain exclusive access, even when pinGUI fails git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@1307 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../at/gv/egiz/smcc/reader/DefaultCardReader.java | 30 ++++++++++++++-------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java') diff --git a/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java b/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java index 56680313..06d3d133 100644 --- a/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java +++ b/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java @@ -43,7 +43,6 @@ import at.gv.egiz.smcc.VerifyAPDUSpec; import at.gv.egiz.smcc.pin.gui.ModifyPINGUI; import at.gv.egiz.smcc.pin.gui.PINGUI; import at.gv.egiz.smcc.util.ISO7816Utils; -import at.gv.egiz.smcc.util.SMCCHelper; /** * @@ -72,9 +71,12 @@ public class DefaultCardReader implements CardReader { log.debug("VERIFY"); Card card = channel.getCard(); boolean regain = dropExclusive(card); - char[] pin = pinGUI.providePIN(pinSpec, retries); - regainExclusive(card, regain); - return channel.transmit(ISO7816Utils.createVerifyAPDU(apduSpec, pin)); + try { + char[] pin = pinGUI.providePIN(pinSpec, retries); + return channel.transmit(ISO7816Utils.createVerifyAPDU(apduSpec, pin)); + } finally { + regainExclusive(card, regain); + } } @Override @@ -84,10 +86,13 @@ public class DefaultCardReader implements CardReader { log.debug("MODIFY (CHANGE_REFERENCE_DATA)"); Card card = channel.getCard(); boolean regain = dropExclusive(card); - char[] oldPIN = pinGUI.provideCurrentPIN(pinSpec, retries); - char[] newPIN = pinGUI.provideNewPIN(pinSpec); - regainExclusive(card, regain); - return channel.transmit(ISO7816Utils.createChangeReferenceDataAPDU(apduSpec, oldPIN, newPIN)); + try { + char[] oldPIN = pinGUI.provideCurrentPIN(pinSpec, retries); + char[] newPIN = pinGUI.provideNewPIN(pinSpec); + return channel.transmit(ISO7816Utils.createChangeReferenceDataAPDU(apduSpec, oldPIN, newPIN)); + } finally { + regainExclusive(card, regain); + } } @Override @@ -97,9 +102,12 @@ public class DefaultCardReader implements CardReader { log.debug("MODIFY (NEW_REFERENCE_DATA)"); Card card = channel.getCard(); boolean regain = dropExclusive(card); - char[] newPIN = pinGUI.provideNewPIN(pinSpec); - regainExclusive(card, regain); - return channel.transmit(ISO7816Utils.createNewReferenceDataAPDU(apduSpec, newPIN)); + try { + char[] newPIN = pinGUI.provideNewPIN(pinSpec); + return channel.transmit(ISO7816Utils.createNewReferenceDataAPDU(apduSpec, newPIN)); + } finally { + regainExclusive(card, regain); + } } @Override -- cgit v1.2.3