summaryrefslogtreecommitdiff
path: root/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
diff options
context:
space:
mode:
authorclemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2009-02-11 20:10:15 +0000
committerclemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2009-02-11 20:10:15 +0000
commit8596426d5daf291618b5e407bc9f804aa217b24a (patch)
tree58b76bbaea75fec79d49bd806e2eadc8d0266f44 /smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
parent1aa74c13ca1bcc7bc6583f1f64d25edc7754b5ee (diff)
downloadmocca-8596426d5daf291618b5e407bc9f804aa217b24a.tar.gz
mocca-8596426d5daf291618b5e407bc9f804aa217b24a.tar.bz2
mocca-8596426d5daf291618b5e407bc9f804aa217b24a.zip
prepare for pin management
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@301 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java')
-rw-r--r--smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java18
1 files changed, 15 insertions, 3 deletions
diff --git a/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java b/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
index 6d96599c..13c57686 100644
--- a/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
+++ b/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
@@ -30,6 +30,8 @@ package at.gv.egiz.smcc;
import java.nio.charset.Charset;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.smartcardio.CardChannel;
import javax.smartcardio.CardException;
import javax.smartcardio.CommandAPDU;
@@ -320,7 +322,12 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {
}
@Override
- protected int verifyPIN(String pin, byte kid) throws CardException, SignatureCardException {
+ public byte[] getKIDs() {
+ return new byte[] { KID_PIN_DEC, KID_PIN_INF, KID_PIN_SIG };
+ }
+
+ @Override
+ public int verifyPIN(String pin, byte kid) throws LockedException, NotActivatedException, SignatureCardException {
CardChannel channel = getCardChannel();
@@ -329,8 +336,13 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {
System.arraycopy(asciiPIN, 0, encodedPIN, 0, Math.min(asciiPIN.length,
encodedPIN.length));
- ResponseAPDU resp = transmit(channel, new CommandAPDU(0x00, 0x20, 0x00,
- kid, encodedPIN), false);
+ ResponseAPDU resp;
+ try {
+ resp = transmit(channel, new CommandAPDU(0x00, 0x20, 0x00, kid, encodedPIN), false);
+ } catch (CardException ex) {
+ log.error("smart card communication failed: " + ex.getMessage());
+ throw new SignatureCardException("smart card communication failed: " + ex.getMessage(), ex);
+ }
if (resp.getSW() == 0x63c0) {
throw new LockedException("PIN locked.");