From 6cb4a071eab9a3b8cf78b8ec7e407aa148f2d038 Mon Sep 17 00:00:00 2001 From: mcentner Date: Wed, 1 Jul 2009 13:03:41 +0000 Subject: Major refactoring of SMCC git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@381 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../java/at/gv/egiz/smcc/acos/ACOSCardTest.java | 243 +++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java (limited to 'smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java') diff --git a/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java b/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java new file mode 100644 index 00000000..90bb039e --- /dev/null +++ b/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java @@ -0,0 +1,243 @@ +/* +* 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.acos; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; + +import org.junit.Test; + +import at.gv.egiz.smcc.ACOSCard; +import at.gv.egiz.smcc.CardEmul; +import at.gv.egiz.smcc.CardNotSupportedException; +import at.gv.egiz.smcc.CardTest; +import at.gv.egiz.smcc.LockedException; +import at.gv.egiz.smcc.NotActivatedException; +import at.gv.egiz.smcc.SignatureCard; +import at.gv.egiz.smcc.SignatureCardException; +import at.gv.egiz.smcc.SignatureCard.KeyboxName; + +public abstract class ACOSCardTest extends CardTest { + + public ACOSCardTest() { + super(); + } + + protected abstract int getVersion(); + + @Test + public void testGetInfoboxIdentityLinkEmpty() throws SignatureCardException, + InterruptedException, CardNotSupportedException { + + char[] pin = "0000".toCharArray(); + + SignatureCard signatureCard = createSignatureCard(); + CardEmul card = (CardEmul) signatureCard.getCard(); + ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); + appl.clearInfobox(); + + byte[] idlink = signatureCard.getInfobox("IdentityLink", + new TestPINProvider(pin), null); + assertNull(idlink); + + } + + @Test(expected = SignatureCardException.class) + public void testGetInfoboxIdentityInvalid() throws SignatureCardException, + InterruptedException, CardNotSupportedException { + + char[] pin = "0000".toCharArray(); + + SignatureCard signatureCard = createSignatureCard(); + CardEmul card = (CardEmul) signatureCard.getCard(); + ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); + appl.setInfoboxHeader((byte) 0xFF); + + signatureCard.getInfobox("IdentityLink", new TestPINProvider(pin), null); + + } + + @Test + public void testGetCerts() throws SignatureCardException, + InterruptedException, CardNotSupportedException { + + SignatureCard signatureCard = createSignatureCard(); + + byte[] cert; + + cert = signatureCard.getCertificate(KeyboxName.SECURE_SIGNATURE_KEYPAIR); + assertNotNull(cert); + assertTrue(Arrays.equals(cert, A04ApplSIG.C_CH_DS)); + + cert = signatureCard.getCertificate(KeyboxName.CERITIFIED_KEYPAIR); + assertNotNull(cert); + assertTrue(Arrays.equals(cert, A04ApplDEC.C_CH_EKEY)); + + } + + @Test(expected = NotActivatedException.class) + public void testGetSIGCertEmpty() throws SignatureCardException, + InterruptedException, CardNotSupportedException { + + SignatureCard signatureCard = createSignatureCard(); + CardEmul card = (CardEmul) signatureCard.getCard(); + ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG); + appl.clearCert(); + + signatureCard.getCertificate(KeyboxName.SECURE_SIGNATURE_KEYPAIR); + + } + + @Test(expected = NotActivatedException.class) + public void testGetDECCertEmpty() throws SignatureCardException, + InterruptedException, CardNotSupportedException { + + SignatureCard signatureCard = createSignatureCard(); + CardEmul card = (CardEmul) signatureCard.getCard(); + ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); + appl.clearCert(); + + signatureCard.getCertificate(KeyboxName.CERITIFIED_KEYPAIR); + + } + + @Test + public void testSignSIG() throws SignatureCardException, + InterruptedException, CardNotSupportedException, + NoSuchAlgorithmException, UnsupportedEncodingException { + + char[] pin = "123456".toCharArray(); + + SignatureCard signatureCard = createSignatureCard(); + CardEmul card = (CardEmul) signatureCard.getCard(); + ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG); + appl.setPin(ACOSApplSIG.KID_PIN_SIG, pin); + + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] hash = md.digest("MOCCA".getBytes("ASCII")); + + byte[] signature = signatureCard.createSignature(hash, + KeyboxName.SECURE_SIGNATURE_KEYPAIR, new TestPINProvider(pin)); + + assertNotNull(signature); + + } + + @Test + public void testSignDEC() throws SignatureCardException, + InterruptedException, CardNotSupportedException, + NoSuchAlgorithmException, UnsupportedEncodingException { + + char[] pin = "1234".toCharArray(); + + SignatureCard signatureCard = createSignatureCard(); + CardEmul card = (CardEmul) signatureCard.getCard(); + ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); + appl.setPin(ACOSApplDEC.KID_PIN_DEC, pin); + + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] hash = md.digest("MOCCA".getBytes("ASCII")); + + byte[] signature = signatureCard.createSignature(hash, + KeyboxName.CERITIFIED_KEYPAIR, new TestPINProvider(pin)); + + assertNotNull(signature); + + } + + @Test(expected = LockedException.class) + public void testSignSIGInvalidPin() throws SignatureCardException, + InterruptedException, CardNotSupportedException, + NoSuchAlgorithmException, UnsupportedEncodingException { + + SignatureCard signatureCard = createSignatureCard(); + + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] hash = md.digest("MOCCA".getBytes("ASCII")); + + TestPINProvider pinProvider = new TestPINProvider("000000".toCharArray()); + + signatureCard.createSignature(hash, KeyboxName.SECURE_SIGNATURE_KEYPAIR, + pinProvider); + + } + + @Test(expected = LockedException.class) + public void testSignDECInvalidPin() throws SignatureCardException, + InterruptedException, CardNotSupportedException, + NoSuchAlgorithmException, UnsupportedEncodingException { + + SignatureCard signatureCard = createSignatureCard(); + + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] hash = md.digest("MOCCA".getBytes("ASCII")); + + TestPINProvider pinProvider = new TestPINProvider("0000".toCharArray()); + + signatureCard.createSignature(hash, KeyboxName.CERITIFIED_KEYPAIR, + pinProvider); + + } + + @Test(expected = LockedException.class) + public void testSignSIGBlockedPin() throws SignatureCardException, + InterruptedException, CardNotSupportedException, + NoSuchAlgorithmException, UnsupportedEncodingException { + + SignatureCard signatureCard = createSignatureCard(); + CardEmul card = (CardEmul) signatureCard.getCard(); + ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG); + appl.setPin(ACOSApplSIG.KID_PIN_SIG, null); + + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] hash = md.digest("MOCCA".getBytes("ASCII")); + + TestPINProvider pinProvider = new TestPINProvider("000000".toCharArray()); + + signatureCard.createSignature(hash, KeyboxName.SECURE_SIGNATURE_KEYPAIR, + pinProvider); + + } + + @Test(expected = LockedException.class) + public void testSignDECBlockedPin() throws SignatureCardException, + InterruptedException, CardNotSupportedException, + NoSuchAlgorithmException, UnsupportedEncodingException { + + SignatureCard signatureCard = createSignatureCard(); + CardEmul card = (CardEmul) signatureCard.getCard(); + ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); + appl.setPin(ACOSApplDEC.KID_PIN_DEC, null); + + MessageDigest md = MessageDigest.getInstance("SHA-1"); + byte[] hash = md.digest("MOCCA".getBytes("ASCII")); + + TestPINProvider pinProvider = new TestPINProvider("0000".toCharArray()); + + signatureCard.createSignature(hash, KeyboxName.CERITIFIED_KEYPAIR, + pinProvider); + + } + +} \ No newline at end of file -- cgit v1.2.3 From 68941b57df2caeead67a5bede2ef5a635d07db32 Mon Sep 17 00:00:00 2001 From: mcentner Date: Wed, 11 Nov 2009 15:51:08 +0000 Subject: Added support for SHA-256 and partial support for e-card G3, BELPIC and Italian cards. git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@540 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../java/at/gv/egiz/smcc/acos/ACOSCardTest.java | 62 +++++++++------------- 1 file changed, 26 insertions(+), 36 deletions(-) (limited to 'smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java') diff --git a/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java b/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java index 90bb039e..56d1e4b2 100644 --- a/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java +++ b/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java @@ -21,6 +21,8 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import java.io.ByteArrayInputStream; +import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -125,7 +127,7 @@ public abstract class ACOSCardTest extends CardTest { @Test public void testSignSIG() throws SignatureCardException, InterruptedException, CardNotSupportedException, - NoSuchAlgorithmException, UnsupportedEncodingException { + NoSuchAlgorithmException, IOException { char[] pin = "123456".toCharArray(); @@ -134,11 +136,9 @@ public abstract class ACOSCardTest extends CardTest { ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG); appl.setPin(ACOSApplSIG.KID_PIN_SIG, pin); - MessageDigest md = MessageDigest.getInstance("SHA-1"); - byte[] hash = md.digest("MOCCA".getBytes("ASCII")); - - byte[] signature = signatureCard.createSignature(hash, - KeyboxName.SECURE_SIGNATURE_KEYPAIR, new TestPINProvider(pin)); + byte[] signature = signatureCard.createSignature(new ByteArrayInputStream("MOCCA" + .getBytes("ASCII")), + KeyboxName.SECURE_SIGNATURE_KEYPAIR, new TestPINProvider(pin), null); assertNotNull(signature); @@ -147,7 +147,7 @@ public abstract class ACOSCardTest extends CardTest { @Test public void testSignDEC() throws SignatureCardException, InterruptedException, CardNotSupportedException, - NoSuchAlgorithmException, UnsupportedEncodingException { + NoSuchAlgorithmException, IOException { char[] pin = "1234".toCharArray(); @@ -156,11 +156,9 @@ public abstract class ACOSCardTest extends CardTest { ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); appl.setPin(ACOSApplDEC.KID_PIN_DEC, pin); - MessageDigest md = MessageDigest.getInstance("SHA-1"); - byte[] hash = md.digest("MOCCA".getBytes("ASCII")); - - byte[] signature = signatureCard.createSignature(hash, - KeyboxName.CERITIFIED_KEYPAIR, new TestPINProvider(pin)); + byte[] signature = signatureCard.createSignature(new ByteArrayInputStream("MOCCA" + .getBytes("ASCII")), + KeyboxName.CERITIFIED_KEYPAIR, new TestPINProvider(pin), null); assertNotNull(signature); @@ -169,74 +167,66 @@ public abstract class ACOSCardTest extends CardTest { @Test(expected = LockedException.class) public void testSignSIGInvalidPin() throws SignatureCardException, InterruptedException, CardNotSupportedException, - NoSuchAlgorithmException, UnsupportedEncodingException { + NoSuchAlgorithmException, IOException { SignatureCard signatureCard = createSignatureCard(); - MessageDigest md = MessageDigest.getInstance("SHA-1"); - byte[] hash = md.digest("MOCCA".getBytes("ASCII")); - TestPINProvider pinProvider = new TestPINProvider("000000".toCharArray()); - signatureCard.createSignature(hash, KeyboxName.SECURE_SIGNATURE_KEYPAIR, - pinProvider); + signatureCard.createSignature(new ByteArrayInputStream("MOCCA" + .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR, + pinProvider, null); } @Test(expected = LockedException.class) public void testSignDECInvalidPin() throws SignatureCardException, InterruptedException, CardNotSupportedException, - NoSuchAlgorithmException, UnsupportedEncodingException { + NoSuchAlgorithmException, IOException { SignatureCard signatureCard = createSignatureCard(); - MessageDigest md = MessageDigest.getInstance("SHA-1"); - byte[] hash = md.digest("MOCCA".getBytes("ASCII")); - TestPINProvider pinProvider = new TestPINProvider("0000".toCharArray()); - signatureCard.createSignature(hash, KeyboxName.CERITIFIED_KEYPAIR, - pinProvider); + signatureCard.createSignature(new ByteArrayInputStream("MOCCA" + .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR, + pinProvider, null); } @Test(expected = LockedException.class) public void testSignSIGBlockedPin() throws SignatureCardException, InterruptedException, CardNotSupportedException, - NoSuchAlgorithmException, UnsupportedEncodingException { + NoSuchAlgorithmException, IOException { SignatureCard signatureCard = createSignatureCard(); CardEmul card = (CardEmul) signatureCard.getCard(); ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG); appl.setPin(ACOSApplSIG.KID_PIN_SIG, null); - MessageDigest md = MessageDigest.getInstance("SHA-1"); - byte[] hash = md.digest("MOCCA".getBytes("ASCII")); - TestPINProvider pinProvider = new TestPINProvider("000000".toCharArray()); - signatureCard.createSignature(hash, KeyboxName.SECURE_SIGNATURE_KEYPAIR, - pinProvider); + signatureCard.createSignature(new ByteArrayInputStream("MOCCA" + .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR, + pinProvider, null); } @Test(expected = LockedException.class) public void testSignDECBlockedPin() throws SignatureCardException, InterruptedException, CardNotSupportedException, - NoSuchAlgorithmException, UnsupportedEncodingException { + NoSuchAlgorithmException, IOException { SignatureCard signatureCard = createSignatureCard(); CardEmul card = (CardEmul) signatureCard.getCard(); ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); appl.setPin(ACOSApplDEC.KID_PIN_DEC, null); - MessageDigest md = MessageDigest.getInstance("SHA-1"); - byte[] hash = md.digest("MOCCA".getBytes("ASCII")); - TestPINProvider pinProvider = new TestPINProvider("0000".toCharArray()); - signatureCard.createSignature(hash, KeyboxName.CERITIFIED_KEYPAIR, - pinProvider); + signatureCard.createSignature(new ByteArrayInputStream("MOCCA" + .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR, + pinProvider, null); } -- cgit v1.2.3 From 3da4655d011dfc2f04f9e4ac28b38aee42d01bc0 Mon Sep 17 00:00:00 2001 From: clemenso Date: Tue, 5 Jan 2010 10:06:47 +0000 Subject: Features [#437] Handle pinpad [64:03] response apdu correctly [#445] pin entry feedback for VERIFY_PIN_START/FINISH [#471] Provide SecureViewer Link before Pinpad PinEntry timeout starts Bugs [#479] PIN Managment Applet allows unmatching new pin and pin confirmation [#480] PIN Management displays blocked PINs as ACTIVE [#486] Not possible to select 3 times in series the same item from signedReferencesList for display in secureViewer [#506] change pin dialog (gui) issues [#508] e-card G3 PIN activation (with TransportPIN) not supported [#509] closing secure viewer window (WINDOW_CLOSING) leaves "signature data is displayed in viewer" dialog in applet git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@565 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../java/at/gv/egiz/smcc/acos/ACOSCardTest.java | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java') diff --git a/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java b/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java index 56d1e4b2..4f012739 100644 --- a/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java +++ b/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java @@ -16,26 +16,23 @@ */ package at.gv.egiz.smcc.acos; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; import org.junit.Test; -import at.gv.egiz.smcc.ACOSCard; import at.gv.egiz.smcc.CardEmul; import at.gv.egiz.smcc.CardNotSupportedException; import at.gv.egiz.smcc.CardTest; import at.gv.egiz.smcc.LockedException; import at.gv.egiz.smcc.NotActivatedException; +import at.gv.egiz.smcc.pin.gui.SMCCTestPINProvider; import at.gv.egiz.smcc.SignatureCard; import at.gv.egiz.smcc.SignatureCardException; import at.gv.egiz.smcc.SignatureCard.KeyboxName; @@ -60,7 +57,7 @@ public abstract class ACOSCardTest extends CardTest { appl.clearInfobox(); byte[] idlink = signatureCard.getInfobox("IdentityLink", - new TestPINProvider(pin), null); + new SMCCTestPINProvider(pin), null); assertNull(idlink); } @@ -76,7 +73,7 @@ public abstract class ACOSCardTest extends CardTest { ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); appl.setInfoboxHeader((byte) 0xFF); - signatureCard.getInfobox("IdentityLink", new TestPINProvider(pin), null); + signatureCard.getInfobox("IdentityLink", new SMCCTestPINProvider(pin), null); } @@ -138,7 +135,7 @@ public abstract class ACOSCardTest extends CardTest { byte[] signature = signatureCard.createSignature(new ByteArrayInputStream("MOCCA" .getBytes("ASCII")), - KeyboxName.SECURE_SIGNATURE_KEYPAIR, new TestPINProvider(pin), null); + KeyboxName.SECURE_SIGNATURE_KEYPAIR, new SMCCTestPINProvider(pin), null); assertNotNull(signature); @@ -158,7 +155,7 @@ public abstract class ACOSCardTest extends CardTest { byte[] signature = signatureCard.createSignature(new ByteArrayInputStream("MOCCA" .getBytes("ASCII")), - KeyboxName.CERITIFIED_KEYPAIR, new TestPINProvider(pin), null); + KeyboxName.CERITIFIED_KEYPAIR, new SMCCTestPINProvider(pin), null); assertNotNull(signature); @@ -171,7 +168,7 @@ public abstract class ACOSCardTest extends CardTest { SignatureCard signatureCard = createSignatureCard(); - TestPINProvider pinProvider = new TestPINProvider("000000".toCharArray()); + SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("000000".toCharArray()); signatureCard.createSignature(new ByteArrayInputStream("MOCCA" .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR, @@ -186,7 +183,7 @@ public abstract class ACOSCardTest extends CardTest { SignatureCard signatureCard = createSignatureCard(); - TestPINProvider pinProvider = new TestPINProvider("0000".toCharArray()); + SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("0000".toCharArray()); signatureCard.createSignature(new ByteArrayInputStream("MOCCA" .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR, @@ -204,7 +201,7 @@ public abstract class ACOSCardTest extends CardTest { ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG); appl.setPin(ACOSApplSIG.KID_PIN_SIG, null); - TestPINProvider pinProvider = new TestPINProvider("000000".toCharArray()); + SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("000000".toCharArray()); signatureCard.createSignature(new ByteArrayInputStream("MOCCA" .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR, @@ -222,7 +219,7 @@ public abstract class ACOSCardTest extends CardTest { ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC); appl.setPin(ACOSApplDEC.KID_PIN_DEC, null); - TestPINProvider pinProvider = new TestPINProvider("0000".toCharArray()); + SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("0000".toCharArray()); signatureCard.createSignature(new ByteArrayInputStream("MOCCA" .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR, -- cgit v1.2.3