From c84ee7bc9459bf4966144d29efc4e91b6497a28e Mon Sep 17 00:00:00 2001 From: mcentner Date: Tue, 20 Jul 2010 14:11:59 +0000 Subject: Added project skeleton smccTest for smart card and terminal tests. git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@789 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- smccTest/pom.xml | 70 +++++++++++ .../main/java/at/gv/egiz/smcctest/CardTest.java | 136 +++++++++++++++++++++ smccTest/src/main/resources/log4j.properties | 23 ++++ 3 files changed, 229 insertions(+) create mode 100644 smccTest/pom.xml create mode 100644 smccTest/src/main/java/at/gv/egiz/smcctest/CardTest.java create mode 100644 smccTest/src/main/resources/log4j.properties diff --git a/smccTest/pom.xml b/smccTest/pom.xml new file mode 100644 index 00000000..5f577cb3 --- /dev/null +++ b/smccTest/pom.xml @@ -0,0 +1,70 @@ + + 4.0.0 + + mocca + at.gv.egiz + 1.3.0-RC2-SNAPSHOT + + at.gv.egiz + smccTest + 1.3.0-RC2-SNAPSHOT + SMCC Test + Card Terminal and Smart Card Tests + + + + org.apache.maven.plugins + maven-jar-plugin + + + + true + lib/ + at.gv.egiz.smcctest.CardTest + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + + + + + + at.gv.egiz + smcc + ${project.version} + + + iaik + iaik_jce_full_signed + + + iaik + iaik_ecc_signed + + + org.slf4j + slf4j-log4j12 + + + log4j + log4j + + + \ No newline at end of file diff --git a/smccTest/src/main/java/at/gv/egiz/smcctest/CardTest.java b/smccTest/src/main/java/at/gv/egiz/smcctest/CardTest.java new file mode 100644 index 00000000..8eadf13e --- /dev/null +++ b/smccTest/src/main/java/at/gv/egiz/smcctest/CardTest.java @@ -0,0 +1,136 @@ +/* +* Copyright 2009 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.smcctest; + +import iaik.security.ecc.provider.ECCProvider; +import iaik.security.provider.IAIK; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.util.Locale; + +import at.gv.egiz.smcc.CancelledException; +import at.gv.egiz.smcc.PinInfo; +import at.gv.egiz.smcc.SignatureCard; +import at.gv.egiz.smcc.SignatureCardException; +import at.gv.egiz.smcc.SignatureCard.KeyboxName; +import at.gv.egiz.smcc.pin.gui.PINGUI; +import at.gv.egiz.smcc.util.SMCCHelper; + +public class CardTest { + + private static KeyboxName[] keyboxNames = { KeyboxName.SECURE_SIGNATURE_KEYPAIR, KeyboxName.CERITIFIED_KEYPAIR }; + + private static String[] infoboxes = { "IdentityLink" }; + + public static void main(String args[]) throws CertificateException, InterruptedException { + + IAIK.addAsJDK14Provider(); + ECCProvider.addAsProvider(); + + SMCCHelper helper = new SMCCHelper(); + SignatureCard signatureCard = helper.getSignatureCard(Locale.getDefault()); + + if (signatureCard != null) { + + CertificateFactory certificateFactory = CertificateFactory.getInstance("X509"); + for (KeyboxName keyboxName : keyboxNames) { + + // Certificates + try { + System.out.println("--- Certificate " + keyboxName + " ---"); + byte[] certificate = signatureCard.getCertificate(keyboxName); + Certificate cert = certificateFactory.generateCertificate(new ByteArrayInputStream(certificate)); + System.out.println(cert); + } catch (SignatureCardException e) { + e.printStackTrace(); + } + + // Signature + + + } + + // Infoboxes + for (String infobox : infoboxes) { + try { + System.out.println("--- Infobox " + infobox + " ---"); + byte[] box = signatureCard.getInfobox(infobox, new PINUI(), null); + System.out.println(SMCCHelper.toString(box)); + } catch (SignatureCardException e) { + e.printStackTrace(); + } + } + + + } else { + System.out.println("No signature card found."); + } + + } + + public static class PINUI implements PINGUI { + + @Override + public void allKeysCleared() { + + } + + @Override + public void correctionButtonPressed() { + } + + @Override + public void enterPIN(PinInfo pinInfo, int retries) + throws CancelledException, InterruptedException { + } + + @Override + public void enterPINDirect(PinInfo pinInfo, int retries) + throws CancelledException, InterruptedException { + } + + @Override + public void validKeyPressed() { + } + + @Override + public char[] providePIN(PinInfo pinSpec, int retries) + throws CancelledException, InterruptedException { + + System.out.print(pinSpec.getLocalizedName() + ":" ); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + + String pin; + try { + pin = reader.readLine(); + } catch (IOException e) { + throw new CancelledException(e); + } + + return pin.toCharArray(); + } + + } + +} diff --git a/smccTest/src/main/resources/log4j.properties b/smccTest/src/main/resources/log4j.properties new file mode 100644 index 00000000..19d43fa2 --- /dev/null +++ b/smccTest/src/main/resources/log4j.properties @@ -0,0 +1,23 @@ +# 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. + +log4j.rootLogger=TRACE, STDOUT + +# STDOUT appender +log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender +log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout +#log4j.appender.STDOUT.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n +#log4j.appender.STDOUT.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +log4j.appender.STDOUT.layout.ConversionPattern=%-5p %c - %m%n -- cgit v1.2.3