From d89f36b67ea1d838a78523538a24e044518f3587 Mon Sep 17 00:00:00 2001 From: mcentner Date: Tue, 26 Jan 2010 16:22:56 +0000 Subject: MOCCA 1.2.11 with SHA-2 enabled. git-svn-id: https://joinup.ec.europa.eu/svn/mocca/branches/mocca-1.2.11-sha2@599 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../at/gv/egiz/smcc/AbstractSignatureCard.java | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java (limited to 'mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java') diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java new file mode 100644 index 00000000..fcb94fc6 --- /dev/null +++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java @@ -0,0 +1,121 @@ +/* +* 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 at.gv.egiz.smcc.reader.CardReader; +import at.gv.egiz.smcc.reader.ReaderFactory; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.ResourceBundle; + +import javax.smartcardio.Card; +import javax.smartcardio.CardChannel; +import javax.smartcardio.CardException; +import javax.smartcardio.CardTerminal; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public abstract class AbstractSignatureCard implements SignatureCard { + + private static Log log = LogFactory.getLog(AbstractSignatureCard.class); + + protected List pinSpecs = new ArrayList(); + + private ResourceBundle i18n; + private String resourceBundleName; + + private Locale locale = Locale.getDefault(); + + private Card card_; + + protected CardReader reader; + + protected AbstractSignatureCard(String resourceBundleName) { + this.resourceBundleName = resourceBundleName; + } + + protected String toString(byte[] b) { + StringBuffer sb = new StringBuffer(); + 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(':'); + sb.append(Integer.toHexString((b[i] & 240) >> 4)); + sb.append(Integer.toHexString(b[i] & 15)); + } + return sb.toString(); + } + + @Override + public void init(Card card, CardTerminal cardTerminal) { + this.card_ = card; + this.reader = ReaderFactory.getReader(card, cardTerminal); + } + + @Override + public Card getCard() { + return card_; + } + + protected CardChannel getCardChannel() { + return new LogCardChannel(card_.getBasicChannel()); + } + + @Override + public void setLocale(Locale locale) { + if (locale == null) { + throw new NullPointerException("Locale must not be set to null"); + } + this.locale = locale; + } + + protected ResourceBundle getResourceBundle() { + if (i18n == null) { + i18n = ResourceBundle.getBundle(resourceBundleName, locale); + } + return i18n; + } + + @Override + public void disconnect(boolean reset) { + log.debug("Disconnect called"); + if (card_ != null) { + try { + card_.disconnect(reset); + } catch (Exception e) { + log.info("Error while resetting card", e); + } + } + } + + @Override + public void reset() throws SignatureCardException { + try { + log.debug("Disconnect and reset smart card."); + card_.disconnect(true); + log.debug("Reconnect smart card."); + card_ = reader.connect(); + } catch (CardException e) { + throw new SignatureCardException("Failed to reset card.", e); + } + } + +} -- cgit v1.2.3