summaryrefslogtreecommitdiff
path: root/smcc/src/main
diff options
context:
space:
mode:
authorclemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2008-11-11 12:16:00 +0000
committerclemenso <clemenso@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2008-11-11 12:16:00 +0000
commite4a47aa9393d74647f4f0c66b54dc4519fed492f (patch)
treedcacbccfc7b4e777854ee6b9b1c74f84f7fc7915 /smcc/src/main
parent82c59c9d862d3ee9ad43fdc1509d0b5a61cc107c (diff)
downloadmocca-e4a47aa9393d74647f4f0c66b54dc4519fed492f.tar.gz
mocca-e4a47aa9393d74647f4f0c66b54dc4519fed492f.tar.bz2
mocca-e4a47aa9393d74647f4f0c66b54dc4519fed492f.zip
Interrupt in waitForAction (applet closed)
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@162 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'smcc/src/main')
-rw-r--r--smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java12
-rw-r--r--smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java6
-rw-r--r--smcc/src/main/java/at/gv/egiz/smcc/PINProvider.java2
-rw-r--r--smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java10
-rw-r--r--smcc/src/main/java/at/gv/egiz/smcc/SWCard.java3
-rw-r--r--smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java17
6 files changed, 34 insertions, 16 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 9e56701f..2baff834 100644
--- a/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
+++ b/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
@@ -106,8 +106,9 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {
/* (non-Javadoc)
* @see at.gv.egiz.smcc.SignatureCard#getCertificate(at.gv.egiz.smcc.SignatureCard.KeyboxName)
*/
+ @Override
public byte[] getCertificate(KeyboxName keyboxName)
- throws SignatureCardException {
+ throws SignatureCardException, InterruptedException {
byte[] aid;
byte[] efc;
@@ -150,8 +151,9 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {
/* (non-Javadoc)
* @see at.gv.egiz.smcc.SignatureCard#getInfobox(java.lang.String, at.gv.egiz.smcc.PINProvider, java.lang.String)
*/
+ @Override
public byte[] getInfobox(String infobox, PINProvider provider, String domainId)
- throws SignatureCardException {
+ throws SignatureCardException, InterruptedException {
if ("IdentityLink".equals(infobox)) {
@@ -181,8 +183,9 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {
}
+ @Override
public byte[] createSignature(byte[] hash, KeyboxName keyboxName,
- PINProvider provider) throws SignatureCardException {
+ PINProvider provider) throws SignatureCardException, InterruptedException {
if (hash.length != 20) {
throw new IllegalArgumentException("Hash value must be of length 20.");
@@ -299,8 +302,9 @@ public class ACOSCard extends AbstractSignatureCard implements SignatureCard {
* @throws javax.smartcardio.CardException
* @throws at.gv.egiz.smcc.SignatureCardException
*/
+ @Override
protected void verifyPIN(PINProvider pinProvider, PINSpec spec, byte kid)
- throws CardException, CancelledException, SignatureCardException {
+ throws CardException, CancelledException, SignatureCardException, InterruptedException {
int retries = -1;
do {
diff --git a/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java b/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java
index cebc63fc..b828e8cd 100644
--- a/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java
+++ b/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java
@@ -110,7 +110,7 @@ public abstract class AbstractSignatureCard implements SignatureCard {
* if VERIFY PIN fails
*/
protected abstract void verifyPIN(PINProvider pinProvider, PINSpec spec,
- byte kid) throws CardException, SignatureCardException;
+ byte kid) throws CardException, SignatureCardException, InterruptedException;
protected byte[] readBinary(CardChannel channel, int offset, int len)
throws CardException, SignatureCardException {
@@ -194,7 +194,7 @@ public abstract class AbstractSignatureCard implements SignatureCard {
* @throws SignatureCardException
*/
protected byte[] readTLVFile(byte[] aid, byte[] ef, int maxLength)
- throws SignatureCardException {
+ throws SignatureCardException, InterruptedException {
return readTLVFilePIN(aid, ef, (byte) 0, null, null, maxLength);
}
@@ -215,7 +215,7 @@ public abstract class AbstractSignatureCard implements SignatureCard {
*/
protected byte[] readTLVFilePIN(byte[] aid, byte[] ef, byte kid,
PINProvider provider, PINSpec spec, int maxLength)
- throws SignatureCardException {
+ throws SignatureCardException, InterruptedException {
try {
diff --git a/smcc/src/main/java/at/gv/egiz/smcc/PINProvider.java b/smcc/src/main/java/at/gv/egiz/smcc/PINProvider.java
index 844115a4..e0104618 100644
--- a/smcc/src/main/java/at/gv/egiz/smcc/PINProvider.java
+++ b/smcc/src/main/java/at/gv/egiz/smcc/PINProvider.java
@@ -30,6 +30,6 @@ package at.gv.egiz.smcc;
public interface PINProvider {
- public String providePIN(PINSpec spec, int retries);
+ public String providePIN(PINSpec spec, int retries) throws InterruptedException;
}
diff --git a/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java b/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java
index 99acbc0f..d6d02475 100644
--- a/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java
+++ b/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java
@@ -129,8 +129,9 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard
/* (non-Javadoc)
* @see at.gv.egiz.smcc.SignatureCard#getCertificate(at.gv.egiz.smcc.SignatureCard.KeyboxName)
*/
+ @Override
public byte[] getCertificate(KeyboxName keyboxName)
- throws SignatureCardException {
+ throws SignatureCardException, InterruptedException {
byte[] aid;
byte[] efc;
@@ -169,8 +170,9 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard
/* (non-Javadoc)
* @see at.gv.egiz.smcc.SignatureCard#getInfobox(java.lang.String, at.gv.egiz.smcc.PINProvider, java.lang.String)
*/
+ @Override
public byte[] getInfobox(String infobox, PINProvider provider, String domainId)
- throws SignatureCardException {
+ throws SignatureCardException, InterruptedException {
if ("IdentityLink".equals(infobox)) {
@@ -204,7 +206,7 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard
* @see at.gv.egiz.smcc.SignatureCard#createSignature(byte[], at.gv.egiz.smcc.SignatureCard.KeyboxName, at.gv.egiz.smcc.PINProvider)
*/
public byte[] createSignature(byte[] hash, KeyboxName keyboxName,
- PINProvider provider) throws SignatureCardException {
+ PINProvider provider) throws SignatureCardException, InterruptedException {
if (hash.length != 20) {
throw new IllegalArgumentException("Hash value must be of length 20.");
@@ -399,7 +401,7 @@ public class STARCOSCard extends AbstractSignatureCard implements SignatureCard
* @see at.gv.egiz.smcc.AbstractSignatureCard#verifyPIN(at.gv.egiz.smcc.PINProvider, at.gv.egiz.smcc.PINSpec, byte, int)
*/
protected void verifyPIN(PINProvider pinProvider, PINSpec spec, byte kid)
- throws CardException, SignatureCardException {
+ throws CardException, SignatureCardException, InterruptedException {
int retries = verifyPIN(null, kid);
do {
diff --git a/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java b/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java
index 42a4be1b..42943541 100644
--- a/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java
+++ b/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java
@@ -297,7 +297,8 @@ public class SWCard implements SignatureCard {
}
- public byte[] createSignature(byte[] hash, KeyboxName keyboxName, PINProvider provider) throws SignatureCardException {
+ @Override
+ public byte[] createSignature(byte[] hash, KeyboxName keyboxName, PINProvider provider) throws SignatureCardException, InterruptedException {
// KeyStore password
String password = getPassword(keyboxName);
diff --git a/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java b/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java
index 37bd7cf9..b6a453df 100644
--- a/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java
+++ b/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java
@@ -57,6 +57,7 @@ public interface SignatureCard {
}
}
+ @Override
public boolean equals(Object obj) {
if (obj instanceof String) {
return obj.equals(keyboxName_);
@@ -77,7 +78,7 @@ public interface SignatureCard {
public void init(Card card);
public byte[] getCertificate(KeyboxName keyboxName)
- throws SignatureCardException;
+ throws SignatureCardException, InterruptedException;
public void disconnect(boolean reset);
@@ -88,12 +89,22 @@ public interface SignatureCard {
* @param domainId may be null.
* @return
* @throws SignatureCardException
+ * @throws InterruptedException if applet is destroyed while in pin dialog
*/
public byte[] getInfobox(String infobox, PINProvider provider, String domainId)
- throws SignatureCardException;
+ throws SignatureCardException, InterruptedException;
+ /**
+ *
+ * @param hash
+ * @param keyboxName
+ * @param provider
+ * @return
+ * @throws at.gv.egiz.smcc.SignatureCardException
+ * @throws java.lang.InterruptedException if applet is destroyed while in pin dialog
+ */
public byte[] createSignature(byte[] hash, KeyboxName keyboxName,
- PINProvider provider) throws SignatureCardException;
+ PINProvider provider) throws SignatureCardException, InterruptedException;
/**
* Sets the local for evtl. required callbacks (e.g. PINSpec)