diff options
author | mcentner <mcentner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2010-07-20 14:11:59 +0000 |
---|---|---|
committer | mcentner <mcentner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2010-07-20 14:11:59 +0000 |
commit | c84ee7bc9459bf4966144d29efc4e91b6497a28e (patch) | |
tree | 51b5e267f541d17e926acea1accb687a70d4424d | |
parent | 1103be1b14d0ad771386438696cd39bede15c6f6 (diff) | |
download | mocca-c84ee7bc9459bf4966144d29efc4e91b6497a28e.tar.gz mocca-c84ee7bc9459bf4966144d29efc4e91b6497a28e.tar.bz2 mocca-c84ee7bc9459bf4966144d29efc4e91b6497a28e.zip |
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
-rw-r--r-- | smccTest/pom.xml | 70 | ||||
-rw-r--r-- | smccTest/src/main/java/at/gv/egiz/smcctest/CardTest.java | 136 | ||||
-rw-r--r-- | smccTest/src/main/resources/log4j.properties | 23 |
3 files changed, 229 insertions, 0 deletions
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 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>mocca</artifactId> + <groupId>at.gv.egiz</groupId> + <version>1.3.0-RC2-SNAPSHOT</version> + </parent> + <groupId>at.gv.egiz</groupId> + <artifactId>smccTest</artifactId> + <version>1.3.0-RC2-SNAPSHOT</version> + <name>SMCC Test</name> + <description>Card Terminal and Smart Card Tests</description> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifest> + <addClasspath>true</addClasspath> + <classpathPrefix>lib/</classpathPrefix> + <mainClass>at.gv.egiz.smcctest.CardTest</mainClass> + </manifest> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy-dependencies</id> + <phase>package</phase> + <goals> + <goal>copy-dependencies</goal> + </goals> + <configuration> + <outputDirectory>${project.build.directory}/lib</outputDirectory> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>at.gv.egiz</groupId> + <artifactId>smcc</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>iaik</groupId> + <artifactId>iaik_jce_full_signed</artifactId> + </dependency> + <dependency> + <groupId>iaik</groupId> + <artifactId>iaik_ecc_signed</artifactId> + </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + </dependencies> +</project>
\ 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 |