summaryrefslogtreecommitdiff
path: root/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java')
-rw-r--r--smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java106
1 files changed, 106 insertions, 0 deletions
diff --git a/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java
new file mode 100644
index 00000000..d2b3b050
--- /dev/null
+++ b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2011 by Graz University of Technology, Austria
+ * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint
+ * initiative of the Federal Chancellery Austria and Graz University of Technology.
+ *
+ * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by
+ * the European Commission - subsequent versions of the EUPL (the "Licence");
+ * You may not use this work except in compliance with the Licence.
+ * You may obtain a copy of the Licence at:
+ * http://www.osor.eu/eupl/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the Licence is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the Licence for the specific language governing permissions and
+ * limitations under the Licence.
+ *
+ * This product combines work with different licenses. See the "NOTICE" text
+ * file for details on the various modules and licenses.
+ * The "NOTICE" text file is part of the distribution. Any derivative works
+ * that you distribute must include a readable copy of the "NOTICE" text file.
+ */
+
+package at.gv.egiz.bku.smccstal;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import at.gv.egiz.bku.gui.GetHardwareInfoGUIFacade;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.ext.GETHardwareInfoRequest;
+import at.gv.egiz.stal.ext.GETHardwareInfoResponse;
+
+/**
+*
+* @author Thomas Lenz <thomas.lenz@iaik.tugraz.at>
+*/
+
+public class GETHardwareInfoRequestHandler extends AbstractRequestHandler {
+
+ private final Logger log = LoggerFactory.getLogger(GETHardwareInfoRequestHandler.class);
+
+ @Override
+ public boolean requireCard() {
+ return true;
+ }
+
+ @Override
+ public STALResponse handleRequest(STALRequest request)
+ throws InterruptedException {
+
+ log.debug("handle a get-hardware info request");
+
+ if (request instanceof GETHardwareInfoRequest) {
+
+ try {
+ String terminal = card.getTerminalName();
+ String smartcard = card.toString();
+ String smartcard_ATR = toString(card.getCard().getATR().getBytes());
+
+ } catch (SignatureCardException e) {
+ log.error("Some error occur during card communication.", e);
+ gui.showErrorDialog(GetHardwareInfoGUIFacade.ERR_CARD_NOTACTIVATED,
+ null, this, "cancel");
+ }
+
+
+
+ GetHardwareInfoGUIFacade gui = (GetHardwareInfoGUIFacade) this.gui;
+
+ gui.showHardwareInfoDialog(this, "back", terminal, smartcard, smartcard_ATR);
+
+ while (true) {
+
+ waitForAction();
+
+ if ("back".equals(actionCommand)) {
+ log.debug("show hardware info response back.");
+ return new GETHardwareInfoResponse();
+
+ } else {
+ log.info("unknown command resolved.");
+ }
+ }
+ }
+ return new GETHardwareInfoResponse();
+ }
+
+ private static String toString(byte[] b) {
+ StringBuffer sb = new StringBuffer();
+ sb.append('[');
+ if (b != null && b.length > 0) {
+ sb.append(Integer.toHexString((b[0] & 240) >> 4));
+ sb.append(Integer.toHexString(b[0] & 15));
+ for (int i = 1; i < b.length; i++) {
+ sb.append((i % 32 == 0) ? '\n' : ':');
+ sb.append(Integer.toHexString((b[i] & 240) >> 4));
+ sb.append(Integer.toHexString(b[i] & 15));
+ }
+ }
+ sb.append(']');
+ return sb.toString();
+ }
+
+}