From 667af128d0adfeee2aa4748ab58411c91bc4905f Mon Sep 17 00:00:00 2001 From: mcentner Date: Tue, 26 Jan 2010 16:27:04 +0000 Subject: git-svn-id: https://joinup.ec.europa.eu/svn/mocca/branches/mocca-1.2.11-sha2@600 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../java/at/gv/egiz/smcc/reader/ReaderFactory.java | 125 --------------------- 1 file changed, 125 deletions(-) delete mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java (limited to 'mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java') diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java deleted file mode 100644 index bf1730e9..00000000 --- a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * 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.reader; - -import at.gv.egiz.smcc.conf.SMCCConfiguration; -import at.gv.egiz.smcc.util.SMCCHelper; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import javax.smartcardio.Card; -import javax.smartcardio.CardException; -import javax.smartcardio.CardTerminal; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * - * @author Clemens Orthacker - */ -public class ReaderFactory { - - protected final static Log log = LogFactory.getLog(ReaderFactory.class); - - protected static SMCCConfiguration configuration; - - public void setConfiguration(SMCCConfiguration configuration) { - if (configuration != null) { - log.debug("reader configuration: disablePinpad=" + configuration.isDisablePinpad()); - } - //spring injects configuration into singleton ReaderFactory instance, - //but we access the ReaderFactory statically (getReader) - //(we rather should query the application context to obtain a reader factory) - ReaderFactory.configuration = configuration; - } - - public static CardReader getReader(Card icc, CardTerminal ct) { - - String name = ct.getName(); - log.info("creating reader " + name); - - Map features; - if (configuration != null && configuration.isDisablePinpad()) { - features = Collections.emptyMap(); - } else { - features = queryFeatures(icc); - } - - CardReader reader; - if (features.isEmpty()) { - reader = new DefaultCardReader(ct); - } else { - reader = new PinpadCardReader(ct, features); - } - - return reader; - } - - private static int CTL_CODE(int code) { - String os_name = System.getProperty("os.name").toLowerCase(); - if (os_name.indexOf("windows") > -1) { - // cf. WinIOCTL.h - return (0x31 << 16 | (code) << 2); - } - // cf. reader.h - return 0x42000000 + (code); - } - - static int IOCTL_GET_FEATURE_REQUEST = CTL_CODE(3400); - - private static Map queryFeatures(Card icc) { - Map features = new HashMap(); - - if (icc == null) { - log.warn("invalid card handle, cannot query ifd features"); - } else { - try { - if (log.isTraceEnabled()) { - log.trace("GET_FEATURE_REQUEST " + Integer.toHexString(IOCTL_GET_FEATURE_REQUEST)); - } - byte[] resp = icc.transmitControlCommand(IOCTL_GET_FEATURE_REQUEST, - new byte[0]); - - if (log.isTraceEnabled()) { - log.trace("Response TLV " + SMCCHelper.toString(resp)); - } - // tag - // length in bytes (always 4) - // control code value for supported feature (in big endian) - for (int i = 0; i < resp.length; i += 6) { - Byte feature = new Byte(resp[i]); - Integer ioctl = new Integer((0xff & resp[i + 2]) << 24) | - ((0xff & resp[i + 3]) << 16) | - ((0xff & resp[i + 4]) << 8) | - (0xff & resp[i + 5]); - if (log.isInfoEnabled()) { - log.info("IFD supports " + CardReader.FEATURES[feature.intValue()] + - ": " + Integer.toHexString(ioctl.intValue())); - } - features.put(feature, ioctl); - } - } catch (CardException ex) { - log.debug("Failed to query IFD features: " + ex.getMessage()); - log.trace(ex); - log.info("IFD does not support secure pin entry"); - } - } - return features; - } - -} -- cgit v1.2.3