summaryrefslogtreecommitdiff
path: root/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java
diff options
context:
space:
mode:
Diffstat (limited to 'smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java')
-rw-r--r--smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java104
1 files changed, 66 insertions, 38 deletions
diff --git a/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java b/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java
index 3dfc8510..36794903 100644
--- a/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java
+++ b/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java
@@ -1,79 +1,101 @@
/*
-* Copyright 2008 Federal Chancellery Austria and
-* Graz University of Technology
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * Copyright 2008 Federal Chancellery Austria and
+ * Graz University of Technology
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package at.gv.egiz.smcc;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import javax.smartcardio.ATR;
import javax.smartcardio.Card;
import javax.smartcardio.CardChannel;
import javax.smartcardio.CardException;
+public class CardEmul extends Card {
-@SuppressWarnings("restriction")
-public abstract class CardEmul extends Card {
-
- protected Thread exclThread; // = null;
- protected CardChannel channel; // = newCardChannel(this);
+ protected ATR atr;
+
+ protected Thread exclThread;
+ protected CardChannel basicChannel;
protected List<AbstractAppl> applications = new ArrayList<AbstractAppl>();
public CardEmul() {
super();
}
-// protected abstract CardChannelEmul newCardChannel(CardEmul cardEmul);
+ public void setAtr(byte[] atr) {
+ this.atr = new ATR(atr);
+ }
+
+ /**
+ * @param basicChannel
+ * the basicChannel to set
+ */
+ public void setBasicChannel(CardChannel basicChannel) {
+ this.basicChannel = basicChannel;
+ }
+
+ /**
+ * @param applications
+ * the applications to set
+ */
+ public void setApplications(List<AbstractAppl> applications) {
+ this.applications = applications;
+ }
@Override
public void beginExclusive() throws CardException {
-
+
if (exclThread == Thread.currentThread()) {
- throw new CardException("Exclusive access already assigned to current thread.");
+ throw new CardException(
+ "Exclusive access already assigned to current thread.");
} else if (exclThread != null) {
- throw new CardException("Exclusive access already assigned to another thread.");
+ throw new CardException(
+ "Exclusive access already assigned to another thread.");
}
-
+
exclThread = Thread.currentThread();
-
+
}
@Override
public void endExclusive() throws CardException {
-
+
if (exclThread == Thread.currentThread()) {
exclThread = null;
} else if (exclThread == null) {
throw new CardException("Exclusive access has not been assigned.");
} else {
- throw new CardException("Exclusive access has not been assigned to current thread.");
+ throw new CardException(
+ "Exclusive access has not been assigned to current thread.");
}
-
+
}
@Override
public CardChannel getBasicChannel() {
- return channel;
+ return basicChannel;
}
@Override
public void disconnect(boolean reset) throws CardException {
-// if (reset) {
-// channel = newCardChannel(this);
-// }
+ // if (reset) {
+ // channel = newCardChannel(this);
+ // }
}
@Override
@@ -89,18 +111,24 @@ public abstract class CardEmul extends Card {
@Override
public byte[] transmitControlCommand(int arg0, byte[] arg1)
throws CardException {
- throw new CardException("transmitControlCommand() not supported.");
- }
+ throw new CardException("transmitControlCommand() not supported.");
+ }
+
+ @Override
+ public ATR getATR() {
+ return atr;
+ }
public AbstractAppl getApplication(byte[] fid) {
- for(AbstractAppl appl : applications) {
- if (Arrays.equals(appl.getAID(), fid) || Arrays.equals(appl.getFID(), fid)) {
+ for (AbstractAppl appl : applications) {
+ if (Arrays.equals(appl.getAID(), fid)
+ || Arrays.equals(appl.getFID(), fid)) {
return appl;
}
}
return null;
-
+
}
} \ No newline at end of file