diff options
Diffstat (limited to 'prov/src/test/java/org/bouncycastle/jce/provider/test')
79 files changed, 0 insertions, 31157 deletions
diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/AEADTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/AEADTest.java deleted file mode 100644 index 8aa1aa7c..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/AEADTest.java +++ /dev/null @@ -1,355 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.IOException; -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.SecureRandom; -import java.security.Security; -import java.security.spec.InvalidParameterSpecException; - -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.spec.GCMParameterSpec; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.asn1.cms.GCMParameters; -import org.bouncycastle.jcajce.spec.RepeatedSecretKeySpec; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class AEADTest extends SimpleTest -{ - - // EAX test vector from EAXTest - private byte[] K2 = Hex.decode("91945D3F4DCBEE0BF45EF52255F095A4"); - private byte[] N2 = Hex.decode("BECAF043B0A23D843194BA972C66DEBD"); - private byte[] A2 = Hex.decode("FA3BFD4806EB53FA"); - private byte[] P2 = Hex.decode("F7FB"); - private byte[] C2 = Hex.decode("19DD5C4C9331049D0BDAB0277408F67967E5"); - // C2 with only 64bit MAC (default for EAX) - private byte[] C2_short = Hex.decode("19DD5C4C9331049D0BDA"); - - private byte[] KGCM = Hex.decode("00000000000000000000000000000000"); - private byte[] NGCM = Hex.decode("000000000000000000000000"); - private byte[] CGCM = Hex.decode("58e2fccefa7e3061367f1d57a4e7455a"); - - public String getName() - { - return "AEAD"; - } - - public void performTest() throws Exception - { - boolean aeadAvailable = false; - try - { - this.getClass().getClassLoader().loadClass("javax.crypto.spec.GCMParameterSpec"); - aeadAvailable = true; - } - catch (ClassNotFoundException e) - { - } - if (aeadAvailable) - { - checkCipherWithAD(K2, N2, A2, P2, C2_short); - testGCMParameterSpec(K2, N2, A2, P2, C2); - testGCMParameterSpecWithRepeatKey(K2, N2, A2, P2, C2); - testGCMGeneric(KGCM, NGCM, new byte[0], new byte[0], CGCM); - testGCMParameterSpecWithMultipleUpdates(K2, N2, A2, P2, C2); - } - else - { - System.err.println("GCM AEADTests disabled due to JDK"); - } - testTampering(aeadAvailable); - } - - private void testTampering(boolean aeadAvailable) - throws InvalidKeyException, - InvalidAlgorithmParameterException, - NoSuchAlgorithmException, - NoSuchProviderException, - NoSuchPaddingException, - IllegalBlockSizeException, - BadPaddingException - { - Cipher eax = Cipher.getInstance("AES/EAX/NoPadding", "BC"); - final SecretKeySpec key = new SecretKeySpec(new byte[eax.getBlockSize()], eax.getAlgorithm()); - final IvParameterSpec iv = new IvParameterSpec(new byte[eax.getBlockSize()]); - - eax.init(Cipher.ENCRYPT_MODE, key, iv); - byte[] ciphertext = eax.doFinal(new byte[100]); - ciphertext[0] = (byte)(ciphertext[0] + 1); // Tamper - - try - { - eax.init(Cipher.DECRYPT_MODE, key, iv); - eax.doFinal(ciphertext); - fail("Tampered ciphertext should be invalid"); - } - catch (BadPaddingException e) - { - if (aeadAvailable) - { - if (!e.getClass().getName().equals("javax.crypto.AEADBadTagException")) - { - fail("Tampered AEAD ciphertext should fail with AEADBadTagException when available."); - } - } - } - } - - private void checkCipherWithAD(byte[] K, - byte[] N, - byte[] A, - byte[] P, - byte[] C) throws InvalidKeyException, - NoSuchAlgorithmException, NoSuchPaddingException, - IllegalBlockSizeException, BadPaddingException, - InvalidAlgorithmParameterException, NoSuchProviderException - { - Cipher eax = Cipher.getInstance("AES/EAX/NoPadding", "BC"); - SecretKeySpec key = new SecretKeySpec(K, "AES"); - IvParameterSpec iv = new IvParameterSpec(N); - eax.init(Cipher.ENCRYPT_MODE, key, iv); - - eax.updateAAD(A); - byte[] c = eax.doFinal(P); - - if (!areEqual(C, c)) - { - fail("JCE encrypt with additional data failed."); - } - - eax.init(Cipher.DECRYPT_MODE, key, iv); - eax.updateAAD(A); - byte[] p = eax.doFinal(C); - - if (!areEqual(P, p)) - { - fail("JCE decrypt with additional data failed."); - } - } - - private void testGCMParameterSpec(byte[] K, - byte[] N, - byte[] A, - byte[] P, - byte[] C) - throws InvalidKeyException, - NoSuchAlgorithmException, NoSuchPaddingException, - IllegalBlockSizeException, BadPaddingException, - InvalidAlgorithmParameterException, NoSuchProviderException, IOException - { - Cipher eax = Cipher.getInstance("AES/EAX/NoPadding", "BC"); - SecretKeySpec key = new SecretKeySpec(K, "AES"); - - // GCMParameterSpec mapped to AEADParameters and overrides default MAC - // size - GCMParameterSpec spec = new GCMParameterSpec(128, N); - eax.init(Cipher.ENCRYPT_MODE, key, spec); - - eax.updateAAD(A); - byte[] c = eax.doFinal(P); - - if (!areEqual(C, c)) - { - fail("JCE encrypt with additional data and GCMParameterSpec failed."); - } - - eax.init(Cipher.DECRYPT_MODE, key, spec); - eax.updateAAD(A); - byte[] p = eax.doFinal(C); - - if (!areEqual(P, p)) - { - fail("JCE decrypt with additional data and GCMParameterSpec failed."); - } - - AlgorithmParameters algParams = eax.getParameters(); - - byte[] encParams = algParams.getEncoded(); - - GCMParameters gcmParameters = GCMParameters.getInstance(encParams); - - if (!Arrays.areEqual(spec.getIV(), gcmParameters.getNonce()) || spec.getTLen() != gcmParameters.getIcvLen()) - { - fail("parameters mismatch"); - } - } - - private void testGCMParameterSpecWithMultipleUpdates(byte[] K, - byte[] N, - byte[] A, - byte[] P, - byte[] C) - throws Exception - { - Cipher eax = Cipher.getInstance("AES/EAX/NoPadding", "BC"); - SecretKeySpec key = new SecretKeySpec(K, "AES"); - SecureRandom random = new SecureRandom(); - - // GCMParameterSpec mapped to AEADParameters and overrides default MAC - // size - GCMParameterSpec spec = new GCMParameterSpec(128, N); - - for (int i = 900; i != 1024; i++) - { - byte[] message = new byte[i]; - - random.nextBytes(message); - - eax.init(Cipher.ENCRYPT_MODE, key, spec); - - byte[] out = new byte[eax.getOutputSize(i)]; - - int offSet = 0; - - int count; - for (count = 0; count < i / 21; count++) - { - offSet += eax.update(message, count * 21, 21, out, offSet); - } - - offSet += eax.doFinal(message, count * 21, i - (count * 21), out, offSet); - - byte[] dec = new byte[i]; - int len = offSet; - - eax.init(Cipher.DECRYPT_MODE, key, spec); - - offSet = 0; - for (count = 0; count < len / 10; count++) - { - offSet += eax.update(out, count * 10, 10, dec, offSet); - } - - offSet += eax.doFinal(out, count * 10, len - (count * 10), dec, offSet); - - if (!Arrays.areEqual(message, dec) || offSet != message.length) - { - fail("message mismatch"); - } - } - } - - - private void testGCMParameterSpecWithRepeatKey(byte[] K, - byte[] N, - byte[] A, - byte[] P, - byte[] C) - throws InvalidKeyException, NoSuchAlgorithmException, - NoSuchPaddingException, IllegalBlockSizeException, - BadPaddingException, InvalidAlgorithmParameterException, NoSuchProviderException, IOException - { - Cipher eax = Cipher.getInstance("AES/EAX/NoPadding", "BC"); - SecretKeySpec key = new SecretKeySpec(K, "AES"); - GCMParameterSpec spec = new GCMParameterSpec(128, N); - eax.init(Cipher.ENCRYPT_MODE, key, spec); - - eax.updateAAD(A); - byte[] c = eax.doFinal(P); - - if (!areEqual(C, c)) - { - fail("JCE encrypt with additional data and RepeatedSecretKeySpec failed."); - } - - // Check GCMParameterSpec handling knows about RepeatedSecretKeySpec - eax.init(Cipher.DECRYPT_MODE, new RepeatedSecretKeySpec("AES"), spec); - eax.updateAAD(A); - byte[] p = eax.doFinal(C); - - if (!areEqual(P, p)) - { - fail("JCE decrypt with additional data and RepeatedSecretKeySpec failed."); - } - - AlgorithmParameters algParams = eax.getParameters(); - - byte[] encParams = algParams.getEncoded(); - - GCMParameters gcmParameters = GCMParameters.getInstance(encParams); - - if (!Arrays.areEqual(spec.getIV(), gcmParameters.getNonce()) || spec.getTLen() != gcmParameters.getIcvLen()) - { - fail("parameters mismatch"); - } - } - - private void testGCMGeneric(byte[] K, - byte[] N, - byte[] A, - byte[] P, - byte[] C) - throws InvalidKeyException, - NoSuchAlgorithmException, NoSuchPaddingException, - IllegalBlockSizeException, BadPaddingException, - InvalidAlgorithmParameterException, NoSuchProviderException, IOException, InvalidParameterSpecException - { - Cipher eax = Cipher.getInstance("AES/GCM/NoPadding", "BC"); - SecretKeySpec key = new SecretKeySpec(K, "AES"); - - // GCMParameterSpec mapped to AEADParameters and overrides default MAC - // size - GCMParameterSpec spec = new GCMParameterSpec(128, N); - eax.init(Cipher.ENCRYPT_MODE, key, spec); - - eax.updateAAD(A); - byte[] c = eax.doFinal(P); - - if (!areEqual(C, c)) - { - fail("JCE encrypt with additional data and GCMParameterSpec failed."); - } - - eax = Cipher.getInstance("GCM", "BC"); - eax.init(Cipher.DECRYPT_MODE, key, spec); - eax.updateAAD(A); - byte[] p = eax.doFinal(C); - - if (!areEqual(P, p)) - { - fail("JCE decrypt with additional data and GCMParameterSpec failed."); - } - - AlgorithmParameters algParams = eax.getParameters(); - - byte[] encParams = algParams.getEncoded(); - - GCMParameters gcmParameters = GCMParameters.getInstance(encParams); - - if (!Arrays.areEqual(spec.getIV(), gcmParameters.getNonce()) || spec.getTLen() != gcmParameters.getIcvLen()) - { - fail("parameters mismatch"); - } - - GCMParameterSpec gcmSpec = algParams.getParameterSpec(GCMParameterSpec.class); - - if (!Arrays.areEqual(gcmSpec.getIV(), gcmParameters.getNonce()) || gcmSpec.getTLen() != gcmParameters.getIcvLen()) - { - fail("spec parameters mismatch"); - } - - if (!Arrays.areEqual(eax.getIV(), gcmParameters.getNonce())) - { - fail("iv mismatch"); - } - } - - public static void main(String[] args) throws Exception - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new AEADTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/AESSICTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/AESSICTest.java deleted file mode 100644 index ae6d7bce..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/AESSICTest.java +++ /dev/null @@ -1,168 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Key; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jcajce.spec.RepeatedSecretKeySpec; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * test vectors based on NIST Special Publication 800-38A, - * "Recommendation for Block Cipher Modes of Operation" - */ -public class AESSICTest - extends SimpleTest -{ - private byte[][] keys = - { - Hex.decode("2b7e151628aed2a6abf7158809cf4f3c"), - Hex.decode("8e73b0f7da0e6452c810f32b809079e562f8ead2522c6b7b"), - Hex.decode("603deb1015ca71be2b73aef0857d77811f352c073b6108d72d9810a30914dff4") - }; - - private byte[][] plain = - { - Hex.decode("6bc1bee22e409f96e93d7e117393172a"), - Hex.decode("ae2d8a571e03ac9c9eb76fac45af8e51"), - Hex.decode("30c81c46a35ce411e5fbc1191a0a52ef"), - Hex.decode("f69f2445df4f9b17ad2b417be66c3710") - }; - - private byte[][][] cipher = - { - { - Hex.decode("874d6191b620e3261bef6864990db6ce"), - Hex.decode("9806f66b7970fdff8617187bb9fffdff"), - Hex.decode("5ae4df3edbd5d35e5b4f09020db03eab"), - Hex.decode("1e031dda2fbe03d1792170a0f3009cee") - }, - { - Hex.decode("1abc932417521ca24f2b0459fe7e6e0b"), - Hex.decode("090339ec0aa6faefd5ccc2c6f4ce8e94"), - Hex.decode("1e36b26bd1ebc670d1bd1d665620abf7"), - Hex.decode("4f78a7f6d29809585a97daec58c6b050") - }, - { - Hex.decode("601ec313775789a5b7a7f504bbf3d228"), - Hex.decode("f443e3ca4d62b59aca84e990cacaf5c5"), - Hex.decode("2b0930daa23de94ce87017ba2d84988d"), - Hex.decode("dfc9c58db67aada613c2dd08457941a6") - } - }; - - public String getName() - { - return "AESSIC"; - } - - public void performTest() - throws Exception - { - Cipher c = Cipher.getInstance("AES/SIC/NoPadding", "BC"); - - // - // NIST vectors - // - for (int i = 0; i != keys.length; i++) - { - Key sk = new SecretKeySpec(keys[i], "AES"); - c.init( - Cipher.ENCRYPT_MODE, sk, - new IvParameterSpec(Hex.decode("F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF"))); - - for (int j = 0; j != plain.length; j++) - { - byte[] crypt = c.update(plain[j]); - if (!areEqual(crypt, cipher[i][j])) - { - fail("AESSIC encrypt failed: key " + i + " block " + j); - } - } - - c.init( - Cipher.DECRYPT_MODE, sk, - new IvParameterSpec(Hex.decode("F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF"))); - - for (int j = 0; j != plain.length; j++) - { - byte[] crypt = c.update(cipher[i][j]); - if (!areEqual(crypt, plain[j])) - { - fail("AESSIC decrypt failed: key " + i + " block " + j); - } - } - } - - // - // check CTR also recognised. - // - c = Cipher.getInstance("AES/CTR/NoPadding", "BC"); - - Key sk = new SecretKeySpec(Hex.decode("2B7E151628AED2A6ABF7158809CF4F3C"), "AES"); - - c.init( - Cipher.ENCRYPT_MODE, sk, - new IvParameterSpec(Hex.decode("F0F1F2F3F4F5F6F7F8F9FAFBFCFD0001"))); - - byte[] crypt = c.doFinal(Hex.decode("00000000000000000000000000000000")); - - if (!areEqual(crypt, Hex.decode("D23513162B02D0F72A43A2FE4A5F97AB"))) - { - fail("AESSIC failed test 2"); - } - - // - // check partial block processing - // - c = Cipher.getInstance("AES/CTR/NoPadding", "BC"); - - sk = new SecretKeySpec(Hex.decode("2B7E151628AED2A6ABF7158809CF4F3C"), "AES"); - - c.init( - Cipher.ENCRYPT_MODE, sk, - new IvParameterSpec(Hex.decode("F0F1F2F3F4F5F6F7F8F9FAFBFCFD0001"))); - - crypt = c.doFinal(Hex.decode("12345678")); - - c.init( - Cipher.DECRYPT_MODE, sk, - new IvParameterSpec(Hex.decode("F0F1F2F3F4F5F6F7F8F9FAFBFCFD0001"))); - - crypt = c.doFinal(crypt); - - if (!areEqual(crypt, Hex.decode("12345678"))) - { - fail("AESSIC failed partial test"); - } - - // null key test - sk = new RepeatedSecretKeySpec("AES"); - - c.init( - Cipher.ENCRYPT_MODE, sk, - new IvParameterSpec(Hex.decode("F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF"))); - - for (int j = 0; j != plain.length; j++) - { - crypt = c.update(plain[j]); - if (!areEqual(crypt, cipher[0][j])) - { - fail("AESSIC encrypt failed: key " + 0 + " block " + j); - } - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new AESSICTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/AESTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/AESTest.java deleted file mode 100644 index 72a8a347..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/AESTest.java +++ /dev/null @@ -1,423 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.security.Key; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; -import org.bouncycastle.crypto.prng.FixedSecureRandom; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; - -/** - * basic test class for the AES cipher vectors from FIPS-197 - */ -public class AESTest - extends BaseBlockCipherTest -{ - static String[] cipherTests = - { - "128", - "000102030405060708090a0b0c0d0e0f", - "00112233445566778899aabbccddeeff", - "69c4e0d86a7b0430d8cdb78070b4c55a", - "192", - "000102030405060708090a0b0c0d0e0f1011121314151617", - "00112233445566778899aabbccddeeff", - "dda97ca4864cdfe06eaf70a0ec0d7191", - "256", - "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", - "00112233445566778899aabbccddeeff", - "8ea2b7ca516745bfeafc49904b496089", - }; - - public AESTest() - { - super("AES"); - } - - private void test( - int strength, - byte[] keyBytes, - byte[] input, - byte[] output) - throws Exception - { - Key key; - Cipher in, out; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - key = new SecretKeySpec(keyBytes, "AES"); - - in = Cipher.getInstance("AES/ECB/NoPadding", "BC"); - out = Cipher.getInstance("AES/ECB/NoPadding", "BC"); - - try - { - out.init(Cipher.ENCRYPT_MODE, key); - } - catch (Exception e) - { - fail("AES failed initialisation - " + e.toString(), e); - } - - try - { - in.init(Cipher.DECRYPT_MODE, key); - } - catch (Exception e) - { - fail("AES failed initialisation - " + e.toString(), e); - } - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - try - { - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - } - catch (IOException e) - { - fail("AES failed encryption - " + e.toString(), e); - } - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!areEqual(bytes, output)) - { - fail("AES failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - try - { - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - } - catch (Exception e) - { - fail("AES failed encryption - " + e.toString(), e); - } - - if (!areEqual(bytes, input)) - { - fail("AES failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - } - - private void eaxTest() - throws Exception - { - byte[] K = Hex.decode("233952DEE4D5ED5F9B9C6D6FF80FF478"); - byte[] N = Hex.decode("62EC67F9C3A4A407FCB2A8C49031A8B3"); - byte[] P = Hex.decode("68656c6c6f20776f726c642121"); - byte[] C = Hex.decode("2f9f76cb7659c70e4be11670a3e193ae1bc6b5762a"); - - Key key; - Cipher in, out; - - key = new SecretKeySpec(K, "AES"); - - in = Cipher.getInstance("AES/EAX/NoPadding", "BC"); - out = Cipher.getInstance("AES/EAX/NoPadding", "BC"); - - in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] enc = in.doFinal(P); - if (!areEqual(enc, C)) - { - fail("ciphertext doesn't match in EAX"); - } - - out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] dec = out.doFinal(C); - if (!areEqual(dec, P)) - { - fail("plaintext doesn't match in EAX"); - } - - try - { - in = Cipher.getInstance("AES/EAX/PKCS5Padding", "BC"); - - fail("bad padding missed in EAX"); - } - catch (NoSuchPaddingException e) - { - // expected - } - } - - private void ccmTest() - throws Exception - { - byte[] K = Hex.decode("404142434445464748494a4b4c4d4e4f"); - byte[] N = Hex.decode("10111213141516"); - byte[] P = Hex.decode("68656c6c6f20776f726c642121"); - byte[] C = Hex.decode("39264f148b54c456035de0a531c8344f46db12b388"); - - Key key; - Cipher in, out; - - key = new SecretKeySpec(K, "AES"); - - in = Cipher.getInstance("AES/CCM/NoPadding", "BC"); - out = Cipher.getInstance("AES/CCM/NoPadding", "BC"); - - in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] enc = in.doFinal(P); - if (!areEqual(enc, C)) - { - fail("ciphertext doesn't match in CCM"); - } - - out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] dec = out.doFinal(C); - if (!areEqual(dec, P)) - { - fail("plaintext doesn't match in CCM"); - } - - try - { - in = Cipher.getInstance("AES/CCM/PKCS5Padding", "BC"); - - fail("bad padding missed in CCM"); - } - catch (NoSuchPaddingException e) - { - // expected - } - } - - private void gcmTest() - throws Exception - { - // Test Case 15 from McGrew/Viega - byte[] K = Hex.decode( - "feffe9928665731c6d6a8f9467308308" - + "feffe9928665731c6d6a8f9467308308"); - byte[] P = Hex.decode( - "d9313225f88406e5a55909c5aff5269a" - + "86a7a9531534f7da2e4c303d8a318a72" - + "1c3c0c95956809532fcf0e2449a6b525" - + "b16aedf5aa0de657ba637b391aafd255"); - byte[] N = Hex.decode("cafebabefacedbaddecaf888"); - String T = "b094dac5d93471bdec1a502270e3cc6c"; - byte[] C = Hex.decode( - "522dc1f099567d07f47f37a32a84427d" - + "643a8cdcbfe5c0c97598a2bd2555d1aa" - + "8cb08e48590dbb3da7b08b1056828838" - + "c5f61e6393ba7a0abcc9f662898015ad" - + T); - - Key key; - Cipher in, out; - - key = new SecretKeySpec(K, "AES"); - - in = Cipher.getInstance("AES/GCM/NoPadding", "BC"); - out = Cipher.getInstance("AES/GCM/NoPadding", "BC"); - - in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] enc = in.doFinal(P); - if (!areEqual(enc, C)) - { - fail("ciphertext doesn't match in GCM"); - } - - out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] dec = out.doFinal(C); - if (!areEqual(dec, P)) - { - fail("plaintext doesn't match in GCM"); - } - - try - { - in = Cipher.getInstance("AES/GCM/PKCS5Padding", "BC"); - - fail("bad padding missed in GCM"); - } - catch (NoSuchPaddingException e) - { - // expected - } - } - - private void ocbTest() - throws Exception - { - byte[] K = Hex.decode( - "000102030405060708090A0B0C0D0E0F"); - byte[] P = Hex.decode( - "000102030405060708090A0B0C0D0E0F"); - byte[] N = Hex.decode("000102030405060708090A0B"); - String T = "4CBB3E4BD6B456AF"; - byte[] C = Hex.decode( - "BEA5E8798DBE7110031C144DA0B2612213CC8B747807121A" + T); - - Key key; - Cipher in, out; - - key = new SecretKeySpec(K, "AES"); - - in = Cipher.getInstance("AES/OCB/NoPadding", "BC"); - out = Cipher.getInstance("AES/OCB/NoPadding", "BC"); - - in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] enc = in.doFinal(P); - if (!areEqual(enc, C)) - { - fail("ciphertext doesn't match in OCB"); - } - - out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] dec = out.doFinal(C); - if (!areEqual(dec, P)) - { - fail("plaintext doesn't match in OCB"); - } - - try - { - in = Cipher.getInstance("AES/OCB/PKCS5Padding", "BC"); - - fail("bad padding missed in OCB"); - } - catch (NoSuchPaddingException e) - { - // expected - } - } - - public void performTest() - throws Exception - { - for (int i = 0; i != cipherTests.length; i += 4) - { - test(Integer.parseInt(cipherTests[i]), - Hex.decode(cipherTests[i + 1]), - Hex.decode(cipherTests[i + 2]), - Hex.decode(cipherTests[i + 3])); - } - - byte[] kek1 = Hex.decode("000102030405060708090a0b0c0d0e0f"); - byte[] in1 = Hex.decode("00112233445566778899aabbccddeeff"); - byte[] out1 = Hex.decode("1fa68b0a8112b447aef34bd8fb5a7b829d3e862371d2cfe5"); - - wrapTest(1, "AESWrap", kek1, in1, out1); - - byte[] kek2 = Hex.decode("000102030405060708090a0b0c0d0e0f"); - byte[] in2 = Hex.decode("00112233445566778899aabbccddeeff"); - byte[] out2 = Hex.decode("7c8798dfc802553b3f00bb4315e3a087322725c92398b9c112c74d0925c63b61"); - String rndData = "68d38e9635962288d4daa1df203e3e2a15adb2f1da8998b72ac24ab1c78cceac"; - - wrapTest(2, "AESRFC3211WRAP", kek2, kek2, new FixedSecureRandom(Hex.decode(rndData + rndData)), in2, out2); - - byte[] kek3 = Hex.decode("5840df6e29b02af1ab493b705bf16ea1ae8338f4dcc176a8"); - byte[] in3 = Hex.decode("c37b7e6492584340bed12207808941155068f738"); - byte[] out3 = Hex.decode("138bdeaa9b8fa7fc61f97742e72248ee5ae6ae5360d1ae6a5f54f373fa543b6a"); - - wrapTest(3, "AESRFC5649WRAP", kek3, in3, out3); - - String[] oids = { - NISTObjectIdentifiers.id_aes128_ECB.getId(), - NISTObjectIdentifiers.id_aes128_CBC.getId(), - NISTObjectIdentifiers.id_aes128_OFB.getId(), - NISTObjectIdentifiers.id_aes128_CFB.getId(), - NISTObjectIdentifiers.id_aes192_ECB.getId(), - NISTObjectIdentifiers.id_aes192_CBC.getId(), - NISTObjectIdentifiers.id_aes192_OFB.getId(), - NISTObjectIdentifiers.id_aes192_CFB.getId(), - NISTObjectIdentifiers.id_aes256_ECB.getId(), - NISTObjectIdentifiers.id_aes256_CBC.getId(), - NISTObjectIdentifiers.id_aes256_OFB.getId(), - NISTObjectIdentifiers.id_aes256_CFB.getId() - }; - - String[] names = { - "AES/ECB/PKCS7Padding", - "AES/CBC/PKCS7Padding", - "AES/OFB/NoPadding", - "AES/CFB/NoPadding", - "AES/ECB/PKCS7Padding", - "AES/CBC/PKCS7Padding", - "AES/OFB/NoPadding", - "AES/CFB/NoPadding", - "AES/ECB/PKCS7Padding", - "AES/CBC/PKCS7Padding", - "AES/OFB/NoPadding", - "AES/CFB/NoPadding" - }; - - oidTest(oids, names, 4); - - - String[] wrapOids = { - NISTObjectIdentifiers.id_aes128_wrap.getId(), - NISTObjectIdentifiers.id_aes192_wrap.getId(), - NISTObjectIdentifiers.id_aes256_wrap.getId() - }; - - wrapOidTest(wrapOids, "AESWrap"); - - eaxTest(); - ccmTest(); - gcmTest(); - ocbTest(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new AESTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/AlgorithmParametersTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/AlgorithmParametersTest.java deleted file mode 100644 index 72f38854..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/AlgorithmParametersTest.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTest; - -import java.io.IOException; -import java.security.AlgorithmParameters; -import java.security.Security; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.DSAParameterSpec; -import java.security.spec.InvalidParameterSpecException; - -public class AlgorithmParametersTest - extends SimpleTest -{ - private byte[] dsaParams = Base64.decode( - "MIGcAkEAjfKklEkidqo9JXWbsGhpy+rA2Dr7jQz3y7gyTw14guXQdi/FtyEOr8Lprawyq3qsSWk9+/g3J" - + "MLsBzbuMcgCkQIVAMdzIYxzfsjumTtPLe0w9I7azpFfAkBP3Z9K7oNeZMXEXYpqvrMUgVdFjq4lnWJoV8" - + "Rwe+TERStHTkqSO7sp0lq7EEggVMcuXtarKNsxaJ+qyYv/n1t6"); - - private void basicTest(String algorithm, Class algorithmParameterSpec, byte[] asn1Encoded) - throws Exception - { - AlgorithmParameters alg = AlgorithmParameters.getInstance(algorithm, "BC"); - - alg.init(asn1Encoded); - - try - { - alg.init(asn1Encoded); - fail("encoded re-initialization not detected"); - } - catch (IOException e) - { - // expected already initialized - } - - AlgorithmParameterSpec spec = alg.getParameterSpec(algorithmParameterSpec); - - try - { - alg.init(spec); - fail("spec re-initialization not detected"); - } - catch (InvalidParameterSpecException e) - { - // expected already initialized - } - - try - { - spec = alg.getParameterSpec(AlgorithmParameterSpec.class); - fail("wrong spec not detected"); - } - catch (InvalidParameterSpecException e) - { - // expected unknown object - } - - try - { - spec = alg.getParameterSpec(null); - fail("null spec not detected"); - } - catch (NullPointerException e) - { - // expected unknown object - } - - alg = AlgorithmParameters.getInstance(algorithm, "BC"); - - alg.init(asn1Encoded, "ASN.1"); - - alg = AlgorithmParameters.getInstance(algorithm, "BC"); - - alg.init(asn1Encoded, null); - - alg = AlgorithmParameters.getInstance(algorithm, "BC"); - - try - { - alg.init(asn1Encoded, "FRED"); - fail("unknown spec not detected"); - } - catch (IOException e) - { - // expected already initialized - } - } - - public void performTest() - throws Exception - { - basicTest("DSA", DSAParameterSpec.class, dsaParams); - } - - public String getName() - { - return "AlgorithmParameters"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new AlgorithmParametersTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/AllTests.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/AllTests.java deleted file mode 100644 index 34767457..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/AllTests.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Security; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.provider.test.rsa3.RSA3CertTest; -import org.bouncycastle.util.test.SimpleTestResult; - -public class AllTests - extends TestCase -{ - public void testJCE() - { - org.bouncycastle.util.test.Test[] tests = RegressionTest.tests; - - for (int i = 0; i != tests.length; i++) - { - SimpleTestResult result = (SimpleTestResult)tests[i].perform(); - - if (!result.isSuccessful()) - { - if (result.getException() != null) - { - result.getException().printStackTrace(); - } - fail(result.toString()); - } - } - } - - public static void main (String[] args) - { - junit.textui.TestRunner.run(suite()); - } - - public static Test suite() - { - TestSuite suite = new TestSuite("JCE Tests"); - - if (Security.getProvider("BC") == null) - { - Security.addProvider(new BouncyCastleProvider()); - } - - suite.addTestSuite(RSA3CertTest.class); - suite.addTestSuite(AllTests.class); - - return suite; - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/AttrCertData.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/AttrCertData.java deleted file mode 100644 index 3e496573..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/AttrCertData.java +++ /dev/null @@ -1,119 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.spec.RSAPrivateCrtKeySpec; - -import org.bouncycastle.util.encoders.Base64; - -public class AttrCertData -{ - private static final RSAPrivateCrtKeySpec RSA_PRIVATE_KEY_SPEC = new RSAPrivateCrtKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16), - new BigInteger("9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89", 16), - new BigInteger("c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", 16), - new BigInteger("f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", 16), - new BigInteger("b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", 16), - new BigInteger("d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", 16), - new BigInteger("b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", 16)); - - public static byte[] attrCert = Base64.decode( - "MIIHQDCCBqkCAQEwgZChgY2kgYowgYcxHDAaBgkqhkiG9w0BCQEWDW1sb3JjaEB2" - + "dC5lZHUxHjAcBgNVBAMTFU1hcmt1cyBMb3JjaCAobWxvcmNoKTEbMBkGA1UECxMS" - + "VmlyZ2luaWEgVGVjaCBVc2VyMRAwDgYDVQQLEwdDbGFzcyAyMQswCQYDVQQKEwJ2" - + "dDELMAkGA1UEBhMCVVMwgYmkgYYwgYMxGzAZBgkqhkiG9w0BCQEWDHNzaGFoQHZ0" - + "LmVkdTEbMBkGA1UEAxMSU3VtaXQgU2hhaCAoc3NoYWgpMRswGQYDVQQLExJWaXJn" - + "aW5pYSBUZWNoIFVzZXIxEDAOBgNVBAsTB0NsYXNzIDExCzAJBgNVBAoTAnZ0MQsw" - + "CQYDVQQGEwJVUzANBgkqhkiG9w0BAQQFAAIBBTAiGA8yMDAzMDcxODE2MDgwMloY" - + "DzIwMDMwNzI1MTYwODAyWjCCBU0wggVJBgorBgEEAbRoCAEBMYIFORaCBTU8UnVs" - + "ZSBSdWxlSWQ9IkZpbGUtUHJpdmlsZWdlLVJ1bGUiIEVmZmVjdD0iUGVybWl0Ij4K" - + "IDxUYXJnZXQ+CiAgPFN1YmplY3RzPgogICA8U3ViamVjdD4KICAgIDxTdWJqZWN0" - + "TWF0Y2ggTWF0Y2hJZD0idXJuOm9hc2lzOm5hbWVzOnRjOnhhY21sOjEuMDpmdW5j" - + "dGlvbjpzdHJpbmctZXF1YWwiPgogICAgIDxBdHRyaWJ1dGVWYWx1ZSBEYXRhVHlw" - + "ZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjc3RyaW5nIj4KICAg" - + "ICAgIENOPU1hcmt1cyBMb3JjaDwvQXR0cmlidXRlVmFsdWU+CiAgICAgPFN1Ympl" - + "Y3RBdHRyaWJ1dGVEZXNpZ25hdG9yIEF0dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFt" - + "ZXM6dGM6eGFjbWw6MS4wOnN1YmplY3Q6c3ViamVjdC1pZCIgRGF0YVR5cGU9Imh0" - + "dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZyIgLz4gCiAgICA8" - + "L1N1YmplY3RNYXRjaD4KICAgPC9TdWJqZWN0PgogIDwvU3ViamVjdHM+CiAgPFJl" - + "c291cmNlcz4KICAgPFJlc291cmNlPgogICAgPFJlc291cmNlTWF0Y2ggTWF0Y2hJ" - + "ZD0idXJuOm9hc2lzOm5hbWVzOnRjOnhhY21sOjEuMDpmdW5jdGlvbjpzdHJpbmct" - + "ZXF1YWwiPgogICAgIDxBdHRyaWJ1dGVWYWx1ZSBEYXRhVHlwZT0iaHR0cDovL3d3" - + "dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYW55VVJJIj4KICAgICAgaHR0cDovL3p1" - + "bmkuY3MudnQuZWR1PC9BdHRyaWJ1dGVWYWx1ZT4KICAgICA8UmVzb3VyY2VBdHRy" - + "aWJ1dGVEZXNpZ25hdG9yIEF0dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFtZXM6dGM6" - + "eGFjbWw6MS4wOnJlc291cmNlOnJlc291cmNlLWlkIiBEYXRhVHlwZT0iaHR0cDov" - + "L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYW55VVJJIiAvPiAKICAgIDwvUmVz" - + "b3VyY2VNYXRjaD4KICAgPC9SZXNvdXJjZT4KICA8L1Jlc291cmNlcz4KICA8QWN0" - + "aW9ucz4KICAgPEFjdGlvbj4KICAgIDxBY3Rpb25NYXRjaCBNYXRjaElkPSJ1cm46" - + "b2FzaXM6bmFtZXM6dGM6eGFjbWw6MS4wOmZ1bmN0aW9uOnN0cmluZy1lcXVhbCI+" - + "CiAgICAgPEF0dHJpYnV0ZVZhbHVlIERhdGFUeXBlPSJodHRwOi8vd3d3LnczLm9y" - + "Zy8yMDAxL1hNTFNjaGVtYSNzdHJpbmciPgpEZWxlZ2F0ZSBBY2Nlc3MgICAgIDwv" - + "QXR0cmlidXRlVmFsdWU+CgkgIDxBY3Rpb25BdHRyaWJ1dGVEZXNpZ25hdG9yIEF0" - + "dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGFjbWw6MS4wOmFjdGlvbjph" - + "Y3Rpb24taWQiIERhdGFUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNj" - + "aGVtYSNzdHJpbmciIC8+IAogICAgPC9BY3Rpb25NYXRjaD4KICAgPC9BY3Rpb24+" - + "CiAgPC9BY3Rpb25zPgogPC9UYXJnZXQ+CjwvUnVsZT4KMA0GCSqGSIb3DQEBBAUA" - + "A4GBAGiJSM48XsY90HlYxGmGVSmNR6ZW2As+bot3KAfiCIkUIOAqhcphBS23egTr" - + "6asYwy151HshbPNYz+Cgeqs45KkVzh7bL/0e1r8sDVIaaGIkjHK3CqBABnfSayr3" - + "Rd1yBoDdEv8Qb+3eEPH6ab9021AsLEnJ6LWTmybbOpMNZ3tv"); - - byte[] signCert = Base64.decode( - "MIIGjTCCBXWgAwIBAgICAPswDQYJKoZIhvcNAQEEBQAwaTEdMBsGCSqGSIb3DQEJ" - + "ARYOaXJtaGVscEB2dC5lZHUxLjAsBgNVBAMTJVZpcmdpbmlhIFRlY2ggQ2VydGlm" - + "aWNhdGlvbiBBdXRob3JpdHkxCzAJBgNVBAoTAnZ0MQswCQYDVQQGEwJVUzAeFw0w" - + "MzAxMzExMzUyMTRaFw0wNDAxMzExMzUyMTRaMIGDMRswGQYJKoZIhvcNAQkBFgxz" - + "c2hhaEB2dC5lZHUxGzAZBgNVBAMTElN1bWl0IFNoYWggKHNzaGFoKTEbMBkGA1UE" - + "CxMSVmlyZ2luaWEgVGVjaCBVc2VyMRAwDgYDVQQLEwdDbGFzcyAxMQswCQYDVQQK" - + "EwJ2dDELMAkGA1UEBhMCVVMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPDc" - + "scgSKmsEp0VegFkuitD5j5PUkDuzLjlfaYONt2SN8WeqU4j2qtlCnsipa128cyKS" - + "JzYe9duUdNxquh5BPIkMkHBw4jHoQA33tk0J/sydWdN74/AHPpPieK5GHwhU7GTG" - + "rCCS1PJRxjXqse79ExAlul+gjQwHeldAC+d4A6oZAgMBAAGjggOmMIIDojAMBgNV" - + "HRMBAf8EAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDAOBgNVHQ8BAf8EBAMCA/gwHQYD" - + "VR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBRUIoWAzlXbzBYE" - + "yVTjQFWyMMKo1jCBkwYDVR0jBIGLMIGIgBTgc3Fm+TGqKDhen+oKfbl+xVbj2KFt" - + "pGswaTEdMBsGCSqGSIb3DQEJARYOaXJtaGVscEB2dC5lZHUxLjAsBgNVBAMTJVZp" - + "cmdpbmlhIFRlY2ggQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxCzAJBgNVBAoTAnZ0" - + "MQswCQYDVQQGEwJVU4IBADCBiwYJYIZIAYb4QgENBH4WfFZpcmdpbmlhIFRlY2gg" - + "Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgZGlnaXRhbCBjZXJ0aWZpY2F0ZXMgYXJl" - + "IHN1YmplY3QgdG8gcG9saWNpZXMgbG9jYXRlZCBhdCBodHRwOi8vd3d3LnBraS52" - + "dC5lZHUvY2EvY3BzLy4wFwYDVR0RBBAwDoEMc3NoYWhAdnQuZWR1MBkGA1UdEgQS" - + "MBCBDmlybWhlbHBAdnQuZWR1MEMGCCsGAQUFBwEBBDcwNTAzBggrBgEFBQcwAoYn" - + "aHR0cDovL2JveDE3Ny5jYy52dC5lZHUvY2EvaXNzdWVycy5odG1sMEQGA1UdHwQ9" - + "MDswOaA3oDWGM2h0dHA6Ly9ib3gxNzcuY2MudnQuZWR1L2h0ZG9jcy1wdWJsaWMv" - + "Y3JsL2NhY3JsLmNybDBUBgNVHSAETTBLMA0GCysGAQQBtGgFAQEBMDoGCysGAQQB" - + "tGgFAQEBMCswKQYIKwYBBQUHAgEWHWh0dHA6Ly93d3cucGtpLnZ0LmVkdS9jYS9j" - + "cHMvMD8GCWCGSAGG+EIBBAQyFjBodHRwOi8vYm94MTc3LmNjLnZ0LmVkdS9jZ2kt" - + "cHVibGljL2NoZWNrX3Jldl9jYT8wPAYJYIZIAYb4QgEDBC8WLWh0dHA6Ly9ib3gx" - + "NzcuY2MudnQuZWR1L2NnaS1wdWJsaWMvY2hlY2tfcmV2PzBLBglghkgBhvhCAQcE" - + "PhY8aHR0cHM6Ly9ib3gxNzcuY2MudnQuZWR1L35PcGVuQ0E4LjAxMDYzMC9jZ2kt" - + "cHVibGljL3JlbmV3YWw/MCwGCWCGSAGG+EIBCAQfFh1odHRwOi8vd3d3LnBraS52" - + "dC5lZHUvY2EvY3BzLzANBgkqhkiG9w0BAQQFAAOCAQEAHJ2ls9yjpZVcu5DqiE67" - + "r7BfkdMnm7IOj2v8cd4EAlPp6OPBmjwDMwvKRBb/P733kLBqFNWXWKTpT008R0KB" - + "8kehbx4h0UPz9vp31zhGv169+5iReQUUQSIwTGNWGLzrT8kPdvxiSAvdAJxcbRBm" - + "KzDic5I8PoGe48kSCkPpT1oNmnivmcu5j1SMvlx0IS2BkFMksr0OHiAW1elSnE/N" - + "RuX2k73b3FucwVxB3NRo3vgoHPCTnh9r4qItAHdxFlF+pPtbw2oHESKRfMRfOIHz" - + "CLQWSIa6Tvg4NIV3RRJ0sbCObesyg08lymalQMdkXwtRn5eGE00SHWwEUjSXP2gR" - + "3g=="); - - static byte[] certWithBaseCertificateID = Base64.decode( - "MIIBqzCCARQCAQEwSKBGMD6kPDA6MQswCQYDVQQGEwJJVDEOMAwGA1UEChMFVU5JVE4xDDAKBgNV" - + "BAsTA0RJVDENMAsGA1UEAxMEcm9vdAIEAVMVjqB6MHikdjB0MQswCQYDVQQGEwJBVTEoMCYGA1UE" - + "ChMfVGhlIExlZ2lvbiBvZiB0aGUgQm91bmN5IENhc3RsZTEjMCEGA1UECxMaQm91bmN5IFByaW1h" - + "cnkgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUJvdW5jeSBDYXN0bGUwDQYJKoZIhvcNAQEFBQACBQKW" - + "RhnHMCIYDzIwMDUxMjEyMTIwMDQyWhgPMjAwNTEyMTkxMjAxMzJaMA8wDQYDVRhIMQaBBGVWSVAw" - + "DQYJKoZIhvcNAQEFBQADgYEAUAVin9StDaA+InxtXq/av6rUQLI9p1X6louBcj4kYJnxRvTrHpsr" - + "N3+i9Uq/uk5lRdAqmPFvcmSbuE3TRAsjrXON5uFiBBKZ1AouLqcr8nHbwcdwjJ9TyUNO9I4hfpSH" - + "UHHXMtBKgp4MOkhhX8xTGyWg3hp23d3GaUeg/IYlXBI="); - - byte[] holderCertWithBaseCertificateID = Base64.decode( - "MIIBwDCCASmgAwIBAgIEAVMVjjANBgkqhkiG9w0BAQUFADA6MQswCQYDVQQGEwJJVDEOMAwGA1UE" - + "ChMFVU5JVE4xDDAKBgNVBAsTA0RJVDENMAsGA1UEAxMEcm9vdDAeFw0wNTExMTExMjAxMzJaFw0w" - + "NjA2MTYxMjAxMzJaMD4xCzAJBgNVBAYTAklUMQ4wDAYDVQQKEwVVTklUTjEMMAoGA1UECxMDRElU" - + "MREwDwYDVQQDEwhMdWNhQm9yejBaMA0GCSqGSIb3DQEBAQUAA0kAMEYCQQC0p+RhcFdPFqlwgrIr" - + "5YtqKmKXmEGb4ShypL26Ymz66ZAPdqv7EhOdzl3lZWT6srZUMWWgQMYGiHQg4z2R7X7XAgERoxUw" - + "EzARBglghkgBhvhCAQEEBAMCBDAwDQYJKoZIhvcNAQEFBQADgYEAsX50VPQQCWmHvPq9y9DeCpmS" - + "4szcpFAhpZyn6gYRwY9CRZVtmZKH8713XhkGDWcIEMcG0u3oTz3tdKgPU5uyIPrDEWr6w8ClUj4x" - + "5aVz5c2223+dVY7KES//JSB2bE/KCIchN3kAioQ4K8O3e0OL6oDVjsqKGw5bfahgKuSIk/Q="); - -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/BaseBlockCipherTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/BaseBlockCipherTest.java deleted file mode 100644 index 379bd44f..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/BaseBlockCipherTest.java +++ /dev/null @@ -1,172 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Key; -import java.security.SecureRandom; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.util.test.TestFailedException; - -public abstract class BaseBlockCipherTest - extends SimpleTest -{ - String algorithm; - - BaseBlockCipherTest( - String algorithm) - { - this.algorithm = algorithm; - } - - public String getName() - { - return algorithm; - } - - protected void oidTest(String[] oids, String[] names, int groupSize) - throws Exception - { - byte[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - IvParameterSpec ivSpec = new IvParameterSpec(new byte[16]); - - for (int i = 0; i != oids.length; i++) - { - Cipher c1 = Cipher.getInstance(oids[i], "BC"); - Cipher c2 = Cipher.getInstance(names[i], "BC"); - KeyGenerator kg = KeyGenerator.getInstance(oids[i], "BC"); - - SecretKey k = kg.generateKey(); - - if (names[i].indexOf("/ECB/") > 0) - { - c1.init(Cipher.ENCRYPT_MODE, k); - c2.init(Cipher.DECRYPT_MODE, k); - } - else - { - c1.init(Cipher.ENCRYPT_MODE, k, ivSpec); - c2.init(Cipher.DECRYPT_MODE, k, ivSpec); - } - - byte[] result = c2.doFinal(c1.doFinal(data)); - - if (!areEqual(data, result)) - { - fail("failed OID test"); - } - - if (k.getEncoded().length != (16 + ((i / groupSize) * 8))) - { - fail("failed key length test"); - } - } - } - - protected void wrapOidTest(String[] oids, String name) - throws Exception - { - byte[] data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; - - for (int i = 0; i != oids.length; i++) - { - Cipher c1 = Cipher.getInstance(oids[i], "BC"); - Cipher c2 = Cipher.getInstance(name, "BC"); - KeyGenerator kg = KeyGenerator.getInstance(oids[i], "BC"); - - SecretKey k = kg.generateKey(); - - c1.init(Cipher.WRAP_MODE, k); - c2.init(Cipher.UNWRAP_MODE, k); - - Key wKey = c2.unwrap(c1.wrap(new SecretKeySpec(data, algorithm)), algorithm, Cipher.SECRET_KEY); - - if (!areEqual(data, wKey.getEncoded())) - { - fail("failed wrap OID test"); - } - - if (k.getEncoded().length != (16 + (i * 8))) - { - fail("failed key length test"); - } - } - } - - protected void wrapTest( - int id, - String wrappingAlgorithm, - byte[] kek, - byte[] in, - byte[] out) - throws Exception - { - wrapTest(id, wrappingAlgorithm, kek, null, null, in, out); - } - - protected void wrapTest( - int id, - String wrappingAlgorithm, - byte[] kek, - byte[] iv, - SecureRandom rand, - byte[] in, - byte[] out) - throws Exception - { - Cipher wrapper = Cipher.getInstance(wrappingAlgorithm, "BC"); - - if (iv != null) - { - wrapper.init(Cipher.WRAP_MODE, new SecretKeySpec(kek, algorithm), new IvParameterSpec(iv), rand); - } - else - { - wrapper.init(Cipher.WRAP_MODE, new SecretKeySpec(kek, algorithm), rand); - } - - try - { - byte[] cText = wrapper.wrap(new SecretKeySpec(in, algorithm)); - if (!areEqual(cText, out)) - { - fail("failed wrap test " + id + " expected " + new String(Hex.encode(out)) + " got " + new String(Hex.encode(cText))); - } - } - catch (TestFailedException e) - { - throw e; - } - catch (Exception e) - { - fail("failed wrap test exception " + e.toString(), e); - } - - if (iv != null) - { - wrapper.init(Cipher.UNWRAP_MODE, new SecretKeySpec(kek, algorithm), new IvParameterSpec(iv)); - } - else - { - wrapper.init(Cipher.UNWRAP_MODE, new SecretKeySpec(kek, algorithm)); - } - - try - { - Key pText = wrapper.unwrap(out, algorithm, Cipher.SECRET_KEY); - if (!areEqual(pText.getEncoded(), in)) - { - fail("failed unwrap test " + id + " expected " + new String(Hex.encode(in)) + " got " + new String(Hex.encode(pText.getEncoded()))); - } - } - catch (Exception e) - { - fail("failed unwrap test exception " + e.toString(), e); - } - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java deleted file mode 100644 index 0c9cf01b..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/BlockCipherTest.java +++ /dev/null @@ -1,1135 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.InvalidParameterException; -import java.security.Key; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.KeySpec; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.ShortBufferException; -import javax.crypto.spec.DESedeKeySpec; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.RC2ParameterSpec; -import javax.crypto.spec.RC5ParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * basic test class for a block cipher, basically this just exercises the provider, and makes sure we - * are behaving sensibly, correctness of the implementation is shown in the lightweight test classes. - */ -public class BlockCipherTest - extends SimpleTest -{ - static String[] cipherTests1 = - { - "DES", - "466da00648ef0e1f9617b1f002e225251a3248d09172f46b9617b1f002e225250112ecb3da61bc99", - "DESede", - "2f4bc6b30c893fa549d82c560d61cf3eb088aed020603de249d82c560d61cf3e529e95ecd8e05394", - "SKIPJACK", - "d4de46d52274dbb029f33b076043f8c40089f906751623de29f33b076043f8c4ac99b90f9396cb04", - "Blowfish", - "7870ebe7f6a52803eb9396ba6c5198216ce81d76d8d4c74beb9396ba6c5198211212473b05214e9f", - "Twofish", - "70336d9c9718a8a2ced1b19deed973a3c58af7ea71a69e7efc4df082dca581c0839e31468661bcfc57a14899ceeb0253", - "RC2", - "eb5b889bbcced12eb6b1a3da6a3d965bba66a5edfdd4c8a6b6b1a3da6a3d965b994a5b859e765797", - "RC5", - "220053543e3eca3bc9503a091ca67b08372560d8a4fdbee8c9503a091ca67b08a796d53bb8a4b7e0", - "RC5-64", - "e0b4a526ba3bc5f09199c3b1fe3737fe6d248cde70e565b0feea59ebfda375ae1946c386a48d8d8a74d7b1947ff6a788", - "RC6", - "44c97b67ca8486067f8b6c5b97632f3049e5e52c1d61fdd527dc3da39616540f19a3db39aac1ffd713795cd886cce0c0", - "IDEA", - "8c9fd56823ffdc523f6ccf7f614aa6173553e594fc7a21b53f6ccf7f614aa61740c54f7a66e95108", - "TEA", - "fcf45062104fda7c35712368b56dd4216a6ca998dc297b5435712368b56dd421208027ed2923cd0c", - "XTEA", - "4b427893d3d6aaded2afafabe25f7b233fb5589faa2b6389d2afafabe25f7b239d12979ac67e1c07", - "Camellia", - "3a68b4ad145bc2c76010669d68f2826359887afce763a78d9994143266adfaec8ba7ee562a1688ef9dfd7f897e5c44dc", - "SEED", - "d53d4ce1f48b9879420949467bfcbfbe2c6a7d4a8770bee0c71211def898d7c5024ce2007dd85accb3f69d906ae2164d", - "Noekeon", - "7e68ceb33aad9db04af6b878a16dd6c6b4f880d6c89027ba581884c10690bb6b3dbfd6ed5513e2c4f5670c3528023121", - "DES/CBC/NoPadding", - "60fa2f8fae5aa2a38e9ac77d0246726beb7511e4515feb12cf99f75cc6e0122a", - "DESede/CBC/NoPadding", - "4d3d7931875cf25593dc402298add8b914761e4936c9585ae22b2c1441169231", - "SKIPJACK/CBC/NoPadding", - "ceebcc2e5e2b847f9ed797b4930b95f115b9e6cf49c457fc2ea0df79ad5c8334", - "Blowfish/CBC/NoPadding", - "80823abbabc109733e7ebf3ce3344d67fc387c306b782086b452f7fbe8e844ce", - "Twofish/CBC/NoPadding", - "f819694251a00bdd403928745cd1d8a094de61f49ddf8e7692e9d81a83812943", - "RC2/CBC/NoPadding", - "a51facdb3933c9676795cd38cc3146fd4694722b468b1a979a399c77606abf99", - "RC5/CBC/NoPadding", - "9ee7517eab0280445f3a7c60c90c0f75029d65bca8b1af83ace5399d388c83c3", - "RC6/CBC/NoPadding", - "c44695633c07010f3a0d8f7ea046a642d4a96bf4e44f89fd91b46830bc95b130", - "IDEA/CBC/NoPadding", - "30cd990ebdae80fe12b6c6e4fcd1c064a27d985c276b3d7097351c8684e4c4d9", - "DES/CBC/PKCS5Padding", - "60fa2f8fae5aa2a38e9ac77d0246726beb7511e4515feb12cf99f75cc6e0122afdc70484fb9c0232", - "DES/CBC/ISO10126Padding", - "60fa2f8fae5aa2a38e9ac77d0246726beb7511e4515feb12cf99f75cc6e0122a980639850a2cc3e8", - "DES/CBC/ISO7816-4Padding", - "60fa2f8fae5aa2a38e9ac77d0246726beb7511e4515feb12cf99f75cc6e0122a1f80b9b0f1be49ac", - "DES/CBC/X9.23Padding", - "60fa2f8fae5aa2a38e9ac77d0246726beb7511e4515feb12cf99f75cc6e0122a980639850a2cc3e8", - "DESede/CBC/PKCS7Padding", - "4d3d7931875cf25593dc402298add8b914761e4936c9585ae22b2c1441169231a41e40695f1cff84", - "SKIPJACK/CBC/PKCS7Padding", - "ceebcc2e5e2b847f9ed797b4930b95f115b9e6cf49c457fc2ea0df79ad5c8334df7042de5db89c96", - "Blowfish/CBC/PKCS7Padding", - "80823abbabc109733e7ebf3ce3344d67fc387c306b782086b452f7fbe8e844cef986562ab1a675e8", - "Twofish/CBC/PKCS7Padding", - "f819694251a00bdd403928745cd1d8a094de61f49ddf8e7692e9d81a838129433e5f1343d6cdb0b41838619da1541f04", - "RC2/CBC/PKCS7Padding", - "a51facdb3933c9676795cd38cc3146fd4694722b468b1a979a399c77606abf9958435525f770f137", - "RC5/CBC/PKCS7Padding", - "9ee7517eab0280445f3a7c60c90c0f75029d65bca8b1af83ace5399d388c83c3edd95ff49be76651", - "RC5-64/CBC/PKCS7Padding", - "e479fd11f89dab22d2f3dd062b1d2abd5b5962553421a5c562dc7214c3b23b8e21949fda87f2f820e5f032c552c6ec78", - "RC6/CBC/PKCS7Padding", - "c44695633c07010f3a0d8f7ea046a642d4a96bf4e44f89fd91b46830bc95b130824b972c9019a69d2dd05ef2d36b37ac", - "IDEA/CBC/PKCS7Padding", - "30cd990ebdae80fe12b6c6e4fcd1c064a27d985c276b3d7097351c8684e4c4d9e584751325ef7c32", - "IDEA/CBC/ISO10126Padding", - "30cd990ebdae80fe12b6c6e4fcd1c064a27d985c276b3d7097351c8684e4c4d978b3fd73135f033b", - "IDEA/CBC/X9.23Padding", - "30cd990ebdae80fe12b6c6e4fcd1c064a27d985c276b3d7097351c8684e4c4d978b3fd73135f033b", - "AES/CBC/PKCS7Padding", - "cf87f4d8bb9d1abb36cdd9f44ead7d046db2f802d99e1ef0a5940f306079e08389a44c4a8cc1a47cbaee1128da55bbb7", - "AES/CBC/ISO7816-4Padding", - "cf87f4d8bb9d1abb36cdd9f44ead7d046db2f802d99e1ef0a5940f306079e08306d84876508a33efec701118d8eeaf6d", - "Rijndael/CBC/PKCS7Padding", - "cf87f4d8bb9d1abb36cdd9f44ead7d046db2f802d99e1ef0a5940f306079e08389a44c4a8cc1a47cbaee1128da55bbb7", - "Serpent/CBC/PKCS7Padding", - "f8940ca31aba8ce1e0693b1ae0b1e08daef6de03c80f019774280052f824ac44540bb8dd74dfad47f83f9c7ec268ca68", - "CAST5/CBC/PKCS7Padding", - "87b6dc0c5a1d23d42fa740b0548be0b298112000544610d889d6361994cf8e670a19d6af72d7289f", - "CAST6/CBC/PKCS7Padding", - "943445569cfdda174118e433828f84e137faee38cac5c827d87a3c9a5a46a07dd64e7ad8accd921f248eea627cd6826f", - "DES/CBC/WithCTS", - "60fa2f8fae5aa2a38e9ac77d0246726bcf99f75cc6e0122aeb7511e4515feb12", - "IDEA/CBC/PKCS7Padding", - "30cd990ebdae80fe12b6c6e4fcd1c064a27d985c276b3d7097351c8684e4c4d9e584751325ef7c32", - "DES/CBC/ZeroBytePadding", - "60fa2f8fae5aa2a38e9ac77d0246726beb7511e4515feb12cf99f75cc6e0122ad3b3f002c927f1fd", - "DES/CTS/NoPadding", // official style - "60fa2f8fae5aa2a38e9ac77d0246726bcf99f75cc6e0122aeb7511e4515feb12", - "DESede/CTS/NoPadding", - "4d3d7931875cf25593dc402298add8b9e22b2c144116923114761e4936c9585a", - "SKIPJACK/CTS/NoPadding", - "ceebcc2e5e2b847f9ed797b4930b95f12ea0df79ad5c833415b9e6cf49c457fc", - "Blowfish/CTS/NoPadding", - "80823abbabc109733e7ebf3ce3344d67b452f7fbe8e844cefc387c306b782086", - "Twofish/CTS/NoPadding", - "94de61f49ddf8e7692e9d81a83812943f819694251a00bdd403928745cd1d8a0", - "AES/CTS/NoPadding", - "6db2f802d99e1ef0a5940f306079e083cf87f4d8bb9d1abb36cdd9f44ead7d04", - "Rijndael/CTS/NoPadding", - "6db2f802d99e1ef0a5940f306079e083cf87f4d8bb9d1abb36cdd9f44ead7d04", - "Serpent/CTS/NoPadding", - "aef6de03c80f019774280052f824ac44f8940ca31aba8ce1e0693b1ae0b1e08d", - "CAST5/CTS/NoPadding", - "87b6dc0c5a1d23d42fa740b0548be0b289d6361994cf8e6798112000544610d8", - "CAST6/CTS/NoPadding", - "37faee38cac5c827d87a3c9a5a46a07d943445569cfdda174118e433828f84e1", - "RC2/CTS/NoPadding", - "a51facdb3933c9676795cd38cc3146fd9a399c77606abf994694722b468b1a97", - "RC5/CTS/NoPadding", - "9ee7517eab0280445f3a7c60c90c0f75ace5399d388c83c3029d65bca8b1af83", - "RC6/CTS/NoPadding", - "d4a96bf4e44f89fd91b46830bc95b130c44695633c07010f3a0d8f7ea046a642", - "IDEA/CTS/NoPadding", - "30cd990ebdae80fe12b6c6e4fcd1c06497351c8684e4c4d9a27d985c276b3d70", - "DES/CBC/WithCTS", // older style - "60fa2f8fae5aa2a38e9ac77d0246726bcf99f75cc6e0122aeb7511e4515feb12", - "DESede/CBC/WithCTS", - "4d3d7931875cf25593dc402298add8b9e22b2c144116923114761e4936c9585a", - "SKIPJACK/CBC/WithCTS", - "ceebcc2e5e2b847f9ed797b4930b95f12ea0df79ad5c833415b9e6cf49c457fc", - "Blowfish/CBC/WithCTS", - "80823abbabc109733e7ebf3ce3344d67b452f7fbe8e844cefc387c306b782086", - "Twofish/CBC/WithCTS", - "94de61f49ddf8e7692e9d81a83812943f819694251a00bdd403928745cd1d8a0", - "AES/CBC/WithCTS", - "6db2f802d99e1ef0a5940f306079e083cf87f4d8bb9d1abb36cdd9f44ead7d04", - "Rijndael/CBC/WithCTS", - "6db2f802d99e1ef0a5940f306079e083cf87f4d8bb9d1abb36cdd9f44ead7d04", - "Serpent/CBC/WithCTS", - "aef6de03c80f019774280052f824ac44f8940ca31aba8ce1e0693b1ae0b1e08d", - "CAST5/CBC/WithCTS", - "87b6dc0c5a1d23d42fa740b0548be0b289d6361994cf8e6798112000544610d8", - "CAST6/CBC/WithCTS", - "37faee38cac5c827d87a3c9a5a46a07d943445569cfdda174118e433828f84e1", - "RC2/CBC/WithCTS", - "a51facdb3933c9676795cd38cc3146fd9a399c77606abf994694722b468b1a97", - "RC5/CBC/WithCTS", - "9ee7517eab0280445f3a7c60c90c0f75ace5399d388c83c3029d65bca8b1af83", - "RC6/CBC/WithCTS", - "d4a96bf4e44f89fd91b46830bc95b130c44695633c07010f3a0d8f7ea046a642", - "IDEA/CBC/WithCTS", - "30cd990ebdae80fe12b6c6e4fcd1c06497351c8684e4c4d9a27d985c276b3d70", - "DES/OFB/NoPadding", - "537572e480c1714f5c9a4f3b874df824dc6681b1fd6c11982debcad91e3f78b7", - "DESede/OFB/NoPadding", - "481e9872acea7fcf8e29a453242da774e5f6a28f15f7723659a73e4ff4939f80", - "SKIPJACK/OFB/NoPadding", - "71143a124e3a0cde753b60fe9b200e559018b6a0fe0682659f7c13feb9df995c", - "Blowfish/OFB/NoPadding", - "6cd6f7c5d2c655556d7a9e98a1696d1875e9f1b2fc991e28a2d55b56861e80bd", - "Twofish/OFB/NoPadding", - "821c54b1b54ae113cf74595eefe10c83b61c9682fc81f92c52f39a3a693f88b8", - "Threefish-256/OFB/NoPadding", - "546ea995dd302f1efcb1f27d14bad468280a3a7994c2af75dfdf1e9fc5ef2373", - "Threefish-512/OFB/NoPadding", - "152df966484ecc2e9ddfc386559732f7f632e4008920804a1bde4efcf2e6e2f2", - "Threefish-1024/OFB/NoPadding", - "03953ac751a7377812c6e3e4d14b36c6953f9b390acaa892811c10001c9be454", - "RC2/OFB/NoPadding", - "0a07cb78537cb04c0c74e28a7b86b80f80acadf87d6ef32792f1a8cf74b39f74", - "RC5/OFB/NoPadding", - "c62b233df296283b918a2b4cc53a54fbf061850e781b97332ed1bd78b88d9670", - "IDEA/OFB/NoPadding", - "dd447da3cbdcf81f4053fb446596261cb00a3c49a66085485af5f7c10ba20dad", - "DES/OFB8/NoPadding", - "53cb5010d189f94cf584e5ff1c4a9d86443c45ddb6fa3c2d1a5dadfcdf01db8a", - "DESede/OFB8/NoPadding", - "482c0c1ccd0e6d218e1cffb0a295352c2357ffaa673f2257ef5c77b6c04f03b5", - "SKIPJACK/OFB8/NoPadding", - "719ea1b432b3d2c8011e5aa873f95978420022b5e2c9c1a1c1082cd1f4999da2", - "Blowfish/OFB8/NoPadding", - "6ca6078755b263f09787d830b6fda7b7748494634bdc73ab68540cf9f6b7eccf", - "Twofish/OFB8/NoPadding", - "825dcec234ad52253d6e064b0d769bc04b1142435933f4a510ffc20d70095a88", - "Threefish-256/OFB8/NoPadding", - "545fbd92313512127218262dd4394569aca96ba122e1432b661ecfc01af3a25c", - "Threefish-512/OFB8/NoPadding", - "15f6e7d215662c525ea982cab56409cf833157e1af06edd57a13c71487904fea", - "Threefish-1024/OFB8/NoPadding", - "03d80b67ff7139d9dd8b07280642f94074496e5fc37b1ba1f8593cdf64a1e4ca", - "RC2/OFB8/NoPadding", - "0aa26c6f6a820fe7d38da97085995ad62e2e293323a76300fcd4eb572810f7c6", - "RC5/OFB8/NoPadding", - "c601a9074dbd874f4d3293f6a32d93d9f0a4f5685d8597f0102fcc96d444f976", - "IDEA/OFB8/NoPadding", - "dd7897b6ced43d060a518bb38d570308b83b4de577eb208130daabf619e9b1fb", - "DES/CFB/NoPadding", - "537572e480c1714fec3c7424f88d4202219244c5ca8f5e4361d64f08fe747bb2", - "DESede/CFB/NoPadding", - "481e9872acea7fcfb75bb58670fe64c59123265139e357d161cd4ddb5eba042a", - "SKIPJACK/CFB/NoPadding", - "71143a124e3a0cde70a69ede4ceb14376b1e6a80bafde0a6330508dfa86a7c41", - "Blowfish/CFB/NoPadding", - "6cd6f7c5d2c6555561167fe9b10665102206869339122f1ed89efa4a985397f6", - "Twofish/CFB/NoPadding", - "821c54b1b54ae113cf74595eefe10c8308b7a438277de4f40948ac2d172d53d2", - "Threefish-256/CFB/NoPadding", - "546ea995dd302f1efcb1f27d14bad468280a3a7994c2af75dfdf1e9fc5ef2373", - "Threefish-512/CFB/NoPadding", - "152df966484ecc2e9ddfc386559732f7f632e4008920804a1bde4efcf2e6e2f2", - "Threefish-1024/CFB/NoPadding", - "03953ac751a7377812c6e3e4d14b36c6953f9b390acaa892811c10001c9be454", - "RC2/CFB/NoPadding", - "0a07cb78537cb04ca1401450d5cd411c7da7fa5b6baaa17bb2137bd95c9f26a5", - "RC5/CFB/NoPadding", - "c62b233df296283b989352bbebf616a19e11503ac737f9e0eaf19049cde05d34", - "IDEA/CFB/NoPadding", - "dd447da3cbdcf81fcbe4661dcbed88aed899f87585118384bd0565067fa6c13a", - "DES/CFB8/NoPadding", - "53cb0cdff712a825eb283b23c31e7323aa12495e7e751428b5c4eb89b28a25d4", - "DESede/CFB8/NoPadding", - "482cd5bf87ca4cee0b573d66a077231bfea93843ce2d1f948550a1d208e18279", - "SKIPJACK/CFB8/NoPadding", - "719eef3906bef23f7b63599285437d8e34183b165acf3e855b4e160d4f036508", - "Blowfish/CFB8/NoPadding", - "6ca63aaada9188d2410c07513cc0736b9888770768c25a5befc776beea5bdc4c", - "Twofish/CFB8/NoPadding", - "825d12af040721cf5ed4a4798647837ac5eb14d752aace28728aeb37b2010abd", - "Threefish-256/CFB8/NoPadding", - "545fbf0a4b925f399cf7540f1cc1cc6012e329ab2d4db0aa0dfa29ee2a2019d1", - "Threefish-512/CFB8/NoPadding", - "15f695964f20b95ed72afad75f905788839c53bed2ae5fdfdfb13e3241fd7f94", - "Threefish-1024/CFB8/NoPadding", - "03d897c89e740d2254f717b73315151d9a34c829e4162232b3cd5f5158ff367b", - "RC2/CFB8/NoPadding", - "0aa227f94be3a32ff927c5d25647ea41d7c2a1e94012fc7f2ad6767b9664bce5", - "RC5/CFB8/NoPadding", - "c601cf88725411f119965b9cd38d6c313b91128ed7c98c7604cc62d9b210be79", - "IDEA/CFB8/NoPadding", - "dd7839d2525420d10f95eec23dbaf3463302c445972a28c563c2635191bc19af", - "IDEA/PGPCFB/NoPadding", - "dd447da3cbdcf81fcbe4661dcbed88aed899f87585118384bd0565067fa6c13a", - "IDEA/PGPCFBwithIv/NoPadding", - "ed5adbac0e730cc0f00df7e4f6fef672ab042673106435faf3ecf3996a72a0e127b440ba9e5313501de3", - "Twofish/ECB/TBCPadding", - "70336d9c9718a8a2ced1b19deed973a3c58af7ea71a69e7efc4df082dca581c019d7daa58d02b89aab6e8c0d17202439", - "RC2/ECB/TBCPadding", - "eb5b889bbcced12eb6b1a3da6a3d965bba66a5edfdd4c8a6b6b1a3da6a3d965b6b5359ba5e69b179", - "DES/CTR/NoPadding", - "537572e480c1714fb47081d35eb18eaca9e0a5aee982f105438a0db6cece1f6d", - "DESede/CTR/NoPadding", - "481e9872acea7fcfa93b7d4e34ec7bab340c10faba2e43b879d40d38e07c422d", - "SKIPJACK/CTR/NoPadding", - "71143a124e3a0cdeee98a7b843baa05bd1d59faee8ec9b89880e070314a04cc2", - "Blowfish/CTR/NoPadding", - "6cd6f7c5d2c65555d2b31f8614f54ec654f5e7888d515008d59302c3edfcc6cb", - "Twofish/CTR/NoPadding", - "821c54b1b54ae113cf74595eefe10c83d09e95d4599190b9bbd5bc71dd703730", - "Threefish-256/CTR/NoPadding", - "546ea995dd302f1efcb1f27d14bad468280a3a7994c2af75dfdf1e9fc5ef2373", - "Threefish-512/CTR/NoPadding", - "152df966484ecc2e9ddfc386559732f7f632e4008920804a1bde4efcf2e6e2f2", - "Threefish-1024/CTR/NoPadding", - "03953ac751a7377812c6e3e4d14b36c6953f9b390acaa892811c10001c9be454", - "RC2/CTR/NoPadding", - "0a07cb78537cb04c8c5a0a39a15977a7eb19f3c48a42759c234868c391a99c63", - "RC5/CTR/NoPadding", - "c62b233df296283b97f17364d5f69a1ff91f46659cf9856caefd322a936203a7", - "IDEA/CTR/NoPadding", - "dd447da3cbdcf81f4694ab7715d79e3f90af5682e8c318b8f7dadbed6b5c9714", - }; - - static String[] cipherTests2 = - { - "DES/OFB64/NoPadding", - "537572e480c1714f5c9a4f3b874df824dc6681b1fd6c11982debcad91e", - "DES/CFB64/NoPadding", - "537572e480c1714fec3c7424f88d4202219244c5ca8f5e4361d64f08fe", - "DES/CTR/NoPadding", - "537572e480c1714fb47081d35eb18eaca9e0a5aee982f105438a0db6ce", - "DES/CTS/NoPadding", - "60fa2f8fae5aa2a38e9ac77d0246726b32df660db51a710ceb7511e451" - }; - - static String[] cipherTestsLargeBlock = - { - "Threefish-256", - "9f82b577cf4cca7a504e9f7a2cd7dbb4ef4ac167c716fca19ab1211f195f610f" + - "9f82b577cf4cca7a504e9f7a2cd7dbb4ef4ac167c716fca19ab1211f195f610f" + - "9f82b577cf4cca7a504e9f7a2cd7dbb4ef4ac167c716fca19ab1211f195f610f" + - "9f82b577cf4cca7a504e9f7a2cd7dbb4ef4ac167c716fca19ab1211f195f610f" + - "31533aa864e6a40edc3e24b36260d94374893dc2e479793292e29c18a6ee01a9", - "Threefish-512", - "35d0c46770ebb3bf62fadd48765db209df215d7cd18a8b18d11625e70067e1fa" + - "bb98982312ce1fdfccae1a59408e1d5418b400a7bf0d1c4e9ea4afa4395886d7" + - "35d0c46770ebb3bf62fadd48765db209df215d7cd18a8b18d11625e70067e1fa" + - "bb98982312ce1fdfccae1a59408e1d5418b400a7bf0d1c4e9ea4afa4395886d7" + - "ad7ec86b2137af1ddb64794d714c4e1d7b687b19fc9781ef887a0ad7f88e18fc" + - "1baa6123ec8bc497e7eb7b5090cfd756fd5333425ed5a240cb96735dea9713d9", - "Threefish-1024", - "df6d789e301c6a5e22e0cff0b44666630d44ce774a41b628ebaff6adc86d9e66" + - "af50a282a4313552bc9b861cb286ab569e2e23b1c97cdb5cb1fde1bacfba9bfb" + - "de3b443218e16b6038537b3d803ff5dbd26b13c177a5bfb597ffccca142a5905" + - "8c0f74623daa96bff95b716674701034e7947ce0541426fa5177bc1a519b23ba" + - "462f1724989612e49ca5e92a0129ec7be576846fe2616664674e16a29ce8679c" + - "0adda9034fbd652910c2ae5afacde10281ab18dbeeb83464dc21ff66b0d358ff" + - "2328c73aca59e9095a7bca94acc79d10038eab6ef865545bcf73f4caeeba1844" + - "6add98350c8276e5abfb8709bb6c01ef3297b862818a4996b744f375b9126e5c", - "Threefish-256/CBC/NoPadding", - "1c46830ef0a43a0869bf070a87f0d4e63f2458edfa5654bafd8520358dae8bf9" + - "2a8c039d41e87bb65a907331dde317450d38aba6cb3885bfbe0aee148503e37b" + - "973c5e8a16c4309f7a4229d9943ab403082b5836431b9d1646b619f368e057b3" + - "0931ce1b791b641dd3e79f2b536897f3c537e3b4588dc03c3888f9bab3bc7a0e", - "Threefish-512/CBC/NoPadding", - "caee9b663eba4663de1cd6f17ffc51dc8b808c95f91e12a818ab31436985830b" + - "3aa886a93e53849d34e713f36db52bac3557b137328434f41f825f3948a611c6" + - "03efe066d8d6d57b15b04729632de0ce5636b8ccd28219ac17ef836734556e15" + - "e90356111279412a814b660150323a416138b2b62942f2d0cd08ee0bb45b0dd7", - "Threefish-1024/CBC/NoPadding", - "7540a8fe54a1a1d117ba1f970a12002cf9e24477daef9439dfc43b79a88a9e87" + - "b59be63aa448b4e02e8b9a6464419c35b0b3f97219e6c88ed5429d0f9ffb40bb" + - "491f280f4281af177e254828f82e90d196c6bf9afa31926cf5bf0cc3dc81f28a" + - "419544ef5907f3b8bf6179da37ff07134d9c6d147521e5c840d5086ec74c1003", - "Threefish-256/CBC/PKCS7Padding", - "1c46830ef0a43a0869bf070a87f0d4e63f2458edfa5654bafd8520358dae8bf9" + - "2a8c039d41e87bb65a907331dde317450d38aba6cb3885bfbe0aee148503e37b" + - "973c5e8a16c4309f7a4229d9943ab403082b5836431b9d1646b619f368e057b3" + - "0931ce1b791b641dd3e79f2b536897f3c537e3b4588dc03c3888f9bab3bc7a0e" + - "f96cb468a5cd39a003f976464a7d072c94cb72a3fe739f101aa7b5452bc3fbba", - "Threefish-512/CBC/PKCS7Padding", - "caee9b663eba4663de1cd6f17ffc51dc8b808c95f91e12a818ab31436985830b" + - "3aa886a93e53849d34e713f36db52bac3557b137328434f41f825f3948a611c6" + - "03efe066d8d6d57b15b04729632de0ce5636b8ccd28219ac17ef836734556e15" + - "e90356111279412a814b660150323a416138b2b62942f2d0cd08ee0bb45b0dd7" + - "03902162280012e59efa15c6beecfbf440a6a0c4474bbbb2f74a0ad31bcd398f" + - "b24728c3605a4ced3c92c30a5e231113abafaf6f83a3867978e3cdd74091d09f", - "Threefish-1024/CBC/PKCS7Padding", - "7540a8fe54a1a1d117ba1f970a12002cf9e24477daef9439dfc43b79a88a9e87" + - "b59be63aa448b4e02e8b9a6464419c35b0b3f97219e6c88ed5429d0f9ffb40bb" + - "491f280f4281af177e254828f82e90d196c6bf9afa31926cf5bf0cc3dc81f28a" + - "419544ef5907f3b8bf6179da37ff07134d9c6d147521e5c840d5086ec74c1003" + - "4ddd16ad731ad9a32d0f196a72284f7a8df98918e3e22f1708662edeb1810d2b" + - "bafd4200e849f3288b55634b37f99f0f7b2dd192a5944fc211ef9e37b67a829b" + - "005a5ec609f736875fdf8946bd79c1daa6c44c9d6733a2223cf8b7e5203b1cfd" + - "76995f67e570d9c403b2a2e3f3a89c63c7850ee8d47d4398ac377345a139dda4", - "Threefish-256/CTS/NoPadding", - "1c46830ef0a43a0869bf070a87f0d4e63f2458edfa5654bafd8520358dae8bf9" + - "2a8c039d41e87bb65a907331dde317450d38aba6cb3885bfbe0aee148503e37b" + - "0931ce1b791b641dd3e79f2b536897f3c537e3b4588dc03c3888f9bab3bc7a0e" + - "973c5e8a16c4309f7a4229d9943ab403082b5836431b9d1646b619f368e057b3", - "Threefish-512/CTS/NoPadding", - "03efe066d8d6d57b15b04729632de0ce5636b8ccd28219ac17ef836734556e15" + - "e90356111279412a814b660150323a416138b2b62942f2d0cd08ee0bb45b0dd7" + - "caee9b663eba4663de1cd6f17ffc51dc8b808c95f91e12a818ab31436985830b" + - "3aa886a93e53849d34e713f36db52bac3557b137328434f41f825f3948a611c6", - "Threefish-1024/CTS/NoPadding", - "7540a8fe54a1a1d117ba1f970a12002cf9e24477daef9439dfc43b79a88a9e87b59b" + - "e63aa448b4e02e8b9a6464419c35b0b3f97219e6c88ed5429d0f9ffb40bb491f280f" + - "4281af177e254828f82e90d196c6bf9afa31926cf5bf0cc3dc81f28a419544ef5907" + - "f3b8bf6179da37ff07134d9c6d147521e5c840d5086ec74c1003", - "Threefish-256/CBC/WithCTS", - "1c46830ef0a43a0869bf070a87f0d4e63f2458edfa5654bafd8520358dae8bf9" + - "2a8c039d41e87bb65a907331dde317450d38aba6cb3885bfbe0aee148503e37b" + - "0931ce1b791b641dd3e79f2b536897f3c537e3b4588dc03c3888f9bab3bc7a0e" + - "973c5e8a16c4309f7a4229d9943ab403082b5836431b9d1646b619f368e057b3", - "Threefish-512/CBC/WithCTS", - "03efe066d8d6d57b15b04729632de0ce5636b8ccd28219ac17ef836734556e15" + - "e90356111279412a814b660150323a416138b2b62942f2d0cd08ee0bb45b0dd7" + - "caee9b663eba4663de1cd6f17ffc51dc8b808c95f91e12a818ab31436985830b" + - "3aa886a93e53849d34e713f36db52bac3557b137328434f41f825f3948a611c6", - "Threefish-1024/CBC/WithCTS", - "7540a8fe54a1a1d117ba1f970a12002cf9e24477daef9439dfc43b79a88a9e87b59b" + - "e63aa448b4e02e8b9a6464419c35b0b3f97219e6c88ed5429d0f9ffb40bb491f280f" + - "4281af177e254828f82e90d196c6bf9afa31926cf5bf0cc3dc81f28a419544ef5907" + - "f3b8bf6179da37ff07134d9c6d147521e5c840d5086ec74c1003", - "Threefish-256/ECB/TBCPadding", - "9f82b577cf4cca7a504e9f7a2cd7dbb4ef4ac167c716fca19ab1211f195f610f" + - "9f82b577cf4cca7a504e9f7a2cd7dbb4ef4ac167c716fca19ab1211f195f610f" + - "9f82b577cf4cca7a504e9f7a2cd7dbb4ef4ac167c716fca19ab1211f195f610f" + - "9f82b577cf4cca7a504e9f7a2cd7dbb4ef4ac167c716fca19ab1211f195f610f" + - "89c4e79b90153a821bdd4efd5eb1e2cda89b6a91540a003eef03868472d8cfce", - "Threefish-512/ECB/TBCPadding", - "35d0c46770ebb3bf62fadd48765db209df215d7cd18a8b18d11625e70067e1fa" + - "bb98982312ce1fdfccae1a59408e1d5418b400a7bf0d1c4e9ea4afa4395886d7" + - "35d0c46770ebb3bf62fadd48765db209df215d7cd18a8b18d11625e70067e1fa" + - "bb98982312ce1fdfccae1a59408e1d5418b400a7bf0d1c4e9ea4afa4395886d7" + - "dd6bfa1006e4df51298e382ca397a2c398cdb4d65009dce77c5f0a31f9807218" + - "a72372a8a0df3b1bacd5dbfb116ebbe314e0b0cd64fd2c8ae8a81491c2534a2a", - "Threefish-1024/ECB/TBCPadding", - "df6d789e301c6a5e22e0cff0b44666630d44ce774a41b628ebaff6adc86d9e66" + - "af50a282a4313552bc9b861cb286ab569e2e23b1c97cdb5cb1fde1bacfba9bfb" + - "de3b443218e16b6038537b3d803ff5dbd26b13c177a5bfb597ffccca142a5905" + - "8c0f74623daa96bff95b716674701034e7947ce0541426fa5177bc1a519b23ba" + - "7312262dc3a25984847d1b05cb624f5751946f136ee7bd0a9a4bbac5dd3bd213" + - "702390d3a53d1a4132f59383cce4fe61e08cd3c73c570190d1c8b60940031ef7" + - "42f6775b00fb0b4273a14b46a3fc0e760e02f75dc6100ca9c038c3f151e03145" + - "92686fd8cccbee74d246a8c59ad80205c9f9aaeb100ea5812837ee8699753301", - }; - - static byte[] input1 = Hex.decode("000102030405060708090a0b0c0d0e0fff0102030405060708090a0b0c0d0e0f"); - static byte[] input2 = Hex.decode("000102030405060708090a0b0c0d0e0fff0102030405060708090a0b0c"); - static byte[] inputLargeBlock = Hex.decode("000102030405060708090a0b0c0d0e0fff0102030405060708090a0b0c0d0e0f" + - "000102030405060708090a0b0c0d0e0fff0102030405060708090a0b0c0d0e0f" + - "000102030405060708090a0b0c0d0e0fff0102030405060708090a0b0c0d0e0f" + - "000102030405060708090a0b0c0d0e0fff0102030405060708090a0b0c0d0e0f"); - - static RC2ParameterSpec rc2Spec = new RC2ParameterSpec(128, Hex.decode("0123456789abcdef")); - static RC5ParameterSpec rc5Spec = new RC5ParameterSpec(16, 16, 32, Hex.decode("0123456789abcdef")); - static RC5ParameterSpec rc564Spec = new RC5ParameterSpec(16, 16, 64, Hex.decode("0123456789abcdef0123456789abcdef")); - - /** - * a fake random number generator - we just want to make sure the random numbers - * aren't random so that we get the same output, while still getting to test the - * key generation facilities. - */ - private class FixedSecureRandom - extends SecureRandom - { - byte[] seed = { - (byte)0xaa, (byte)0xfd, (byte)0x12, (byte)0xf6, (byte)0x59, - (byte)0xca, (byte)0xe6, (byte)0x34, (byte)0x89, (byte)0xb4, - (byte)0x79, (byte)0xe5, (byte)0x07, (byte)0x6d, (byte)0xde, - (byte)0xc2, (byte)0xf0, (byte)0x6c, (byte)0xb5, (byte)0x8f - }; - - public void nextBytes( - byte[] bytes) - { - int offset = 0; - - while ((offset + seed.length) < bytes.length) - { - System.arraycopy(seed, 0, bytes, offset, seed.length); - offset += seed.length; - } - - System.arraycopy(seed, 0, bytes, offset, bytes.length - offset); - } - } - - public String getName() - { - return "BlockCipher"; - } - - public void test( - String algorithm, - byte[] input, - byte[] output) - { - Key key = null; - KeyGenerator keyGen; - SecureRandom rand; - Cipher in = null; - Cipher out = null; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - rand = new FixedSecureRandom(); - - try - { - String baseAlgorithm; - int index = algorithm.indexOf('/'); - - if (index > 0) - { - baseAlgorithm = algorithm.substring(0, index); - } - else - { - baseAlgorithm = algorithm; - } - - if (baseAlgorithm.equals("IDEA") & noIDEA()) - { - return; - } - - keyGen = KeyGenerator.getInstance(baseAlgorithm, "BC"); - if (!keyGen.getAlgorithm().equals(baseAlgorithm)) - { - fail("wrong key generator returned!"); - } - keyGen.init(rand); - - key = keyGen.generateKey(); - - in = Cipher.getInstance(algorithm, "BC"); - out = Cipher.getInstance(algorithm, "BC"); - - if (!in.getAlgorithm().startsWith(baseAlgorithm)) - { - fail("wrong cipher returned!"); - } - - if (algorithm.startsWith("RC2")) - { - out.init(Cipher.ENCRYPT_MODE, key, rc2Spec, rand); - } - else if (algorithm.startsWith("RC5")) - { - if (algorithm.startsWith("RC5-64")) - { - out.init(Cipher.ENCRYPT_MODE, key, rc564Spec, rand); - } - else - { - out.init(Cipher.ENCRYPT_MODE, key, rc5Spec, rand); - } - } - else - { - out.init(Cipher.ENCRYPT_MODE, key, rand); - } - } - catch (Exception e) - { - fail("" + algorithm + " failed initialisation - " + e.toString(), e); - } - - // - // grab the iv if there is one - // - try - { - if (algorithm.startsWith("RC2")) - { - in.init(Cipher.DECRYPT_MODE, key, rc2Spec); - } - else if (algorithm.startsWith("RC5")) - { - if (algorithm.startsWith("RC5-64")) - { - in.init(Cipher.DECRYPT_MODE, key, rc564Spec, rand); - } - else - { - in.init(Cipher.DECRYPT_MODE, key, rc5Spec, rand); - } - } - else - { - byte[] iv; - - iv = out.getIV(); - if (iv != null) - { - try - { - byte[] nIv = new byte[iv.length - 1]; - - in.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(nIv)); - fail("failed to pick up short IV"); - } - catch (InvalidAlgorithmParameterException e) - { - // ignore - this is what we want... - } - - IvParameterSpec spec; - - spec = new IvParameterSpec(iv); - - in.init(Cipher.DECRYPT_MODE, key, spec); - } - else - { - in.init(Cipher.DECRYPT_MODE, key); - } - } - } - catch (Exception e) - { - fail("" + algorithm + " failed initialisation - " + e.toString()); - } - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - try - { - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - } - catch (IOException e) - { - fail("" + algorithm + " failed encryption - " + e.toString()); - } - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!areEqual(bytes, output)) - { - fail("" + algorithm + " failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - try - { - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - } - catch (Exception e) - { - fail("" + algorithm + " failed decryption - " + e.toString()); - } - - if (!areEqual(bytes, input)) - { - fail("" + algorithm + " failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - } - - private boolean noIDEA() - { - try - { - Cipher.getInstance("IDEA", "BC"); - - return false; - } - catch (Exception e) - { - return true; - } - } - - private void testExceptions() - { - SecretKeyFactory skF = null; - - try - { - skF = SecretKeyFactory.getInstance("DESede", "BC"); - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - KeySpec ks = null; - SecretKey secKey = null; - byte[] bb = new byte[24]; - - try - { - skF.getKeySpec(null, null); - - fail("failed exception test - no exception thrown"); - } - catch (InvalidKeySpecException e) - { - // ignore okay - } - catch (Exception e) - { - fail("failed exception test.", e); - } - try - { - ks = (KeySpec)new DESedeKeySpec(bb); - skF.getKeySpec(null, ks.getClass()); - - fail("failed exception test - no exception thrown"); - } - catch (InvalidKeySpecException e) - { - // ignore okay; - } - catch (Exception e) - { - fail("failed exception test.", e); - } - try - { - skF.getKeySpec(secKey, null); - } - catch (InvalidKeySpecException e) - { - // ignore okay - } - catch (Exception e) - { - fail("failed exception test.", e); - } - - try - { - KeyGenerator kg = KeyGenerator.getInstance("DESede", "BC"); - try - { - kg.init(Integer.MIN_VALUE, new SecureRandom()); - - fail("failed exception test - no exception thrown"); - } - catch (InvalidParameterException e) - { - // ignore okay - } - catch (Exception e) - { - fail("failed exception test.", e); - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - try - { - skF = SecretKeyFactory.getInstance("DESede", "BC"); - - try - { - skF.translateKey(null); - - fail("failed exception test - no exception thrown"); - } - catch (InvalidKeyException e) - { - // ignore okay - } - catch (Exception e) - { - fail("failed exception test.", e); - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - try - { - byte[] rawDESKey = { (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143 }; - - SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES"); - - Cipher cipher = Cipher.getInstance("DES/CBC/NoPadding", "BC"); - - try - { - // According specification engineInit(int opmode, Key key, - // SecureRandom random) throws InvalidKeyException if this - // cipher is being - // initialized for decryption and requires algorithm parameters - // that cannot be determined from the given key - cipher.init(Cipher.DECRYPT_MODE, cipherKey, (SecureRandom)null); - - fail("failed exception test - no InvalidKeyException thrown"); - } - catch (InvalidKeyException e) - { - // ignore - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - try - { - byte[] rawDESKey = { -128, -125, -123, -122, -119, -118 }; - - SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES"); - Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding", "BC"); - try - { - // According specification engineInit(int opmode, Key key, - // SecureRandom random) throws InvalidKeyException if the given - // key is inappropriate for initializing this cipher - cipher.init(Cipher.ENCRYPT_MODE, cipherKey); - - fail("failed exception test - no InvalidKeyException thrown"); - } - catch (InvalidKeyException e) - { - // ignore - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - try - { - byte[] rawDESKey = { -128, -125, -123, -122, -119, -118, -117, -115, -114 }; - - SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES"); - Cipher cipher = Cipher.getInstance("DES/ECB/NoPadding", "BC"); - try - { - // According specification engineInit(int opmode, Key key, - // SecureRandom random) throws InvalidKeyException if the given - // key is inappropriate for initializing this cipher - cipher.init(Cipher.ENCRYPT_MODE, cipherKey); - - fail("failed exception test - no InvalidKeyException thrown"); - } - catch (InvalidKeyException e) - { - // ignore - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - - try - { - byte[] rawDESKey = { (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143 }; - - SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES"); - Cipher ecipher = Cipher.getInstance("DES/ECB/PKCS5Padding", "BC"); - ecipher.init(Cipher.ENCRYPT_MODE, cipherKey); - - byte[] cipherText = new byte[0]; - try - { - // According specification Method engineUpdate(byte[] input, - // int inputOffset, int inputLen, byte[] output, int - // outputOffset) - // throws ShortBufferException - if the given output buffer is - // too - // small to hold the result - ecipher.update(new byte[20], 0, 20, cipherText); - - fail("failed exception test - no ShortBufferException thrown"); - } - catch (ShortBufferException e) - { - // ignore - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - try - { - byte[] rawDESKey = { (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143 }; - - SecretKeySpec cipherKey = new SecretKeySpec(rawDESKey, "DES"); - Cipher ecipher = Cipher.getInstance("DES/ECB/PKCS5Padding", "BC"); - ecipher.init(Cipher.ENCRYPT_MODE, cipherKey); - - byte[] cipherText = new byte[0]; - try - { - // According specification Method enginedoFinal(byte[] input, - // int inputOffset, int inputLen, byte[] output, int - // outputOffset) - // throws ShortBufferException - if the given output buffer is - // too - // small to hold the result - ecipher.doFinal(new byte[20], 0, 20, cipherText); - - fail("failed exception test - no ShortBufferException thrown"); - } - catch (ShortBufferException e) - { - // ignore - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - try - { - KeyGenerator keyGen = KeyGenerator.getInstance("DES", "BC"); - - keyGen.init((SecureRandom)null); - - // According specification engineGenerateKey() doesn't throw any exceptions. - - SecretKey key = keyGen.generateKey(); - if (key == null) - { - fail("key is null!"); - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - try - { - AlgorithmParameters algParams = AlgorithmParameters.getInstance("DES", "BC"); - - algParams.init(new IvParameterSpec(new byte[8])); - - // According specification engineGetEncoded() returns - // the parameters in their primary encoding format. The primary - // encoding - // format for parameters is ASN.1, if an ASN.1 specification for - // this type - // of parameters exists. - byte[] iv = algParams.getEncoded(); - - if (iv.length != 10) - { - fail("parameters encoding wrong length - " + iv.length); - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - - try - { - try - { - AlgorithmParameters algParams = AlgorithmParameters.getInstance("DES", "BC"); - - byte[] encoding = new byte[10]; - encoding[0] = 3; - encoding[1] = 8; - - // According specification engineInit(byte[] params, String format) - // throws - // IOException on decoding errors, but BC throws ClassCastException. - algParams.init(encoding, "ASN.1"); - - fail("failed exception test - no IOException thrown"); - } - catch (IOException e) - { - // okay - } - - try - { - Cipher c = Cipher.getInstance("DES", "BC"); - - Key k = new PublicKey() - { - - public String getAlgorithm() - { - return "STUB"; - } - - public String getFormat() - { - return null; - } - - public byte[] getEncoded() - { - return null; - } - - }; - - c.init(Cipher.ENCRYPT_MODE, k); - - fail("failed exception test - no InvalidKeyException thrown for public key"); - } - catch (InvalidKeyException e) - { - // okay - } - - try - { - Cipher c = Cipher.getInstance("DES", "BC"); - - Key k = new PrivateKey() - { - - public String getAlgorithm() - { - return "STUB"; - } - - public String getFormat() - { - return null; - } - - public byte[] getEncoded() - { - return null; - } - - }; - - c.init(Cipher.DECRYPT_MODE, k); - - fail("failed exception test - no InvalidKeyException thrown for private key"); - } - catch (InvalidKeyException e) - { - // okay - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - } - - public void performTest() - { - for (int i = 0; i != cipherTests1.length; i += 2) - { - test(cipherTests1[i], input1, Hex.decode(cipherTests1[i + 1])); - } - - for (int i = 0; i != cipherTests2.length; i += 2) - { - test(cipherTests2[i], input2, Hex.decode(cipherTests2[i + 1])); - } - - for (int i = 0; i != cipherTestsLargeBlock.length; i += 2) - { - test(cipherTestsLargeBlock[i], inputLargeBlock, Hex.decode(cipherTestsLargeBlock[i + 1])); - } - - // - // check for less than a block - // - try - { - Cipher c = Cipher.getInstance("AES/CTS/NoPadding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(new byte[16], "AES")); - - c.doFinal(new byte[4]); - - fail("CTS failed to throw exception"); - } - catch (Exception e) - { - if (!(e instanceof IllegalBlockSizeException)) - { - fail("CTS exception test - " + e, e); - } - } - - testExceptions(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new BlockCipherTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CMacTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CMacTest.java deleted file mode 100644 index 29ffc7f5..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CMacTest.java +++ /dev/null @@ -1,288 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Security; - -import javax.crypto.Mac; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * CMAC tester - <a href="http://www.nuee.nagoya-u.ac.jp/labs/tiwata/omac/tv/omac1-tv.txt">AES Official Test Vectors</a>. - */ -public class CMacTest - extends SimpleTest -{ - private static final byte[] keyBytes128 = Hex.decode("2b7e151628aed2a6abf7158809cf4f3c"); - private static final byte[] keyBytes192 = Hex.decode( - "8e73b0f7da0e6452c810f32b809079e5" - + "62f8ead2522c6b7b"); - private static final byte[] keyBytes256 = Hex.decode( - "603deb1015ca71be2b73aef0857d7781" - + "1f352c073b6108d72d9810a30914dff4"); - - private static final byte[] input0 = Hex.decode(""); - private static final byte[] input16 = Hex.decode("6bc1bee22e409f96e93d7e117393172a"); - private static final byte[] input40 = Hex.decode( - "6bc1bee22e409f96e93d7e117393172a" - + "ae2d8a571e03ac9c9eb76fac45af8e5130c81c46a35ce411"); - private static final byte[] input64 = Hex.decode( - "6bc1bee22e409f96e93d7e117393172a" - + "ae2d8a571e03ac9c9eb76fac45af8e51" - + "30c81c46a35ce411e5fbc1191a0a52ef" - + "f69f2445df4f9b17ad2b417be66c3710"); - - private static final byte[] output_k128_m0 = Hex.decode("bb1d6929e95937287fa37d129b756746"); - private static final byte[] output_k128_m16 = Hex.decode("070a16b46b4d4144f79bdd9dd04a287c"); - private static final byte[] output_k128_m40 = Hex.decode("dfa66747de9ae63030ca32611497c827"); - private static final byte[] output_k128_m64 = Hex.decode("51f0bebf7e3b9d92fc49741779363cfe"); - - private static final byte[] output_k192_m0 = Hex.decode("d17ddf46adaacde531cac483de7a9367"); - private static final byte[] output_k192_m16 = Hex.decode("9e99a7bf31e710900662f65e617c5184"); - private static final byte[] output_k192_m40 = Hex.decode("8a1de5be2eb31aad089a82e6ee908b0e"); - private static final byte[] output_k192_m64 = Hex.decode("a1d5df0eed790f794d77589659f39a11"); - - private static final byte[] output_k256_m0 = Hex.decode("028962f61b7bf89efc6b551f4667d983"); - private static final byte[] output_k256_m16 = Hex.decode("28a7023f452e8f82bd4bf28d8c37c35c"); - private static final byte[] output_k256_m40 = Hex.decode("aaf3d8f1de5640c232f5b169b9c911e6"); - private static final byte[] output_k256_m64 = Hex.decode("e1992190549f6ed5696a2c056c315410"); - - private final byte[] output_des_ede = Hex.decode("1ca670dea381d37c"); - - public CMacTest() - { - } - - public void performTest() - throws Exception - { - Mac mac = Mac.getInstance("AESCMAC", "BC"); - - //128 bytes key - - SecretKeySpec key = new SecretKeySpec(keyBytes128, "AES"); - - // 0 bytes message - 128 bytes key - mac.init(key); - - mac.update(input0, 0, input0.length); - - byte[] out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k128_m0)) - { - fail("Failed - expected " + new String(Hex.encode(output_k128_m0)) - + " got " + new String(Hex.encode(out))); - } - - // 16 bytes message - 128 bytes key - mac.init(key); - - mac.update(input16, 0, input16.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k128_m16)) - { - fail("Failed - expected " + new String(Hex.encode(output_k128_m16)) - + " got " + new String(Hex.encode(out))); - } - - // 40 bytes message - 128 bytes key - mac.init(key); - - mac.update(input40, 0, input40.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k128_m40)) - { - fail("Failed - expected " + new String(Hex.encode(output_k128_m40)) - + " got " + new String(Hex.encode(out))); - } - - // 64 bytes message - 128 bytes key - mac.init(key); - - mac.update(input64, 0, input64.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k128_m64)) - { - fail("Failed - expected " + new String(Hex.encode(output_k128_m64)) - + " got " + new String(Hex.encode(out))); - } - - //192 bytes key - - key = new SecretKeySpec(keyBytes192, "AES"); - - // 0 bytes message - 192 bytes key - mac.init(key); - - mac.update(input0, 0, input0.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k192_m0)) - { - fail("Failed - expected " + new String(Hex.encode(output_k192_m0)) - + " got " + new String(Hex.encode(out))); - } - - // 16 bytes message - 192 bytes key - mac.init(key); - - mac.update(input16, 0, input16.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k192_m16)) - { - fail("Failed - expected " + new String(Hex.encode(output_k192_m16)) - + " got " + new String(Hex.encode(out))); - } - - // 40 bytes message - 192 bytes key - mac.init(key); - - mac.update(input40, 0, input40.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k192_m40)) - { - fail("Failed - expected " + new String(Hex.encode(output_k192_m40)) - + " got " + new String(Hex.encode(out))); - } - - // 64 bytes message - 192 bytes key - mac.init(key); - - mac.update(input64, 0, input64.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k192_m64)) - { - fail("Failed - expected " + new String(Hex.encode(output_k192_m64)) - + " got " + new String(Hex.encode(out))); - } - - //256 bytes key - - key = new SecretKeySpec(keyBytes256, "AES"); - - // 0 bytes message - 256 bytes key - mac.init(key); - - mac.update(input0, 0, input0.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k256_m0)) - { - fail("Failed - expected " + new String(Hex.encode(output_k256_m0)) - + " got " + new String(Hex.encode(out))); - } - - // 16 bytes message - 256 bytes key - mac.init(key); - - mac.update(input16, 0, input16.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k256_m16)) - { - fail("Failed - expected " + new String(Hex.encode(output_k256_m16)) - + " got " + new String(Hex.encode(out))); - } - - // 40 bytes message - 256 bytes key - mac.init(key); - - mac.update(input40, 0, input40.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k256_m40)) - { - fail("Failed - expected " + new String(Hex.encode(output_k256_m40)) - + " got " + new String(Hex.encode(out))); - } - - // 64 bytes message - 256 bytes key - mac.init(key); - - mac.update(input64, 0, input64.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_k256_m64)) - { - fail("Failed - expected " + new String(Hex.encode(output_k256_m64)) - + " got " + new String(Hex.encode(out))); - } - - mac = Mac.getInstance("DESedeCMAC", "BC"); - - //DESede - - key = new SecretKeySpec(keyBytes128, "DESede"); - - // 0 bytes message - 128 bytes key - mac.init(key); - - mac.update(input0, 0, input0.length); - - out = new byte[mac.getMacLength()]; - - mac.doFinal(out, 0); - - if (!areEqual(out, output_des_ede)) - { - fail("Failed - expected " + new String(Hex.encode(output_des_ede)) - + " got " + new String(Hex.encode(out))); - } - } - - public String getName() - { - return "CMac"; - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CMacTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CRL5Test.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CRL5Test.java deleted file mode 100644 index 8b1c022a..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CRL5Test.java +++ /dev/null @@ -1,268 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.security.Security; -import java.security.cert.CertificateFactory; -import java.security.cert.X509CRL; -import java.security.cert.X509CRLEntry; -import java.util.Iterator; -import java.util.Set; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTest; - -public class CRL5Test - extends SimpleTest -{ - byte[] inDirectCrl = Base64.decode( - "MIIdXjCCHMcCAQEwDQYJKoZIhvcNAQEFBQAwdDELMAkGA1UEBhMCREUxHDAaBgNV" - +"BAoUE0RldXRzY2hlIFRlbGVrb20gQUcxFzAVBgNVBAsUDlQtVGVsZVNlYyBUZXN0" - +"MS4wDAYHAoIGAQoHFBMBMTAeBgNVBAMUF1QtVGVsZVNlYyBUZXN0IERJUiA4OlBO" - +"Fw0wNjA4MDQwODQ1MTRaFw0wNjA4MDQxNDQ1MTRaMIIbfzB+AgQvrj/pFw0wMzA3" - +"MjIwNTQxMjhaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP+oXDTAzMDcyMjA1NDEyOFowZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/5xcNMDQwNDA1MTMxODE3WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/oFw0wNDA0" - +"MDUxMzE4MTdaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP+UXDTAzMDExMzExMTgxMVowZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/5hcNMDMwMTEzMTExODExWjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/jFw0wMzAx" - +"MTMxMTI2NTZaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP+QXDTAzMDExMzExMjY1NlowZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/4hcNMDQwNzEzMDc1ODM4WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/eFw0wMzAy" - +"MTcwNjMzMjVaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP98XDTAzMDIxNzA2MzMyNVowZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/0xcNMDMwMjE3MDYzMzI1WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/dFw0wMzAx" - +"MTMxMTI4MTRaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP9cXDTAzMDExMzExMjcwN1owZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/2BcNMDMwMTEzMTEyNzA3WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/VFw0wMzA0" - +"MzAxMjI3NTNaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP9YXDTAzMDQzMDEyMjc1M1owZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/xhcNMDMwMjEyMTM0NTQwWjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFUVEMgVGVzdCBDQSAxMTpQTjCBkAIEL64/xRcNMDMw" - +"MjEyMTM0NTQwWjB5MHcGA1UdHQEB/wRtMGukaTBnMQswCQYDVQQGEwJERTEcMBoG" - +"A1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEQMA4GA1UECxQHVGVsZVNlYzEoMAwG" - +"BwKCBgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNTpQTjB+AgQvrj/CFw0w" - +"MzAyMTIxMzA5MTZaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRww" - +"GgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNV" - +"BAMUEVRUQyBUZXN0IENBIDExOlBOMIGQAgQvrj/BFw0wMzAyMTIxMzA4NDBaMHkw" - +"dwYDVR0dAQH/BG0wa6RpMGcxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2No" - +"ZSBUZWxla29tIEFHMRAwDgYDVQQLFAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAY" - +"BgNVBAMUEVNpZ0cgVGVzdCBDQSA1OlBOMH4CBC+uP74XDTAzMDIxNzA2MzcyNVow" - +"ZzBlBgNVHR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRz" - +"Y2hlIFRlbGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRVFRDIFRlc3Qg" - +"Q0EgMTE6UE4wgZACBC+uP70XDTAzMDIxNzA2MzcyNVoweTB3BgNVHR0BAf8EbTBr" - +"pGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcx" - +"EDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBU" - +"ZXN0IENBIDU6UE4wgZACBC+uP7AXDTAzMDIxMjEzMDg1OVoweTB3BgNVHR0BAf8E" - +"bTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20g" - +"QUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2ln" - +"RyBUZXN0IENBIDU6UE4wgZACBC+uP68XDTAzMDIxNzA2MzcyNVoweTB3BgNVHR0B" - +"Af8EbTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVr" - +"b20gQUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQR" - +"U2lnRyBUZXN0IENBIDU6UE4wfgIEL64/kxcNMDMwNDEwMDUyNjI4WjBnMGUGA1Ud" - +"HQEB/wRbMFmkVzBVMQswCQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVs" - +"ZWtvbSBBRzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFUVEMgVGVzdCBDQSAxMTpQ" - +"TjCBkAIEL64/khcNMDMwNDEwMDUyNjI4WjB5MHcGA1UdHQEB/wRtMGukaTBnMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEQMA4GA1UE" - +"CxQHVGVsZVNlYzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0Eg" - +"NTpQTjB+AgQvrj8/Fw0wMzAyMjYxMTA0NDRaMGcwZQYDVR0dAQH/BFswWaRXMFUx" - +"CzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYH" - +"AoIGAQoHFBMBMTAYBgNVBAMUEVRUQyBUZXN0IENBIDExOlBOMIGQAgQvrj8+Fw0w" - +"MzAyMjYxMTA0NDRaMHkwdwYDVR0dAQH/BG0wa6RpMGcxCzAJBgNVBAYTAkRFMRww" - +"GgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMRAwDgYDVQQLFAdUZWxlU2VjMSgw" - +"DAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cgVGVzdCBDQSA1OlBOMH4CBC+uPs0X" - +"DTAzMDUyMDA1MjczNlowZzBlBgNVHR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUx" - +"HDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgG" - +"A1UEAxQRVFRDIFRlc3QgQ0EgMTE6UE4wgZACBC+uPswXDTAzMDUyMDA1MjczNlow" - +"eTB3BgNVHR0BAf8EbTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRz" - +"Y2hlIFRlbGVrb20gQUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwEx" - +"MBgGA1UEAxQRU2lnRyBUZXN0IENBIDY6UE4wfgIEL64+PBcNMDMwNjE3MTAzNDE2" - +"WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQswCQYDVQQGEwJERTEcMBoGA1UEChQTRGV1" - +"dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFUVEMgVGVz" - +"dCBDQSAxMTpQTjCBkAIEL64+OxcNMDMwNjE3MTAzNDE2WjB5MHcGA1UdHQEB/wRt" - +"MGukaTBnMQswCQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBB" - +"RzEQMA4GA1UECxQHVGVsZVNlYzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFTaWdH" - +"IFRlc3QgQ0EgNjpQTjCBkAIEL64+OhcNMDMwNjE3MTAzNDE2WjB5MHcGA1UdHQEB" - +"/wRtMGukaTBnMQswCQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtv" - +"bSBBRzEQMA4GA1UECxQHVGVsZVNlYzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFT" - +"aWdHIFRlc3QgQ0EgNjpQTjB+AgQvrj45Fw0wMzA2MTcxMzAxMDBaMGcwZQYDVR0d" - +"AQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxl" - +"a29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVRUQyBUZXN0IENBIDExOlBO" - +"MIGQAgQvrj44Fw0wMzA2MTcxMzAxMDBaMHkwdwYDVR0dAQH/BG0wa6RpMGcxCzAJ" - +"BgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMRAwDgYDVQQL" - +"FAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cgVGVzdCBDQSA2" - +"OlBOMIGQAgQvrj43Fw0wMzA2MTcxMzAxMDBaMHkwdwYDVR0dAQH/BG0wa6RpMGcx" - +"CzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMRAwDgYD" - +"VQQLFAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cgVGVzdCBD" - +"QSA2OlBOMIGQAgQvrj42Fw0wMzA2MTcxMzAxMDBaMHkwdwYDVR0dAQH/BG0wa6Rp" - +"MGcxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMRAw" - +"DgYDVQQLFAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cgVGVz" - +"dCBDQSA2OlBOMIGQAgQvrj4zFw0wMzA2MTcxMDM3NDlaMHkwdwYDVR0dAQH/BG0w" - +"a6RpMGcxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFH" - +"MRAwDgYDVQQLFAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cg" - +"VGVzdCBDQSA2OlBOMH4CBC+uPjEXDTAzMDYxNzEwNDI1OFowZzBlBgNVHR0BAf8E" - +"WzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20g" - +"QUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRVFRDIFRlc3QgQ0EgMTE6UE4wgZAC" - +"BC+uPjAXDTAzMDYxNzEwNDI1OFoweTB3BgNVHR0BAf8EbTBrpGkwZzELMAkGA1UE" - +"BhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxEDAOBgNVBAsUB1Rl" - +"bGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDY6UE4w" - +"gZACBC+uPakXDTAzMTAyMjExMzIyNFoweTB3BgNVHR0BAf8EbTBrpGkwZzELMAkG" - +"A1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxEDAOBgNVBAsU" - +"B1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDY6" - +"UE4wgZACBC+uPLIXDTA1MDMxMTA2NDQyNFoweTB3BgNVHR0BAf8EbTBrpGkwZzEL" - +"MAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxEDAOBgNV" - +"BAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENB" - +"IDY6UE4wgZACBC+uPKsXDTA0MDQwMjA3NTQ1M1oweTB3BgNVHR0BAf8EbTBrpGkw" - +"ZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxEDAO" - +"BgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0" - +"IENBIDY6UE4wgZACBC+uOugXDTA1MDEyNzEyMDMyNFoweTB3BgNVHR0BAf8EbTBr" - +"pGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcx" - +"EDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBU" - +"ZXN0IENBIDY6UE4wgZACBC+uOr4XDTA1MDIxNjA3NTcxNloweTB3BgNVHR0BAf8E" - +"bTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20g" - +"QUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2ln" - +"RyBUZXN0IENBIDY6UE4wgZACBC+uOqcXDTA1MDMxMDA1NTkzNVoweTB3BgNVHR0B" - +"Af8EbTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVr" - +"b20gQUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQR" - +"U2lnRyBUZXN0IENBIDY6UE4wgZACBC+uOjwXDTA1MDUxMTEwNDk0NloweTB3BgNV" - +"HR0BAf8EbTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UE" - +"AxQRU2lnRyBUZXN0IENBIDY6UE4wgaoCBC+sbdUXDTA1MTExMTEwMDMyMVowgZIw" - +"gY8GA1UdHQEB/wSBhDCBgaR/MH0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0" - +"c2NoZSBUZWxla29tIEFHMR8wHQYDVQQLFBZQcm9kdWt0emVudHJ1bSBUZWxlU2Vj" - +"MS8wDAYHAoIGAQoHFBMBMTAfBgNVBAMUGFRlbGVTZWMgUEtTIFNpZ0cgQ0EgMTpQ" - +"TjCBlQIEL64uaBcNMDYwMTIzMTAyNTU1WjB+MHwGA1UdHQEB/wRyMHCkbjBsMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEWMBQGA1UE" - +"CxQNWmVudHJhbGUgQm9ubjEnMAwGBwKCBgEKBxQTATEwFwYDVQQDFBBUVEMgVGVz" - +"dCBDQSA5OlBOMIGVAgQvribHFw0wNjA4MDEwOTQ4NDRaMH4wfAYDVR0dAQH/BHIw" - +"cKRuMGwxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFH" - +"MRYwFAYDVQQLFA1aZW50cmFsZSBCb25uMScwDAYHAoIGAQoHFBMBMTAXBgNVBAMU" - +"EFRUQyBUZXN0IENBIDk6UE6ggZswgZgwCwYDVR0UBAQCAhEMMB8GA1UdIwQYMBaA" - +"FANbyNumDI9545HwlCF26NuOJC45MA8GA1UdHAEB/wQFMAOEAf8wVwYDVR0SBFAw" - +"ToZMbGRhcDovL3Brc2xkYXAudHR0Yy5kZS9vdT1ULVRlbGVTZWMgVGVzdCBESVIg" - +"ODpQTixvPURldXRzY2hlIFRlbGVrb20gQUcsYz1kZTANBgkqhkiG9w0BAQUFAAOB" - +"gQBewL5gLFHpeOWO07Vk3Gg7pRDuAlvaovBH4coCyCWpk5jEhUfFSYEDuaQB7do4" - +"IlJmeTHvkI0PIZWJ7bwQ2PVdipPWDx0NVwS/Cz5jUKiS3BbAmZQZOueiKLFpQq3A" - +"b8aOHA7WHU4078/1lM+bgeu33Ln1CGykEbmSjA/oKPi/JA=="); - - byte[] directCRL = Base64.decode( - "MIIGXTCCBckCAQEwCgYGKyQDAwECBQAwdDELMAkGA1UEBhMCREUxHDAaBgNVBAoU" - +"E0RldXRzY2hlIFRlbGVrb20gQUcxFzAVBgNVBAsUDlQtVGVsZVNlYyBUZXN0MS4w" - +"DAYHAoIGAQoHFBMBMTAeBgNVBAMUF1QtVGVsZVNlYyBUZXN0IERJUiA4OlBOFw0w" - +"NjA4MDQwODQ1MTRaFw0wNjA4MDQxNDQ1MTRaMIIElTAVAgQvrj/pFw0wMzA3MjIw" - +"NTQxMjhaMBUCBC+uP+oXDTAzMDcyMjA1NDEyOFowFQIEL64/5xcNMDQwNDA1MTMx" - +"ODE3WjAVAgQvrj/oFw0wNDA0MDUxMzE4MTdaMBUCBC+uP+UXDTAzMDExMzExMTgx" - +"MVowFQIEL64/5hcNMDMwMTEzMTExODExWjAVAgQvrj/jFw0wMzAxMTMxMTI2NTZa" - +"MBUCBC+uP+QXDTAzMDExMzExMjY1NlowFQIEL64/4hcNMDQwNzEzMDc1ODM4WjAV" - +"AgQvrj/eFw0wMzAyMTcwNjMzMjVaMBUCBC+uP98XDTAzMDIxNzA2MzMyNVowFQIE" - +"L64/0xcNMDMwMjE3MDYzMzI1WjAVAgQvrj/dFw0wMzAxMTMxMTI4MTRaMBUCBC+u" - +"P9cXDTAzMDExMzExMjcwN1owFQIEL64/2BcNMDMwMTEzMTEyNzA3WjAVAgQvrj/V" - +"Fw0wMzA0MzAxMjI3NTNaMBUCBC+uP9YXDTAzMDQzMDEyMjc1M1owFQIEL64/xhcN" - +"MDMwMjEyMTM0NTQwWjAVAgQvrj/FFw0wMzAyMTIxMzQ1NDBaMBUCBC+uP8IXDTAz" - +"MDIxMjEzMDkxNlowFQIEL64/wRcNMDMwMjEyMTMwODQwWjAVAgQvrj++Fw0wMzAy" - +"MTcwNjM3MjVaMBUCBC+uP70XDTAzMDIxNzA2MzcyNVowFQIEL64/sBcNMDMwMjEy" - +"MTMwODU5WjAVAgQvrj+vFw0wMzAyMTcwNjM3MjVaMBUCBC+uP5MXDTAzMDQxMDA1" - +"MjYyOFowFQIEL64/khcNMDMwNDEwMDUyNjI4WjAVAgQvrj8/Fw0wMzAyMjYxMTA0" - +"NDRaMBUCBC+uPz4XDTAzMDIyNjExMDQ0NFowFQIEL64+zRcNMDMwNTIwMDUyNzM2" - +"WjAVAgQvrj7MFw0wMzA1MjAwNTI3MzZaMBUCBC+uPjwXDTAzMDYxNzEwMzQxNlow" - +"FQIEL64+OxcNMDMwNjE3MTAzNDE2WjAVAgQvrj46Fw0wMzA2MTcxMDM0MTZaMBUC" - +"BC+uPjkXDTAzMDYxNzEzMDEwMFowFQIEL64+OBcNMDMwNjE3MTMwMTAwWjAVAgQv" - +"rj43Fw0wMzA2MTcxMzAxMDBaMBUCBC+uPjYXDTAzMDYxNzEzMDEwMFowFQIEL64+" - +"MxcNMDMwNjE3MTAzNzQ5WjAVAgQvrj4xFw0wMzA2MTcxMDQyNThaMBUCBC+uPjAX" - +"DTAzMDYxNzEwNDI1OFowFQIEL649qRcNMDMxMDIyMTEzMjI0WjAVAgQvrjyyFw0w" - +"NTAzMTEwNjQ0MjRaMBUCBC+uPKsXDTA0MDQwMjA3NTQ1M1owFQIEL6466BcNMDUw" - +"MTI3MTIwMzI0WjAVAgQvrjq+Fw0wNTAyMTYwNzU3MTZaMBUCBC+uOqcXDTA1MDMx" - +"MDA1NTkzNVowFQIEL646PBcNMDUwNTExMTA0OTQ2WjAVAgQvrG3VFw0wNTExMTEx" - +"MDAzMjFaMBUCBC+uLmgXDTA2MDEyMzEwMjU1NVowFQIEL64mxxcNMDYwODAxMDk0" - +"ODQ0WqCBijCBhzALBgNVHRQEBAICEQwwHwYDVR0jBBgwFoAUA1vI26YMj3njkfCU" - +"IXbo244kLjkwVwYDVR0SBFAwToZMbGRhcDovL3Brc2xkYXAudHR0Yy5kZS9vdT1U" - +"LVRlbGVTZWMgVGVzdCBESVIgODpQTixvPURldXRzY2hlIFRlbGVrb20gQUcsYz1k" - +"ZTAKBgYrJAMDAQIFAAOBgQArj4eMlbAwuA2aS5O4UUUHQMKKdK/dtZi60+LJMiMY" - +"ojrMIf4+ZCkgm1Ca0Cd5T15MJxVHhh167Ehn/Hd48pdnAP6Dfz/6LeqkIHGWMHR+" - +"z6TXpwWB+P4BdUec1ztz04LypsznrHcLRa91ixg9TZCb1MrOG+InNhleRs1ImXk8" - +"MQ=="); - - - public String getName() - { - return "CRL5"; - } - - public void indirectCRLTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - ByteArrayInputStream in = new ByteArrayInputStream(inDirectCrl); - X509CRL crl = (X509CRL) cf.generateCRL(in); - Set set = crl.getRevokedCertificates(); - Iterator it = set.iterator(); - while (it.hasNext()) - { - if (((X509CRLEntry)it.next()).getCertificateIssuer() == null) - { - fail("certificate issuer CRL entry extension is null"); - } - } - } - - public void directCRLTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - ByteArrayInputStream in = new ByteArrayInputStream(directCRL); - X509CRL crl = (X509CRL) cf.generateCRL(in); - Set set = crl.getRevokedCertificates(); - Iterator it = set.iterator(); - while (it.hasNext()) - { - if (((X509CRLEntry)it.next()).getCertificateIssuer() != null) - { - fail("certificate issuer CRL entry extension is not null"); - } - } - } - - public void performTest() - throws Exception - { - indirectCRLTest(); - directCRLTest(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CRL5Test()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CamelliaTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CamelliaTest.java deleted file mode 100644 index 9ee56c77..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CamelliaTest.java +++ /dev/null @@ -1,189 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.asn1.ntt.NTTObjectIdentifiers; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.spec.SecretKeySpec; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.security.Key; -import java.security.Security; - -/** - * basic test class for Camellia - */ -public class CamelliaTest - extends BaseBlockCipherTest -{ - static String[] cipherTests = - { - "128", - "0123456789abcdeffedcba9876543210", - "0123456789abcdeffedcba9876543210", - "67673138549669730857065648eabe43", - "192", - "0123456789abcdeffedcba98765432100011223344556677", - "0123456789abcdeffedcba9876543210", - "b4993401b3e996f84ee5cee7d79b09b9", - "256", - "0123456789abcdeffedcba987654321000112233445566778899aabbccddeeff", - "0123456789abcdeffedcba9876543210", - "9acc237dff16d76c20ef7c919e3a7509", - }; - - public CamelliaTest() - { - super("Camellia"); - } - - public void test( - int strength, - byte[] keyBytes, - byte[] input, - byte[] output) - throws Exception - { - Key key; - Cipher in, out; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - key = new SecretKeySpec(keyBytes, "Camellia"); - - in = Cipher.getInstance("Camellia/ECB/NoPadding", "BC"); - out = Cipher.getInstance("Camellia/ECB/NoPadding", "BC"); - - try - { - out.init(Cipher.ENCRYPT_MODE, key); - } - catch (Exception e) - { - fail("Camellia failed initialisation - " + e.toString(), e); - } - - try - { - in.init(Cipher.DECRYPT_MODE, key); - } - catch (Exception e) - { - fail("Camellia failed initialisation - " + e.toString(), e); - } - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - try - { - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - } - catch (IOException e) - { - fail("Camellia failed encryption - " + e.toString(), e); - } - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!areEqual(bytes, output)) - { - fail("Camellia failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - try - { - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - } - catch (Exception e) - { - fail("Camellia failed encryption - " + e.toString(), e); - } - - if (!areEqual(bytes, input)) - { - fail("Camellia failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - } - - public void performTest() - throws Exception - { - for (int i = 0; i != cipherTests.length; i += 4) - { - test(Integer.parseInt(cipherTests[i]), - Hex.decode(cipherTests[i + 1]), - Hex.decode(cipherTests[i + 2]), - Hex.decode(cipherTests[i + 3])); - } - - byte[] kek1 = Hex.decode("000102030405060708090a0b0c0d0e0f"); - byte[] in1 = Hex.decode("00112233445566778899aabbccddeeff"); - byte[] out1 = Hex.decode("635d6ac46eedebd3a7f4a06421a4cbd1746b24795ba2f708"); - - wrapTest(1, "CamelliaWrap", kek1, in1, out1); - - String[] oids = { - NTTObjectIdentifiers.id_camellia128_cbc.getId(), - NTTObjectIdentifiers.id_camellia192_cbc.getId(), - NTTObjectIdentifiers.id_camellia256_cbc.getId() - }; - - String[] names = { - "Camellia/CBC/PKCS7Padding", - "Camellia/CBC/PKCS7Padding", - "Camellia/CBC/PKCS7Padding" - }; - - oidTest(oids, names, 1); - - String[] wrapOids = { - NTTObjectIdentifiers.id_camellia128_wrap.getId(), - NTTObjectIdentifiers.id_camellia192_wrap.getId(), - NTTObjectIdentifiers.id_camellia256_wrap.getId() - }; - - wrapOidTest(wrapOids, "CamelliaWrap"); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CamelliaTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathBuilderTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathBuilderTest.java deleted file mode 100644 index 85f4fad4..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathBuilderTest.java +++ /dev/null @@ -1,142 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.math.BigInteger; -import java.security.KeyPair; -import java.security.Security; -import java.security.cert.CertPath; -import java.security.cert.CertPathBuilder; -import java.security.cert.CertStore; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.PKIXBuilderParameters; -import java.security.cert.PKIXCertPathBuilderResult; -import java.security.cert.TrustAnchor; -import java.security.cert.X509CRL; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTest; - -public class CertPathBuilderTest - extends SimpleTest -{ - - private void baseTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - // initialise CertStore - X509Certificate rootCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.rootCertBin)); - X509Certificate interCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.interCertBin)); - X509Certificate finalCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.finalCertBin)); - X509CRL rootCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(CertPathTest.rootCrlBin)); - X509CRL interCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(CertPathTest.interCrlBin)); - List list = new ArrayList(); - list.add(rootCert); - list.add(interCert); - list.add(finalCert); - list.add(rootCrl); - list.add(interCrl); - CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters(list); - CertStore store = CertStore.getInstance("Collection", ccsp, "BC"); - Calendar validDate = Calendar.getInstance(); - validDate.set(2008,8,4,14,49,10); - - //Searching for rootCert by subjectDN without CRL - Set trust = new HashSet(); - trust.add(new TrustAnchor(rootCert, null)); - - CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX","BC"); - X509CertSelector targetConstraints = new X509CertSelector(); - targetConstraints.setSubject(finalCert.getSubjectX500Principal().getEncoded()); - PKIXBuilderParameters params = new PKIXBuilderParameters(trust, targetConstraints); - params.addCertStore(store); - params.setDate(validDate.getTime()); - PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult) cpb.build(params); - CertPath path = result.getCertPath(); - - if (path.getCertificates().size() != 2) - { - fail("wrong number of certs in baseTest path"); - } - } - - private void v0Test() - throws Exception - { - // create certificates and CRLs - KeyPair rootPair = TestUtils.generateRSAKeyPair(); - KeyPair interPair = TestUtils.generateRSAKeyPair(); - KeyPair endPair = TestUtils.generateRSAKeyPair(); - - X509Certificate rootCert = TestUtils.generateRootCert(rootPair); - X509Certificate interCert = TestUtils.generateIntermediateCert(interPair.getPublic(), rootPair.getPrivate(), rootCert); - X509Certificate endCert = TestUtils.generateEndEntityCert(endPair.getPublic(), interPair.getPrivate(), interCert); - - BigInteger revokedSerialNumber = BigInteger.valueOf(2); - X509CRL rootCRL = TestUtils.createCRL(rootCert, rootPair.getPrivate(), revokedSerialNumber); - X509CRL interCRL = TestUtils.createCRL(interCert, interPair.getPrivate(), revokedSerialNumber); - - // create CertStore to support path building - List list = new ArrayList(); - - list.add(rootCert); - list.add(interCert); - list.add(endCert); - list.add(rootCRL); - list.add(interCRL); - - CollectionCertStoreParameters params = new CollectionCertStoreParameters(list); - CertStore store = CertStore.getInstance("Collection", params); - - // build the path - CertPathBuilder builder = CertPathBuilder.getInstance("PKIX", "BC"); - X509CertSelector pathConstraints = new X509CertSelector(); - - pathConstraints.setSubject(endCert.getSubjectX500Principal().getEncoded()); - - PKIXBuilderParameters buildParams = new PKIXBuilderParameters(Collections.singleton(new TrustAnchor(rootCert, null)), pathConstraints); - - buildParams.addCertStore(store); - buildParams.setDate(new Date()); - - PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult)builder.build(buildParams); - CertPath path = result.getCertPath(); - - if (path.getCertificates().size() != 2) - { - fail("wrong number of certs in v0Test path"); - } - } - - public void performTest() - throws Exception - { - baseTest(); - v0Test(); - } - - public String getName() - { - return "CertPathBuilder"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CertPathBuilderTest()); - } -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathTest.java deleted file mode 100644 index 5e00b618..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathTest.java +++ /dev/null @@ -1,369 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectOutputStream; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.PublicKey; -import java.security.Security; -import java.security.SignatureException; -import java.security.cert.CertPath; -import java.security.cert.CertPathBuilder; -import java.security.cert.CertPathBuilderException; -import java.security.cert.CertPathBuilderResult; -import java.security.cert.CertStore; -import java.security.cert.Certificate; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.PKIXBuilderParameters; -import java.security.cert.TrustAnchor; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; -import java.util.Vector; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTest; - -public class CertPathTest - extends SimpleTest -{ - public static byte[] rootCertBin = Base64.decode( - "MIIBqzCCARQCAQEwDQYJKoZIhvcNAQEFBQAwHjEcMBoGA1UEAxMTVGVzdCBDQSBDZXJ0aWZpY2F0ZTAeFw0wODA5MDQwNDQ1MDhaFw0wODA5MTEwNDQ1MDhaMB4xHDAaBgNVBAMTE1Rlc3QgQ0EgQ2VydGlmaWNhdGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMRLUjhPe4YUdLo6EcjKcWUOG7CydFTH53Pr1lWjOkbmszYDpkhCTT9LOsI+disk18nkBxSl8DAHTqV+VxtuTPt64iyi10YxyDeep+DwZG/f8cVQv97U3hA9cLurZ2CofkMLGr6JpSGCMZ9FcstcTdHB4lbErIJ54YqfF4pNOs4/AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAgyrTEFY7ALpeY59jL6xFOLpuPqoBOWrUWv6O+zy5BCU0qiX71r3BpigtxRj+DYcfLIM9FNERDoHu3TthD3nwYWUBtFX8N0QUJIdJabxqAMhLjSC744koiFpCYse5Ye3ZvEdFwDzgAQsJTp5eFGgTZPkPzcdhkFJ2p9+OWs+cb24="); - - - static byte[] interCertBin = Base64.decode( - "MIICSzCCAbSgAwIBAgIBATANBgkqhkiG9w0BAQUFADAeMRwwGgYDVQQDExNUZXN0IENBIENlcnRpZmljYXRlMB4XDTA4MDkwNDA0NDUwOFoXDTA4MDkxMTA0NDUwOFowKDEmMCQGA1UEAxMdVGVzdCBJbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAISS9OOZ2wxzdWny9aVvk4Joq+dwSJ+oqvHUxX3PflZyuiLiCBUOUE4q59dGKdtNX5fIfwyK3cpV0e73Y/0fwfM3m9rOWFrCKOhfeswNTes0w/2PqPVVDDsF/nj7NApuqXwioeQlgTL251RDF4sVoxXqAU7lRkcqwZt3mwqS4KTJAgMBAAGjgY4wgYswRgYDVR0jBD8wPYAUhv8BOT27EB9JaCccJD4YASPP5XWhIqQgMB4xHDAaBgNVBAMTE1Rlc3QgQ0EgQ2VydGlmaWNhdGWCAQEwHQYDVR0OBBYEFL/IwAGOkHzaQyPZegy79CwM5oTFMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4GBAE4TRgUz4sUvZyVdZxqV+XyNRnqXAeLOOqFGYv2D96tQrS+zjd0elVlT6lFrtchZdOmmX7R6/H/tjMWMcTBICZyRYrvK8cCAmDOI+EIdq5p6lj2Oq6Pbw/wruojAqNrpaR6IkwNpWtdOSSupv4IJL+YU9q2YFTh4R1j3tOkPoFGr"); - - static byte[] finalCertBin = Base64.decode( - "MIICRjCCAa+gAwIBAgIBATANBgkqhkiG9w0BAQUFADAoMSYwJAYDVQQDEx1UZXN0IEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0ZTAeFw0wODA5MDQwNDQ1MDhaFw0wODA5MTEwNDQ1MDhaMB8xHTAbBgNVBAMTFFRlc3QgRW5kIENlcnRpZmljYXRlMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChpUeo0tPYywWKiLlbWKNJBcCpSaLSlaZ+4+yer1AxI5yJIVHP6SAlBghlbD5Qne5ImnN/15cz1xwYAiul6vGKJkVPlFEe2Mr+g/J/WJPQQPsjbZ1G+vxbAwXEDA4KaQrnpjRZFq+CdKHwOjuPLYS/MYQNgdIvDVEQcTbPQ8GaiQIDAQABo4GIMIGFMEYGA1UdIwQ/MD2AFL/IwAGOkHzaQyPZegy79CwM5oTFoSKkIDAeMRwwGgYDVQQDExNUZXN0IENBIENlcnRpZmljYXRlggEBMB0GA1UdDgQWBBSVkw+VpqBf3zsLc/9GdkK9TzHPwDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIFoDANBgkqhkiG9w0BAQUFAAOBgQBLv/0bVDjzTs/y1vN3FUiZNknEbzupIZduTuXJjqv/vBX+LDPjUfu/+iOCXOSKoRn6nlOWhwB1z6taG2usQkFG8InMkRcPREi2uVgFdhJ/1C3dAWhsdlubjdL926bftXvxnx/koDzyrePW5U96RlOQM2qLvbaky2Giz6hrc3Wl+w=="); - public static byte[] rootCrlBin = Base64.decode( - "MIIBYjCBzAIBATANBgkqhkiG9w0BAQsFADAeMRwwGgYDVQQDExNUZXN0IENBIENlcnRpZmljYXRlFw0wODA5MDQwNDQ1MDhaFw0wODA5MDQwNzMxNDhaMCIwIAIBAhcNMDgwOTA0MDQ0NTA4WjAMMAoGA1UdFQQDCgEJoFYwVDBGBgNVHSMEPzA9gBSG/wE5PbsQH0loJxwkPhgBI8/ldaEipCAwHjEcMBoGA1UEAxMTVGVzdCBDQSBDZXJ0aWZpY2F0ZYIBATAKBgNVHRQEAwIBATANBgkqhkiG9w0BAQsFAAOBgQCAbaFCo0BNG4AktVf6jjBLeawP1u0ELYkOCEGvYZE0mBpQ+OvFg7subZ6r3lRIj030nUli28sPFtu5ZQMBNcpE4nS1ziF44RfT3Lp5UgHx9x17Krz781iEyV+7zU8YxYMY9wULD+DCuK294kGKIssVNbmTYXZatBNoXQN5CLIocA=="); - static byte[] interCrlBin = Base64.decode( - "MIIBbDCB1gIBATANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDEx1UZXN0IEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0ZRcNMDgwOTA0MDQ0NTA4WhcNMDgwOTA0MDczMTQ4WjAiMCACAQIXDTA4MDkwNDA0NDUwOFowDDAKBgNVHRUEAwoBCaBWMFQwRgYDVR0jBD8wPYAUv8jAAY6QfNpDI9l6DLv0LAzmhMWhIqQgMB4xHDAaBgNVBAMTE1Rlc3QgQ0EgQ2VydGlmaWNhdGWCAQEwCgYDVR0UBAMCAQEwDQYJKoZIhvcNAQELBQADgYEAEVCr5TKs5yguGgLH+dBzmSPoeSIWJFLsgWwJEit/iUDJH3dgYmaczOcGxIDtbYYHLWIHM+P2YRyQz3MEkCXEgm/cx4y7leAmux5l+xQWgmxFPz+197vaphPeCZo+B7V1CWtm518gcq4mrs9ovfgNqgyFj7KGjcBpWdJE32KMt50="); - - /* - * certpath with a circular reference - */ - static byte[] certA = Base64.decode( - "MIIC6jCCAlOgAwIBAgIBBTANBgkqhkiG9w0BAQUFADCBjTEPMA0GA1UEAxMGSW50" - + "ZXIzMQswCQYDVQQGEwJDSDEPMA0GA1UEBxMGWnVyaWNoMQswCQYDVQQIEwJaSDEX" - + "MBUGA1UEChMOUHJpdmFzcGhlcmUgQUcxEDAOBgNVBAsTB1Rlc3RpbmcxJDAiBgkq" - + "hkiG9w0BCQEWFWFybWluQHByaXZhc3BoZXJlLmNvbTAeFw0wNzA0MDIwODQ2NTda" - + "Fw0xNzAzMzAwODQ0MDBaMIGlMScwJQYDVQQDHh4AQQByAG0AaQBuACAASADkAGIA" - + "ZQByAGwAaQBuAGcxCzAJBgNVBAYTAkNIMQ8wDQYDVQQHEwZadXJpY2gxCzAJBgNV" - + "BAgTAlpIMRcwFQYDVQQKEw5Qcml2YXNwaGVyZSBBRzEQMA4GA1UECxMHVGVzdGlu" - + "ZzEkMCIGCSqGSIb3DQEJARYVYXJtaW5AcHJpdmFzcGhlcmUuY29tMIGfMA0GCSqG" - + "SIb3DQEBAQUAA4GNADCBiQKBgQCfHfyVs5dbxG35H/Thd29qR4NZU88taCu/OWA1" - + "GdACI02lXWYpmLWiDgnU0ULP+GG8OnVp1IES9fz2zcrXKQ19xZzsen/To3h5sNte" - + "cJpS00XMM24q/jDwy5NvkBP9YIfFKQ1E/0hFHXcqwlw+b/y/v6YGsZCU2h6QDzc4" - + "5m0+BwIDAQABo0AwPjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIE8DAeBglg" - + "hkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMA0GCSqGSIb3DQEBBQUAA4GBAJEu" - + "KiSfIwsY7SfobMLrv2v/BtLhGLi4RnmjiwzBhuv5rn4rRfBpq1ppmqQMJ2pmA67v" - + "UWCY+mNwuyjHyivpCCyJGsZ9d5H09g2vqxzkDBMz7X9VNMZYFH8j/R3/Cfvqks31" - + "z0OFslJkeKLa1I0P/dfVHsRKNkLRT3Ws5LKksErQ"); - - static byte[] certB = Base64.decode( - "MIICtTCCAh6gAwIBAgIBBDANBgkqhkiG9w0BAQQFADCBjTEPMA0GA1UEAxMGSW50" - + "ZXIyMQswCQYDVQQGEwJDSDEPMA0GA1UEBxMGWnVyaWNoMQswCQYDVQQIEwJaSDEX" - + "MBUGA1UEChMOUHJpdmFzcGhlcmUgQUcxEDAOBgNVBAsTB1Rlc3RpbmcxJDAiBgkq" - + "hkiG9w0BCQEWFWFybWluQHByaXZhc3BoZXJlLmNvbTAeFw0wNzA0MDIwODQ2Mzha" - + "Fw0xNzAzMzAwODQ0MDBaMIGNMQ8wDQYDVQQDEwZJbnRlcjMxCzAJBgNVBAYTAkNI" - + "MQ8wDQYDVQQHEwZadXJpY2gxCzAJBgNVBAgTAlpIMRcwFQYDVQQKEw5Qcml2YXNw" - + "aGVyZSBBRzEQMA4GA1UECxMHVGVzdGluZzEkMCIGCSqGSIb3DQEJARYVYXJtaW5A" - + "cHJpdmFzcGhlcmUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxCXIB" - + "QRnmVvl2h7Q+0SsRxDLnyM1dJG9jMa+UCCmHy0k/ZHs5VirSbjEJSjkQ9BGeh9SC" - + "7JwbMpXO7UE+gcVc2RnWUY+MA+fWIeTV4KtkYA8WPu8wVGCXbN8wwh/StOocszxb" - + "g+iLvGeh8CYSRqg6QN3S/02etH3o8H4e7Z0PZwIDAQABoyMwITAPBgNVHRMBAf8E" - + "BTADAQH/MA4GA1UdDwEB/wQEAwIB9jANBgkqhkiG9w0BAQQFAAOBgQCtWdirSsmt" - + "+CBBCNn6ZnbU3QqQfiiQIomjenNEHESJgaS/+PvPE5i3xWFXsunTHLW321/Km16I" - + "7+ZvT8Su1cqHg79NAT8QB0yke1saKSy2C0Pic4HwrNqVBWFNSxMU0hQzpx/ZXDbZ" - + "DqIXAp5EfyRYBy2ul+jm6Rot6aFgzuopKg=="); - - static byte[] certC = Base64.decode( - "MIICtTCCAh6gAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBjTEPMA0GA1UEAxMGSW50" - + "ZXIxMQswCQYDVQQGEwJDSDEPMA0GA1UEBxMGWnVyaWNoMQswCQYDVQQIEwJaSDEX" - + "MBUGA1UEChMOUHJpdmFzcGhlcmUgQUcxEDAOBgNVBAsTB1Rlc3RpbmcxJDAiBgkq" - + "hkiG9w0BCQEWFWFybWluQHByaXZhc3BoZXJlLmNvbTAeFw0wNzA0MDIwODQ0Mzla" - + "Fw0xNzAzMzAwODQ0MDBaMIGNMQ8wDQYDVQQDEwZJbnRlcjIxCzAJBgNVBAYTAkNI" - + "MQ8wDQYDVQQHEwZadXJpY2gxCzAJBgNVBAgTAlpIMRcwFQYDVQQKEw5Qcml2YXNw" - + "aGVyZSBBRzEQMA4GA1UECxMHVGVzdGluZzEkMCIGCSqGSIb3DQEJARYVYXJtaW5A" - + "cHJpdmFzcGhlcmUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD0rLr6" - + "f2/ONeJzTb0q9M/NNX+MnAFMSqiQGVBkT76u5nOH4KLkpHXkzI82JI7GuQMzoT3a" - + "+RP1hO6FneO92ms2soC6xiOFb4EC69Dfhh87Nww5O35JxVF0bzmbmIAWd6P/7zGh" - + "nd2S4tKkaZcubps+C0j9Fgi0hipVicAOUVVoDQIDAQABoyMwITAPBgNVHRMBAf8E" - + "BTADAQH/MA4GA1UdDwEB/wQEAwIB9jANBgkqhkiG9w0BAQQFAAOBgQCLPvc1IMA4" - + "YP+PmnEldyUoRWRnvPWjBGeu0WheBP7fdcnGBf93Nmc5j68ZN+eTZ5VMuZ99YdvH" - + "CXGNX6oodONLU//LlFKdLl5xjLAS5X9p1RbOEGytnalqeiEpjk4+C/7rIBG1kllO" - + "dItmI6LlEMV09Hkpg6ZRAUmRkb8KrM4X7A=="); - - static byte[] certD = Base64.decode( - "MIICtTCCAh6gAwIBAgIBBjANBgkqhkiG9w0BAQQFADCBjTEPMA0GA1UEAxMGSW50" - + "ZXIzMQswCQYDVQQGEwJDSDEPMA0GA1UEBxMGWnVyaWNoMQswCQYDVQQIEwJaSDEX" - + "MBUGA1UEChMOUHJpdmFzcGhlcmUgQUcxEDAOBgNVBAsTB1Rlc3RpbmcxJDAiBgkq" - + "hkiG9w0BCQEWFWFybWluQHByaXZhc3BoZXJlLmNvbTAeFw0wNzA0MDIwODQ5NTNa" - + "Fw0xNzAzMzAwODQ0MDBaMIGNMQ8wDQYDVQQDEwZJbnRlcjExCzAJBgNVBAYTAkNI" - + "MQ8wDQYDVQQHEwZadXJpY2gxCzAJBgNVBAgTAlpIMRcwFQYDVQQKEw5Qcml2YXNw" - + "aGVyZSBBRzEQMA4GA1UECxMHVGVzdGluZzEkMCIGCSqGSIb3DQEJARYVYXJtaW5A" - + "cHJpdmFzcGhlcmUuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCae3TP" - + "jIVKeASqvNabaiUHAMGUgFxB7L0yUsIj39azLcLtUj4S7XkDf7SMGtYV0JY1XNaQ" - + "sHJAsnJivDZc50oiYvqDYfgFZx5+AsN5l5X5rjRzs/OX+Jo+k1OgsIyu6+mf9Kfb" - + "5IdWOVB2EcOg4f9tPjLM8CIj9Pp7RbKLyqUUgwIDAQABoyMwITAPBgNVHRMBAf8E" - + "BTADAQH/MA4GA1UdDwEB/wQEAwIB9jANBgkqhkiG9w0BAQQFAAOBgQCgr9kUdWUT" - + "Lt9UcztSzR3pnHRsyvS0E/z850OKQKS5/VxLEalpFvhj+3EcZ7Y6mFxaaS2B7vXg" - + "2YWyqV1PRb6iF7/u9EXkpSTKGrJahwANirCa3V/HTUuPdCE2GITlnWI8h3eVA+xQ" - + "D4LF0PXHOkXbwmhXRSb10lW1bSGkUxE9jg=="); - - private void testExceptions() - throws Exception - { - byte[] enc = { (byte)0, (byte)2, (byte)3, (byte)4, (byte)5 }; - MyCertPath mc = new MyCertPath(enc); - ByteArrayOutputStream os = new ByteArrayOutputStream(); - ByteArrayInputStream is; - byte[] arr; - - ObjectOutputStream oOut = new ObjectOutputStream(os); - oOut.writeObject(mc); - oOut.flush(); - oOut.close(); - - try - { - CertificateFactory cFac = CertificateFactory.getInstance("X.509", - "BC"); - arr = os.toByteArray(); - is = new ByteArrayInputStream(arr); - cFac.generateCertPath(is); - } - catch (CertificateException e) - { - // ignore okay - } - - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - List certCol = new ArrayList(); - - certCol.add(cf.generateCertificate(new ByteArrayInputStream(certA))); - certCol.add(cf.generateCertificate(new ByteArrayInputStream(certB))); - certCol.add(cf.generateCertificate(new ByteArrayInputStream(certC))); - certCol.add(cf.generateCertificate(new ByteArrayInputStream(certD))); - - CertPathBuilder pathBuilder = CertPathBuilder.getInstance("PKIX", "BC"); - X509CertSelector select = new X509CertSelector(); - select.setSubject(((X509Certificate)certCol.get(0)).getSubjectX500Principal().getEncoded()); - - Set trustanchors = new HashSet(); - trustanchors.add(new TrustAnchor((X509Certificate)cf.generateCertificate(new ByteArrayInputStream(rootCertBin)), null)); - - CertStore certStore = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certCol)); - - PKIXBuilderParameters params = new PKIXBuilderParameters(trustanchors, select); - params.addCertStore(certStore); - - try - { - CertPathBuilderResult result = pathBuilder.build(params); - CertPath path = result.getCertPath(); - fail("found cert path in circular set"); - } - catch (CertPathBuilderException e) - { - // expected - } - } - - public void performTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate rootCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(rootCertBin)); - X509Certificate interCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(interCertBin)); - X509Certificate finalCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(finalCertBin)); - - //Testing CertPath generation from List - List list = new ArrayList(); - list.add(interCert); - CertPath certPath1 = cf.generateCertPath(list); - - //Testing CertPath encoding as PkiPath - byte[] encoded = certPath1.getEncoded("PkiPath"); - - //Testing CertPath generation from InputStream - ByteArrayInputStream inStream = new ByteArrayInputStream(encoded); - CertPath certPath2 = cf.generateCertPath(inStream, "PkiPath"); - - //Comparing both CertPathes - if (!certPath2.equals(certPath1)) - { - fail("CertPath differ after encoding and decoding."); - } - - encoded = certPath1.getEncoded("PKCS7"); - - //Testing CertPath generation from InputStream - inStream = new ByteArrayInputStream(encoded); - certPath2 = cf.generateCertPath(inStream, "PKCS7"); - - //Comparing both CertPathes - if (!certPath2.equals(certPath1)) - { - fail("CertPath differ after encoding and decoding."); - } - - encoded = certPath1.getEncoded("PEM"); - - //Testing CertPath generation from InputStream - inStream = new ByteArrayInputStream(encoded); - certPath2 = cf.generateCertPath(inStream, "PEM"); - - //Comparing both CertPathes - if (!certPath2.equals(certPath1)) - { - fail("CertPath differ after encoding and decoding."); - } - - // - // empty list test - // - list = new ArrayList(); - - CertPath certPath = CertificateFactory.getInstance("X.509","BC").generateCertPath(list); - if (certPath.getCertificates().size() != 0) - { - fail("list wrong size."); - } - - // - // exception tests - // - testExceptions(); - } - - public String getName() - { - return "CertPath"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CertPathTest()); - } - - private static class MyCertificate extends Certificate - { - private final byte[] encoding; - - public MyCertificate(String type, byte[] encoding) - { - super(type); - // don't copy to allow null parameter in test - this.encoding = encoding; - } - - public byte[] getEncoded() throws CertificateEncodingException - { - // do copy to force NPE in test - return (byte[])encoding.clone(); - } - - public void verify(PublicKey key) throws CertificateException, - NoSuchAlgorithmException, InvalidKeyException, - NoSuchProviderException, SignatureException - { - } - - public void verify(PublicKey key, String sigProvider) - throws CertificateException, NoSuchAlgorithmException, - InvalidKeyException, NoSuchProviderException, - SignatureException - { - } - - public String toString() - { - return "[My test Certificate, type: " + getType() + "]"; - } - - public PublicKey getPublicKey() - { - return new PublicKey() - { - public String getAlgorithm() - { - return "TEST"; - } - - public byte[] getEncoded() - { - return new byte[] { (byte)1, (byte)2, (byte)3 }; - } - - public String getFormat() - { - return "TEST_FORMAT"; - } - }; - } - } - - private static class MyCertPath extends CertPath - { - private final Vector certificates; - - private final Vector encodingNames; - - private final byte[] encoding; - - public MyCertPath(byte[] encoding) - { - super("MyEncoding"); - this.encoding = encoding; - certificates = new Vector(); - certificates.add(new MyCertificate("MyEncoding", encoding)); - encodingNames = new Vector(); - encodingNames.add("MyEncoding"); - } - - public List getCertificates() - { - return Collections.unmodifiableList(certificates); - } - - public byte[] getEncoded() throws CertificateEncodingException - { - return (byte[])encoding.clone(); - } - - public byte[] getEncoded(String encoding) - throws CertificateEncodingException - { - if (getType().equals(encoding)) - { - return (byte[])this.encoding.clone(); - } - throw new CertificateEncodingException("Encoding not supported: " - + encoding); - } - - public Iterator getEncodings() - { - return Collections.unmodifiableCollection(encodingNames).iterator(); - } - } -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathValidatorTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathValidatorTest.java deleted file mode 100644 index d1857b83..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertPathValidatorTest.java +++ /dev/null @@ -1,395 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.security.PublicKey; -import java.security.Security; -import java.security.cert.CertPath; -import java.security.cert.CertPathValidator; -import java.security.cert.CertPathValidatorException; -import java.security.cert.CertStore; -import java.security.cert.CertStoreParameters; -import java.security.cert.Certificate; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.PKIXBuilderParameters; -import java.security.cert.PKIXCertPathChecker; -import java.security.cert.PKIXCertPathValidatorResult; -import java.security.cert.PKIXParameters; -import java.security.cert.PolicyNode; -import java.security.cert.TrustAnchor; -import java.security.cert.X509CRL; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTest; - -public class CertPathValidatorTest - extends SimpleTest -{ - private byte[] AC_PR = Base64.decode( - "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlFU1RDQ0F6R2dBd0lC" - + "QWdJQkJUQU5CZ2txaGtpRzl3MEJBUVVGQURDQnRERUxNQWtHQTFVRUJoTUNR" - + "bEl4DQpFekFSQmdOVkJBb1RDa2xEVUMxQ2NtRnphV3d4UFRBN0JnTlZCQXNU" - + "TkVsdWMzUnBkSFYwYnlCT1lXTnBiMjVoDQpiQ0JrWlNCVVpXTnViMnh2WjJs" - + "aElHUmhJRWx1Wm05eWJXRmpZVzhnTFNCSlZFa3hFVEFQQmdOVkJBY1RDRUp5" - + "DQpZWE5wYkdsaE1Rc3dDUVlEVlFRSUV3SkVSakV4TUM4R0ExVUVBeE1vUVhW" - + "MGIzSnBaR0ZrWlNCRFpYSjBhV1pwDQpZMkZrYjNKaElGSmhhWG9nUW5KaGMy" - + "bHNaV2x5WVRBZUZ3MHdNakEwTURReE9UTTVNREJhRncwd05UQTBNRFF5DQpN" - + "elU1TURCYU1HRXhDekFKQmdOVkJBWVRBa0pTTVJNd0VRWURWUVFLRXdwSlEx" - + "QXRRbkpoYzJsc01UMHdPd1lEDQpWUVFERXpSQmRYUnZjbWxrWVdSbElFTmxj" - + "blJwWm1sallXUnZjbUVnWkdFZ1VISmxjMmxrWlc1amFXRWdaR0VnDQpVbVZ3" - + "ZFdKc2FXTmhNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJD" - + "Z0tDQVFFQXMwc0t5NGsrDQp6b016aldyMTQxeTVYQ045UGJMZERFQXN2cjZ4" - + "Z0NCN1l5bEhIQ1NBYmpGR3dOQ0R5NlVxN1h0VjZ6UHdIMXpGDQpFWENlS3Jm" - + "UUl5YXBXSEZ4V1VKajBMblFrY1RZM1FOR1huK0JuVk9EVTZDV3M1c3NoZktH" - + "RXZyVlQ1Z214V1NmDQp4OFlsdDgzY1dwUE1QZzg3VDlCaHVIbHQzazh2M2Ev" - + "NmRPbmF2dytOYTAyZExBaDBlNzZqcCtQUS9LK0pHZlBuDQphQjVVWURrZkd0" - + "em5uTTNBV01tY3VJK0o0ek5OMDZaa3ZnbDFsdEo2UU1qcnZEUFlSak9ndDlT" - + "cklpY1NmbEo4DQptVDdHWGRRaXJnQUNXc3g1QURBSklRK253TU1vNHlyTUtx" - + "SlFhNFFDMHhhT0QvdkdVcG9SaDQzT0FTZFp3c3YvDQpPWFlybmVJeVAwVCs4" - + "UUlEQVFBQm80RzNNSUcwTUQwR0ExVWRId1EyTURRd01xQXdvQzZHTEdoMGRI" - + "QTZMeTloDQpZM0poYVhvdWFXTndZbkpoYzJsc0xtZHZkaTVpY2k5TVExSmhZ" - + "M0poYVhvdVkzSnNNQklHQTFVZElBUUxNQWt3DQpCd1lGWUV3QkFRRXdIUVlE" - + "VlIwT0JCWUVGREpUVFlKNE9TWVB5T09KZkVMZXhDaHppK2hiTUI4R0ExVWRJ" - + "d1FZDQpNQmFBRklyNjhWZUVFUk0xa0VMNlYwbFVhUTJreFBBM01BNEdBMVVk" - + "RHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CDQpBZjhFQlRBREFRSC9NQTBHQ1Nx" - + "R1NJYjNEUUVCQlFVQUE0SUJBUUJRUFNoZ1lidnFjaWV2SDVVb3ZMeXhkbkYr" - + "DQpFcjlOeXF1SWNkMnZ3Y0N1SnpKMkQ3WDBUcWhHQ0JmUEpVVkdBVWorS0NP" - + "SDFCVkgva1l1OUhsVHB1MGtKWFBwDQpBQlZkb2hJUERqRHhkbjhXcFFSL0Yr" - + "ejFDaWtVcldIMDR4eTd1N1p6UUpLSlBuR0loY1FpOElyRm1PYkllMEc3DQpY" - + "WTZPTjdPRUZxY21KTFFHWWdtRzFXMklXcytQd1JwWTdENGhLVEFoVjFSNkVv" - + "amE1L3BPcmVDL09kZXlQWmVxDQo1SUZTOUZZZk02U0Npd2hrK3l2Q1FHbVo0" - + "YzE5SjM0ZjVFYkRrK1NQR2tEK25EQ0E3L3VMUWNUMlJURE14SzBaDQpuZlo2" - + "Nm1Sc0ZjcXRGaWdScjVFcmtKZDdoUVV6eHNOV0VrNzJEVUFIcVgvNlNjeWtt" - + "SkR2V0plSUpqZlcNCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCg=="); - - private byte[] AC_RAIZ_ICPBRASIL = Base64.decode( - "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlFdURDQ0E2Q2dBd0lC" - + "QWdJQkJEQU5CZ2txaGtpRzl3MEJBUVVGQURDQnRERUxNQWtHQTFVRUJoTUNR" - + "bEl4DQpFekFSQmdOVkJBb1RDa2xEVUMxQ2NtRnphV3d4UFRBN0JnTlZCQXNU" - + "TkVsdWMzUnBkSFYwYnlCT1lXTnBiMjVoDQpiQ0JrWlNCVVpXTnViMnh2WjJs" - + "aElHUmhJRWx1Wm05eWJXRmpZVzhnTFNCSlZFa3hFVEFQQmdOVkJBY1RDRUp5" - + "DQpZWE5wYkdsaE1Rc3dDUVlEVlFRSUV3SkVSakV4TUM4R0ExVUVBeE1vUVhW" - + "MGIzSnBaR0ZrWlNCRFpYSjBhV1pwDQpZMkZrYjNKaElGSmhhWG9nUW5KaGMy" - + "bHNaV2x5WVRBZUZ3MHdNVEV4TXpBeE1qVTRNREJhRncweE1URXhNekF5DQpN" - + "elU1TURCYU1JRzBNUXN3Q1FZRFZRUUdFd0pDVWpFVE1CRUdBMVVFQ2hNS1NV" - + "TlFMVUp5WVhOcGJERTlNRHNHDQpBMVVFQ3hNMFNXNXpkR2wwZFhSdklFNWhZ" - + "Mmx2Ym1Gc0lHUmxJRlJsWTI1dmJHOW5hV0VnWkdFZ1NXNW1iM0p0DQpZV05o" - + "YnlBdElFbFVTVEVSTUE4R0ExVUVCeE1JUW5KaGMybHNhV0V4Q3pBSkJnTlZC" - + "QWdUQWtSR01URXdMd1lEDQpWUVFERXloQmRYUnZjbWxrWVdSbElFTmxjblJw" - + "Wm1sallXUnZjbUVnVW1GcGVpQkNjbUZ6YVd4bGFYSmhNSUlCDQpJakFOQmdr" - + "cWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBd1BNdWR3WC9odm0r" - + "VWgyYi9sUUFjSFZBDQppc2FtYUxrV2Rrd1A5L1MvdE9LSWdSckw2T3krWklH" - + "bE9VZGQ2dVl0azlNYS8zcFVwZ2NmTkFqMHZZbTVnc3lqDQpRbzllbXNjK3g2" - + "bTRWV3drOWlxTVpTQ0s1RVFrQXEvVXQ0bjdLdUxFMStnZGZ0d2RJZ3hmVXNQ" - + "dDRDeU5yWTUwDQpRVjU3S00yVVQ4eDVycm16RWpyN1RJQ0dwU1VBbDJnVnFl" - + "NnhhaWkrYm1ZUjFRcm1XYUJTQUc1OUxya3Jqcll0DQpiUmhGYm9VRGUxREsr" - + "NlQ4czVMNms4Yzhva3BiSHBhOXZlTXp0RFZDOXNQSjYwTVdYaDZhblZLbzFV" - + "Y0xjYlVSDQp5RWVOdlpuZVZSS0FBVTZvdXdkakR2d2xzYUt5ZEZLd2VkMFRv" - + "UTQ3Ym1VS2djbSt3VjNlVFJrMzZVT25Ud0lEDQpBUUFCbzRIU01JSFBNRTRH" - + "QTFVZElBUkhNRVV3UXdZRllFd0JBUUF3T2pBNEJnZ3JCZ0VGQlFjQ0FSWXNh" - + "SFIwDQpjRG92TDJGamNtRnBlaTVwWTNCaWNtRnphV3d1WjI5MkxtSnlMMFJR" - + "UTJGamNtRnBlaTV3WkdZd1BRWURWUjBmDQpCRFl3TkRBeW9EQ2dMb1lzYUhS" - + "MGNEb3ZMMkZqY21GcGVpNXBZM0JpY21GemFXd3VaMjkyTG1KeUwweERVbUZq" - + "DQpjbUZwZWk1amNtd3dIUVlEVlIwT0JCWUVGSXI2OFZlRUVSTTFrRUw2VjBs" - + "VWFRMmt4UEEzTUE4R0ExVWRFd0VCDQovd1FGTUFNQkFmOHdEZ1lEVlIwUEFR" - + "SC9CQVFEQWdFR01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQVpBNWMxDQpV" - + "L2hnSWg2T2NnTEFmaUpnRldwdm1EWldxbFYzMC9iSEZwajhpQm9iSlNtNXVE" - + "cHQ3VGlyWWgxVXhlM2ZRYUdsDQpZakplKzl6ZCtpelBSYkJxWFBWUUEzNEVY" - + "Y3drNHFwV3VmMWhIcmlXZmRyeDhBY3FTcXI2Q3VRRndTcjc1Rm9zDQpTemx3" - + "REFEYTcwbVQ3d1pqQW1RaG5aeDJ4SjZ3ZldsVDlWUWZTLy9KWWVJYzdGdWUy" - + "Sk5MZDAwVU9TTU1haUsvDQp0NzllbktOSEVBMmZ1cEgzdkVpZ2Y1RWg0YlZB" - + "TjVWb2hyVG02TVk1M3g3WFFaWnIxTUU3YTU1bEZFblNlVDB1DQptbE9BalIy" - + "bUFidlNNNVg1b1NaTnJtZXRkenlUajJmbENNOENDN01MYWIwa2tkbmdSSWxV" - + "QkdIRjEvUzVubVBiDQpLKzlBNDZzZDMzb3FLOG44DQotLS0tLUVORCBDRVJU" - + "SUZJQ0FURS0tLS0tDQo="); - - private byte[] schefer = Base64.decode( - "MIIEnDCCBAWgAwIBAgICIPAwDQYJKoZIhvcNAQEEBQAwgcAxCzAJBgNVBAYT" - + "AkRFMQ8wDQYDVQQIEwZIRVNTRU4xGDAWBgNVBAcTDzY1MDA4IFdpZXNiYWRl" - + "bjEaMBgGA1UEChMRU0NIVUZBIEhPTERJTkcgQUcxGjAYBgNVBAsTEVNDSFVG" - + "QSBIT0xESU5HIEFHMSIwIAYDVQQDExlJbnRlcm5ldCBCZW51dHplciBTZXJ2" - + "aWNlMSowKAYJKoZIhvcNAQkBFht6ZXJ0aWZpa2F0QHNjaHVmYS1vbmxpbmUu" - + "ZGUwHhcNMDQwMzMwMTEwODAzWhcNMDUwMzMwMTEwODAzWjCBnTELMAkGA1UE" - + "BhMCREUxCjAIBgNVBAcTASAxIzAhBgNVBAoTGlNIUyBJbmZvcm1hdGlvbnNz" - + "eXN0ZW1lIEFHMRwwGgYDVQQLExM2MDAvMDU5NDktNjAwLzA1OTQ5MRgwFgYD" - + "VQQDEw9TY2hldHRlciBTdGVmYW4xJTAjBgkqhkiG9w0BCQEWFlN0ZWZhbi5T" - + "Y2hldHRlckBzaHMuZGUwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJD0" - + "95Bi76fkAMjJNTGPDiLPHmZXNsmakngDeS0juzKMeJA+TjXFouhYh6QyE4Bl" - + "Nf18fT4mInlgLefwf4t6meIWbiseeTo7VQdM+YrbXERMx2uHsRcgZMsiMYHM" - + "kVfYMK3SMJ4nhCmZxrBkoTRed4gXzVA1AA8YjjTqMyyjvt4TAgMBAAGjggHE" - + "MIIBwDAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIEsDALBgNVHQ8EBAMC" - + "BNAwOQYJYIZIAYb4QgENBCwWKlplcnRpZmlrYXQgbnVyIGZ1ZXIgU0NIVUZB" - + "LU9ubGluZSBndWVsdGlnLjAdBgNVHQ4EFgQUXReirhBfg0Yhf6MsBWoo/nPa" - + "hGwwge0GA1UdIwSB5TCB4oAUf2UyCaBV9JUeG9lS1Yo6OFBUdEKhgcakgcMw" - + "gcAxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIEwZIRVNTRU4xGDAWBgNVBAcTDzY1" - + "MDA4IFdpZXNiYWRlbjEaMBgGA1UEChMRU0NIVUZBIEhPTERJTkcgQUcxGjAY" - + "BgNVBAsTEVNDSFVGQSBIT0xESU5HIEFHMSIwIAYDVQQDExlJbnRlcm5ldCBC" - + "ZW51dHplciBTZXJ2aWNlMSowKAYJKoZIhvcNAQkBFht6ZXJ0aWZpa2F0QHNj" - + "aHVmYS1vbmxpbmUuZGWCAQAwIQYDVR0RBBowGIEWU3RlZmFuLlNjaGV0dGVy" - + "QHNocy5kZTAmBgNVHRIEHzAdgRt6ZXJ0aWZpa2F0QHNjaHVmYS1vbmxpbmUu" - + "ZGUwDQYJKoZIhvcNAQEEBQADgYEAWzZtN9XQ9uyrFXqSy3hViYwV751+XZr0" - + "YH5IFhIS+9ixNAu8orP3bxqTaMhpwoU7T/oSsyGGSkb3fhzclgUADbA2lrOI" - + "GkeB/m+FArTwRbwpqhCNTwZywOp0eDosgPjCX1t53BB/m/2EYkRiYdDGsot0" - + "kQPOVGSjQSQ4+/D+TM8="); - - // circular dependency certificates - private static final byte[] circCA = Base64.decode( - "MIIDTzCCAjegAwIBAgIDARAAMA0GCSqGSIb3DQEBBQUAMDkxCzAJBgNVBAYT" - + "AkZSMRAwDgYDVQQKEwdHSVAtQ1BTMRgwFgYDVQQLEw9HSVAtQ1BTIEFOT05Z" - + "TUUwHhcNMDQxMDExMDAwMDAxWhcNMTQxMjMxMjM1OTU5WjA5MQswCQYDVQQG" - + "EwJGUjEQMA4GA1UEChMHR0lQLUNQUzEYMBYGA1UECxMPR0lQLUNQUyBBTk9O" - + "WU1FMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3WyWDwcM58aU" - + "hPX4ueI1mwETt3WdQtMfIdRiCXeBrjCkYCc7nIgCmGbnfTzXSplHRgKColWh" - + "q/Z+1rHYayje1gjAEU2+4/r1P2pnBmPgquDuguktCIbDtCcGZu0ylyKeHh37" - + "aeIKzkcmRSLRzvGf/eO3RdFksrvaPaSjqCVfGRXVDKK2uftE8rIFJE+bCqow" - + "6+WiaAaDDiJaSJPuu5hC1NA5jw0/BFodlCuAvl1GJ8A+TICkYWcSpKS9bkSC" - + "0i8xdGbSSk94shA1PdDvRdFMfFys8g4aupBXV8yqqEAUkBYmOtZSJckc3W4y" - + "2Gx53y7vY07Xh63mcgtJs2T82WJICwIDAQABo2AwXjAdBgNVHQ4EFgQU8c/P" - + "NNJaL0srd9SwHwgtvwPB/3cwDgYDVR0PAQH/BAQDAgIEMBkGA1UdIAQSMBAw" - + "DgYMKoF6AUcDBwgAAAABMBIGA1UdEwEB/wQIMAYBAf8CAQEwDQYJKoZIhvcN" - + "AQEFBQADggEBAHRjYDPJKlfUzID0YzajZpgR/i2ngJrJqYeaWCmwzBgNUPad" - + "uBKSGHmPVg21sfULMSnirnR+e90i/D0EVzLwQzcbjPDD/85rp9QDCeMxqqPe" - + "9ZCHGs2BpE/HOQMP0QfQ3/Kpk7SvOH/ZcpIf6+uE6lLBQYAGs5cxvtTGOzZk" - + "jCVFG+TrAnF4V5sNkn3maCWiYLmyqcnxtKEFSONy2bYqqudx/dBBlRrDbRfZ" - + "9XsCBdiXAHY1hFHldbfDs8rslmkXJi3fJC028HZYB6oiBX/JE7BbMk7bRnUf" - + "HSpP7Sjxeso2SY7Yit+hQDVAlqTDGmh6kLt/hQMpsOMry4vgBL6XHKw="); - - private static final byte[] circCRLCA = Base64.decode( - "MIIDXDCCAkSgAwIBAgIDASAAMA0GCSqGSIb3DQEBBQUAMDkxCzAJBgNVBAYT" - + "AkZSMRAwDgYDVQQKEwdHSVAtQ1BTMRgwFgYDVQQLEw9HSVAtQ1BTIEFOT05Z" - + "TUUwHhcNMDQxMDExMDAwMDAxWhcNMTQxMjMxMjM1OTU5WjA5MQswCQYDVQQG" - + "EwJGUjEQMA4GA1UEChMHR0lQLUNQUzEYMBYGA1UECxMPR0lQLUNQUyBBTk9O" - + "WU1FMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwfEcFK0g7Kfo" - + "o5f2IBF7VEd/AG+RVGSds0Yg+u2kNYu4k04HR/+tOdBQtJvyr4W5jrQKsC5X" - + "skeFWMyWaFKzAjZDWB52HWp/kiMivGcxnYDuYf5piukSC+d2+vL8YaAphDzV" - + "HPnxEKqoM/J66uUussDTqfcL3JC/Bc7kBwn4srrsZOsamMWTQQtEqVQxNN7A" - + "ROSRsdiTt3hMOKditc9/NBNmjZWxgc7Twr/SaZ8CfN5wf2wuOl23knWL0QsJ" - + "0lSMBSBTzTcfAke4/jIT7d4nVMp3t7dsna8rt56pFK4wpRFGuCt+1P5gi51x" - + "xVSdI+JoNXv6zGO4o8YVaRpC5rQeGQIDAQABo20wazAfBgNVHSMEGDAWgBTx" - + "z8800lovSyt31LAfCC2/A8H/dzAdBgNVHQ4EFgQUGa3SbBrJx/wa2MQwhWPl" - + "dwLw1+IwDgYDVR0PAQH/BAQDAgECMBkGA1UdIAQSMBAwDgYMKoF6AUcDBwgA" - + "AAABMA0GCSqGSIb3DQEBBQUAA4IBAQAPDpYe2WPYnXTLsXSIUREBNMLmg+/7" - + "4Yhq9uOm5Hb5LVkDuHoEHGfmpXXEvucx5Ehu69hw+F4YSrd9wPjOiG8G6GXi" - + "RcrK8nE8XDvvV+E1HpJ7NKN4fSAoSb+0gliiq3aF15bvXP8nfespdd/x1xWQ" - + "mpYCx/mJeuqONQv2/D/7hfRKYoDBaAkWGodenPFPVs6FxwnEuH2R+KWCUdA9" - + "L04v8JBeL3kZiALkU7+DCCm7A0imUAgeeArbAbfIPu6eDygm+XndZ9qi7o4O" - + "AntPxrqbeXFIbDrQ4GV1kpxnW+XpSGDd96SWKe715gxkkDBppR5IKYJwRb6O" - + "1TRQIf2F+muQ"); - - private static final byte[] circCRL = Base64.decode( - "MIIB1DCBvQIBATANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGUjEQMA4G" - + "A1UEChMHR0lQLUNQUzEYMBYGA1UECxMPR0lQLUNQUyBBTk9OWU1FFw0xMDAx" - + "MDcwMzAwMTVaFw0xMDAxMTMwMzAwMTVaMACgTjBMMB8GA1UdIwQYMBaAFBmt" - + "0mwaycf8GtjEMIVj5XcC8NfiMAsGA1UdFAQEAgILgzAcBgNVHRIEFTATgRFh" - + "Yy1naXBAZ2lwLWNwcy5mcjANBgkqhkiG9w0BAQUFAAOCAQEAtF1DdFl1MQvf" - + "vNkbrCPuppNYcHen4+za/ZDepKuwHsH/OpKuaDJc4LndRgd5IwzfpCHkQGzt" - + "shK50bakN8oaYJgthKIOIJzR+fn6NMjftfR2a27Hdk2o3eQXRHQ360qMbpSy" - + "qPb3WfuBhxO2/DlLChJP+OxZIHtT/rNYgE0tlIv7swYi81Gq+DafzaZ9+A5t" - + "I0L2Gp/NUDsp5dF6PllAGiXQzl27qkcu+r50w+u0gul3nobXgbwPcMSYuWUz" - + "1lhA+uDn/EUWV4RSiJciCGSS10WCkFh1/YPo++mV15KDB0m+8chscrSu/bAl" - + "B19LxL/pCX3qr5iLE9ss3olVImyFZg=="); - - private void checkCircProcessing() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate caCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(circCA)); - X509Certificate crlCaCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(circCRLCA)); - X509CRL crl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(circCRL)); - - List list = new ArrayList(); - - list.add(caCert); - list.add(crlCaCert); - list.add(crl); - - CertStoreParameters ccsp = new CollectionCertStoreParameters(list); - CertStore store = CertStore.getInstance("Collection", ccsp); - - Calendar validDate = Calendar.getInstance(); - validDate.set(2010,0,8,2,21,10); - - //validating path - List certchain = new ArrayList(); - - certchain.add(crlCaCert); - CertPath cp = CertificateFactory.getInstance("X.509","BC").generateCertPath(certchain); - - Set trust = new HashSet(); - trust.add(new TrustAnchor(caCert, null)); - - CertPathValidator cpv = CertPathValidator.getInstance("PKIX","BC"); - //PKIXParameters param = new PKIXParameters(trust); - - PKIXBuilderParameters param = new PKIXBuilderParameters(trust, null); - X509CertSelector certSelector = new X509CertSelector(); - certSelector.setCertificate(crlCaCert); - param.setTargetCertConstraints(certSelector); - param.addCertStore(store); - param.setRevocationEnabled(true); - param.setDate(validDate.getTime()); - - PKIXCertPathValidatorResult result = (PKIXCertPathValidatorResult)cpv.validate(cp, param); - } - - public void performTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - // initialise CertStore - X509Certificate rootCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.rootCertBin)); - X509Certificate interCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.interCertBin)); - X509Certificate finalCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.finalCertBin)); - X509CRL rootCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(CertPathTest.rootCrlBin)); - X509CRL interCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(CertPathTest.interCrlBin)); - List list = new ArrayList(); - list.add(rootCert); - list.add(interCert); - list.add(finalCert); - list.add(rootCrl); - list.add(interCrl); - CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters(list); - CertStore store = CertStore.getInstance("Collection", ccsp, "BC"); - Calendar validDate = Calendar.getInstance(); - validDate.set(2008,8,4,14,49,10); - //validating path - List certchain = new ArrayList(); - certchain.add(finalCert); - certchain.add(interCert); - CertPath cp = CertificateFactory.getInstance("X.509","BC").generateCertPath(certchain); - Set trust = new HashSet(); - trust.add(new TrustAnchor(rootCert, null)); - - CertPathValidator cpv = CertPathValidator.getInstance("PKIX","BC"); - PKIXParameters param = new PKIXParameters(trust); - param.addCertStore(store); - param.setDate(validDate.getTime()); - MyChecker checker = new MyChecker(); - param.addCertPathChecker(checker); - - PKIXCertPathValidatorResult result = - (PKIXCertPathValidatorResult) cpv.validate(cp, param); - PolicyNode policyTree = result.getPolicyTree(); - PublicKey subjectPublicKey = result.getPublicKey(); - - if (checker.getCount() != 2) - { - fail("checker not evaluated for each certificate"); - } - - if (!subjectPublicKey.equals(finalCert.getPublicKey())) - { - fail("wrong public key returned"); - } - - // - // invalid path containing a valid one test - // - try - { - // initialise CertStore - rootCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(AC_RAIZ_ICPBRASIL)); - interCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(AC_PR)); - finalCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(schefer)); - - list = new ArrayList(); - list.add(rootCert); - list.add(interCert); - list.add(finalCert); - - ccsp = new CollectionCertStoreParameters(list); - store = CertStore.getInstance("Collection", ccsp); - validDate = Calendar.getInstance(); - validDate.set(2004,2,21,2,21,10); - - //validating path - certchain = new ArrayList(); - certchain.add(finalCert); - certchain.add(interCert); - cp = CertificateFactory.getInstance("X.509","BC").generateCertPath(certchain); - trust = new HashSet(); - trust.add(new TrustAnchor(rootCert, null)); - - cpv = CertPathValidator.getInstance("PKIX","BC"); - param = new PKIXParameters(trust); - param.addCertStore(store); - param.setRevocationEnabled(false); - param.setDate(validDate.getTime()); - - result =(PKIXCertPathValidatorResult) cpv.validate(cp, param); - policyTree = result.getPolicyTree(); - subjectPublicKey = result.getPublicKey(); - - fail("Invalid path validated"); - } - catch (Exception e) - { - if (!(e instanceof CertPathValidatorException - && e.getMessage().startsWith("Could not validate certificate signature."))) - { - fail("unexpected exception", e); - } - } - - checkCircProcessing(); - } - - public String getName() - { - return "CertPathValidator"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CertPathValidatorTest()); - } - - - private static class MyChecker - extends PKIXCertPathChecker - { - private static int count; - - public void init(boolean forward) - throws CertPathValidatorException - { - //To change body of implemented methods use File | Settings | File Templates. - } - - public boolean isForwardCheckingSupported() - { - return true; - } - - public Set getSupportedExtensions() - { - return null; - } - - public void check(Certificate cert, Collection unresolvedCritExts) - throws CertPathValidatorException - { - count++; - } - - public int getCount() - { - return count; - } - } -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertStoreTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CertStoreTest.java deleted file mode 100644 index 35f55e89..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertStoreTest.java +++ /dev/null @@ -1,235 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTest; - -import java.io.ByteArrayInputStream; -import java.security.Security; -import java.security.cert.CertStore; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.X509CRL; -import java.security.cert.X509CRLSelector; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -public class CertStoreTest - extends SimpleTest -{ - - public void performTest() - throws Exception - { - basicTest(); - orderTest(); - } - - private void basicTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate rootCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.rootCertBin)); - X509Certificate interCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.interCertBin)); - X509Certificate finalCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.finalCertBin)); - X509CRL rootCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream( - CertPathTest.rootCrlBin)); - X509CRL interCrl = (X509CRL)cf - .generateCRL(new ByteArrayInputStream( - CertPathTest.interCrlBin)); - - // Testing CollectionCertStore generation from List - List list = new ArrayList(); - list.add(rootCert); - list.add(interCert); - list.add(finalCert); - list.add(rootCrl); - list.add(interCrl); - CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters(list); - CertStore store = CertStore.getInstance("Collection", ccsp, "BC"); - - // Searching for rootCert by subjectDN - X509CertSelector targetConstraints = new X509CertSelector(); - targetConstraints.setSubject(rootCert.getSubjectX500Principal().getName()); - Collection certs = store.getCertificates(targetConstraints); - if (certs.size() != 1 || !certs.contains(rootCert)) - { - fail("rootCert not found by subjectDN"); - } - - // Searching for rootCert by subjectDN encoded as byte - targetConstraints = new X509CertSelector(); - targetConstraints.setSubject(rootCert.getSubjectX500Principal() - .getEncoded()); - certs = store.getCertificates(targetConstraints); - if (certs.size() != 1 || !certs.contains(rootCert)) - { - fail("rootCert not found by encoded subjectDN"); - } - - // Searching for rootCert by public key encoded as byte - targetConstraints = new X509CertSelector(); - targetConstraints.setSubjectPublicKey(rootCert.getPublicKey() - .getEncoded()); - certs = store.getCertificates(targetConstraints); - if (certs.size() != 1 || !certs.contains(rootCert)) - { - fail("rootCert not found by encoded public key"); - } - - // Searching for interCert by issuerDN - targetConstraints = new X509CertSelector(); - targetConstraints.setIssuer(rootCert.getSubjectX500Principal() - .getEncoded()); - certs = store.getCertificates(targetConstraints); - if (certs.size() != 2) - { - fail("did not found 2 certs"); - } - if (!certs.contains(rootCert)) - { - fail("rootCert not found"); - } - if (!certs.contains(interCert)) - { - fail("interCert not found"); - } - - // Searching for rootCrl by issuerDN - X509CRLSelector targetConstraintsCRL = new X509CRLSelector(); - targetConstraintsCRL.addIssuerName(rootCrl.getIssuerX500Principal() - .getEncoded()); - Collection crls = store.getCRLs(targetConstraintsCRL); - if (crls.size() != 1 || !crls.contains(rootCrl)) - { - fail("rootCrl not found"); - } - } - - private void orderTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate rootCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.rootCertBin)); - X509Certificate interCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.interCertBin)); - X509Certificate finalCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.finalCertBin)); - - List list = new ArrayList(); - list.add(rootCert); - list.add(interCert); - list.add(finalCert); - CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters(list); - CertStore store = CertStore.getInstance("Collection", ccsp, "BC"); - - Iterator certs = store.getCertificates(null).iterator(); - - if (!certs.next().equals(rootCert)) - { - fail("root ordering wrong"); - } - if (!certs.next().equals(interCert)) - { - fail("mid ordering wrong"); - } - if (!certs.next().equals(finalCert)) - { - fail("final ordering wrong"); - } - - list = new ArrayList(); - list.add(finalCert); - list.add(interCert); - list.add(rootCert); - ccsp = new CollectionCertStoreParameters(list); - store = CertStore.getInstance("Collection", ccsp, "BC"); - - certs = store.getCertificates(null).iterator(); - - if (!certs.next().equals(finalCert)) - { - fail("reverse final ordering wrong"); - } - if (!certs.next().equals(interCert)) - { - fail("reverse mid ordering wrong"); - } - if (!certs.next().equals(rootCert)) - { - fail("reverse root ordering wrong"); - } - - X509CRL rootCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream( - CertPathTest.rootCrlBin)); - X509CRL interCrl = (X509CRL)cf - .generateCRL(new ByteArrayInputStream( - CertPathTest.interCrlBin)); - - list = new ArrayList(); - list.add(finalCert); - list.add(rootCrl); - list.add(interCrl); - - ccsp = new CollectionCertStoreParameters(list); - store = CertStore.getInstance("Collection", ccsp, "BC"); - - Iterator crls = store.getCRLs(null).iterator(); - - if (!crls.next().equals(rootCrl)) - { - fail("root crl ordering wrong"); - } - if (!crls.next().equals(interCrl)) - { - fail("mid crl ordering wrong"); - } - - list = new ArrayList(); - list.add(finalCert); - list.add(interCrl); - list.add(rootCrl); - ccsp = new CollectionCertStoreParameters(list); - store = CertStore.getInstance("Collection", ccsp, "BC"); - - crls = store.getCRLs(null).iterator(); - - if (!crls.next().equals(interCrl)) - { - fail("reverse mid crl ordering wrong"); - } - if (!crls.next().equals(rootCrl)) - { - fail("reverse root crl ordering wrong"); - } - } - - public String getName() - { - return "CertStore"; - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CertStoreTest()); - } - -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CertTest.java deleted file mode 100644 index 2b9b880c..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertTest.java +++ /dev/null @@ -1,1593 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.PublicKey; -import java.security.Security; -import java.security.cert.CRL; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509CRL; -import java.security.cert.X509Certificate; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.RSAPrivateCrtKeySpec; -import java.security.spec.RSAPublicKeySpec; -import java.util.Collection; -import java.util.Iterator; - -import org.bouncycastle.asn1.ASN1EncodableVector; -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.DERSet; -import org.bouncycastle.asn1.DERTaggedObject; -import org.bouncycastle.asn1.cms.CMSObjectIdentifiers; -import org.bouncycastle.asn1.cms.ContentInfo; -import org.bouncycastle.asn1.cms.SignedData; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.io.Streams; -import org.bouncycastle.util.test.SimpleTest; - -public class CertTest - extends SimpleTest -{ - // - // server.crt - // - byte[] cert1 = Base64.decode( - "MIIDXjCCAsegAwIBAgIBBzANBgkqhkiG9w0BAQQFADCBtzELMAkGA1UEBhMCQVUx" - + "ETAPBgNVBAgTCFZpY3RvcmlhMRgwFgYDVQQHEw9Tb3V0aCBNZWxib3VybmUxGjAY" - + "BgNVBAoTEUNvbm5lY3QgNCBQdHkgTHRkMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBB" - + "dXRob3JpdHkxFTATBgNVBAMTDENvbm5lY3QgNCBDQTEoMCYGCSqGSIb3DQEJARYZ" - + "d2VibWFzdGVyQGNvbm5lY3Q0LmNvbS5hdTAeFw0wMDA2MDIwNzU2MjFaFw0wMTA2" - + "MDIwNzU2MjFaMIG4MQswCQYDVQQGEwJBVTERMA8GA1UECBMIVmljdG9yaWExGDAW" - + "BgNVBAcTD1NvdXRoIE1lbGJvdXJuZTEaMBgGA1UEChMRQ29ubmVjdCA0IFB0eSBM" - + "dGQxFzAVBgNVBAsTDldlYnNlcnZlciBUZWFtMR0wGwYDVQQDExR3d3cyLmNvbm5l" - + "Y3Q0LmNvbS5hdTEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGNvbm5lY3Q0LmNv" - + "bS5hdTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArvDxclKAhyv7Q/Wmr2re" - + "Gw4XL9Cnh9e+6VgWy2AWNy/MVeXdlxzd7QAuc1eOWQkGQEiLPy5XQtTY+sBUJ3AO" - + "Rvd2fEVJIcjf29ey7bYua9J/vz5MG2KYo9/WCHIwqD9mmG9g0xLcfwq/s8ZJBswE" - + "7sb85VU+h94PTvsWOsWuKaECAwEAAaN3MHUwJAYDVR0RBB0wG4EZd2VibWFzdGVy" - + "QGNvbm5lY3Q0LmNvbS5hdTA6BglghkgBhvhCAQ0ELRYrbW9kX3NzbCBnZW5lcmF0" - + "ZWQgY3VzdG9tIHNlcnZlciBjZXJ0aWZpY2F0ZTARBglghkgBhvhCAQEEBAMCBkAw" - + "DQYJKoZIhvcNAQEEBQADgYEAotccfKpwSsIxM1Hae8DR7M/Rw8dg/RqOWx45HNVL" - + "iBS4/3N/TO195yeQKbfmzbAA2jbPVvIvGgTxPgO1MP4ZgvgRhasaa0qCJCkWvpM4" - + "yQf33vOiYQbpv4rTwzU8AmRlBG45WdjyNIigGV+oRc61aKCTnLq7zB8N3z1TF/bF" - + "5/8="); - - // - // ca.crt - // - byte[] cert2 = Base64.decode( - "MIIDbDCCAtWgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBtzELMAkGA1UEBhMCQVUx" - + "ETAPBgNVBAgTCFZpY3RvcmlhMRgwFgYDVQQHEw9Tb3V0aCBNZWxib3VybmUxGjAY" - + "BgNVBAoTEUNvbm5lY3QgNCBQdHkgTHRkMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBB" - + "dXRob3JpdHkxFTATBgNVBAMTDENvbm5lY3QgNCBDQTEoMCYGCSqGSIb3DQEJARYZ" - + "d2VibWFzdGVyQGNvbm5lY3Q0LmNvbS5hdTAeFw0wMDA2MDIwNzU1MzNaFw0wMTA2" - + "MDIwNzU1MzNaMIG3MQswCQYDVQQGEwJBVTERMA8GA1UECBMIVmljdG9yaWExGDAW" - + "BgNVBAcTD1NvdXRoIE1lbGJvdXJuZTEaMBgGA1UEChMRQ29ubmVjdCA0IFB0eSBM" - + "dGQxHjAcBgNVBAsTFUNlcnRpZmljYXRlIEF1dGhvcml0eTEVMBMGA1UEAxMMQ29u" - + "bmVjdCA0IENBMSgwJgYJKoZIhvcNAQkBFhl3ZWJtYXN0ZXJAY29ubmVjdDQuY29t" - + "LmF1MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDgs5ptNG6Qv1ZpCDuUNGmv" - + "rhjqMDPd3ri8JzZNRiiFlBA4e6/ReaO1U8ASewDeQMH6i9R6degFdQRLngbuJP0s" - + "xcEE+SksEWNvygfzLwV9J/q+TQDyJYK52utb++lS0b48A1KPLwEsyL6kOAgelbur" - + "ukwxowprKUIV7Knf1ajetQIDAQABo4GFMIGCMCQGA1UdEQQdMBuBGXdlYm1hc3Rl" - + "ckBjb25uZWN0NC5jb20uYXUwDwYDVR0TBAgwBgEB/wIBADA2BglghkgBhvhCAQ0E" - + "KRYnbW9kX3NzbCBnZW5lcmF0ZWQgY3VzdG9tIENBIGNlcnRpZmljYXRlMBEGCWCG" - + "SAGG+EIBAQQEAwICBDANBgkqhkiG9w0BAQQFAAOBgQCsGvfdghH8pPhlwm1r3pQk" - + "msnLAVIBb01EhbXm2861iXZfWqGQjrGAaA0ZpXNk9oo110yxoqEoSJSzniZa7Xtz" - + "soTwNUpE0SLHvWf/SlKdFWlzXA+vOZbzEv4UmjeelekTm7lc01EEa5QRVzOxHFtQ" - + "DhkaJ8VqOMajkQFma2r9iA=="); - - // - // testx509.pem - // - byte[] cert3 = Base64.decode( - "MIIBWzCCAQYCARgwDQYJKoZIhvcNAQEEBQAwODELMAkGA1UEBhMCQVUxDDAKBgNV" - + "BAgTA1FMRDEbMBkGA1UEAxMSU1NMZWF5L3JzYSB0ZXN0IENBMB4XDTk1MDYxOTIz" - + "MzMxMloXDTk1MDcxNzIzMzMxMlowOjELMAkGA1UEBhMCQVUxDDAKBgNVBAgTA1FM" - + "RDEdMBsGA1UEAxMUU1NMZWF5L3JzYSB0ZXN0IGNlcnQwXDANBgkqhkiG9w0BAQEF" - + "AANLADBIAkEAqtt6qS5GTxVxGZYWa0/4u+IwHf7p2LNZbcPBp9/OfIcYAXBQn8hO" - + "/Re1uwLKXdCjIoaGs4DLdG88rkzfyK5dPQIDAQABMAwGCCqGSIb3DQIFBQADQQAE" - + "Wc7EcF8po2/ZO6kNCwK/ICH6DobgLekA5lSLr5EvuioZniZp5lFzAw4+YzPQ7XKJ" - + "zl9HYIMxATFyqSiD9jsx"); - - // - // v3-cert1.pem - // - byte[] cert4 = Base64.decode( - "MIICjTCCAfigAwIBAgIEMaYgRzALBgkqhkiG9w0BAQQwRTELMAkGA1UEBhMCVVMx" - + "NjA0BgNVBAoTLU5hdGlvbmFsIEFlcm9uYXV0aWNzIGFuZCBTcGFjZSBBZG1pbmlz" - + "dHJhdGlvbjAmFxE5NjA1MjgxMzQ5MDUrMDgwMBcROTgwNTI4MTM0OTA1KzA4MDAw" - + "ZzELMAkGA1UEBhMCVVMxNjA0BgNVBAoTLU5hdGlvbmFsIEFlcm9uYXV0aWNzIGFu" - + "ZCBTcGFjZSBBZG1pbmlzdHJhdGlvbjEgMAkGA1UEBRMCMTYwEwYDVQQDEwxTdGV2" - + "ZSBTY2hvY2gwWDALBgkqhkiG9w0BAQEDSQAwRgJBALrAwyYdgxmzNP/ts0Uyf6Bp" - + "miJYktU/w4NG67ULaN4B5CnEz7k57s9o3YY3LecETgQ5iQHmkwlYDTL2fTgVfw0C" - + "AQOjgaswgagwZAYDVR0ZAQH/BFowWDBWMFQxCzAJBgNVBAYTAlVTMTYwNAYDVQQK" - + "Ey1OYXRpb25hbCBBZXJvbmF1dGljcyBhbmQgU3BhY2UgQWRtaW5pc3RyYXRpb24x" - + "DTALBgNVBAMTBENSTDEwFwYDVR0BAQH/BA0wC4AJODMyOTcwODEwMBgGA1UdAgQR" - + "MA8ECTgzMjk3MDgyM4ACBSAwDQYDVR0KBAYwBAMCBkAwCwYJKoZIhvcNAQEEA4GB" - + "AH2y1VCEw/A4zaXzSYZJTTUi3uawbbFiS2yxHvgf28+8Js0OHXk1H1w2d6qOHH21" - + "X82tZXd/0JtG0g1T9usFFBDvYK8O0ebgz/P5ELJnBL2+atObEuJy1ZZ0pBDWINR3" - + "WkDNLCGiTkCKp0F5EWIrVDwh54NNevkCQRZita+z4IBO"); - - // - // v3-cert2.pem - // - byte[] cert5 = Base64.decode( - "MIICiTCCAfKgAwIBAgIEMeZfHzANBgkqhkiG9w0BAQQFADB9MQswCQYDVQQGEwJD" - + "YTEPMA0GA1UEBxMGTmVwZWFuMR4wHAYDVQQLExVObyBMaWFiaWxpdHkgQWNjZXB0" - + "ZWQxHzAdBgNVBAoTFkZvciBEZW1vIFB1cnBvc2VzIE9ubHkxHDAaBgNVBAMTE0Vu" - + "dHJ1c3QgRGVtbyBXZWIgQ0EwHhcNOTYwNzEyMTQyMDE1WhcNOTYxMDEyMTQyMDE1" - + "WjB0MSQwIgYJKoZIhvcNAQkBExVjb29rZUBpc3NsLmF0bC5ocC5jb20xCzAJBgNV" - + "BAYTAlVTMScwJQYDVQQLEx5IZXdsZXR0IFBhY2thcmQgQ29tcGFueSAoSVNTTCkx" - + "FjAUBgNVBAMTDVBhdWwgQS4gQ29va2UwXDANBgkqhkiG9w0BAQEFAANLADBIAkEA" - + "6ceSq9a9AU6g+zBwaL/yVmW1/9EE8s5you1mgjHnj0wAILuoB3L6rm6jmFRy7QZT" - + "G43IhVZdDua4e+5/n1ZslwIDAQABo2MwYTARBglghkgBhvhCAQEEBAMCB4AwTAYJ" - + "YIZIAYb4QgENBD8WPVRoaXMgY2VydGlmaWNhdGUgaXMgb25seSBpbnRlbmRlZCBm" - + "b3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy4wDQYJKoZIhvcNAQEEBQADgYEAi8qc" - + "F3zfFqy1sV8NhjwLVwOKuSfhR/Z8mbIEUeSTlnH3QbYt3HWZQ+vXI8mvtZoBc2Fz" - + "lexKeIkAZXCesqGbs6z6nCt16P6tmdfbZF3I3AWzLquPcOXjPf4HgstkyvVBn0Ap" - + "jAFN418KF/Cx4qyHB4cjdvLrRjjQLnb2+ibo7QU="); - - // - // pem encoded pkcs7 - // - byte[] cert6 = Base64.decode( - "MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJbzCCAj0w" - + "ggGmAhEAzbp/VvDf5LxU/iKss3KqVTANBgkqhkiG9w0BAQIFADBfMQswCQYDVQQGEwJVUzEXMBUG" - + "A1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDEgUHVibGljIFByaW1hcnkgQ2Vy" - + "dGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNOTYwMTI5MDAwMDAwWhcNMjgwODAxMjM1OTU5WjBfMQsw" - + "CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDEgUHVi" - + "bGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwgZ8wDQYJKoZIhvcNAQEBBQADgY0A" - + "MIGJAoGBAOUZv22jVmEtmUhx9mfeuY3rt56GgAqRDvo4Ja9GiILlc6igmyRdDR/MZW4MsNBWhBiH" - + "mgabEKFz37RYOWtuwfYV1aioP6oSBo0xrH+wNNePNGeICc0UEeJORVZpH3gCgNrcR5EpuzbJY1zF" - + "4Ncth3uhtzKwezC6Ki8xqu6jZ9rbAgMBAAEwDQYJKoZIhvcNAQECBQADgYEATD+4i8Zo3+5DMw5d" - + "6abLB4RNejP/khv0Nq3YlSI2aBFsfELM85wuxAc/FLAPT/+Qknb54rxK6Y/NoIAK98Up8YIiXbix" - + "3YEjo3slFUYweRb46gVLlH8dwhzI47f0EEA8E8NfH1PoSOSGtHuhNbB7Jbq4046rPzidADQAmPPR" - + "cZQwggMuMIICl6ADAgECAhEA0nYujRQMPX2yqCVdr+4NdTANBgkqhkiG9w0BAQIFADBfMQswCQYD" - + "VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xNzA1BgNVBAsTLkNsYXNzIDEgUHVibGlj" - + "IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNOTgwNTEyMDAwMDAwWhcNMDgwNTEy" - + "MjM1OTU5WjCBzDEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy" - + "dXN0IE5ldHdvcmsxRjBEBgNVBAsTPXd3dy52ZXJpc2lnbi5jb20vcmVwb3NpdG9yeS9SUEEgSW5j" - + "b3JwLiBCeSBSZWYuLExJQUIuTFREKGMpOTgxSDBGBgNVBAMTP1ZlcmlTaWduIENsYXNzIDEgQ0Eg" - + "SW5kaXZpZHVhbCBTdWJzY3JpYmVyLVBlcnNvbmEgTm90IFZhbGlkYXRlZDCBnzANBgkqhkiG9w0B" - + "AQEFAAOBjQAwgYkCgYEAu1pEigQWu1X9A3qKLZRPFXg2uA1Ksm+cVL+86HcqnbnwaLuV2TFBcHqB" - + "S7lIE1YtxwjhhEKrwKKSq0RcqkLwgg4C6S/7wju7vsknCl22sDZCM7VuVIhPh0q/Gdr5FegPh7Yc" - + "48zGmo5/aiSS4/zgZbqnsX7vyds3ashKyAkG5JkCAwEAAaN8MHowEQYJYIZIAYb4QgEBBAQDAgEG" - + "MEcGA1UdIARAMD4wPAYLYIZIAYb4RQEHAQEwLTArBggrBgEFBQcCARYfd3d3LnZlcmlzaWduLmNv" - + "bS9yZXBvc2l0b3J5L1JQQTAPBgNVHRMECDAGAQH/AgEAMAsGA1UdDwQEAwIBBjANBgkqhkiG9w0B" - + "AQIFAAOBgQCIuDc73dqUNwCtqp/hgQFxHpJqbS/28Z3TymQ43BuYDAeGW4UVag+5SYWklfEXfWe0" - + "fy0s3ZpCnsM+tI6q5QsG3vJWKvozx74Z11NMw73I4xe1pElCY+zCphcPXVgaSTyQXFWjZSAA/Rgg" - + "5V+CprGoksVYasGNAzzrw80FopCubjCCA/gwggNhoAMCAQICEBbbn/1G1zppD6KsP01bwywwDQYJ" - + "KoZIhvcNAQEEBQAwgcwxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln" - + "biBUcnVzdCBOZXR3b3JrMUYwRAYDVQQLEz13d3cudmVyaXNpZ24uY29tL3JlcG9zaXRvcnkvUlBB" - + "IEluY29ycC4gQnkgUmVmLixMSUFCLkxURChjKTk4MUgwRgYDVQQDEz9WZXJpU2lnbiBDbGFzcyAx" - + "IENBIEluZGl2aWR1YWwgU3Vic2NyaWJlci1QZXJzb25hIE5vdCBWYWxpZGF0ZWQwHhcNMDAxMDAy" - + "MDAwMDAwWhcNMDAxMjAxMjM1OTU5WjCCAQcxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYD" - + "VQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMUYwRAYDVQQLEz13d3cudmVyaXNpZ24uY29tL3Jl" - + "cG9zaXRvcnkvUlBBIEluY29ycC4gYnkgUmVmLixMSUFCLkxURChjKTk4MR4wHAYDVQQLExVQZXJz" - + "b25hIE5vdCBWYWxpZGF0ZWQxJzAlBgNVBAsTHkRpZ2l0YWwgSUQgQ2xhc3MgMSAtIE1pY3Jvc29m" - + "dDETMBEGA1UEAxQKRGF2aWQgUnlhbjElMCMGCSqGSIb3DQEJARYWZGF2aWRAbGl2ZW1lZGlhLmNv" - + "bS5hdTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqxBsdeNmSvFqhMNwhQgNzM8mdjX9eSXb" - + "DawpHtQHjmh0AKJSa3IwUY0VIsyZHuXWktO/CgaMBVPt6OVf/n0R2sQigMP6Y+PhEiS0vCJBL9aK" - + "0+pOo2qXrjVBmq+XuCyPTnc+BOSrU26tJsX0P9BYorwySiEGxGanBNATdVL4NdUCAwEAAaOBnDCB" - + "mTAJBgNVHRMEAjAAMEQGA1UdIAQ9MDswOQYLYIZIAYb4RQEHAQgwKjAoBggrBgEFBQcCARYcaHR0" - + "cHM6Ly93d3cudmVyaXNpZ24uY29tL3JwYTARBglghkgBhvhCAQEEBAMCB4AwMwYDVR0fBCwwKjAo" - + "oCagJIYiaHR0cDovL2NybC52ZXJpc2lnbi5jb20vY2xhc3MxLmNybDANBgkqhkiG9w0BAQQFAAOB" - + "gQBC8yIIdVGpFTf8/YiL14cMzcmL0nIRm4kGR3U59z7UtcXlfNXXJ8MyaeI/BnXwG/gD5OKYqW6R" - + "yca9vZOxf1uoTBl82gInk865ED3Tej6msCqFzZffnSUQvOIeqLxxDlqYRQ6PmW2nAnZeyjcnbI5Y" - + "syQSM2fmo7n6qJFP+GbFezGCAkUwggJBAgEBMIHhMIHMMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5j" - + "LjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazFGMEQGA1UECxM9d3d3LnZlcmlzaWdu" - + "LmNvbS9yZXBvc2l0b3J5L1JQQSBJbmNvcnAuIEJ5IFJlZi4sTElBQi5MVEQoYyk5ODFIMEYGA1UE" - + "AxM/VmVyaVNpZ24gQ2xhc3MgMSBDQSBJbmRpdmlkdWFsIFN1YnNjcmliZXItUGVyc29uYSBOb3Qg" - + "VmFsaWRhdGVkAhAW25/9Rtc6aQ+irD9NW8MsMAkGBSsOAwIaBQCggbowGAYJKoZIhvcNAQkDMQsG" - + "CSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDAxMDAyMTczNTE4WjAjBgkqhkiG9w0BCQQxFgQU" - + "gZjSaBEY2oxGvlQUIMnxSXhivK8wWwYJKoZIhvcNAQkPMU4wTDAKBggqhkiG9w0DBzAOBggqhkiG" - + "9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcNAwICASgwBwYFKw4DAh0w" - + "DQYJKoZIhvcNAQEBBQAEgYAzk+PU91/ZFfoiuKOECjxEh9fDYE2jfDCheBIgh5gdcCo+sS1WQs8O" - + "HreQ9Nop/JdJv1DQMBK6weNBBDoP0EEkRm1XCC144XhXZC82jBZohYmi2WvDbbC//YN58kRMYMyy" - + "srrfn4Z9I+6kTriGXkrpGk9Q0LSGjmG2BIsqiF0dvwAAAAAAAA=="); - - // - // dsaWithSHA1 cert - // - byte[] cert7 = Base64.decode( - "MIIEXAYJKoZIhvcNAQcCoIIETTCCBEkCAQExCzAJBgUrDgMCGgUAMAsGCSqG" - + "SIb3DQEHAaCCAsMwggK/MIIB4AIBADCBpwYFKw4DAhswgZ0CQQEkJRHP+mN7" - + "d8miwTMN55CUSmo3TO8WGCxgY61TX5k+7NU4XPf1TULjw3GobwaJX13kquPh" - + "fVXk+gVy46n4Iw3hAhUBSe/QF4BUj+pJOF9ROBM4u+FEWA8CQQD4mSJbrABj" - + "TUWrlnAte8pS22Tq4/FPO7jHSqjijUHfXKTrHL1OEqV3SVWcFy5j/cqBgX/z" - + "m8Q12PFp/PjOhh+nMA4xDDAKBgNVBAMTA0lEMzAeFw05NzEwMDEwMDAwMDBa" - + "Fw0zODAxMDEwMDAwMDBaMA4xDDAKBgNVBAMTA0lEMzCB8DCBpwYFKw4DAhsw" - + "gZ0CQQEkJRHP+mN7d8miwTMN55CUSmo3TO8WGCxgY61TX5k+7NU4XPf1TULj" - + "w3GobwaJX13kquPhfVXk+gVy46n4Iw3hAhUBSe/QF4BUj+pJOF9ROBM4u+FE" - + "WA8CQQD4mSJbrABjTUWrlnAte8pS22Tq4/FPO7jHSqjijUHfXKTrHL1OEqV3" - + "SVWcFy5j/cqBgX/zm8Q12PFp/PjOhh+nA0QAAkEAkYkXLYMtGVGWj9OnzjPn" - + "sB9sefSRPrVegZJCZbpW+Iv0/1RP1u04pHG9vtRpIQLjzUiWvLMU9EKQTThc" - + "eNMmWDCBpwYFKw4DAhswgZ0CQQEkJRHP+mN7d8miwTMN55CUSmo3TO8WGCxg" - + "Y61TX5k+7NU4XPf1TULjw3GobwaJX13kquPhfVXk+gVy46n4Iw3hAhUBSe/Q" - + "F4BUj+pJOF9ROBM4u+FEWA8CQQD4mSJbrABjTUWrlnAte8pS22Tq4/FPO7jH" - + "SqjijUHfXKTrHL1OEqV3SVWcFy5j/cqBgX/zm8Q12PFp/PjOhh+nAy8AMCwC" - + "FBY3dBSdeprGcqpr6wr3xbG+6WW+AhRMm/facKJNxkT3iKgJbp7R8Xd3QTGC" - + "AWEwggFdAgEBMBMwDjEMMAoGA1UEAxMDSUQzAgEAMAkGBSsOAwIaBQCgXTAY" - + "BgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wMjA1" - + "MjQyMzEzMDdaMCMGCSqGSIb3DQEJBDEWBBS4WMsoJhf7CVbZYCFcjoTRzPkJ" - + "xjCBpwYFKw4DAhswgZ0CQQEkJRHP+mN7d8miwTMN55CUSmo3TO8WGCxgY61T" - + "X5k+7NU4XPf1TULjw3GobwaJX13kquPhfVXk+gVy46n4Iw3hAhUBSe/QF4BU" - + "j+pJOF9ROBM4u+FEWA8CQQD4mSJbrABjTUWrlnAte8pS22Tq4/FPO7jHSqji" - + "jUHfXKTrHL1OEqV3SVWcFy5j/cqBgX/zm8Q12PFp/PjOhh+nBC8wLQIVALID" - + "dt+MHwawrDrwsO1Z6sXBaaJsAhRaKssrpevmLkbygKPV07XiAKBG02Zvb2Jh" - + "cg=="); - - // - // testcrl.pem - // - byte[] crl1 = Base64.decode( - "MIICjTCCAfowDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMxIDAeBgNVBAoT" - + "F1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVy" - + "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5Fw05NTA1MDIwMjEyMjZaFw05NTA2MDEw" - + "MDAxNDlaMIIBaDAWAgUCQQAABBcNOTUwMjAxMTcyNDI2WjAWAgUCQQAACRcNOTUw" - + "MjEwMDIxNjM5WjAWAgUCQQAADxcNOTUwMjI0MDAxMjQ5WjAWAgUCQQAADBcNOTUw" - + "MjI1MDA0NjQ0WjAWAgUCQQAAGxcNOTUwMzEzMTg0MDQ5WjAWAgUCQQAAFhcNOTUw" - + "MzE1MTkxNjU0WjAWAgUCQQAAGhcNOTUwMzE1MTk0MDQxWjAWAgUCQQAAHxcNOTUw" - + "MzI0MTk0NDMzWjAWAgUCcgAABRcNOTUwMzI5MjAwNzExWjAWAgUCcgAAERcNOTUw" - + "MzMwMDIzNDI2WjAWAgUCQQAAIBcNOTUwNDA3MDExMzIxWjAWAgUCcgAAHhcNOTUw" - + "NDA4MDAwMjU5WjAWAgUCcgAAQRcNOTUwNDI4MTcxNzI0WjAWAgUCcgAAOBcNOTUw" - + "NDI4MTcyNzIxWjAWAgUCcgAATBcNOTUwNTAyMDIxMjI2WjANBgkqhkiG9w0BAQIF" - + "AAN+AHqOEJXSDejYy0UwxxrH/9+N2z5xu/if0J6qQmK92W0hW158wpJg+ovV3+wQ" - + "wvIEPRL2rocL0tKfAsVq1IawSJzSNgxG0lrcla3MrJBnZ4GaZDu4FutZh72MR3Gt" - + "JaAL3iTJHJD55kK2D/VoyY1djlsPuNh6AEgdVwFAyp0v"); - - // - // ecdsa cert with extra octet string. - // - byte[] oldEcdsa = Base64.decode( - "MIICljCCAkCgAwIBAgIBATALBgcqhkjOPQQBBQAwgY8xCzAJBgNVBAYTAkFVMSgwJ" - + "gYDVQQKEx9UaGUgTGVnaW9uIG9mIHRoZSBCb3VuY3kgQ2FzdGxlMRIwEAYDVQQHEw" - + "lNZWxib3VybmUxETAPBgNVBAgTCFZpY3RvcmlhMS8wLQYJKoZIhvcNAQkBFiBmZWV" - + "kYmFjay1jcnlwdG9AYm91bmN5Y2FzdGxlLm9yZzAeFw0wMTEyMDcwMTAwMDRaFw0w" - + "MTEyMDcwMTAxNDRaMIGPMQswCQYDVQQGEwJBVTEoMCYGA1UEChMfVGhlIExlZ2lvb" - + "iBvZiB0aGUgQm91bmN5IENhc3RsZTESMBAGA1UEBxMJTWVsYm91cm5lMREwDwYDVQ" - + "QIEwhWaWN0b3JpYTEvMC0GCSqGSIb3DQEJARYgZmVlZGJhY2stY3J5cHRvQGJvdW5" - + "jeWNhc3RsZS5vcmcwgeQwgb0GByqGSM49AgEwgbECAQEwKQYHKoZIzj0BAQIef///" - + "////////////f///////gAAAAAAAf///////MEAEHn///////////////3///////" - + "4AAAAAAAH///////AQeawFsO9zxiUHQ1lSSFHXKcanbL7J9HTd5YYXClCwKBB8CD/" - + "qWPNyogWzMM7hkK+35BcPTWFc9Pyf7vTs8uaqvAh5///////////////9///+eXpq" - + "fXZBx+9FSJoiQnQsDIgAEHwJbbcU7xholSP+w9nFHLebJUhqdLSU05lq/y9X+DHAw" - + "CwYHKoZIzj0EAQUAA0MAMEACHnz6t4UNoVROp74ma4XNDjjGcjaqiIWPZLK8Bdw3G" - + "QIeLZ4j3a6ividZl344UH+UPUE7xJxlYGuy7ejTsqRR"); - - byte[] uncompressedPtEC = Base64.decode( - "MIIDKzCCAsGgAwIBAgICA+kwCwYHKoZIzj0EAQUAMGYxCzAJBgNVBAYTAkpQ" - + "MRUwEwYDVQQKEwxuaXRlY2guYWMuanAxDjAMBgNVBAsTBWFpbGFiMQ8wDQYD" - + "VQQDEwZ0ZXN0Y2ExHzAdBgkqhkiG9w0BCQEWEHRlc3RjYUBsb2NhbGhvc3Qw" - + "HhcNMDExMDEzMTE1MzE3WhcNMjAxMjEyMTE1MzE3WjBmMQswCQYDVQQGEwJK" - + "UDEVMBMGA1UEChMMbml0ZWNoLmFjLmpwMQ4wDAYDVQQLEwVhaWxhYjEPMA0G" - + "A1UEAxMGdGVzdGNhMR8wHQYJKoZIhvcNAQkBFhB0ZXN0Y2FAbG9jYWxob3N0" - + "MIIBczCCARsGByqGSM49AgEwggEOAgEBMDMGByqGSM49AQECKEdYWnajFmnZ" - + "tzrukK2XWdle2v+GsD9l1ZiR6g7ozQDbhFH/bBiMDQcwVAQoJ5EQKrI54/CT" - + "xOQ2pMsd/fsXD+EX8YREd8bKHWiLz8lIVdD5cBNeVwQoMKSc6HfI7vKZp8Q2" - + "zWgIFOarx1GQoWJbMcSt188xsl30ncJuJT2OoARRBAqJ4fD+q6hbqgNSjTQ7" - + "htle1KO3eiaZgcJ8rrnyN8P+5A8+5K+H9aQ/NbBR4Gs7yto5PXIUZEUgodHA" - + "TZMSAcSq5ZYt4KbnSYaLY0TtH9CqAigEwZ+hglbT21B7ZTzYX2xj0x+qooJD" - + "hVTLtIPaYJK2HrMPxTw6/zfrAgEPA1IABAnvfFcFDgD/JicwBGn6vR3N8MIn" - + "mptZf/mnJ1y649uCF60zOgdwIyI7pVSxBFsJ7ohqXEHW0x7LrGVkdSEiipiH" - + "LYslqh3xrqbAgPbl93GUo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB" - + "/wQEAwIBxjAdBgNVHQ4EFgQUAEo62Xm9H6DcsE0zUDTza4BRG90wCwYHKoZI" - + "zj0EAQUAA1cAMFQCKAQsCHHSNOqfJXLgt3bg5+k49hIBGVr/bfG0B9JU3rNt" - + "Ycl9Y2zfRPUCKAK2ccOQXByAWfsasDu8zKHxkZv7LVDTFjAIffz3HaCQeVhD" - + "z+fauEg="); - - byte[] keyUsage = Base64.decode( - "MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UE" - + "BhMCVVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50" - + "cnVzdC5uZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBs" - + "aW1pdHMgbGlhYi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExp" - + "bWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0" - + "aW9uIEF1dGhvcml0eTAeFw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBa" - + "MIHJMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNV" - + "BAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5mby9DUFMgaW5jb3Jw" - + "LiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMpIDE5OTkgRW50" - + "cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50" - + "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GL" - + "ADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo6oT9n3V5z8GKUZSv" - + "x1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux5zDeg7K6PvHV" - + "iTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zmAqTmT173" - + "iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSCARkw" - + "ggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50" - + "cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0Ff" - + "SW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UE" - + "CxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50" - + "cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYD" - + "VQQDEwRDUkwxMCygKqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9D" - + "bGllbnQxLmNybDArBgNVHRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkx" - + "MDEyMTkyNDMwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW" - + "/O5bs8qZdIuV6kwwHQYDVR0OBBYEFMT7nCl7l81MlvzuW7PKmXSLlepMMAwG" - + "A1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI" - + "hvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7pFuPeJoSSJn59DXeDDYHAmsQ" - + "OokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzzwy5E97BnRqqS5TvaHBkU" - + "ODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/aEkP/TOYGJqibGapE" - + "PHayXOw="); - - byte[] nameCert = Base64.decode( - "MIIEFjCCA3+gAwIBAgIEdS8BozANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJE"+ - "RTERMA8GA1UEChQIREFURVYgZUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRQ0Eg"+ - "REFURVYgRDAzIDE6UE4wIhgPMjAwMTA1MTAxMDIyNDhaGA8yMDA0MDUwOTEwMjI0"+ - "OFowgYQxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIFAZCYXllcm4xEjAQBgNVBAcUCU7I"+ - "dXJuYmVyZzERMA8GA1UEChQIREFURVYgZUcxHTAbBgNVBAUTFDAwMDAwMDAwMDA4"+ - "OTU3NDM2MDAxMR4wHAYDVQQDFBVEaWV0bWFyIFNlbmdlbmxlaXRuZXIwgaEwDQYJ"+ - "KoZIhvcNAQEBBQADgY8AMIGLAoGBAJLI/LJLKaHoMk8fBECW/od8u5erZi6jI8Ug"+ - "C0a/LZyQUO/R20vWJs6GrClQtXB+AtfiBSnyZOSYzOdfDI8yEKPEv8qSuUPpOHps"+ - "uNCFdLZF1vavVYGEEWs2+y+uuPmg8q1oPRyRmUZ+x9HrDvCXJraaDfTEd9olmB/Z"+ - "AuC/PqpjAgUAwAAAAaOCAcYwggHCMAwGA1UdEwEB/wQCMAAwDwYDVR0PAQH/BAUD"+ - "AwdAADAxBgNVHSAEKjAoMCYGBSskCAEBMB0wGwYIKwYBBQUHAgEWD3d3dy56cy5k"+ - "YXRldi5kZTApBgNVHREEIjAggR5kaWV0bWFyLnNlbmdlbmxlaXRuZXJAZGF0ZXYu"+ - "ZGUwgYQGA1UdIwR9MHuhc6RxMG8xCzAJBgNVBAYTAkRFMT0wOwYDVQQKFDRSZWd1"+ - "bGllcnVuZ3NiZWjIb3JkZSBmyHVyIFRlbGVrb21tdW5pa2F0aW9uIHVuZCBQb3N0"+ - "MSEwDAYHAoIGAQoHFBMBMTARBgNVBAMUCjVSLUNBIDE6UE6CBACm8LkwDgYHAoIG"+ - "AQoMAAQDAQEAMEcGA1UdHwRAMD4wPKAUoBKGEHd3dy5jcmwuZGF0ZXYuZGWiJKQi"+ - "MCAxCzAJBgNVBAYTAkRFMREwDwYDVQQKFAhEQVRFViBlRzAWBgUrJAgDBAQNMAsT"+ - "A0VVUgIBBQIBATAdBgNVHQ4EFgQUfv6xFP0xk7027folhy+ziZvBJiwwLAYIKwYB"+ - "BQUHAQEEIDAeMBwGCCsGAQUFBzABhhB3d3cuZGlyLmRhdGV2LmRlMA0GCSqGSIb3"+ - "DQEBBQUAA4GBAEOVX6uQxbgtKzdgbTi6YLffMftFr2mmNwch7qzpM5gxcynzgVkg"+ - "pnQcDNlm5AIbS6pO8jTCLfCd5TZ5biQksBErqmesIl3QD+VqtB+RNghxectZ3VEs"+ - "nCUtcE7tJ8O14qwCb3TxS9dvIUFiVi4DjbxX46TdcTbTaK8/qr6AIf+l"); - - byte[] probSelfSignedCert = Base64.decode( - "MIICxTCCAi6gAwIBAgIQAQAAAAAAAAAAAAAAAAAAATANBgkqhkiG9w0BAQUFADBF" - + "MScwJQYDVQQKEx4gRElSRUNUSU9OIEdFTkVSQUxFIERFUyBJTVBPVFMxGjAYBgNV" - + "BAMTESBBQyBNSU5FRkkgQiBURVNUMB4XDTA0MDUwNzEyMDAwMFoXDTE0MDUwNzEy" - + "MDAwMFowRTEnMCUGA1UEChMeIERJUkVDVElPTiBHRU5FUkFMRSBERVMgSU1QT1RT" - + "MRowGAYDVQQDExEgQUMgTUlORUZJIEIgVEVTVDCBnzANBgkqhkiG9w0BAQEFAAOB" - + "jQAwgYkCgYEAveoCUOAukZdcFCs2qJk76vSqEX0ZFzHqQ6faBPZWjwkgUNwZ6m6m" - + "qWvvyq1cuxhoDvpfC6NXILETawYc6MNwwxsOtVVIjuXlcF17NMejljJafbPximEt" - + "DQ4LcQeSp4K7FyFlIAMLyt3BQ77emGzU5fjFTvHSUNb3jblx0sV28c0CAwEAAaOB" - + "tTCBsjAfBgNVHSMEGDAWgBSEJ4bLbvEQY8cYMAFKPFD1/fFXlzAdBgNVHQ4EFgQU" - + "hCeGy27xEGPHGDABSjxQ9f3xV5cwDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIB" - + "AQQEAwIBBjA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vYWRvbmlzLnBrNy5jZXJ0" - + "cGx1cy5uZXQvZGdpLXRlc3QuY3JsMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN" - + "AQEFBQADgYEAmToHJWjd3+4zknfsP09H6uMbolHNGG0zTS2lrLKpzcmkQfjhQpT9" - + "LUTBvfs1jdjo9fGmQLvOG+Sm51Rbjglb8bcikVI5gLbclOlvqLkm77otjl4U4Z2/" - + "Y0vP14Aov3Sn3k+17EfReYUZI4liuB95ncobC4e8ZM++LjQcIM0s+Vs="); - - - byte[] gost34102001base = Base64.decode( - "MIIB1DCCAYECEEjpVKXP6Wn1yVz3VeeDQa8wCgYGKoUDAgIDBQAwbTEfMB0G" - + "A1UEAwwWR29zdFIzNDEwLTIwMDEgZXhhbXBsZTESMBAGA1UECgwJQ3J5cHRv" - + "UHJvMQswCQYDVQQGEwJSVTEpMCcGCSqGSIb3DQEJARYaR29zdFIzNDEwLTIw" - + "MDFAZXhhbXBsZS5jb20wHhcNMDUwMjAzMTUxNjQ2WhcNMTUwMjAzMTUxNjQ2" - + "WjBtMR8wHQYDVQQDDBZHb3N0UjM0MTAtMjAwMSBleGFtcGxlMRIwEAYDVQQK" - + "DAlDcnlwdG9Qcm8xCzAJBgNVBAYTAlJVMSkwJwYJKoZIhvcNAQkBFhpHb3N0" - + "UjM0MTAtMjAwMUBleGFtcGxlLmNvbTBjMBwGBiqFAwICEzASBgcqhQMCAiQA" - + "BgcqhQMCAh4BA0MABECElWh1YAIaQHUIzROMMYks/eUFA3pDXPRtKw/nTzJ+" - + "V4/rzBa5lYgD0Jp8ha4P5I3qprt+VsfLsN8PZrzK6hpgMAoGBiqFAwICAwUA" - + "A0EAHw5dw/aw/OiNvHyOE65kvyo4Hp0sfz3csM6UUkp10VO247ofNJK3tsLb" - + "HOLjUaqzefrlGb11WpHYrvWFg+FcLA=="); - - byte[] gost341094base = Base64.decode( - "MIICDzCCAbwCEBcxKsIb0ghYvAQeUjfQdFAwCgYGKoUDAgIEBQAwaTEdMBsG" - + "A1UEAwwUR29zdFIzNDEwLTk0IGV4YW1wbGUxEjAQBgNVBAoMCUNyeXB0b1By" - + "bzELMAkGA1UEBhMCUlUxJzAlBgkqhkiG9w0BCQEWGEdvc3RSMzQxMC05NEBl" - + "eGFtcGxlLmNvbTAeFw0wNTAyMDMxNTE2NTFaFw0xNTAyMDMxNTE2NTFaMGkx" - + "HTAbBgNVBAMMFEdvc3RSMzQxMC05NCBleGFtcGxlMRIwEAYDVQQKDAlDcnlw" - + "dG9Qcm8xCzAJBgNVBAYTAlJVMScwJQYJKoZIhvcNAQkBFhhHb3N0UjM0MTAt" - + "OTRAZXhhbXBsZS5jb20wgaUwHAYGKoUDAgIUMBIGByqFAwICIAIGByqFAwIC" - + "HgEDgYQABIGAu4Rm4XmeWzTYLIB/E6gZZnFX/oxUJSFHbzALJ3dGmMb7R1W+" - + "t7Lzk2w5tUI3JoTiDRCKJA4fDEJNKzsRK6i/ZjkyXJSLwaj+G2MS9gklh8x1" - + "G/TliYoJgmjTXHemD7aQEBON4z58nJHWrA0ILD54wbXCtrcaqCqLRYGTMjJ2" - + "+nswCgYGKoUDAgIEBQADQQBxKNhOmjgz/i5CEgLOyKyz9pFGkDcaymsWYQWV" - + "v7CZ0pTM8IzMzkUBW3GHsUjCFpanFZDfg2zuN+3kT+694n9B"); - - byte[] gost341094A = Base64.decode( - "MIICSDCCAfWgAwIBAgIBATAKBgYqhQMCAgQFADCBgTEXMBUGA1UEAxMOZGVmYXVsdDM0MTAtOTQx" - + "DTALBgNVBAoTBERpZ3QxDzANBgNVBAsTBkNyeXB0bzEOMAwGA1UEBxMFWS1vbGExDDAKBgNVBAgT" - + "A01FTDELMAkGA1UEBhMCcnUxGzAZBgkqhkiG9w0BCQEWDHRlc3RAdGVzdC5ydTAeFw0wNTAzMjkx" - + "MzExNTdaFw0wNjAzMjkxMzExNTdaMIGBMRcwFQYDVQQDEw5kZWZhdWx0MzQxMC05NDENMAsGA1UE" - + "ChMERGlndDEPMA0GA1UECxMGQ3J5cHRvMQ4wDAYDVQQHEwVZLW9sYTEMMAoGA1UECBMDTUVMMQsw" - + "CQYDVQQGEwJydTEbMBkGCSqGSIb3DQEJARYMdGVzdEB0ZXN0LnJ1MIGlMBwGBiqFAwICFDASBgcq" - + "hQMCAiACBgcqhQMCAh4BA4GEAASBgIQACDLEuxSdRDGgdZxHmy30g/DUYkRxO9Mi/uSHX5NjvZ31" - + "b7JMEMFqBtyhql1HC5xZfUwZ0aT3UnEFDfFjLP+Bf54gA+LPkQXw4SNNGOj+klnqgKlPvoqMGlwa" - + "+hLPKbS561WpvB2XSTgbV+pqqXR3j6j30STmybelEV3RdS2Now8wDTALBgNVHQ8EBAMCB4AwCgYG" - + "KoUDAgIEBQADQQBCFy7xWRXtNVXflKvDs0pBdBuPzjCMeZAXVxK8vUxsxxKu76d9CsvhgIFknFRi" - + "wWTPiZenvNoJ4R1uzeX+vREm"); - - byte[] gost341094B = Base64.decode( - "MIICSDCCAfWgAwIBAgIBATAKBgYqhQMCAgQFADCBgTEXMBUGA1UEAxMOcGFyYW0xLTM0MTAtOTQx" - + "DTALBgNVBAoTBERpZ3QxDzANBgNVBAsTBkNyeXB0bzEOMAwGA1UEBxMFWS1PbGExDDAKBgNVBAgT" - + "A01lbDELMAkGA1UEBhMCcnUxGzAZBgkqhkiG9w0BCQEWDHRlc3RAdGVzdC5ydTAeFw0wNTAzMjkx" - + "MzEzNTZaFw0wNjAzMjkxMzEzNTZaMIGBMRcwFQYDVQQDEw5wYXJhbTEtMzQxMC05NDENMAsGA1UE" - + "ChMERGlndDEPMA0GA1UECxMGQ3J5cHRvMQ4wDAYDVQQHEwVZLU9sYTEMMAoGA1UECBMDTWVsMQsw" - + "CQYDVQQGEwJydTEbMBkGCSqGSIb3DQEJARYMdGVzdEB0ZXN0LnJ1MIGlMBwGBiqFAwICFDASBgcq" - + "hQMCAiADBgcqhQMCAh4BA4GEAASBgEa+AAcZmijWs1M9x5Pn9efE8D9ztG1NMoIt0/hNZNqln3+j" - + "lMZjyqPt+kTLIjtmvz9BRDmIDk6FZz+4LhG2OTL7yGpWfrMxMRr56nxomTN9aLWRqbyWmn3brz9Y" - + "AUD3ifnwjjIuW7UM84JNlDTOdxx0XRUfLQIPMCXe9cO02Xskow8wDTALBgNVHQ8EBAMCB4AwCgYG" - + "KoUDAgIEBQADQQBzFcnuYc/639OTW+L5Ecjw9KxGr+dwex7lsS9S1BUgKa3m1d5c+cqI0B2XUFi5" - + "4iaHHJG0dCyjtQYLJr0OZjRw"); - - byte[] gost34102001A = Base64.decode( - "MIICCzCCAbigAwIBAgIBATAKBgYqhQMCAgMFADCBhDEaMBgGA1UEAxMRZGVmYXVsdC0zNDEwLTIw" - + "MDExDTALBgNVBAoTBERpZ3QxDzANBgNVBAsTBkNyeXB0bzEOMAwGA1UEBxMFWS1PbGExDDAKBgNV" - + "BAgTA01lbDELMAkGA1UEBhMCcnUxGzAZBgkqhkiG9w0BCQEWDHRlc3RAdGVzdC5ydTAeFw0wNTAz" - + "MjkxMzE4MzFaFw0wNjAzMjkxMzE4MzFaMIGEMRowGAYDVQQDExFkZWZhdWx0LTM0MTAtMjAwMTEN" - + "MAsGA1UEChMERGlndDEPMA0GA1UECxMGQ3J5cHRvMQ4wDAYDVQQHEwVZLU9sYTEMMAoGA1UECBMD" - + "TWVsMQswCQYDVQQGEwJydTEbMBkGCSqGSIb3DQEJARYMdGVzdEB0ZXN0LnJ1MGMwHAYGKoUDAgIT" - + "MBIGByqFAwICIwEGByqFAwICHgEDQwAEQG/4c+ZWb10IpeHfmR+vKcbpmSOClJioYmCVgnojw0Xn" - + "ned0KTg7TJreRUc+VX7vca4hLQaZ1o/TxVtfEApK/O6jDzANMAsGA1UdDwQEAwIHgDAKBgYqhQMC" - + "AgMFAANBAN8y2b6HuIdkD3aWujpfQbS1VIA/7hro4vLgDhjgVmev/PLzFB8oTh3gKhExpDo82IEs" - + "ZftGNsbbyp1NFg7zda0="); - - byte[] gostCA1 = Base64.decode( - "MIIDNDCCAuGgAwIBAgIQZLcKDcWcQopF+jp4p9jylDAKBgYqhQMCAgQFADBm" - + "MQswCQYDVQQGEwJSVTEPMA0GA1UEBxMGTW9zY293MRcwFQYDVQQKEw5PT08g" - + "Q3J5cHRvLVBybzEUMBIGA1UECxMLRGV2ZWxvcG1lbnQxFzAVBgNVBAMTDkNQ" - + "IENTUCBUZXN0IENBMB4XDTAyMDYwOTE1NTIyM1oXDTA5MDYwOTE1NTkyOVow" - + "ZjELMAkGA1UEBhMCUlUxDzANBgNVBAcTBk1vc2NvdzEXMBUGA1UEChMOT09P" - + "IENyeXB0by1Qcm8xFDASBgNVBAsTC0RldmVsb3BtZW50MRcwFQYDVQQDEw5D" - + "UCBDU1AgVGVzdCBDQTCBpTAcBgYqhQMCAhQwEgYHKoUDAgIgAgYHKoUDAgIe" - + "AQOBhAAEgYAYglywKuz1nMc9UiBYOaulKy53jXnrqxZKbCCBSVaJ+aCKbsQm" - + "glhRFrw6Mwu8Cdeabo/ojmea7UDMZd0U2xhZFRti5EQ7OP6YpqD0alllo7za" - + "4dZNXdX+/ag6fOORSLFdMpVx5ganU0wHMPk67j+audnCPUj/plbeyccgcdcd" - + "WaOCASIwggEeMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud" - + "DgQWBBTe840gTo4zt2twHilw3PD9wJaX0TCBygYDVR0fBIHCMIG/MDygOqA4" - + "hjYtaHR0cDovL2ZpZXdhbGwvQ2VydEVucm9sbC9DUCUyMENTUCUyMFRlc3Ql" - + "MjBDQSgzKS5jcmwwRKBCoECGPmh0dHA6Ly93d3cuY3J5cHRvcHJvLnJ1L0Nl" - + "cnRFbnJvbGwvQ1AlMjBDU1AlMjBUZXN0JTIwQ0EoMykuY3JsMDmgN6A1hjMt" - + "ZmlsZTovL1xcZmlld2FsbFxDZXJ0RW5yb2xsXENQIENTUCBUZXN0IENBKDMp" - + "LmNybC8wEgYJKwYBBAGCNxUBBAUCAwMAAzAKBgYqhQMCAgQFAANBAIJi7ni7" - + "9rwMR5rRGTFftt2k70GbqyUEfkZYOzrgdOoKiB4IIsIstyBX0/ne6GsL9Xan" - + "G2IN96RB7KrowEHeW+k="); - - byte[] gostCA2 = Base64.decode( - "MIIC2DCCAoWgAwIBAgIQe9ZCugm42pRKNcHD8466zTAKBgYqhQMCAgMFADB+" - + "MRowGAYJKoZIhvcNAQkBFgtzYmFAZGlndC5ydTELMAkGA1UEBhMCUlUxDDAK" - + "BgNVBAgTA01FTDEUMBIGA1UEBxMLWW9zaGthci1PbGExDTALBgNVBAoTBERp" - + "Z3QxDzANBgNVBAsTBkNyeXB0bzEPMA0GA1UEAxMGc2JhLUNBMB4XDTA0MDgw" - + "MzEzMzE1OVoXDTE0MDgwMzEzNDAxMVowfjEaMBgGCSqGSIb3DQEJARYLc2Jh" - + "QGRpZ3QucnUxCzAJBgNVBAYTAlJVMQwwCgYDVQQIEwNNRUwxFDASBgNVBAcT" - + "C1lvc2hrYXItT2xhMQ0wCwYDVQQKEwREaWd0MQ8wDQYDVQQLEwZDcnlwdG8x" - + "DzANBgNVBAMTBnNiYS1DQTBjMBwGBiqFAwICEzASBgcqhQMCAiMBBgcqhQMC" - + "Ah4BA0MABEDMSy10CuOH+i8QKG2UWA4XmCt6+BFrNTZQtS6bOalyDY8Lz+G7" - + "HybyipE3PqdTB4OIKAAPsEEeZOCZd2UXGQm5o4HaMIHXMBMGCSsGAQQBgjcU" - + "AgQGHgQAQwBBMAsGA1UdDwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud" - + "DgQWBBRJJl3LcNMxkZI818STfoi3ng1xoDBxBgNVHR8EajBoMDGgL6Athito" - + "dHRwOi8vc2JhLmRpZ3QubG9jYWwvQ2VydEVucm9sbC9zYmEtQ0EuY3JsMDOg" - + "MaAvhi1maWxlOi8vXFxzYmEuZGlndC5sb2NhbFxDZXJ0RW5yb2xsXHNiYS1D" - + "QS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwCgYGKoUDAgIDBQADQQA+BRJHbc/p" - + "q8EYl6iJqXCuR+ozRmH7hPAP3c4KqYSC38TClCgBloLapx/3/WdatctFJW/L" - + "mcTovpq088927shE"); - - byte[] inDirectCrl = Base64.decode( - "MIIdXjCCHMcCAQEwDQYJKoZIhvcNAQEFBQAwdDELMAkGA1UEBhMCREUxHDAaBgNV" - +"BAoUE0RldXRzY2hlIFRlbGVrb20gQUcxFzAVBgNVBAsUDlQtVGVsZVNlYyBUZXN0" - +"MS4wDAYHAoIGAQoHFBMBMTAeBgNVBAMUF1QtVGVsZVNlYyBUZXN0IERJUiA4OlBO" - +"Fw0wNjA4MDQwODQ1MTRaFw0wNjA4MDQxNDQ1MTRaMIIbfzB+AgQvrj/pFw0wMzA3" - +"MjIwNTQxMjhaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP+oXDTAzMDcyMjA1NDEyOFowZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/5xcNMDQwNDA1MTMxODE3WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/oFw0wNDA0" - +"MDUxMzE4MTdaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP+UXDTAzMDExMzExMTgxMVowZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/5hcNMDMwMTEzMTExODExWjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/jFw0wMzAx" - +"MTMxMTI2NTZaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP+QXDTAzMDExMzExMjY1NlowZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/4hcNMDQwNzEzMDc1ODM4WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/eFw0wMzAy" - +"MTcwNjMzMjVaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP98XDTAzMDIxNzA2MzMyNVowZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/0xcNMDMwMjE3MDYzMzI1WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/dFw0wMzAx" - +"MTMxMTI4MTRaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP9cXDTAzMDExMzExMjcwN1owZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/2BcNMDMwMTEzMTEyNzA3WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNDpQTjB+AgQvrj/VFw0wMzA0" - +"MzAxMjI3NTNaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYD" - +"VQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMU" - +"EVNpZ0cgVGVzdCBDQSA0OlBOMH4CBC+uP9YXDTAzMDQzMDEyMjc1M1owZzBlBgNV" - +"HR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDQ6" - +"UE4wfgIEL64/xhcNMDMwMjEyMTM0NTQwWjBnMGUGA1UdHQEB/wRbMFmkVzBVMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKC" - +"BgEKBxQTATEwGAYDVQQDFBFUVEMgVGVzdCBDQSAxMTpQTjCBkAIEL64/xRcNMDMw" - +"MjEyMTM0NTQwWjB5MHcGA1UdHQEB/wRtMGukaTBnMQswCQYDVQQGEwJERTEcMBoG" - +"A1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEQMA4GA1UECxQHVGVsZVNlYzEoMAwG" - +"BwKCBgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0EgNTpQTjB+AgQvrj/CFw0w" - +"MzAyMTIxMzA5MTZaMGcwZQYDVR0dAQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRww" - +"GgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNV" - +"BAMUEVRUQyBUZXN0IENBIDExOlBOMIGQAgQvrj/BFw0wMzAyMTIxMzA4NDBaMHkw" - +"dwYDVR0dAQH/BG0wa6RpMGcxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2No" - +"ZSBUZWxla29tIEFHMRAwDgYDVQQLFAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAY" - +"BgNVBAMUEVNpZ0cgVGVzdCBDQSA1OlBOMH4CBC+uP74XDTAzMDIxNzA2MzcyNVow" - +"ZzBlBgNVHR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRz" - +"Y2hlIFRlbGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRVFRDIFRlc3Qg" - +"Q0EgMTE6UE4wgZACBC+uP70XDTAzMDIxNzA2MzcyNVoweTB3BgNVHR0BAf8EbTBr" - +"pGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcx" - +"EDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBU" - +"ZXN0IENBIDU6UE4wgZACBC+uP7AXDTAzMDIxMjEzMDg1OVoweTB3BgNVHR0BAf8E" - +"bTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20g" - +"QUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2ln" - +"RyBUZXN0IENBIDU6UE4wgZACBC+uP68XDTAzMDIxNzA2MzcyNVoweTB3BgNVHR0B" - +"Af8EbTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVr" - +"b20gQUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQR" - +"U2lnRyBUZXN0IENBIDU6UE4wfgIEL64/kxcNMDMwNDEwMDUyNjI4WjBnMGUGA1Ud" - +"HQEB/wRbMFmkVzBVMQswCQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVs" - +"ZWtvbSBBRzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFUVEMgVGVzdCBDQSAxMTpQ" - +"TjCBkAIEL64/khcNMDMwNDEwMDUyNjI4WjB5MHcGA1UdHQEB/wRtMGukaTBnMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEQMA4GA1UE" - +"CxQHVGVsZVNlYzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFTaWdHIFRlc3QgQ0Eg" - +"NTpQTjB+AgQvrj8/Fw0wMzAyMjYxMTA0NDRaMGcwZQYDVR0dAQH/BFswWaRXMFUx" - +"CzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMSgwDAYH" - +"AoIGAQoHFBMBMTAYBgNVBAMUEVRUQyBUZXN0IENBIDExOlBOMIGQAgQvrj8+Fw0w" - +"MzAyMjYxMTA0NDRaMHkwdwYDVR0dAQH/BG0wa6RpMGcxCzAJBgNVBAYTAkRFMRww" - +"GgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMRAwDgYDVQQLFAdUZWxlU2VjMSgw" - +"DAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cgVGVzdCBDQSA1OlBOMH4CBC+uPs0X" - +"DTAzMDUyMDA1MjczNlowZzBlBgNVHR0BAf8EWzBZpFcwVTELMAkGA1UEBhMCREUx" - +"HDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxKDAMBgcCggYBCgcUEwExMBgG" - +"A1UEAxQRVFRDIFRlc3QgQ0EgMTE6UE4wgZACBC+uPswXDTAzMDUyMDA1MjczNlow" - +"eTB3BgNVHR0BAf8EbTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRz" - +"Y2hlIFRlbGVrb20gQUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwEx" - +"MBgGA1UEAxQRU2lnRyBUZXN0IENBIDY6UE4wfgIEL64+PBcNMDMwNjE3MTAzNDE2" - +"WjBnMGUGA1UdHQEB/wRbMFmkVzBVMQswCQYDVQQGEwJERTEcMBoGA1UEChQTRGV1" - +"dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFUVEMgVGVz" - +"dCBDQSAxMTpQTjCBkAIEL64+OxcNMDMwNjE3MTAzNDE2WjB5MHcGA1UdHQEB/wRt" - +"MGukaTBnMQswCQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBB" - +"RzEQMA4GA1UECxQHVGVsZVNlYzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFTaWdH" - +"IFRlc3QgQ0EgNjpQTjCBkAIEL64+OhcNMDMwNjE3MTAzNDE2WjB5MHcGA1UdHQEB" - +"/wRtMGukaTBnMQswCQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtv" - +"bSBBRzEQMA4GA1UECxQHVGVsZVNlYzEoMAwGBwKCBgEKBxQTATEwGAYDVQQDFBFT" - +"aWdHIFRlc3QgQ0EgNjpQTjB+AgQvrj45Fw0wMzA2MTcxMzAxMDBaMGcwZQYDVR0d" - +"AQH/BFswWaRXMFUxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxl" - +"a29tIEFHMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVRUQyBUZXN0IENBIDExOlBO" - +"MIGQAgQvrj44Fw0wMzA2MTcxMzAxMDBaMHkwdwYDVR0dAQH/BG0wa6RpMGcxCzAJ" - +"BgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMRAwDgYDVQQL" - +"FAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cgVGVzdCBDQSA2" - +"OlBOMIGQAgQvrj43Fw0wMzA2MTcxMzAxMDBaMHkwdwYDVR0dAQH/BG0wa6RpMGcx" - +"CzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMRAwDgYD" - +"VQQLFAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cgVGVzdCBD" - +"QSA2OlBOMIGQAgQvrj42Fw0wMzA2MTcxMzAxMDBaMHkwdwYDVR0dAQH/BG0wa6Rp" - +"MGcxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMRAw" - +"DgYDVQQLFAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cgVGVz" - +"dCBDQSA2OlBOMIGQAgQvrj4zFw0wMzA2MTcxMDM3NDlaMHkwdwYDVR0dAQH/BG0w" - +"a6RpMGcxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFH" - +"MRAwDgYDVQQLFAdUZWxlU2VjMSgwDAYHAoIGAQoHFBMBMTAYBgNVBAMUEVNpZ0cg" - +"VGVzdCBDQSA2OlBOMH4CBC+uPjEXDTAzMDYxNzEwNDI1OFowZzBlBgNVHR0BAf8E" - +"WzBZpFcwVTELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20g" - +"QUcxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRVFRDIFRlc3QgQ0EgMTE6UE4wgZAC" - +"BC+uPjAXDTAzMDYxNzEwNDI1OFoweTB3BgNVHR0BAf8EbTBrpGkwZzELMAkGA1UE" - +"BhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxEDAOBgNVBAsUB1Rl" - +"bGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDY6UE4w" - +"gZACBC+uPakXDTAzMTAyMjExMzIyNFoweTB3BgNVHR0BAf8EbTBrpGkwZzELMAkG" - +"A1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxEDAOBgNVBAsU" - +"B1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENBIDY6" - +"UE4wgZACBC+uPLIXDTA1MDMxMTA2NDQyNFoweTB3BgNVHR0BAf8EbTBrpGkwZzEL" - +"MAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxEDAOBgNV" - +"BAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0IENB" - +"IDY6UE4wgZACBC+uPKsXDTA0MDQwMjA3NTQ1M1oweTB3BgNVHR0BAf8EbTBrpGkw" - +"ZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcxEDAO" - +"BgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBUZXN0" - +"IENBIDY6UE4wgZACBC+uOugXDTA1MDEyNzEyMDMyNFoweTB3BgNVHR0BAf8EbTBr" - +"pGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20gQUcx" - +"EDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2lnRyBU" - +"ZXN0IENBIDY6UE4wgZACBC+uOr4XDTA1MDIxNjA3NTcxNloweTB3BgNVHR0BAf8E" - +"bTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVrb20g" - +"QUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQRU2ln" - +"RyBUZXN0IENBIDY6UE4wgZACBC+uOqcXDTA1MDMxMDA1NTkzNVoweTB3BgNVHR0B" - +"Af8EbTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRlbGVr" - +"b20gQUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UEAxQR" - +"U2lnRyBUZXN0IENBIDY6UE4wgZACBC+uOjwXDTA1MDUxMTEwNDk0NloweTB3BgNV" - +"HR0BAf8EbTBrpGkwZzELMAkGA1UEBhMCREUxHDAaBgNVBAoUE0RldXRzY2hlIFRl" - +"bGVrb20gQUcxEDAOBgNVBAsUB1RlbGVTZWMxKDAMBgcCggYBCgcUEwExMBgGA1UE" - +"AxQRU2lnRyBUZXN0IENBIDY6UE4wgaoCBC+sbdUXDTA1MTExMTEwMDMyMVowgZIw" - +"gY8GA1UdHQEB/wSBhDCBgaR/MH0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0" - +"c2NoZSBUZWxla29tIEFHMR8wHQYDVQQLFBZQcm9kdWt0emVudHJ1bSBUZWxlU2Vj" - +"MS8wDAYHAoIGAQoHFBMBMTAfBgNVBAMUGFRlbGVTZWMgUEtTIFNpZ0cgQ0EgMTpQ" - +"TjCBlQIEL64uaBcNMDYwMTIzMTAyNTU1WjB+MHwGA1UdHQEB/wRyMHCkbjBsMQsw" - +"CQYDVQQGEwJERTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEWMBQGA1UE" - +"CxQNWmVudHJhbGUgQm9ubjEnMAwGBwKCBgEKBxQTATEwFwYDVQQDFBBUVEMgVGVz" - +"dCBDQSA5OlBOMIGVAgQvribHFw0wNjA4MDEwOTQ4NDRaMH4wfAYDVR0dAQH/BHIw" - +"cKRuMGwxCzAJBgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFH" - +"MRYwFAYDVQQLFA1aZW50cmFsZSBCb25uMScwDAYHAoIGAQoHFBMBMTAXBgNVBAMU" - +"EFRUQyBUZXN0IENBIDk6UE6ggZswgZgwCwYDVR0UBAQCAhEMMB8GA1UdIwQYMBaA" - +"FANbyNumDI9545HwlCF26NuOJC45MA8GA1UdHAEB/wQFMAOEAf8wVwYDVR0SBFAw" - +"ToZMbGRhcDovL3Brc2xkYXAudHR0Yy5kZS9vdT1ULVRlbGVTZWMgVGVzdCBESVIg" - +"ODpQTixvPURldXRzY2hlIFRlbGVrb20gQUcsYz1kZTANBgkqhkiG9w0BAQUFAAOB" - +"gQBewL5gLFHpeOWO07Vk3Gg7pRDuAlvaovBH4coCyCWpk5jEhUfFSYEDuaQB7do4" - +"IlJmeTHvkI0PIZWJ7bwQ2PVdipPWDx0NVwS/Cz5jUKiS3BbAmZQZOueiKLFpQq3A" - +"b8aOHA7WHU4078/1lM+bgeu33Ln1CGykEbmSjA/oKPi/JA=="); - - byte[] directCRL = Base64.decode( - "MIIGXTCCBckCAQEwCgYGKyQDAwECBQAwdDELMAkGA1UEBhMCREUxHDAaBgNVBAoU" - +"E0RldXRzY2hlIFRlbGVrb20gQUcxFzAVBgNVBAsUDlQtVGVsZVNlYyBUZXN0MS4w" - +"DAYHAoIGAQoHFBMBMTAeBgNVBAMUF1QtVGVsZVNlYyBUZXN0IERJUiA4OlBOFw0w" - +"NjA4MDQwODQ1MTRaFw0wNjA4MDQxNDQ1MTRaMIIElTAVAgQvrj/pFw0wMzA3MjIw" - +"NTQxMjhaMBUCBC+uP+oXDTAzMDcyMjA1NDEyOFowFQIEL64/5xcNMDQwNDA1MTMx" - +"ODE3WjAVAgQvrj/oFw0wNDA0MDUxMzE4MTdaMBUCBC+uP+UXDTAzMDExMzExMTgx" - +"MVowFQIEL64/5hcNMDMwMTEzMTExODExWjAVAgQvrj/jFw0wMzAxMTMxMTI2NTZa" - +"MBUCBC+uP+QXDTAzMDExMzExMjY1NlowFQIEL64/4hcNMDQwNzEzMDc1ODM4WjAV" - +"AgQvrj/eFw0wMzAyMTcwNjMzMjVaMBUCBC+uP98XDTAzMDIxNzA2MzMyNVowFQIE" - +"L64/0xcNMDMwMjE3MDYzMzI1WjAVAgQvrj/dFw0wMzAxMTMxMTI4MTRaMBUCBC+u" - +"P9cXDTAzMDExMzExMjcwN1owFQIEL64/2BcNMDMwMTEzMTEyNzA3WjAVAgQvrj/V" - +"Fw0wMzA0MzAxMjI3NTNaMBUCBC+uP9YXDTAzMDQzMDEyMjc1M1owFQIEL64/xhcN" - +"MDMwMjEyMTM0NTQwWjAVAgQvrj/FFw0wMzAyMTIxMzQ1NDBaMBUCBC+uP8IXDTAz" - +"MDIxMjEzMDkxNlowFQIEL64/wRcNMDMwMjEyMTMwODQwWjAVAgQvrj++Fw0wMzAy" - +"MTcwNjM3MjVaMBUCBC+uP70XDTAzMDIxNzA2MzcyNVowFQIEL64/sBcNMDMwMjEy" - +"MTMwODU5WjAVAgQvrj+vFw0wMzAyMTcwNjM3MjVaMBUCBC+uP5MXDTAzMDQxMDA1" - +"MjYyOFowFQIEL64/khcNMDMwNDEwMDUyNjI4WjAVAgQvrj8/Fw0wMzAyMjYxMTA0" - +"NDRaMBUCBC+uPz4XDTAzMDIyNjExMDQ0NFowFQIEL64+zRcNMDMwNTIwMDUyNzM2" - +"WjAVAgQvrj7MFw0wMzA1MjAwNTI3MzZaMBUCBC+uPjwXDTAzMDYxNzEwMzQxNlow" - +"FQIEL64+OxcNMDMwNjE3MTAzNDE2WjAVAgQvrj46Fw0wMzA2MTcxMDM0MTZaMBUC" - +"BC+uPjkXDTAzMDYxNzEzMDEwMFowFQIEL64+OBcNMDMwNjE3MTMwMTAwWjAVAgQv" - +"rj43Fw0wMzA2MTcxMzAxMDBaMBUCBC+uPjYXDTAzMDYxNzEzMDEwMFowFQIEL64+" - +"MxcNMDMwNjE3MTAzNzQ5WjAVAgQvrj4xFw0wMzA2MTcxMDQyNThaMBUCBC+uPjAX" - +"DTAzMDYxNzEwNDI1OFowFQIEL649qRcNMDMxMDIyMTEzMjI0WjAVAgQvrjyyFw0w" - +"NTAzMTEwNjQ0MjRaMBUCBC+uPKsXDTA0MDQwMjA3NTQ1M1owFQIEL6466BcNMDUw" - +"MTI3MTIwMzI0WjAVAgQvrjq+Fw0wNTAyMTYwNzU3MTZaMBUCBC+uOqcXDTA1MDMx" - +"MDA1NTkzNVowFQIEL646PBcNMDUwNTExMTA0OTQ2WjAVAgQvrG3VFw0wNTExMTEx" - +"MDAzMjFaMBUCBC+uLmgXDTA2MDEyMzEwMjU1NVowFQIEL64mxxcNMDYwODAxMDk0" - +"ODQ0WqCBijCBhzALBgNVHRQEBAICEQwwHwYDVR0jBBgwFoAUA1vI26YMj3njkfCU" - +"IXbo244kLjkwVwYDVR0SBFAwToZMbGRhcDovL3Brc2xkYXAudHR0Yy5kZS9vdT1U" - +"LVRlbGVTZWMgVGVzdCBESVIgODpQTixvPURldXRzY2hlIFRlbGVrb20gQUcsYz1k" - +"ZTAKBgYrJAMDAQIFAAOBgQArj4eMlbAwuA2aS5O4UUUHQMKKdK/dtZi60+LJMiMY" - +"ojrMIf4+ZCkgm1Ca0Cd5T15MJxVHhh167Ehn/Hd48pdnAP6Dfz/6LeqkIHGWMHR+" - +"z6TXpwWB+P4BdUec1ztz04LypsznrHcLRa91ixg9TZCb1MrOG+InNhleRs1ImXk8" - +"MQ=="); - - private final byte[] pkcs7CrlProblem = Base64.decode( - "MIIwSAYJKoZIhvcNAQcCoIIwOTCCMDUCAQExCzAJBgUrDgMCGgUAMAsGCSqG" - + "SIb3DQEHAaCCEsAwggP4MIIC4KADAgECAgF1MA0GCSqGSIb3DQEBBQUAMEUx" - + "CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR4wHAYDVQQD" - + "ExVHZW9UcnVzdCBDQSBmb3IgQWRvYmUwHhcNMDQxMjAyMjEyNTM5WhcNMDYx" - + "MjMwMjEyNTM5WjBMMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMR2VvVHJ1c3Qg" - + "SW5jMSYwJAYDVQQDEx1HZW9UcnVzdCBBZG9iZSBPQ1NQIFJlc3BvbmRlcjCB" - + "nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA4gnNYhtw7U6QeVXZODnGhHMj" - + "+OgZ0DB393rEk6a2q9kq129IA2e03yKBTfJfQR9aWKc2Qj90dsSqPjvTDHFG" - + "Qsagm2FQuhnA3fb1UWhPzeEIdm6bxDsnQ8nWqKqxnWZzELZbdp3I9bBLizIq" - + "obZovzt60LNMghn/unvvuhpeVSsCAwEAAaOCAW4wggFqMA4GA1UdDwEB/wQE" - + "AwIE8DCB5QYDVR0gAQH/BIHaMIHXMIHUBgkqhkiG9y8BAgEwgcYwgZAGCCsG" - + "AQUFBwICMIGDGoGAVGhpcyBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiBpc3N1ZWQg" - + "aW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBBY3JvYmF0IENyZWRlbnRpYWxzIENQ" - + "UyBsb2NhdGVkIGF0IGh0dHA6Ly93d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNl" - + "cy9jcHMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2VvdHJ1c3QuY29tL3Jl" - + "c291cmNlcy9jcHMwEwYDVR0lBAwwCgYIKwYBBQUHAwkwOgYDVR0fBDMwMTAv" - + "oC2gK4YpaHR0cDovL2NybC5nZW90cnVzdC5jb20vY3Jscy9hZG9iZWNhMS5j" - + "cmwwHwYDVR0jBBgwFoAUq4BZw2WDbR19E70Zw+wajw1HaqMwDQYJKoZIhvcN" - + "AQEFBQADggEBAENJf1BD7PX5ivuaawt90q1OGzXpIQL/ClzEeFVmOIxqPc1E" - + "TFRq92YuxG5b6+R+k+tGkmCwPLcY8ipg6ZcbJ/AirQhohzjlFuT6YAXsTfEj" - + "CqEZfWM2sS7crK2EYxCMmKE3xDfPclYtrAoz7qZvxfQj0TuxHSstHZv39wu2" - + "ZiG1BWiEcyDQyTgqTOXBoZmfJtshuAcXmTpgkrYSrS37zNlPTGh+pMYQ0yWD" - + "c8OQRJR4OY5ZXfdna01mjtJTOmj6/6XPoLPYTq2gQrc2BCeNJ4bEhLb7sFVB" - + "PbwPrpzTE/HRbQHDrzj0YimDxeOUV/UXctgvYwHNtEkcBLsOm/uytMYwggSh" - + "MIIDiaADAgECAgQ+HL0oMA0GCSqGSIb3DQEBBQUAMGkxCzAJBgNVBAYTAlVT" - + "MSMwIQYDVQQKExpBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZDEdMBsGA1UE" - + "CxMUQWRvYmUgVHJ1c3QgU2VydmljZXMxFjAUBgNVBAMTDUFkb2JlIFJvb3Qg" - + "Q0EwHhcNMDMwMTA4MjMzNzIzWhcNMjMwMTA5MDAwNzIzWjBpMQswCQYDVQQG" - + "EwJVUzEjMCEGA1UEChMaQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQxHTAb" - + "BgNVBAsTFEFkb2JlIFRydXN0IFNlcnZpY2VzMRYwFAYDVQQDEw1BZG9iZSBS" - + "b290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzE9UhPen" - + "ouczU38/nBKIayyZR2d+Dx65rRSI+cMQ2B3w8NWfaQovWTWwzGypTJwVoJ/O" - + "IL+gz1Ti4CBmRT85hjh+nMSOByLGJPYBErA131XqaZCw24U3HuJOB7JCoWoT" - + "aaBm6oCREVkqmwh5WiBELcm9cziLPC/gQxtdswvwrzUaKf7vppLdgUydPVmO" - + "rTE8QH6bkTYG/OJcjdGNJtVcRc+vZT+xqtJilvSoOOq6YEL09BxKNRXO+E4i" - + "Vg+VGMX4lp+f+7C3eCXpgGu91grwxnSUnfMPUNuad85LcIMjjaDKeCBEXDxU" - + "ZPHqojAZn+pMBk0GeEtekt8i0slns3rSAQIDAQABo4IBTzCCAUswEQYJYIZI" - + "AYb4QgEBBAQDAgAHMIGOBgNVHR8EgYYwgYMwgYCgfqB8pHoweDELMAkGA1UE" - + "BhMCVVMxIzAhBgNVBAoTGkFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkMR0w" - + "GwYDVQQLExRBZG9iZSBUcnVzdCBTZXJ2aWNlczEWMBQGA1UEAxMNQWRvYmUg" - + "Um9vdCBDQTENMAsGA1UEAxMEQ1JMMTArBgNVHRAEJDAigA8yMDAzMDEwODIz" - + "MzcyM1qBDzIwMjMwMTA5MDAwNzIzWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgw" - + "FoAUgrc4SpOqmxDvgLvZVOLxD/uAnN4wHQYDVR0OBBYEFIK3OEqTqpsQ74C7" - + "2VTi8Q/7gJzeMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjYu" - + "MDo0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4IBAQAy2p9DdcH6b8lv26sdNjc+" - + "vGEZNrcCPB0jWZhsnu5NhedUyCAfp9S74r8Ad30ka3AvXME6dkm10+AjhCpx" - + "aiLzwScpmBX2NZDkBEzDjbyfYRzn/SSM0URDjBa6m02l1DUvvBHOvfdRN42f" - + "kOQU8Rg/vulZEjX5M5LznuDVa5pxm5lLyHHD4bFhCcTl+pHwQjo3fTT5cujN" - + "qmIcIenV9IIQ43sFti1oVgt+fpIsb01yggztVnSynbmrLSsdEF/bJ3Vwj/0d" - + "1+ICoHnlHOX/r2RAUS2em0fbQqV8H8KmSLDXvpJpTaT2KVfFeBEY3IdRyhOy" - + "Yp1PKzK9MaXB+lKrBYjIMIIEyzCCA7OgAwIBAgIEPhy9tTANBgkqhkiG9w0B" - + "AQUFADBpMQswCQYDVQQGEwJVUzEjMCEGA1UEChMaQWRvYmUgU3lzdGVtcyBJ" - + "bmNvcnBvcmF0ZWQxHTAbBgNVBAsTFEFkb2JlIFRydXN0IFNlcnZpY2VzMRYw" - + "FAYDVQQDEw1BZG9iZSBSb290IENBMB4XDTA0MDExNzAwMDMzOVoXDTE1MDEx" - + "NTA4MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu" - + "Yy4xHjAcBgNVBAMTFUdlb1RydXN0IENBIGZvciBBZG9iZTCCASIwDQYJKoZI" - + "hvcNAQEBBQADggEPADCCAQoCggEBAKfld+BkeFrnOYW8r9L1WygTDlTdSfrO" - + "YvWS/Z6Ye5/l+HrBbOHqQCXBcSeCpz7kB2WdKMh1FOE4e9JlmICsHerBLdWk" - + "emU+/PDb69zh8E0cLoDfxukF6oVPXj6WSThdSG7H9aXFzRr6S3XGCuvgl+Qw" - + "DTLiLYW+ONF6DXwt3TQQtKReJjOJZk46ZZ0BvMStKyBaeB6DKZsmiIo89qso" - + "13VDZINH2w1KvXg0ygDizoNtbvgAPFymwnsINS1klfQlcvn0x0RJm9bYQXK3" - + "5GNZAgL3M7Lqrld0jMfIUaWvuHCLyivytRuzq1dJ7E8rmidjDEk/G+27pf13" - + "fNZ7vR7M+IkCAwEAAaOCAZ0wggGZMBIGA1UdEwEB/wQIMAYBAf8CAQEwUAYD" - + "VR0gBEkwRzBFBgkqhkiG9y8BAgEwODA2BggrBgEFBQcCARYqaHR0cHM6Ly93" - + "d3cuYWRvYmUuY29tL21pc2MvcGtpL2Nkc19jcC5odG1sMBQGA1UdJQQNMAsG" - + "CSqGSIb3LwEBBTCBsgYDVR0fBIGqMIGnMCKgIKAehhxodHRwOi8vY3JsLmFk" - + "b2JlLmNvbS9jZHMuY3JsMIGAoH6gfKR6MHgxCzAJBgNVBAYTAlVTMSMwIQYD" - + "VQQKExpBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZDEdMBsGA1UECxMUQWRv" - + "YmUgVHJ1c3QgU2VydmljZXMxFjAUBgNVBAMTDUFkb2JlIFJvb3QgQ0ExDTAL" - + "BgNVBAMTBENSTDEwCwYDVR0PBAQDAgEGMB8GA1UdIwQYMBaAFIK3OEqTqpsQ" - + "74C72VTi8Q/7gJzeMB0GA1UdDgQWBBSrgFnDZYNtHX0TvRnD7BqPDUdqozAZ" - + "BgkqhkiG9n0HQQAEDDAKGwRWNi4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA" - + "PzlZLqIAjrFeEWEs0uC29YyJhkXOE9mf3YSaFGsITF+Gl1j0pajTjyH4R35Q" - + "r3floW2q3HfNzTeZ90Jnr1DhVERD6zEMgJpCtJqVuk0sixuXJHghS/KicKf4" - + "YXJJPx9epuIRF1siBRnznnF90svmOJMXApc0jGnYn3nQfk4kaShSnDaYaeYR" - + "DJKcsiWhl6S5zfwS7Gg8hDeyckhMQKKWnlG1CQrwlSFisKCduoodwRtWgft8" - + "kx13iyKK3sbalm6vnVc+5nufS4vI+TwMXoV63NqYaSroafBWk0nL53zGXPEy" - + "+A69QhzEViJKn2Wgqt5gt++jMMNImbRObIqgfgF1VjCCBUwwggQ0oAMCAQIC" - + "AgGDMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1H" - + "ZW9UcnVzdCBJbmMuMR4wHAYDVQQDExVHZW9UcnVzdCBDQSBmb3IgQWRvYmUw" - + "HhcNMDYwMzI0MTU0MjI5WhcNMDkwNDA2MTQ0MjI5WjBzMQswCQYDVQQGEwJV" - + "UzELMAkGA1UECBMCTUExETAPBgNVBAoTCEdlb1RydXN0MR0wGwYDVQQDExRN" - + "YXJrZXRpbmcgRGVwYXJ0bWVudDElMCMGCSqGSIb3DQEJARYWbWFya2V0aW5n" - + "QGdlb3RydXN0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB" - + "ANmvajTO4XJvAU2nVcLmXeCnAQX7RZt+7+ML3InmqQ3LCGo1weop09zV069/" - + "1x/Nmieol7laEzeXxd2ghjGzwfXafqQEqHn6+vBCvqdNPoSi63fSWhnuDVWp" - + "KVDOYgxOonrXl+Cc43lu4zRSq+Pi5phhrjDWcH74a3/rdljUt4c4GFezFXfa" - + "w2oTzWkxj2cTSn0Szhpr17+p66UNt8uknlhmu4q44Speqql2HwmCEnpLYJrK" - + "W3fOq5D4qdsvsLR2EABLhrBezamLI3iGV8cRHOUTsbTMhWhv/lKfHAyf4XjA" - + "z9orzvPN5jthhIfICOFq/nStTgakyL4Ln+nFAB/SMPkCAwEAAaOCAhYwggIS" - + "MA4GA1UdDwEB/wQEAwIF4DCB5QYDVR0gAQH/BIHaMIHXMIHUBgkqhkiG9y8B" - + "AgEwgcYwgZAGCCsGAQUFBwICMIGDGoGAVGhpcyBjZXJ0aWZpY2F0ZSBoYXMg" - + "YmVlbiBpc3N1ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBBY3JvYmF0IENy" - + "ZWRlbnRpYWxzIENQUyBsb2NhdGVkIGF0IGh0dHA6Ly93d3cuZ2VvdHJ1c3Qu" - + "Y29tL3Jlc291cmNlcy9jcHMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2Vv" - + "dHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwOgYDVR0fBDMwMTAvoC2gK4YpaHR0" - + "cDovL2NybC5nZW90cnVzdC5jb20vY3Jscy9hZG9iZWNhMS5jcmwwHwYDVR0j" - + "BBgwFoAUq4BZw2WDbR19E70Zw+wajw1HaqMwRAYIKwYBBQUHAQEEODA2MDQG" - + "CCsGAQUFBzABhihodHRwOi8vYWRvYmUtb2NzcC5nZW90cnVzdC5jb20vcmVz" - + "cG9uZGVyMBQGA1UdJQQNMAsGCSqGSIb3LwEBBTA8BgoqhkiG9y8BAQkBBC4w" - + "LAIBAYYnaHR0cDovL2Fkb2JlLXRpbWVzdGFtcC5nZW90cnVzdC5jb20vdHNh" - + "MBMGCiqGSIb3LwEBCQIEBTADAgEBMAwGA1UdEwQFMAMCAQAwDQYJKoZIhvcN" - + "AQEFBQADggEBAAOhy6QxOo+i3h877fvDvTa0plGD2bIqK7wMdNqbMDoSWied" - + "FIcgcBOIm2wLxOjZBAVj/3lDq59q2rnVeNnfXM0/N0MHI9TumHRjU7WNk9e4" - + "+JfJ4M+c3anrWOG3NE5cICDVgles+UHjXetHWql/LlP04+K2ZOLb6LE2xGnI" - + "YyLW9REzCYNAVF+/WkYdmyceHtaBZdbyVAJq0NAJPsfgY1pWcBo31Mr1fpX9" - + "WrXNTYDCqMyxMImJTmN3iI68tkXlNrhweQoArKFqBysiBkXzG/sGKYY6tWKU" - + "pzjLc3vIp/LrXC5zilROes8BSvwu1w9qQrJNcGwo7O4uijoNtyYil1Exgh1Q" - + "MIIdTAIBATBLMEUxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJ" - + "bmMuMR4wHAYDVQQDExVHZW9UcnVzdCBDQSBmb3IgQWRvYmUCAgGDMAkGBSsO" - + "AwIaBQCgggxMMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwIwYJKoZIhvcN" - + "AQkEMRYEFP4R6qIdpQJzWyzrqO8X1ZfJOgChMIIMCQYJKoZIhvcvAQEIMYIL" - + "+jCCC/agggZ5MIIGdTCCA6gwggKQMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV" - + "BAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMR4wHAYDVQQDExVHZW9U" - + "cnVzdCBDQSBmb3IgQWRvYmUXDTA2MDQwNDE3NDAxMFoXDTA2MDQwNTE3NDAx" - + "MFowggIYMBMCAgC5Fw0wNTEwMTEyMDM2MzJaMBICAVsXDTA0MTEwNDE1MDk0" - + "MVowEwICALgXDTA1MTIxMjIyMzgzOFowEgIBWhcNMDQxMTA0MTUwOTMzWjAT" - + "AgIA5hcNMDUwODI3MDQwOTM4WjATAgIAtxcNMDYwMTE2MTc1NTEzWjATAgIA" - + "hhcNMDUxMjEyMjIzODU1WjATAgIAtRcNMDUwNzA2MTgzODQwWjATAgIA4BcN" - + "MDYwMzIwMDc0ODM0WjATAgIAgRcNMDUwODAyMjIzMTE1WjATAgIA3xcNMDUx" - + "MjEyMjIzNjUwWjASAgFKFw0wNDExMDQxNTA5MTZaMBICAUQXDTA0MTEwNDE1" - + "MDg1M1owEgIBQxcNMDQxMDAzMDEwMDQwWjASAgFsFw0wNDEyMDYxOTQ0MzFa" - + "MBMCAgEoFw0wNjAzMDkxMjA3MTJaMBMCAgEkFw0wNjAxMTYxNzU1MzRaMBIC" - + "AWcXDTA1MDMxODE3NTYxNFowEwICAVEXDTA2MDEzMTExMjcxMVowEgIBZBcN" - + "MDQxMTExMjI0ODQxWjATAgIA8RcNMDUwOTE2MTg0ODAxWjATAgIBThcNMDYw" - + "MjIxMjAxMDM2WjATAgIAwRcNMDUxMjEyMjIzODE2WjASAgFiFw0wNTAxMTAx" - + "NjE5MzRaMBICAWAXDTA1MDExMDE5MDAwNFowEwICAL4XDTA1MDUxNzE0NTYx" - + "MFowDQYJKoZIhvcNAQEFBQADggEBAEKhRMS3wVho1U3EvEQJZC8+JlUngmZQ" - + "A78KQbHPWNZWFlNvPuf/b0s7Lu16GfNHXh1QAW6Y5Hi1YtYZ3YOPyMd4Xugt" - + "gCdumbB6xtKsDyN5RvTht6ByXj+CYlYqsL7RX0izJZ6mJn4fjMkqzPKNOjb8" - + "kSn5T6rn93BjlATtCE8tPVOM8dnqGccRE0OV59+nDBXc90UMt5LdEbwaUOap" - + "snVB0oLcNm8d/HnlVH6RY5LnDjrT4vwfe/FApZtTecEWsllVUXDjSpwfcfD/" - + "476/lpGySB2otALqzImlA9R8Ok3hJ8dnF6hhQ5Oe6OJMnGYgdhkKbxsKkdib" - + "tTVl3qmH5QAwggLFMIIBrQIBATANBgkqhkiG9w0BAQUFADBpMQswCQYDVQQG" - + "EwJVUzEjMCEGA1UEChMaQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQxHTAb" - + "BgNVBAsTFEFkb2JlIFRydXN0IFNlcnZpY2VzMRYwFAYDVQQDEw1BZG9iZSBS" - + "b290IENBFw0wNjAxMjcxODMzMzFaFw0wNzAxMjcwMDAwMDBaMIHeMCMCBD4c" - + "vUAXDTAzMDEyMTIzNDY1NlowDDAKBgNVHRUEAwoBBDAjAgQ+HL1BFw0wMzAx" - + "MjEyMzQ3MjJaMAwwCgYDVR0VBAMKAQQwIwIEPhy9YhcNMDMwMTIxMjM0NzQy" - + "WjAMMAoGA1UdFQQDCgEEMCMCBD4cvWEXDTA0MDExNzAxMDg0OFowDDAKBgNV" - + "HRUEAwoBBDAjAgQ+HL2qFw0wNDAxMTcwMTA5MDVaMAwwCgYDVR0VBAMKAQQw" - + "IwIEPhy9qBcNMDQwMTE3MDEzOTI5WjAMMAoGA1UdFQQDCgEEoC8wLTAKBgNV" - + "HRQEAwIBDzAfBgNVHSMEGDAWgBSCtzhKk6qbEO+Au9lU4vEP+4Cc3jANBgkq" - + "hkiG9w0BAQUFAAOCAQEAwtXF9042wG39icUlsotn5tpE3oCusLb/hBpEONhx" - + "OdfEQOq0w5hf/vqaxkcf71etA+KpbEUeSVaHMHRPhx/CmPrO9odE139dJdbt" - + "9iqbrC9iZokFK3h/es5kg73xujLKd7C/u5ngJ4mwBtvhMLjFjF2vJhPKHL4C" - + "IgMwdaUAhrcNzy16v+mw/VGJy3Fvc6oCESW1K9tvFW58qZSNXrMlsuidgunM" - + "hPKG+z0SXVyCqL7pnqKiaGddcgujYGOSY4S938oVcfZeZQEODtSYGlzldojX" - + "C1U1hCK5+tHAH0Ox/WqRBIol5VCZQwJftf44oG8oviYq52aaqSejXwmfT6zb" - + "76GCBXUwggVxMIIFbQoBAKCCBWYwggViBgkrBgEFBQcwAQEEggVTMIIFTzCB" - + "taIWBBS+8EpykfXdl4h3z7m/NZfdkAQQERgPMjAwNjA0MDQyMDIwMTVaMGUw" - + "YzA7MAkGBSsOAwIaBQAEFEb4BuZYkbjBjOjT6VeA/00fBvQaBBT3fTSQniOp" - + "BbHBSkz4xridlX0bsAICAYOAABgPMjAwNjA0MDQyMDIwMTVaoBEYDzIwMDYw" - + "NDA1MDgyMDE1WqEjMCEwHwYJKwYBBQUHMAECBBIEEFqooq/R2WltD7TposkT" - + "BhMwDQYJKoZIhvcNAQEFBQADgYEAMig6lty4b0JDsT/oanfQG5x6jVKPACpp" - + "1UA9SJ0apJJa7LeIdDFmu5C2S/CYiKZm4A4P9cAu0YzgLHxE4r6Op+HfVlAG" - + "6bzUe1P/hi1KCJ8r8wxOZAktQFPSzs85RAZwkHMfB0lP2e/h666Oye+Zf8VH" - + "RaE+/xZ7aswE89HXoumgggQAMIID/DCCA/gwggLgoAMCAQICAXUwDQYJKoZI" - + "hvcNAQEFBQAwRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu" - + "Yy4xHjAcBgNVBAMTFUdlb1RydXN0IENBIGZvciBBZG9iZTAeFw0wNDEyMDIy" - + "MTI1MzlaFw0wNjEyMzAyMTI1MzlaMEwxCzAJBgNVBAYTAlVTMRUwEwYDVQQK" - + "EwxHZW9UcnVzdCBJbmMxJjAkBgNVBAMTHUdlb1RydXN0IEFkb2JlIE9DU1Ag" - + "UmVzcG9uZGVyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiCc1iG3Dt" - + "TpB5Vdk4OcaEcyP46BnQMHf3esSTprar2SrXb0gDZ7TfIoFN8l9BH1pYpzZC" - + "P3R2xKo+O9MMcUZCxqCbYVC6GcDd9vVRaE/N4Qh2bpvEOydDydaoqrGdZnMQ" - + "tlt2ncj1sEuLMiqhtmi/O3rQs0yCGf+6e++6Gl5VKwIDAQABo4IBbjCCAWow" - + "DgYDVR0PAQH/BAQDAgTwMIHlBgNVHSABAf8EgdowgdcwgdQGCSqGSIb3LwEC" - + "ATCBxjCBkAYIKwYBBQUHAgIwgYMagYBUaGlzIGNlcnRpZmljYXRlIGhhcyBi" - + "ZWVuIGlzc3VlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIEFjcm9iYXQgQ3Jl" - + "ZGVudGlhbHMgQ1BTIGxvY2F0ZWQgYXQgaHR0cDovL3d3dy5nZW90cnVzdC5j" - + "b20vcmVzb3VyY2VzL2NwczAxBggrBgEFBQcCARYlaHR0cDovL3d3dy5nZW90" - + "cnVzdC5jb20vcmVzb3VyY2VzL2NwczATBgNVHSUEDDAKBggrBgEFBQcDCTA6" - + "BgNVHR8EMzAxMC+gLaArhilodHRwOi8vY3JsLmdlb3RydXN0LmNvbS9jcmxz" - + "L2Fkb2JlY2ExLmNybDAfBgNVHSMEGDAWgBSrgFnDZYNtHX0TvRnD7BqPDUdq" - + "ozANBgkqhkiG9w0BAQUFAAOCAQEAQ0l/UEPs9fmK+5prC33SrU4bNekhAv8K" - + "XMR4VWY4jGo9zURMVGr3Zi7Eblvr5H6T60aSYLA8txjyKmDplxsn8CKtCGiH" - + "OOUW5PpgBexN8SMKoRl9YzaxLtysrYRjEIyYoTfEN89yVi2sCjPupm/F9CPR" - + "O7EdKy0dm/f3C7ZmIbUFaIRzINDJOCpM5cGhmZ8m2yG4BxeZOmCSthKtLfvM" - + "2U9MaH6kxhDTJYNzw5BElHg5jlld92drTWaO0lM6aPr/pc+gs9hOraBCtzYE" - + "J40nhsSEtvuwVUE9vA+unNMT8dFtAcOvOPRiKYPF45RX9Rdy2C9jAc20SRwE" - + "uw6b+7K0xjANBgkqhkiG9w0BAQEFAASCAQC7a4yICFGCEMPlJbydK5qLG3rV" - + "sip7Ojjz9TB4nLhC2DgsIHds8jjdq2zguInluH2nLaBCVS+qxDVlTjgbI2cB" - + "TaWS8nglC7nNjzkKAsa8vThA8FZUVXTW0pb74jNJJU2AA27bb4g+4WgunCrj" - + "fpYp+QjDyMmdrJVqRmt5eQN+dpVxMS9oq+NrhOSEhyIb4/rejgNg9wnVK1ms" - + "l5PxQ4x7kpm7+Ua41//owkJVWykRo4T1jo4eHEz1DolPykAaKie2VKH/sMqR" - + "Spjh4E5biKJLOV9fKivZWKAXByXfwUbbMsJvz4v/2yVHFy9xP+tqB5ZbRoDK" - + "k8PzUyCprozn+/22oYIPijCCD4YGCyqGSIb3DQEJEAIOMYIPdTCCD3EGCSqG" - + "SIb3DQEHAqCCD2Iwgg9eAgEDMQswCQYFKw4DAhoFADCB+gYLKoZIhvcNAQkQ" - + "AQSggeoEgecwgeQCAQEGAikCMCEwCQYFKw4DAhoFAAQUoT97qeCv3FXYaEcS" - + "gY8patCaCA8CAiMHGA8yMDA2MDQwNDIwMjA1N1owAwIBPAEB/wIIO0yRre3L" - + "8/6ggZCkgY0wgYoxCzAJBgNVBAYTAlVTMRYwFAYDVQQIEw1NYXNzYWNodXNl" - + "dHRzMRAwDgYDVQQHEwdOZWVkaGFtMRUwEwYDVQQKEwxHZW9UcnVzdCBJbmMx" - + "EzARBgNVBAsTClByb2R1Y3Rpb24xJTAjBgNVBAMTHGFkb2JlLXRpbWVzdGFt" - + "cC5nZW90cnVzdC5jb22gggzJMIIDUTCCAjmgAwIBAgICAI8wDQYJKoZIhvcN" - + "AQEFBQAwRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4x" - + "HjAcBgNVBAMTFUdlb1RydXN0IENBIGZvciBBZG9iZTAeFw0wNTAxMTAwMTI5" - + "MTBaFw0xNTAxMTUwODAwMDBaMIGKMQswCQYDVQQGEwJVUzEWMBQGA1UECBMN" - + "TWFzc2FjaHVzZXR0czEQMA4GA1UEBxMHTmVlZGhhbTEVMBMGA1UEChMMR2Vv" - + "VHJ1c3QgSW5jMRMwEQYDVQQLEwpQcm9kdWN0aW9uMSUwIwYDVQQDExxhZG9i" - + "ZS10aW1lc3RhbXAuZ2VvdHJ1c3QuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GN" - + "ADCBiQKBgQDRbxJotLFPWQuuEDhKtOMaBUJepGxIvWxeahMbq1DVmqnk88+j" - + "w/5lfPICPzQZ1oHrcTLSAFM7Mrz3pyyQKQKMqUyiemzuG/77ESUNfBNSUfAF" - + "PdtHuDMU8Is8ABVnFk63L+wdlvvDIlKkE08+VTKCRdjmuBVltMpQ6QcLFQzm" - + "AQIDAQABo4GIMIGFMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHA6Ly9jcmwuZ2Vv" - + "dHJ1c3QuY29tL2NybHMvYWRvYmVjYTEuY3JsMB8GA1UdIwQYMBaAFKuAWcNl" - + "g20dfRO9GcPsGo8NR2qjMA4GA1UdDwEB/wQEAwIGwDAWBgNVHSUBAf8EDDAK" - + "BggrBgEFBQcDCDANBgkqhkiG9w0BAQUFAAOCAQEAmnyXjdtX+F79Nf0KggTd" - + "6YC2MQD9s09IeXTd8TP3rBmizfM+7f3icggeCGakNfPRmIUMLoa0VM5Kt37T" - + "2X0TqzBWusfbKx7HnX4v1t/G8NJJlT4SShSHv+8bjjU4lUoCmW2oEcC5vXwP" - + "R5JfjCyois16npgcO05ZBT+LLDXyeBijE6qWmwLDfEpLyILzVRmyU4IE7jvm" - + "rgb3GXwDUvd3yQXGRRHbPCh3nj9hBGbuzyt7GnlqnEie3wzIyMG2ET/wvTX5" - + "4BFXKNe7lDLvZj/MXvd3V7gMTSVW0kAszKao56LfrVTgp1VX3UBQYwmQqaoA" - + "UwFezih+jEvjW6cYJo/ErDCCBKEwggOJoAMCAQICBD4cvSgwDQYJKoZIhvcN" - + "AQEFBQAwaTELMAkGA1UEBhMCVVMxIzAhBgNVBAoTGkFkb2JlIFN5c3RlbXMg" - + "SW5jb3Jwb3JhdGVkMR0wGwYDVQQLExRBZG9iZSBUcnVzdCBTZXJ2aWNlczEW" - + "MBQGA1UEAxMNQWRvYmUgUm9vdCBDQTAeFw0wMzAxMDgyMzM3MjNaFw0yMzAx" - + "MDkwMDA3MjNaMGkxCzAJBgNVBAYTAlVTMSMwIQYDVQQKExpBZG9iZSBTeXN0" - + "ZW1zIEluY29ycG9yYXRlZDEdMBsGA1UECxMUQWRvYmUgVHJ1c3QgU2Vydmlj" - + "ZXMxFjAUBgNVBAMTDUFkb2JlIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUA" - + "A4IBDwAwggEKAoIBAQDMT1SE96ei5zNTfz+cEohrLJlHZ34PHrmtFIj5wxDY" - + "HfDw1Z9pCi9ZNbDMbKlMnBWgn84gv6DPVOLgIGZFPzmGOH6cxI4HIsYk9gES" - + "sDXfVeppkLDbhTce4k4HskKhahNpoGbqgJERWSqbCHlaIEQtyb1zOIs8L+BD" - + "G12zC/CvNRop/u+mkt2BTJ09WY6tMTxAfpuRNgb84lyN0Y0m1VxFz69lP7Gq" - + "0mKW9Kg46rpgQvT0HEo1Fc74TiJWD5UYxfiWn5/7sLd4JemAa73WCvDGdJSd" - + "8w9Q25p3zktwgyONoMp4IERcPFRk8eqiMBmf6kwGTQZ4S16S3yLSyWezetIB" - + "AgMBAAGjggFPMIIBSzARBglghkgBhvhCAQEEBAMCAAcwgY4GA1UdHwSBhjCB" - + "gzCBgKB+oHykejB4MQswCQYDVQQGEwJVUzEjMCEGA1UEChMaQWRvYmUgU3lz" - + "dGVtcyBJbmNvcnBvcmF0ZWQxHTAbBgNVBAsTFEFkb2JlIFRydXN0IFNlcnZp" - + "Y2VzMRYwFAYDVQQDEw1BZG9iZSBSb290IENBMQ0wCwYDVQQDEwRDUkwxMCsG" - + "A1UdEAQkMCKADzIwMDMwMTA4MjMzNzIzWoEPMjAyMzAxMDkwMDA3MjNaMAsG" - + "A1UdDwQEAwIBBjAfBgNVHSMEGDAWgBSCtzhKk6qbEO+Au9lU4vEP+4Cc3jAd" - + "BgNVHQ4EFgQUgrc4SpOqmxDvgLvZVOLxD/uAnN4wDAYDVR0TBAUwAwEB/zAd" - + "BgkqhkiG9n0HQQAEEDAOGwhWNi4wOjQuMAMCBJAwDQYJKoZIhvcNAQEFBQAD" - + "ggEBADLan0N1wfpvyW/bqx02Nz68YRk2twI8HSNZmGye7k2F51TIIB+n1Lvi" - + "vwB3fSRrcC9cwTp2SbXT4COEKnFqIvPBJymYFfY1kOQETMONvJ9hHOf9JIzR" - + "REOMFrqbTaXUNS+8Ec6991E3jZ+Q5BTxGD++6VkSNfkzkvOe4NVrmnGbmUvI" - + "ccPhsWEJxOX6kfBCOjd9NPly6M2qYhwh6dX0ghDjewW2LWhWC35+kixvTXKC" - + "DO1WdLKduastKx0QX9sndXCP/R3X4gKgeeUc5f+vZEBRLZ6bR9tCpXwfwqZI" - + "sNe+kmlNpPYpV8V4ERjch1HKE7JinU8rMr0xpcH6UqsFiMgwggTLMIIDs6AD" - + "AgECAgQ+HL21MA0GCSqGSIb3DQEBBQUAMGkxCzAJBgNVBAYTAlVTMSMwIQYD" - + "VQQKExpBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZDEdMBsGA1UECxMUQWRv" - + "YmUgVHJ1c3QgU2VydmljZXMxFjAUBgNVBAMTDUFkb2JlIFJvb3QgQ0EwHhcN" - + "MDQwMTE3MDAwMzM5WhcNMTUwMTE1MDgwMDAwWjBFMQswCQYDVQQGEwJVUzEW" - + "MBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgQ0Eg" - + "Zm9yIEFkb2JlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp+V3" - + "4GR4Wuc5hbyv0vVbKBMOVN1J+s5i9ZL9nph7n+X4esFs4epAJcFxJ4KnPuQH" - + "ZZ0oyHUU4Th70mWYgKwd6sEt1aR6ZT788Nvr3OHwTRwugN/G6QXqhU9ePpZJ" - + "OF1Ibsf1pcXNGvpLdcYK6+CX5DANMuIthb440XoNfC3dNBC0pF4mM4lmTjpl" - + "nQG8xK0rIFp4HoMpmyaIijz2qyjXdUNkg0fbDUq9eDTKAOLOg21u+AA8XKbC" - + "ewg1LWSV9CVy+fTHREmb1thBcrfkY1kCAvczsuquV3SMx8hRpa+4cIvKK/K1" - + "G7OrV0nsTyuaJ2MMST8b7bul/Xd81nu9Hsz4iQIDAQABo4IBnTCCAZkwEgYD" - + "VR0TAQH/BAgwBgEB/wIBATBQBgNVHSAESTBHMEUGCSqGSIb3LwECATA4MDYG" - + "CCsGAQUFBwIBFipodHRwczovL3d3dy5hZG9iZS5jb20vbWlzYy9wa2kvY2Rz" - + "X2NwLmh0bWwwFAYDVR0lBA0wCwYJKoZIhvcvAQEFMIGyBgNVHR8Egaowgacw" - + "IqAgoB6GHGh0dHA6Ly9jcmwuYWRvYmUuY29tL2Nkcy5jcmwwgYCgfqB8pHow" - + "eDELMAkGA1UEBhMCVVMxIzAhBgNVBAoTGkFkb2JlIFN5c3RlbXMgSW5jb3Jw" - + "b3JhdGVkMR0wGwYDVQQLExRBZG9iZSBUcnVzdCBTZXJ2aWNlczEWMBQGA1UE" - + "AxMNQWRvYmUgUm9vdCBDQTENMAsGA1UEAxMEQ1JMMTALBgNVHQ8EBAMCAQYw" - + "HwYDVR0jBBgwFoAUgrc4SpOqmxDvgLvZVOLxD/uAnN4wHQYDVR0OBBYEFKuA" - + "WcNlg20dfRO9GcPsGo8NR2qjMBkGCSqGSIb2fQdBAAQMMAobBFY2LjADAgSQ" - + "MA0GCSqGSIb3DQEBBQUAA4IBAQA/OVkuogCOsV4RYSzS4Lb1jImGRc4T2Z/d" - + "hJoUawhMX4aXWPSlqNOPIfhHflCvd+Whbarcd83NN5n3QmevUOFUREPrMQyA" - + "mkK0mpW6TSyLG5ckeCFL8qJwp/hhckk/H16m4hEXWyIFGfOecX3Sy+Y4kxcC" - + "lzSMadifedB+TiRpKFKcNphp5hEMkpyyJaGXpLnN/BLsaDyEN7JySExAopae" - + "UbUJCvCVIWKwoJ26ih3BG1aB+3yTHXeLIorextqWbq+dVz7me59Li8j5PAxe" - + "hXrc2phpKuhp8FaTScvnfMZc8TL4Dr1CHMRWIkqfZaCq3mC376Mww0iZtE5s" - + "iqB+AXVWMYIBgDCCAXwCAQEwSzBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN" - + "R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgQ0EgZm9yIEFkb2Jl" - + "AgIAjzAJBgUrDgMCGgUAoIGMMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRAB" - + "BDAcBgkqhkiG9w0BCQUxDxcNMDYwNDA0MjAyMDU3WjAjBgkqhkiG9w0BCQQx" - + "FgQUp7AnXBqoNcarvO7fMJut1og2U5AwKwYLKoZIhvcNAQkQAgwxHDAaMBgw" - + "FgQU1dH4eZTNhgxdiSABrat6zsPdth0wDQYJKoZIhvcNAQEBBQAEgYCinr/F" - + "rMiQz/MRm9ZD5YGcC0Qo2dRTPd0Aop8mZ4g1xAhKFLnp7lLsjCbkSDpVLDBh" - + "cnCk7CV+3FT5hlvt8OqZlR0CnkSnCswLFhrppiWle6cpxlwGqyAteC8uKtQu" - + "wjE5GtBKLcCOAzQYyyuNZZeB6oCZ+3mPhZ62FxrvvEGJCgAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" - + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="); - - private final byte[] emptyDNCert = Base64.decode( - "MIICfTCCAeagAwIBAgIBajANBgkqhkiG9w0BAQQFADB8MQswCQYDVQQGEwJVUzEMMAoGA1UEChMD" - + "Q0RXMQkwBwYDVQQLEwAxCTAHBgNVBAcTADEJMAcGA1UECBMAMRowGAYDVQQDExFUZW1wbGFyIFRl" - + "c3QgMTAyNDEiMCAGCSqGSIb3DQEJARYTdGVtcGxhcnRlc3RAY2R3LmNvbTAeFw0wNjA1MjIwNTAw" - + "MDBaFw0xMDA1MjIwNTAwMDBaMHwxCzAJBgNVBAYTAlVTMQwwCgYDVQQKEwNDRFcxCTAHBgNVBAsT" - + "ADEJMAcGA1UEBxMAMQkwBwYDVQQIEwAxGjAYBgNVBAMTEVRlbXBsYXIgVGVzdCAxMDI0MSIwIAYJ" - + "KoZIhvcNAQkBFhN0ZW1wbGFydGVzdEBjZHcuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB" - + "gQDH3aJpJBfM+A3d84j5YcU6zEQaQ76u5xO9NSBmHjZykKS2kCcUqPpvVOPDA5WgV22dtKPh+lYV" - + "iUp7wyCVwAKibq8HIbihHceFqMKzjwC639rMoDJ7bi/yzQWz1Zg+075a4FGPlUKn7Yfu89wKkjdW" - + "wDpRPXc/agqBnrx5pJTXzQIDAQABow8wDTALBgNVHQ8EBAMCALEwDQYJKoZIhvcNAQEEBQADgYEA" - + "RRsRsjse3i2/KClFVd6YLZ+7K1BE0WxFyY2bbytkwQJSxvv3vLSuweFUbhNxutb68wl/yW4GLy4b" - + "1QdyswNxrNDXTuu5ILKhRDDuWeocz83aG2KGtr3JlFyr3biWGEyn5WUOE6tbONoQDJ0oPYgI6CAc" - + "EHdUp0lioOCt6UOw7Cs="); - - private final byte[] gostRFC4491_94 = Base64.decode( - "MIICCzCCAboCECMO42BGlSTOxwvklBgufuswCAYGKoUDAgIEMGkxHTAbBgNVBAMM" + - "FEdvc3RSMzQxMC05NCBleGFtcGxlMRIwEAYDVQQKDAlDcnlwdG9Qcm8xCzAJBgNV" + - "BAYTAlJVMScwJQYJKoZIhvcNAQkBFhhHb3N0UjM0MTAtOTRAZXhhbXBsZS5jb20w" + - "HhcNMDUwODE2MTIzMjUwWhcNMTUwODE2MTIzMjUwWjBpMR0wGwYDVQQDDBRHb3N0" + - "UjM0MTAtOTQgZXhhbXBsZTESMBAGA1UECgwJQ3J5cHRvUHJvMQswCQYDVQQGEwJS" + - "VTEnMCUGCSqGSIb3DQEJARYYR29zdFIzNDEwLTk0QGV4YW1wbGUuY29tMIGlMBwG" + - "BiqFAwICFDASBgcqhQMCAiACBgcqhQMCAh4BA4GEAASBgLuEZuF5nls02CyAfxOo" + - "GWZxV/6MVCUhR28wCyd3RpjG+0dVvrey85NsObVCNyaE4g0QiiQOHwxCTSs7ESuo" + - "v2Y5MlyUi8Go/htjEvYJJYfMdRv05YmKCYJo01x3pg+2kBATjeM+fJyR1qwNCCw+" + - "eMG1wra3Gqgqi0WBkzIydvp7MAgGBiqFAwICBANBABHHCH4S3ALxAiMpR3aPRyqB" + - "g1DjB8zy5DEjiULIc+HeIveF81W9lOxGkZxnrFjXBSqnjLeFKgF1hffXOAP7zUM="); - - private final byte[] gostRFC4491_2001 = Base64.decode( - "MIIB0DCCAX8CECv1xh7CEb0Xx9zUYma0LiEwCAYGKoUDAgIDMG0xHzAdBgNVBAMM" + - "Fkdvc3RSMzQxMC0yMDAxIGV4YW1wbGUxEjAQBgNVBAoMCUNyeXB0b1BybzELMAkG" + - "A1UEBhMCUlUxKTAnBgkqhkiG9w0BCQEWGkdvc3RSMzQxMC0yMDAxQGV4YW1wbGUu" + - "Y29tMB4XDTA1MDgxNjE0MTgyMFoXDTE1MDgxNjE0MTgyMFowbTEfMB0GA1UEAwwW" + - "R29zdFIzNDEwLTIwMDEgZXhhbXBsZTESMBAGA1UECgwJQ3J5cHRvUHJvMQswCQYD" + - "VQQGEwJSVTEpMCcGCSqGSIb3DQEJARYaR29zdFIzNDEwLTIwMDFAZXhhbXBsZS5j" + - "b20wYzAcBgYqhQMCAhMwEgYHKoUDAgIkAAYHKoUDAgIeAQNDAARAhJVodWACGkB1" + - "CM0TjDGJLP3lBQN6Q1z0bSsP508yfleP68wWuZWIA9CafIWuD+SN6qa7flbHy7Df" + - "D2a8yuoaYDAIBgYqhQMCAgMDQQA8L8kJRLcnqeyn1en7U23Sw6pkfEQu3u0xFkVP" + - "vFQ/3cHeF26NG+xxtZPz3TaTVXdoiYkXYiD02rEx1bUcM97i"); - - private final byte[] uaczo1 = Base64.decode( - "MIIFWzCCBNegAwIBAgIUMAR1He8seK4BAAAAAQAAAAEAAAAwDQYLKoYkAgEBAQED" + - "AQEwgfoxPzA9BgNVBAoMNtCc0ZbQvdGW0YHRgtC10YDRgdGC0LLQviDRjtGB0YLQ" + - "uNGG0ZbRlyDQo9C60YDQsNGX0L3QuDExMC8GA1UECwwo0JDQtNC80ZbQvdGW0YHR" + - "gtGA0LDRgtC+0YAg0IbQotChINCm0JfQnjFJMEcGA1UEAwxA0KbQtdC90YLRgNCw" + - "0LvRjNC90LjQuSDQt9Cw0YHQstGW0LTRh9GD0LLQsNC70YzQvdC40Lkg0L7RgNCz" + - "0LDQvTEZMBcGA1UEBQwQVUEtMDAwMTU2MjItMjAxMjELMAkGA1UEBhMCVUExETAP" + - "BgNVBAcMCNCa0LjRl9CyMB4XDTEyMDkyODE5NTMwMFoXDTIyMDkyODE5NTMwMFow" + - "gfoxPzA9BgNVBAoMNtCc0ZbQvdGW0YHRgtC10YDRgdGC0LLQviDRjtGB0YLQuNGG" + - "0ZbRlyDQo9C60YDQsNGX0L3QuDExMC8GA1UECwwo0JDQtNC80ZbQvdGW0YHRgtGA" + - "0LDRgtC+0YAg0IbQotChINCm0JfQnjFJMEcGA1UEAwxA0KbQtdC90YLRgNCw0LvR" + - "jNC90LjQuSDQt9Cw0YHQstGW0LTRh9GD0LLQsNC70YzQvdC40Lkg0L7RgNCz0LDQ" + - "vTEZMBcGA1UEBQwQVUEtMDAwMTU2MjItMjAxMjELMAkGA1UEBhMCVUExETAPBgNV" + - "BAcMCNCa0LjRl9CyMIIBUTCCARIGCyqGJAIBAQEBAwEBMIIBATCBvDAPAgIBrzAJ" + - "AgEBAgEDAgEFAgEBBDbzykDGaaTaFzFJyhLDLa4Ya1Osa8Y2WZferq6K0tiI+b/V" + - "NAFpTvnEJz2M/m3Cj3BqD0kQzgMCNj//////////////////////////////////" + - "/7oxdUWACajApyTwL4Gqih/Lr4DZDHqVEQUEzwQ2fIV8lMVDO/2ZHhfCJoQGWFCp" + - "oknte8JJrlpOh4aJ+HLvetUkCC7DA46a7ee6a6Ezgdl5umIaBECp1utF8TxwgoDE" + - "lnsjH16t9ljrpMA3KR042WvwJcpOF/jpcg3GFbQ6KJdfC8Heo2Q4tWTqLBef0BI+" + - "bbj6xXkEAzkABDa2G/m9S2LKqyw5UPXFHV+oDXB+AHtSW3BnZ9zlzRuvbido2tDG" + - "qE/CL5kFHZE0NfTrHrGa1USjggE6MIIBNjApBgNVHQ4EIgQgMAR1He8seK4VC6vv" + - "vv8Nq9v4LOVonutO0xCl+xM4+wowKwYDVR0jBCQwIoAgMAR1He8seK4VC6vvvv8N" + - "q9v4LOVonutO0xCl+xM4+wowDgYDVR0PAQH/BAQDAgEGMBkGA1UdIAEB/wQPMA0w" + - "CwYJKoYkAgEBAQICMBIGA1UdEwEB/wQIMAYBAf8CAQIwHgYIKwYBBQUHAQMBAf8E" + - "DzANMAsGCSqGJAIBAQECATA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3pvLmdv" + - "di51YS9kb3dubG9hZC9jcmxzL0NaTy1GdWxsLmNybDA+BgNVHS4ENzA1MDOgMaAv" + - "hi1odHRwOi8vY3pvLmdvdi51YS9kb3dubG9hZC9jcmxzL0NaTy1EZWx0YS5jcmww" + - "DQYLKoYkAgEBAQEDAQEDbwAEbPF4bx7drDxzzYABhB33Y0MQ+/N5FuPl7faVx/es" + - "V5n5DXg5TzZovzZeICB5JHPLcbdeCq6aGwvXsgybt34zqf7LKmfq0rFNYfXJVWFH" + - "4Tg5sPA+fCQ+T0O35VN873BLgTGz7bnHH9o8bnjwMA=="); - - private final byte[] uaczo2 = Base64.decode( - "MIIEvTCCBDmgAwIBAgIDAYhwMA0GCyqGJAIBAQEBAwEBMIIBHjELMAkGA1UEBhMC" + - "VUExKDAmBgNVBAgMH9Ca0LjRl9Cy0YHRjNC60LAg0L7QsdC70LDRgdGC0YwxETAP" + - "BgNVBAcMCNCa0LjRl9CyMUkwRwYDVQQKDEDQptC10L3RgtGA0LDQu9GM0L3QuNC5" + - "INC30LDRgdCy0ZbQtNGH0YPQstCw0LvRjNC90LjQuSDQvtGA0LPQsNC9MTUwMwYD" + - "VQQLDCzQotC10YXQvdC+0LvQvtCz0ZbRh9C90LjQuSDRhtC10L3RgtGAINCm0JfQ" + - "njE1MDMGA1UEAwws0KPQutGA0LDRl9C90LAsINCm0JfQniAvIFVrcmFpbmUsIENl" + - "bnRyYWwgQ0ExGTAXBgNVBAUTEFVBLTM3MjAwMzAzLTIwMTAwHhcNMDYxMjI1MDc0" + - "MDU4WhcNMTExMjI0MDc0MDU4WjCCAR4xCzAJBgNVBAYTAlVBMSgwJgYDVQQIDB/Q" + - "mtC40ZfQstGB0YzQutCwINC+0LHQu9Cw0YHRgtGMMREwDwYDVQQHDAjQmtC40ZfQ" + - "sjFJMEcGA1UECgxA0KbQtdC90YLRgNCw0LvRjNC90LjQuSDQt9Cw0YHQstGW0LTR" + - "h9GD0LLQsNC70YzQvdC40Lkg0L7RgNCz0LDQvTE1MDMGA1UECwws0KLQtdGF0L3Q" + - "vtC70L7Qs9GW0YfQvdC40Lkg0YbQtdC90YLRgCDQptCX0J4xNTAzBgNVBAMMLNCj" + - "0LrRgNCw0ZfQvdCwLCDQptCX0J4gLyBVa3JhaW5lLCBDZW50cmFsIENBMRkwFwYD" + - "VQQFExBVQS0zNzIwMDMwMy0yMDEwMIGdMGAGCyqGJAIBAQEBAwEBMFEGDSqGJAIB" + - "AQEBAwEBAgkEQKnW60XxPHCCgMSWeyMfXq32WOukwDcpHTjZa/Alyk4X+OlyDcYV" + - "tDool18Lwd6jZDi1ZOosF5/QEj5tuPrFeQQDOQAENlMfji/H5gxxL5TKtLMFv2X3" + - "0EJrj3orwGV0zEz+EgSChr+I8bsOrnfkr5UwMQIjGJOg1G/nYKOCARgwggEUMA8G" + - "A1UdEwEB/wQFMAMBAf8weQYDVR0gAQH/BG8wbTBeBgkqhiQCAQEBAgEwUTBPBggr" + - "BgEFBQcCARZDaHR0cDovL2N6by5nb3YudWEvY29udGVudC9ub3JtYXRpdmVfZG9j" + - "dW1lbnQvZ2VuZXJhbF9kb2MvcmVnQ1pPLnppcDALBgkqhiQCAQEBAgIwHgYIKwYB" + - "BQUHAQMBAf8EDzANMAsGCSqGJAIBAQECATAOBgNVHQ8BAf8EBAMCAcYwKQYDVR0O" + - "BCIEIPqbNt55OgWdLCn8hfuY9HJE3d3+DTTBlTJBN0nxog+mMCsGA1UdIwQkMCKA" + - "IPqbNt55OgWdLCn8hfuY9HJE3d3+DTTBlTJBN0nxog+mMA0GCyqGJAIBAQEBAwEB" + - "A28ABGx8QNaWcy0admsBt6iB0Vi+kAargzsQuoc/BThskYdxGNftLvYDPYxkEM2N" + - "GQ+9f1RJgCSNVRj3NhWoHhkqcL5R3gxAHie+a+zMqsX0258hGdT3MXkm0Syn/cNo" + - "sga4XzzvnVaas9vsPKMrZTQ="); - - private final byte[] uaczo3 = Base64.decode( - "MIIEtTCCBDGgAwIBAgIDAYisMA0GCyqGJAIBAQEBAwEBMIIBGjELMAkGA1UEBhMC" + - "VUExKDAmBgNVBAgMH9Ca0LjRl9Cy0YHRjNC60LAg0L7QsdC70LDRgdGC0YwxETAP" + - "BgNVBAcMCNCa0LjRl9CyMUkwRwYDVQQKDEDQptC10L3RgtGA0LDQu9GM0L3QuNC5" + - "INC30LDRgdCy0ZbQtNGH0YPQstCw0LvRjNC90LjQuSDQvtGA0LPQsNC9MTEwLwYD" + - "VQQLDCjQkNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgCDQhtCi0KEg0KbQl9CeMTUw" + - "MwYDVQQDDCzQo9C60YDQsNGX0L3QsCwg0KbQl9CeIC8gVWtyYWluZSwgQ2VudHJh" + - "bCBDQTEZMBcGA1UEBRMQVUEtMDAwMTU2MjItMjAxMTAeFw0wNzEyMjAxMDAwMDBa" + - "Fw0xMjEyMTgxMDAwMDBaMIIBGjELMAkGA1UEBhMCVUExKDAmBgNVBAgMH9Ca0LjR" + - "l9Cy0YHRjNC60LAg0L7QsdC70LDRgdGC0YwxETAPBgNVBAcMCNCa0LjRl9CyMUkw" + - "RwYDVQQKDEDQptC10L3RgtGA0LDQu9GM0L3QuNC5INC30LDRgdCy0ZbQtNGH0YPQ" + - "stCw0LvRjNC90LjQuSDQvtGA0LPQsNC9MTEwLwYDVQQLDCjQkNC00LzRltC90ZbR" + - "gdGC0YDQsNGC0L7RgCDQhtCi0KEg0KbQl9CeMTUwMwYDVQQDDCzQo9C60YDQsNGX" + - "0L3QsCwg0KbQl9CeIC8gVWtyYWluZSwgQ2VudHJhbCBDQTEZMBcGA1UEBRMQVUEt" + - "MDAwMTU2MjItMjAxMTCBnTBgBgsqhiQCAQEBAQMBATBRBg0qhiQCAQEBAQMBAQIJ" + - "BECp1utF8TxwgoDElnsjH16t9ljrpMA3KR042WvwJcpOF/jpcg3GFbQ6KJdfC8He" + - "o2Q4tWTqLBef0BI+bbj6xXkEAzkABDajkfNBomH27xjY1N7wklRvY5E0ZFaU53Fh" + - "y4jUY+G4AUhEHHCkTvUja8CUxPqtb9KyfuZELVOjggEYMIIBFDAPBgNVHRMBAf8E" + - "BTADAQH/MHkGA1UdIAEB/wRvMG0wXgYJKoYkAgEBAQIBMFEwTwYIKwYBBQUHAgEW" + - "Q2h0dHA6Ly9jem8uZ292LnVhL2NvbnRlbnQvbm9ybWF0aXZlX2RvY3VtZW50L2dl" + - "bmVyYWxfZG9jL3JlZ0NaTy56aXAwCwYJKoYkAgEBAQICMB4GCCsGAQUFBwEDAQH/" + - "BA8wDTALBgkqhiQCAQEBAgEwDgYDVR0PAQH/BAQDAgHGMCkGA1UdDgQiBCC+e+cA" + - "bIdAgQkh6q3dUAZjPrNhwDDGrVnLNP6telmoCjArBgNVHSMEJDAigCC+e+cAbIdA" + - "gQkh6q3dUAZjPrNhwDDGrVnLNP6telmoCjANBgsqhiQCAQEBAQMBAQNvAARsyq9i" + - "ajEgdBh5mPUZefcLY56AIRWqmsJsWuZuUbCa5oQXRH5iCRa4PSvs8v6zHAKKlMgK" + - "gaoY6jywqmwiMlylbSgo/A0HKdCFnUUl7S8yjE4054MSSIjb2R0c2pmqmwtU25JB" + - "/MkNbe77Uzka"); - - private final byte[] uaczo4 = Base64.decode( - "MIIEKzCCA6egAwIBAgIBATANBgsqhiQCAQEBAQMBATCBzDFJMEcGA1UECwxA0KbQ" + - "tdC90YLRgNCw0LvRjNC90LjQuSDQt9Cw0YHQstGW0LTRh9GD0LLQsNC70YzQvdC4" + - "0Lkg0L7RgNCz0LDQvTE1MDMGA1UEAwws0KPQutGA0LDRl9C90LAsINCm0JfQniAv" + - "IFVrcmFpbmUsIENlbnRyYWwgQ0ExCzAJBgNVBAYTAlVBMREwDwYDVQQHDAjQmtC4" + - "0ZfQsjEoMCYGA1UECAwf0JrQuNGX0LLRgdGM0LrQsCDQvtCx0LvQsNGB0YLRjDAe" + - "Fw0wNTEyMjMyMzAxMDFaFw0xMDEyMjMyMzAxMDFaMIHMMUkwRwYDVQQLDEDQptC1" + - "0L3RgtGA0LDQu9GM0L3QuNC5INC30LDRgdCy0ZbQtNGH0YPQstCw0LvRjNC90LjQ" + - "uSDQvtGA0LPQsNC9MTUwMwYDVQQDDCzQo9C60YDQsNGX0L3QsCwg0KbQl9CeIC8g" + - "VWtyYWluZSwgQ2VudHJhbCBDQTELMAkGA1UEBhMCVUExETAPBgNVBAcMCNCa0LjR" + - "l9CyMSgwJgYDVQQIDB/QmtC40ZfQstGB0YzQutCwINC+0LHQu9Cw0YHRgtGMMIIB" + - "UTCCARIGCyqGJAIBAQEBAwEBMIIBATCBvDAPAgIBrzAJAgEBAgEDAgEFAgEBBDbz" + - "ykDGaaTaFzFJyhLDLa4Ya1Osa8Y2WZferq6K0tiI+b/VNAFpTvnEJz2M/m3Cj3Bq" + - "D0kQzgMCNj///////////////////////////////////7oxdUWACajApyTwL4Gq" + - "ih/Lr4DZDHqVEQUEzwQ2lqAgR9+skUI33jGNgj2Qsh9+3x7so5koelwr4fy89k/x" + - "5eqNSvFZ/1fPHfXz+iz7PmFIhr15BECLwhftNllK8B904j3LmmBY/teFIBSrw2lL" + - "CKc1nWIez+h/01q0GSxgeuwU0oOw9WmwlkGuj13DJ8cSmm70jTULAzkABDa6vb3U" + - "VIxZr2cXcVSvKkPM65Ii2+8biqyoH8i9e0NKJu+IhjDvUrvzlr8U+ywuf5bpSj4N" + - "fEmjezB5MA4GA1UdDwEB/wQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MCsGA1UdIwQk" + - "MCKAIOPEn/xcXE6VGFNB8vbfXS1XMYYzAa4ML8opsOslTHJNMCkGA1UdDgQiBCDj" + - "xJ/8XFxOlRhTQfL2310tVzGGMwGuDC/KKbDrJUxyTTANBgsqhiQCAQEBAQMBAQNv" + - "AARsh0unjBfQoINx2rXAJggrBdoRsCouw8lN771DhcuUrlQUuEEQHTaZrQoYbECu" + - "AGfsxfTyldQDEOVzD/Uq8Xh4gIHuSqki9mRSjMR19MQtTKRmI9TRHIeTdIZ6l3P7" + - "jFfGJvTP0E9NYSolx+kM"); - - private PublicKey dudPublicKey = new PublicKey() - { - public String getAlgorithm() - { - return null; - } - - public String getFormat() - { - return null; - } - - public byte[] getEncoded() - { - return null; - } - - }; - - public String getName() - { - return "CertTest"; - } - - public void checkCertificate( - int id, - byte[] bytes) - { - ByteArrayInputStream bIn; - String dump = ""; - - try - { - bIn = new ByteArrayInputStream(bytes); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - Certificate cert = fact.generateCertificate(bIn); - - PublicKey k = cert.getPublicKey(); - // System.out.println(cert); - } - catch (Exception e) - { - fail(dump + System.getProperty("line.separator") + getName() + ": "+ id + " failed - exception " + e.toString(), e); - } - - } - - public void checkNameCertificate( - int id, - byte[] bytes) - { - ByteArrayInputStream bIn; - String dump = ""; - - try - { - bIn = new ByteArrayInputStream(bytes); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate cert = (X509Certificate)fact.generateCertificate(bIn); - - PublicKey k = cert.getPublicKey(); - if (!cert.getIssuerDN().toString().equals("C=DE,O=DATEV eG,0.2.262.1.10.7.20=1+CN=CA DATEV D03 1:PN")) - { - fail(id + " failed - name test."); - } - // System.out.println(cert); - } - catch (Exception e) - { - fail(dump + System.getProperty("line.separator") + getName() + ": "+ id + " failed - exception " + e.toString(), e); - } - - } - - public void checkKeyUsage( - int id, - byte[] bytes) - { - ByteArrayInputStream bIn; - String dump = ""; - - try - { - bIn = new ByteArrayInputStream(bytes); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate cert = (X509Certificate)fact.generateCertificate(bIn); - - PublicKey k = cert.getPublicKey(); - - if (cert.getKeyUsage()[7]) - { - fail("error generating cert - key usage wrong."); - } - - // System.out.println(cert); - } - catch (Exception e) - { - fail(dump + System.getProperty("line.separator") + getName() + ": "+ id + " failed - exception " + e.toString(), e); - } - - } - - - public void checkSelfSignedCertificate( - int id, - byte[] bytes) - { - ByteArrayInputStream bIn; - String dump = ""; - - try - { - bIn = new ByteArrayInputStream(bytes); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - Certificate cert = fact.generateCertificate(bIn); - - PublicKey k = cert.getPublicKey(); - - cert.verify(k); - // System.out.println(cert); - } - catch (Exception e) - { - fail(dump + System.getProperty("line.separator") + getName() + ": "+ id + " failed - exception " + e.toString(), e); - } - - } - - private void checkCRL( - int id, - byte[] bytes) - { - ByteArrayInputStream bIn; - String dump = ""; - - try - { - bIn = new ByteArrayInputStream(bytes); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - CRL cert = fact.generateCRL(bIn); - - // System.out.println(cert); - } - catch (Exception e) - { - fail(dump + System.getProperty("line.separator") + getName() + ": "+ id + " failed - exception " + e.toString(), e); - } - - } - - private void testForgedSignature() - throws Exception - { - String cert = "MIIBsDCCAVoCAQYwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCQVUxEzARBgNV" - + "BAgTClF1ZWVuc2xhbmQxGjAYBgNVBAoTEUNyeXB0U29mdCBQdHkgTHRkMSMwIQYD" - + "VQQDExpTZXJ2ZXIgdGVzdCBjZXJ0ICg1MTIgYml0KTAeFw0wNjA5MTEyMzU4NTVa" - + "Fw0wNjEwMTEyMzU4NTVaMGMxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpRdWVlbnNs" - + "YW5kMRowGAYDVQQKExFDcnlwdFNvZnQgUHR5IEx0ZDEjMCEGA1UEAxMaU2VydmVy" - + "IHRlc3QgY2VydCAoNTEyIGJpdCkwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAn7PD" - + "hCeV/xIxUg8V70YRxK2A5jZbD92A12GN4PxyRQk0/lVmRUNMaJdq/qigpd9feP/u" - + "12S4PwTLb/8q/v657QIDAQABMA0GCSqGSIb3DQEBBQUAA0EAbynCRIlUQgaqyNgU" - + "DF6P14yRKUtX8akOP2TwStaSiVf/akYqfLFm3UGka5XbPj4rifrZ0/sOoZEEBvHQ" - + "e20sRA=="; - - CertificateFactory certFact = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate x509 = (X509Certificate)certFact.generateCertificate(new ByteArrayInputStream(Base64.decode(cert))); - try - { - x509.verify(x509.getPublicKey()); - - fail("forged RSA signature passed"); - } - catch (Exception e) - { - // expected - } - } - - - private void pemTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - Certificate cert = readPEMCert(cf, PEMData.CERTIFICATE_1); - if (cert == null) - { - fail("PEM cert not read"); - } - cert = readPEMCert(cf, "-----BEGIN CERTIFICATE-----" + PEMData.CERTIFICATE_2); - if (cert == null) - { - fail("PEM cert with extraneous header not read"); - } - CRL crl = cf.generateCRL(new ByteArrayInputStream(PEMData.CRL_1.getBytes("US-ASCII"))); - if (crl == null) - { - fail("PEM crl not read"); - } - Collection col = cf.generateCertificates(new ByteArrayInputStream(PEMData.CERTIFICATE_2.getBytes("US-ASCII"))); - if (col.size() != 1 || !col.contains(cert)) - { - fail("PEM cert collection not right"); - } - col = cf.generateCRLs(new ByteArrayInputStream(PEMData.CRL_2.getBytes("US-ASCII"))); - if (col.size() != 1 || !col.contains(crl)) - { - fail("PEM crl collection not right"); - } - } - - private static Certificate readPEMCert(CertificateFactory cf, String pemData) - throws CertificateException, UnsupportedEncodingException - { - return cf.generateCertificate(new ByteArrayInputStream(pemData.getBytes("US-ASCII"))); - } - - private void pkcs7Test() - throws Exception - { - ASN1EncodableVector certs = new ASN1EncodableVector(); - - certs.add(new ASN1InputStream(CertPathTest.rootCertBin).readObject()); - certs.add(new DERTaggedObject(false, 2, new ASN1InputStream(AttrCertData.attrCert).readObject())); - - ASN1EncodableVector crls = new ASN1EncodableVector(); - - crls.add(new ASN1InputStream(CertPathTest.rootCrlBin).readObject()); - SignedData sigData = new SignedData(new DERSet(), new ContentInfo(CMSObjectIdentifiers.data, null), new DERSet(certs), new DERSet(crls), new DERSet()); - - ContentInfo info = new ContentInfo(CMSObjectIdentifiers.signedData, sigData); - - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate cert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(info.getEncoded())); - if (cert == null || !areEqual(cert.getEncoded(), certs.get(0).toASN1Primitive().getEncoded())) - { - fail("PKCS7 cert not read"); - } - X509CRL crl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(info.getEncoded())); - if (crl == null || !areEqual(crl.getEncoded(), crls.get(0).toASN1Primitive().getEncoded())) - { - fail("PKCS7 crl not read"); - } - Collection col = cf.generateCertificates(new ByteArrayInputStream(info.getEncoded())); - if (col.size() != 1 || !col.contains(cert)) - { - fail("PKCS7 cert collection not right"); - } - col = cf.generateCRLs(new ByteArrayInputStream(info.getEncoded())); - if (col.size() != 1 || !col.contains(crl)) - { - fail("PKCS7 crl collection not right"); - } - - // data with no certificates or CRLs - - sigData = new SignedData(new DERSet(), new ContentInfo(CMSObjectIdentifiers.data, null), new DERSet(), new DERSet(), new DERSet()); - - info = new ContentInfo(CMSObjectIdentifiers.signedData, sigData); - - cert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(info.getEncoded())); - if (cert != null) - { - fail("PKCS7 cert present"); - } - crl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(info.getEncoded())); - if (crl != null) - { - fail("PKCS7 crl present"); - } - - // data with absent certificates and CRLS - - sigData = new SignedData(new DERSet(), new ContentInfo(CMSObjectIdentifiers.data, null), null, null, new DERSet()); - - info = new ContentInfo(CMSObjectIdentifiers.signedData, sigData); - - cert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(info.getEncoded())); - if (cert != null) - { - fail("PKCS7 cert present"); - } - crl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(info.getEncoded())); - if (crl != null) - { - fail("PKCS7 crl present"); - } - - // - // sample message - // - InputStream in = new ByteArrayInputStream(pkcs7CrlProblem); - Collection certCol = cf.generateCertificates(in); - Collection crlCol = cf.generateCRLs(in); - - if (crlCol.size() != 0) - { - fail("wrong number of CRLs: " + crlCol.size()); - } - - if (certCol.size() != 4) - { - fail("wrong number of Certs: " + certCol.size()); - } - } - - private KeyPair generateLongFixedKeys() - throws NoSuchAlgorithmException, NoSuchProviderException, InvalidKeySpecException - { - RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec( - new BigInteger("a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991d8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1dfd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f105acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a2137",16), - new BigInteger("010001",16)); - - RSAPrivateCrtKeySpec privKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991d8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1dfd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f105acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a2137",16), - new BigInteger("010001",16), - new BigInteger("33a5042a90b27d4f5451ca9bbbd0b44771a101af884340aef9885f2a4bbe92e894a724ac3c568c8f97853ad07c0266c8c6a3ca0929f1e8f11231884429fc4d9ae55fee896a10ce707c3ed7e734e44727a39574501a532683109c2abacaba283c31b4bd2f53c3ee37e352cee34f9e503bd80c0622ad79c6dcee883547c6a3b325",16), - new BigInteger("e7e8942720a877517273a356053ea2a1bc0c94aa72d55c6e86296b2dfc967948c0a72cbccca7eacb35706e09a1df55a1535bd9b3cc34160b3b6dcd3eda8e6443",16), - new BigInteger("b69dca1cf7d4d7ec81e75b90fcca874abcde123fd2700180aa90479b6e48de8d67ed24f9f19d85ba275874f542cd20dc723e6963364a1f9425452b269a6799fd",16), - new BigInteger("28fa13938655be1f8a159cbaca5a72ea190c30089e19cd274a556f36c4f6e19f554b34c077790427bbdd8dd3ede2448328f385d81b30e8e43b2fffa027861979",16), - new BigInteger("1a8b38f398fa712049898d7fb79ee0a77668791299cdfa09efc0e507acb21ed74301ef5bfd48be455eaeb6e1678255827580a8e4e8e14151d1510a82a3f2e729",16), - new BigInteger("27156aba4126d24a81f3a528cbfb27f56886f840a9f6e86e17a44b94fe9319584b8e22fdde1e5a2e3bd8aa5ba8d8584194eb2190acf832b847f13a3d24a79f4d",16)); - - KeyFactory fact = KeyFactory.getInstance("RSA", "BC"); - - return new KeyPair(fact.generatePublic(pubKeySpec), fact.generatePrivate(privKeySpec)); - } - - private void rfc4491Test() - throws Exception - { - CertificateFactory certFact = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate x509 = (X509Certificate)certFact.generateCertificate(new ByteArrayInputStream(gostRFC4491_94)); - - x509.verify(x509.getPublicKey(), "BC"); - - x509 = (X509Certificate)certFact.generateCertificate(new ByteArrayInputStream(gostRFC4491_2001)); - - x509.verify(x509.getPublicKey(), "BC"); - } - - private void checkComparison(byte[] encCert) - throws NoSuchProviderException, CertificateException - { - CertificateFactory bcFact = CertificateFactory.getInstance("X.509", "BC"); - CertificateFactory sunFact = CertificateFactory.getInstance("X.509", "SUN"); - - X509Certificate bcCert = (X509Certificate)bcFact.generateCertificate(new ByteArrayInputStream(encCert)); - X509Certificate sunCert = (X509Certificate)sunFact.generateCertificate(new ByteArrayInputStream(encCert)); - - if (!bcCert.equals(sunCert) || !sunCert.equals(bcCert)) - { - fail("BC/Sun equals test failed"); - } - - if (bcCert.hashCode() != sunCert.hashCode()) - { - fail("BC/Sun hashCode test failed"); - } - } - - private void testV1CRL() - throws Exception - { - byte[] certData = Streams.readAll(this.getClass().getResourceAsStream("ThawteSGCCA.cer")); - byte[] crlData = Streams.readAll(this.getClass().getResourceAsStream("ThawteSGCCA.crl")); - - // verify CRL with default (JCE) provider - CertificateFactory jceFac = CertificateFactory.getInstance("X.509"); - - X509Certificate jceIssuer = (X509Certificate) - jceFac.generateCertificate(new ByteArrayInputStream(certData)); - - X509CRL jceCRL = (X509CRL)jceFac.generateCRL(new ByteArrayInputStream(crlData)); - - jceCRL.verify(jceIssuer.getPublicKey()); - - - // verify CRL with BC provider - CertificateFactory bcFac = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate bcIssuer = (X509Certificate) - bcFac.generateCertificate(new ByteArrayInputStream(certData)); - - X509CRL bcCRL = (X509CRL)bcFac.generateCRL(new ByteArrayInputStream(crlData)); - - jceCRL.verify(bcIssuer.getPublicKey()); - - bcCRL.verify(bcIssuer.getPublicKey()); - } - - private void testCertPathEncAvailableTest() - throws Exception - { - CertificateFactory certFact = CertificateFactory.getInstance("X.509", "BC"); - - Iterator it = certFact.getCertPathEncodings(); - - if (!"PkiPath".equals(it.next())) - { - fail("available enc 1 wrong"); - } - if (!"PEM".equals(it.next())) - { - fail("available enc 2 wrong"); - } - if (!"PKCS7".equals(it.next())) - { - fail("available enc 3 wrong"); - } - - if (it.hasNext()) - { - fail("wrong number of encodings"); - } - } - - public void performTest() - throws Exception - { - testV1CRL(); - - checkCertificate(1, cert1); - checkCertificate(2, cert2); - checkCertificate(3, cert3); - checkCertificate(4, cert4); - checkCertificate(5, cert5); - checkCertificate(6, oldEcdsa); - checkCertificate(7, cert7); - - checkComparison(cert1); - - checkKeyUsage(8, keyUsage); - checkSelfSignedCertificate(9, uncompressedPtEC); - checkNameCertificate(10, nameCert); - - checkSelfSignedCertificate(11, probSelfSignedCert); - checkSelfSignedCertificate(12, gostCA1); - checkSelfSignedCertificate(13, gostCA2); - checkSelfSignedCertificate(14, gost341094base); - checkSelfSignedCertificate(15, gost34102001base); - checkSelfSignedCertificate(16, gost341094A); - checkSelfSignedCertificate(17, gost341094B); - checkSelfSignedCertificate(18, gost34102001A); - - try - { - checkSelfSignedCertificate(19, uaczo1); - checkSelfSignedCertificate(20, uaczo2); - checkSelfSignedCertificate(21, uaczo3); - checkSelfSignedCertificate(22, uaczo4); - } - catch (Exception e) - { - if (e instanceof NoSuchAlgorithmException) - { - // ignore - only valid for jdk1.5+ - } - } - - checkCRL(1, crl1); - - pemTest(); - pkcs7Test(); - rfc4491Test(); - - testForgedSignature(); - - checkCertificate(18, emptyDNCert); - - testCertPathEncAvailableTest(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CertTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertUniqueIDTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CertUniqueIDTest.java deleted file mode 100644 index 283c50be..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CertUniqueIDTest.java +++ /dev/null @@ -1,178 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.Security; -import java.security.cert.X509Certificate; -import java.security.spec.RSAPrivateCrtKeySpec; -import java.security.spec.RSAPublicKeySpec; -import java.util.Date; -import java.util.Set; -import java.util.Vector; - -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.x509.X509V3CertificateGenerator; - -public class CertUniqueIDTest - extends SimpleTest -{ - public String getName() - { - return "CertUniqueID"; - } - - public void performTest() throws Exception - { - checkCreation1(); - } - - /** - * we generate a self signed certificate for the sake of testing - RSA - */ - public void checkCreation1() - throws Exception - { - // - // a sample key pair. - // - RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16)); - - RSAPrivateCrtKeySpec privKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16), - new BigInteger("9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89", 16), - new BigInteger("c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", 16), - new BigInteger("f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", 16), - new BigInteger("b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", 16), - new BigInteger("d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", 16), - new BigInteger("b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", 16)); - - // - // set up the keys - // - PrivateKey privKey; - PublicKey pubKey; - - KeyFactory fact = KeyFactory.getInstance("RSA", "BC"); - - privKey = fact.generatePrivate(privKeySpec); - pubKey = fact.generatePublic(pubKeySpec); - - // - // distinguished name table. - // - Vector ord = new Vector(); - Vector values = new Vector(); - - ord.addElement(X509Principal.C); - ord.addElement(X509Principal.O); - ord.addElement(X509Principal.L); - ord.addElement(X509Principal.ST); - ord.addElement(X509Principal.E); - - values.addElement("AU"); - values.addElement("The Legion of the Bouncy Castle"); - values.addElement("Melbourne"); - values.addElement("Victoria"); - values.addElement("feedback-crypto@bouncycastle.org"); - - // - // extensions - // - - // - // create the certificate - version 3 - without subject unique ID - // - X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(new X509Principal(ord, values)); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000)); - certGen.setSubjectDN(new X509Principal(ord, values)); - certGen.setPublicKey(pubKey); - certGen.setSignatureAlgorithm("SHA256WithRSAEncryption"); - - X509Certificate cert = certGen.generate(privKey); - - cert.checkValidity(new Date()); - - cert.verify(pubKey); - - Set dummySet = cert.getNonCriticalExtensionOIDs(); - if (dummySet != null) - { - fail("non-critical oid set should be null"); - } - dummySet = cert.getCriticalExtensionOIDs(); - if (dummySet != null) - { - fail("critical oid set should be null"); - } - - // - // create the certificate - version 3 - with subject unique ID - // - certGen = new X509V3CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(new X509Principal(ord, values)); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000)); - certGen.setSubjectDN(new X509Principal(ord, values)); - certGen.setPublicKey(pubKey); - certGen.setSignatureAlgorithm("MD5WithRSAEncryption"); - - boolean[] subjectUniqID = {true, false, false, false, true, false, false, true, false, true, true}; - - certGen.setSubjectUniqueID(subjectUniqID); - - boolean[] issuerUniqID = {false, false, true, false, true, false, false, false, true, false, false, true, false, true, true}; - - certGen.setIssuerUniqueID(issuerUniqID); - - cert = certGen.generate(privKey); - - cert.checkValidity(new Date()); - - cert.verify(pubKey); - - boolean[] subjectUniqueId = cert.getSubjectUniqueID(); - if (!Arrays.areEqual(subjectUniqID, subjectUniqueId)) - { - fail("Subject unique id is not correct, original: "+arrayToString(subjectUniqID)+", from cert: "+arrayToString(subjectUniqueId)); - } - - boolean[] issuerUniqueId = cert.getIssuerUniqueID(); - if (!Arrays.areEqual(issuerUniqID, issuerUniqueId)) - { - fail("Issuer unique id is not correct, original: "+arrayToString(issuerUniqID)+", from cert: "+arrayToString(subjectUniqueId)); - } - } - - private String arrayToString(boolean[] array) - { - StringBuffer b = new StringBuffer(); - - for (int i = 0; i != array.length; i++) - { - b.append(array[i] ? "1" : "0"); - } - - return b.toString(); - } - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CertUniqueIDTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CipherStreamTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CipherStreamTest.java deleted file mode 100644 index 0110d222..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CipherStreamTest.java +++ /dev/null @@ -1,354 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.security.InvalidKeyException; -import java.security.Key; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.ShortBufferException; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * check that cipher input/output streams are working correctly - */ -public class CipherStreamTest - extends SimpleTest -{ - - private static byte[] RK = Hex.decode("0123456789ABCDEF"); - private static byte[] RIN = Hex.decode("4e6f772069732074"); - private static byte[] ROUT = Hex.decode("3afbb5c77938280d"); - - private static byte[] SIN = Hex.decode( - "00000000000000000000000000000000" - + "00000000000000000000000000000000" - + "00000000000000000000000000000000" - + "00000000000000000000000000000000"); - private static final byte[] SK = Hex.decode("80000000000000000000000000000000"); - private static final byte[] SIV = Hex.decode("0000000000000000"); - private static final byte[] SOUT = Hex.decode( - "4DFA5E481DA23EA09A31022050859936" - + "DA52FCEE218005164F267CB65F5CFD7F" - + "2B4F97E0FF16924A52DF269515110A07" - + "F9E460BC65EF95DA58F740B7D1DBB0AA"); - - private static final byte[] XSK = Hex.decode("d5c7f6797b7e7e9c1d7fd2610b2abf2bc5a7885fb3ff78092fb3abe8986d35e2"); - private static final byte[] XSIV = Hex.decode("744e17312b27969d826444640e9c4a378ae334f185369c95"); - private static final byte[] XSIN = Hex.decode("7758298c628eb3a4b6963c5445ef66971222be5d1a4ad839715d1188071739b77cc6e05d5410f963a64167629757"); - private static final byte[] XSOUT= Hex.decode("27b8cfe81416a76301fd1eec6a4d99675069b2da2776c360db1bdfea7c0aa613913e10f7a60fec04d11e65f2d64e"); - - private static final byte[] CHAK = Hex.decode("80000000000000000000000000000000"); - private static final byte[] CHAIV = Hex.decode("0000000000000000"); - private static final byte[] CHAIN = Hex.decode( - "00000000000000000000000000000000" - + "00000000000000000000000000000000" - + "00000000000000000000000000000000" - + "00000000000000000000000000000000"); - private static final byte[] CHAOUT = Hex.decode("FBB87FBB8395E05DAA3B1D683C422046" - + "F913985C2AD9B23CFC06C1D8D04FF213" - + "D44A7A7CDB84929F915420A8A3DC58BF" - + "0F7ECB4B1F167BB1A5E6153FDAF4493D"); - - private static final byte[] HCIN = new byte[64]; - private static final byte[] HCIV = new byte[32]; - - private static final byte[] HCK256A = new byte[32]; - private static final byte[] HC256A = Hex.decode( - "5B078985D8F6F30D42C5C02FA6B67951" - + "53F06534801F89F24E74248B720B4818" - + "CD9227ECEBCF4DBF8DBF6977E4AE14FA" - + "E8504C7BC8A9F3EA6C0106F5327E6981"); - - private static final byte[] HCK128A = new byte[16]; - private static final byte[] HC128A = Hex.decode( - "82001573A003FD3B7FD72FFB0EAF63AA" - + "C62F12DEB629DCA72785A66268EC758B" - + "1EDB36900560898178E0AD009ABF1F49" - + "1330DC1C246E3D6CB264F6900271D59C"); - - private static final byte[] GRAIN_V1 = Hex.decode("0123456789abcdef1234"); - private static final byte[] GRAIN_V1_IV = Hex.decode("0123456789abcdef"); - private static final byte[] GRAIN_V1_IN = new byte[10]; - private static final byte[] GRAIN_V1_OUT = Hex.decode("7f362bd3f7abae203664"); - - private static final byte[] GRAIN_128 = Hex.decode("0123456789abcdef123456789abcdef0"); - private static final byte[] GRAIN_128_IV = Hex.decode("0123456789abcdef12345678"); - private static final byte[] GRAIN_128_IN = new byte[16]; - private static final byte[] GRAIN_128_OUT = Hex.decode("afb5babfa8de896b4b9c6acaf7c4fbfd"); - - public CipherStreamTest() - { - } - - private void runTest( - String name) - throws Exception - { - String lCode = "ABCDEFGHIJKLMNOPQRSTUVWXY0123456789"; - KeyGenerator kGen; - - if (name.indexOf('/') < 0) - { - kGen = KeyGenerator.getInstance(name, "BC"); - } - else - { - kGen = KeyGenerator.getInstance(name.substring(0, name.indexOf('/')), "BC"); - } - - Cipher in = Cipher.getInstance(name, "BC"); - Cipher out = Cipher.getInstance(name, "BC"); - Key key = kGen.generateKey(); - ByteArrayInputStream bIn = new ByteArrayInputStream(lCode.getBytes()); - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - in.init(Cipher.ENCRYPT_MODE, key); - if (in.getIV() != null) - { - out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(in.getIV())); - } - else - { - out.init(Cipher.DECRYPT_MODE, key); - } - - CipherInputStream cIn = new CipherInputStream(bIn, in); - CipherOutputStream cOut = new CipherOutputStream(bOut, out); - - int c; - - while ((c = cIn.read()) >= 0) - { - cOut.write(c); - } - - cIn.close(); - - cOut.flush(); - cOut.close(); - - String res = new String(bOut.toByteArray()); - - if (!res.equals(lCode)) - { - fail("Failed - decrypted data doesn't match."); - } - } - - private void testAlgorithm(String name, byte[] keyBytes, byte[] iv, byte[] plainText, byte[] cipherText) - throws Exception - { - SecretKey key = new SecretKeySpec(keyBytes, name); - Cipher in = Cipher.getInstance(name, "BC"); - Cipher out = Cipher.getInstance(name, "BC"); - - if (iv != null) - { - in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); - out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv)); - } - else - { - in.init(Cipher.ENCRYPT_MODE, key); - out.init(Cipher.DECRYPT_MODE, key); - } - - byte[] enc = in.doFinal(plainText); - if (!areEqual(enc, cipherText)) - { - fail(name + ": cipher text doesn't match got " + new String(Hex.encode(enc))); - } - - byte[] dec = out.doFinal(enc); - - if (!areEqual(dec, plainText)) - { - fail(name + ": plain text doesn't match"); - } - } - - private void testException( - String name) - { - try - { - byte[] key128 = { - (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143, - (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143 }; - - byte[] key256 = { - (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143, - (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143, - (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143, - (byte)128, (byte)131, (byte)133, (byte)134, - (byte)137, (byte)138, (byte)140, (byte)143 }; - - byte[] keyBytes; - if (name.equals("HC256") || name.equals("XSalsa20")) - { - keyBytes = key256; - } - else - { - keyBytes = key128; - } - - SecretKeySpec cipherKey = new SecretKeySpec(keyBytes, name); - Cipher ecipher = Cipher.getInstance(name, "BC"); - ecipher.init(Cipher.ENCRYPT_MODE, cipherKey); - - byte[] cipherText = new byte[0]; - try - { - // According specification Method engineUpdate(byte[] input, - // int inputOffset, int inputLen, byte[] output, int - // outputOffset) - // throws ShortBufferException - if the given output buffer is - // too - // small to hold the result - ecipher.update(new byte[20], 0, 20, cipherText); - - fail("failed exception test - no ShortBufferException thrown"); - } - catch (ShortBufferException e) - { - // ignore - } - - try - { - Cipher c = Cipher.getInstance(name, "BC"); - - Key k = new PublicKey() - { - - public String getAlgorithm() - { - return "STUB"; - } - - public String getFormat() - { - return null; - } - - public byte[] getEncoded() - { - return null; - } - - }; - - c.init(Cipher.ENCRYPT_MODE, k); - - fail("failed exception test - no InvalidKeyException thrown for public key"); - } - catch (InvalidKeyException e) - { - // okay - } - - try - { - Cipher c = Cipher.getInstance(name, "BC"); - - Key k = new PrivateKey() - { - - public String getAlgorithm() - { - return "STUB"; - } - - public String getFormat() - { - return null; - } - - public byte[] getEncoded() - { - return null; - } - - }; - - c.init(Cipher.DECRYPT_MODE, k); - - fail("failed exception test - no InvalidKeyException thrown for private key"); - } - catch (InvalidKeyException e) - { - // okay - } - } - catch (Exception e) - { - fail("unexpected exception.", e); - } - } - - public void performTest() - throws Exception - { - runTest("RC4"); - testException("RC4"); - testAlgorithm("RC4", RK, null, RIN, ROUT); - runTest("Salsa20"); - testException("Salsa20"); - testAlgorithm("Salsa20", SK, SIV, SIN, SOUT); - runTest("XSalsa20"); - testException("XSalsa20"); - testAlgorithm("XSalsa20", XSK, XSIV, XSIN, XSOUT); - runTest("ChaCha"); - testException("ChaCha"); - testAlgorithm("ChaCha", CHAK, CHAIV, CHAIN, CHAOUT); - runTest("HC128"); - testException("HC128"); - testAlgorithm("HC128", HCK128A, HCIV, HCIN, HC128A); - runTest("HC256"); - testException("HC256"); - testAlgorithm("HC256", HCK256A, HCIV, HCIN, HC256A); - runTest("VMPC"); - testException("VMPC"); - //testAlgorithm("VMPC", a, iv, in, a); - runTest("VMPC-KSA3"); - testException("VMPC-KSA3"); - //testAlgorithm("VMPC-KSA3", a, iv, in, a); - testAlgorithm("Grainv1", GRAIN_V1, GRAIN_V1_IV, GRAIN_V1_IN, GRAIN_V1_OUT); - testAlgorithm("Grain128", GRAIN_128, GRAIN_128_IV, GRAIN_128_IN, GRAIN_128_OUT); - runTest("DES/ECB/PKCS7Padding"); - runTest("DES/CFB8/NoPadding"); - } - - public String getName() - { - return "CipherStreamTest"; - } - - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new CipherStreamTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/CipherStreamTest2.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/CipherStreamTest2.java deleted file mode 100644 index d69227f3..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/CipherStreamTest2.java +++ /dev/null @@ -1,514 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.security.Key; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.crypto.io.InvalidCipherTextIOException; -import org.bouncycastle.jcajce.io.CipherInputStream; -import org.bouncycastle.jcajce.io.CipherOutputStream; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.test.SimpleTest; - -public class CipherStreamTest2 - extends SimpleTest -{ - private int streamSize; - - public String getName() - { - return "CipherStreamTest"; - } - - private void testModes(String algo, String[] transforms, boolean authenticated) - throws Exception - { - Key key = generateKey(algo); - for (int i = 0; i != transforms.length; i++) - { - String transform = transforms[i]; - String cipherName = algo + transform; - - boolean cts = transform.indexOf("CTS") > -1; - if (cts && streamSize < Cipher.getInstance(cipherName, "BC").getBlockSize()) - { - continue; - } - testWriteRead(cipherName, key, authenticated, true, false); - testWriteRead(cipherName, key, authenticated, true, true); - testWriteRead(cipherName, key, authenticated, false, false); - testWriteRead(cipherName, key, authenticated, false, true); - testReadWrite(cipherName, key, authenticated, true, false); - testReadWrite(cipherName, key, authenticated, true, true); - testReadWrite(cipherName, key, authenticated, false, false); - testReadWrite(cipherName, key, authenticated, false, true); - - if (!cts) - { - testWriteReadEmpty(cipherName, key, authenticated, true, false); - testWriteReadEmpty(cipherName, key, authenticated, true, true); - testWriteReadEmpty(cipherName, key, authenticated, false, false); - testWriteReadEmpty(cipherName, key, authenticated, false, true); - } - - if (authenticated) - { - testTamperedRead(cipherName, key, true, true); - testTamperedRead(cipherName, key, true, false); - testTruncatedRead(cipherName, key, true, true); - testTruncatedRead(cipherName, key, true, false); - testTamperedWrite(cipherName, key, true, true); - testTamperedWrite(cipherName, key, true, false); - } - } - } - - private InputStream createInputStream(byte[] data, Cipher cipher, boolean useBc) - { - ByteArrayInputStream bytes = new ByteArrayInputStream(data); - // cast required for earlier JDK - return useBc ? (InputStream)new CipherInputStream(bytes, cipher) : (InputStream)new javax.crypto.CipherInputStream(bytes, cipher); - } - - private OutputStream createOutputStream(ByteArrayOutputStream bytes, Cipher cipher, boolean useBc) - { - // cast required for earlier JDK - return useBc ? (OutputStream)new CipherOutputStream(bytes, cipher) : (OutputStream)new javax.crypto.CipherOutputStream(bytes, cipher); - } - - /** - * Test tampering of ciphertext followed by read from decrypting CipherInputStream - */ - private void testTamperedRead(String name, Key key, boolean authenticated, boolean useBc) - throws Exception - { - Cipher encrypt = Cipher.getInstance(name, "BC"); - Cipher decrypt = Cipher.getInstance(name, "BC"); - encrypt.init(Cipher.ENCRYPT_MODE, key); - if (encrypt.getIV() != null) - { - decrypt.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(encrypt.getIV())); - } - else - { - decrypt.init(Cipher.DECRYPT_MODE, key); - } - - byte[] ciphertext = encrypt.doFinal(new byte[streamSize]); - - // Tamper - ciphertext[0] += 1; - - InputStream input = createInputStream(ciphertext, decrypt, useBc); - try - { - while (input.read() >= 0) - { - } - fail("Expected invalid ciphertext after tamper and read : " + name, authenticated, useBc); - } - catch (InvalidCipherTextIOException e) - { - // Expected - } - try - { - input.close(); - } - catch (Exception e) - { - fail("Unexpected exception : " + name, e, authenticated, useBc); - } - } - - /** - * Test truncation of ciphertext to make tag calculation impossible, followed by read from - * decrypting CipherInputStream - */ - private void testTruncatedRead(String name, Key key, boolean authenticated, boolean useBc) - throws Exception - { - Cipher encrypt = Cipher.getInstance(name, "BC"); - Cipher decrypt = Cipher.getInstance(name, "BC"); - encrypt.init(Cipher.ENCRYPT_MODE, key); - if (encrypt.getIV() != null) - { - decrypt.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(encrypt.getIV())); - } - else - { - decrypt.init(Cipher.DECRYPT_MODE, key); - } - - byte[] ciphertext = encrypt.doFinal(new byte[streamSize]); - - // Truncate to just smaller than complete tag - byte[] truncated = new byte[ciphertext.length - streamSize - 1]; - System.arraycopy(ciphertext, 0, truncated, 0, truncated.length); - - // Tamper - ciphertext[0] += 1; - - InputStream input = createInputStream(truncated, decrypt, useBc); - while (true) - { - int read = 0; - try - { - read = input.read(); - } - catch (InvalidCipherTextIOException e) - { - // Expected - break; - } - catch (Exception e) - { - fail("Unexpected exception : " + name, e, authenticated, useBc); - break; - } - if (read < 0) - { - fail("Expected invalid ciphertext after truncate and read : " + name, authenticated, useBc); - break; - } - } - try - { - input.close(); - } - catch (Exception e) - { - fail("Unexpected exception : " + name, e, authenticated, useBc); - } - } - - /** - * Test tampering of ciphertext followed by write to decrypting CipherOutputStream - */ - private void testTamperedWrite(String name, Key key, boolean authenticated, boolean useBc) - throws Exception - { - Cipher encrypt = Cipher.getInstance(name, "BC"); - Cipher decrypt = Cipher.getInstance(name, "BC"); - encrypt.init(Cipher.ENCRYPT_MODE, key); - if (encrypt.getIV() != null) - { - decrypt.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(encrypt.getIV())); - } - else - { - decrypt.init(Cipher.DECRYPT_MODE, key); - } - - byte[] ciphertext = encrypt.doFinal(new byte[streamSize]); - - // Tamper - ciphertext[0] += 1; - - ByteArrayOutputStream plaintext = new ByteArrayOutputStream(); - OutputStream output = createOutputStream(plaintext, decrypt, useBc); - - for (int i = 0; i < ciphertext.length; i++) - { - output.write(ciphertext[i]); - } - try - { - output.close(); - fail("Expected invalid ciphertext after tamper and write : " + name, authenticated, useBc); - } - catch (InvalidCipherTextIOException e) - { - // Expected - } - } - - /** - * Test CipherOutputStream in ENCRYPT_MODE, CipherInputStream in DECRYPT_MODE - */ - private void testWriteRead(String name, Key key, boolean authenticated, boolean useBc, boolean blocks) - throws Exception - { - byte[] data = new byte[streamSize]; - for (int i = 0; i < data.length; i++) - { - data[i] = (byte)(i % 255); - } - - testWriteRead(name, key, authenticated, useBc, blocks, data); - } - - /** - * Test CipherOutputStream in ENCRYPT_MODE, CipherInputStream in DECRYPT_MODE - */ - private void testWriteReadEmpty(String name, Key key, boolean authenticated, boolean useBc, boolean blocks) - throws Exception - { - byte[] data = new byte[0]; - - testWriteRead(name, key, authenticated, useBc, blocks, data); - } - - private void testWriteRead(String name, Key key, boolean authenticated, boolean useBc, boolean blocks, byte[] data) - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - try - { - Cipher encrypt = Cipher.getInstance(name, "BC"); - Cipher decrypt = Cipher.getInstance(name, "BC"); - encrypt.init(Cipher.ENCRYPT_MODE, key); - if (encrypt.getIV() != null) - { - decrypt.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(encrypt.getIV())); - } - else - { - decrypt.init(Cipher.DECRYPT_MODE, key); - } - - OutputStream cOut = createOutputStream(bOut, encrypt, useBc); - if (blocks) - { - int chunkSize = Math.max(1, data.length / 8); - for (int i = 0; i < data.length; i += chunkSize) - { - cOut.write(data, i, Math.min(chunkSize, data.length - i)); - } - } - else - { - for (int i = 0; i < data.length; i++) - { - cOut.write(data[i]); - } - } - cOut.close(); - - byte[] cipherText = bOut.toByteArray(); - bOut.reset(); - InputStream cIn = createInputStream(cipherText, decrypt, useBc); - - if (blocks) - { - byte[] block = new byte[encrypt.getBlockSize() + 1]; - int c; - while ((c = cIn.read(block)) >= 0) - { - bOut.write(block, 0, c); - } - } - else - { - int c; - while ((c = cIn.read()) >= 0) - { - bOut.write(c); - } - - } - cIn.close(); - - } - catch (Exception e) - { - fail("Unexpected exception " + name, e, authenticated, useBc); - } - - byte[] decrypted = bOut.toByteArray(); - if (!Arrays.areEqual(data, decrypted)) - { - fail("Failed - decrypted data doesn't match: " + name, authenticated, useBc); - } - } - - protected void fail(String message, boolean authenticated, boolean bc) - { - if (bc || !authenticated) - { - super.fail(message); - } - else - { - // javax.crypto.CipherInputStream/CipherOutputStream - // are broken wrt handling AEAD failures - // System.err.println("Broken JCE Streams: " + message); - } - } - - protected void fail(String message, Throwable throwable, boolean authenticated, boolean bc) - { - if (bc || !authenticated) - { - super.fail(message, throwable); - } - else - { - // javax.crypto.CipherInputStream/CipherOutputStream - // are broken wrt handling AEAD failures - //System.err.println("Broken JCE Streams: " + message + " : " + throwable); - throwable.printStackTrace(); - } - } - - /** - * Test CipherInputStream in ENCRYPT_MODE, CipherOutputStream in DECRYPT_MODE - */ - private void testReadWrite(String name, Key key, boolean authenticated, boolean useBc, boolean blocks) - throws Exception - { - String lCode = "ABCDEFGHIJKLMNOPQRSTU"; - - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - try - { - Cipher in = Cipher.getInstance(name, "BC"); - Cipher out = Cipher.getInstance(name, "BC"); - in.init(Cipher.ENCRYPT_MODE, key); - if (in.getIV() != null) - { - out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(in.getIV())); - } - else - { - out.init(Cipher.DECRYPT_MODE, key); - } - - InputStream cIn = createInputStream(lCode.getBytes(), in, useBc); - OutputStream cOut = createOutputStream(bOut, out, useBc); - - if (blocks) - { - byte[] block = new byte[in.getBlockSize() + 1]; - int c; - while ((c = cIn.read(block)) >= 0) - { - cOut.write(block, 0, c); - } - } - else - { - int c; - while ((c = cIn.read()) >= 0) - { - cOut.write(c); - } - } - - cIn.close(); - - cOut.flush(); - cOut.close(); - - } - catch (Exception e) - { - fail("Unexpected exception " + name, e, authenticated, useBc); - } - - String res = new String(bOut.toByteArray()); - if (!res.equals(lCode)) - { - fail("Failed - decrypted data doesn't match: " + name, authenticated, useBc); - } - } - - private static Key generateKey(String name) - throws Exception - { - KeyGenerator kGen; - - if (name.indexOf('/') < 0) - { - kGen = KeyGenerator.getInstance(name, "BC"); - } - else - { - kGen = KeyGenerator.getInstance(name.substring(0, name.indexOf('/')), "BC"); - } - return kGen.generateKey(); - } - - public void performTest() - throws Exception - { - int[] testSizes = new int[]{0, 1, 7, 8, 9, 15, 16, 17, 1023, 1024, 1025, 2047, 2048, 2049, 4095, 4096, 4097}; - for (int i = 0; i < testSizes.length; i++) - { - this.streamSize = testSizes[i]; - performTests(); - } - } - - private void performTests() - throws Exception - { - final String[] blockCiphers64 = new String[]{"BLOWFISH", "DES", "DESEDE", "TEA", "CAST5", "RC2", "XTEA"}; - - for (int i = 0; i != blockCiphers64.length; i++) - { - testModes(blockCiphers64[i], new String[]{ - "/ECB/PKCS5Padding", - "/CBC/PKCS5Padding", - "/OFB/NoPadding", - "/CFB/NoPadding", - "/CTS/NoPadding",}, false); - testModes(blockCiphers64[i], new String[]{"/EAX/NoPadding"}, true); - } - - final String[] blockCiphers128 = new String[]{ - "AES", - "NOEKEON", - "Twofish", - "CAST6", - "SEED", - "Serpent", - "RC6", - "CAMELLIA"}; - - for (int i = 0; i != blockCiphers128.length; i++) - { - testModes(blockCiphers128[i], new String[]{ - "/ECB/PKCS5Padding", - "/CBC/PKCS5Padding", - "/OFB/NoPadding", - "/CFB/NoPadding", - "/CTS/NoPadding", - "/CTR/NoPadding", - "/SIC/NoPadding"}, false); - testModes(blockCiphers128[i], new String[]{"/CCM/NoPadding", "/EAX/NoPadding", "/GCM/NoPadding", "/OCB/NoPadding"}, true); - } - - final String[] streamCiphers = new String[]{ - "ARC4", - "SALSA20", - "XSalsa20", - "ChaCha", - "Grainv1", - "Grain128", - "HC128", - "HC256"}; - - for (int i = 0; i != streamCiphers.length; i++) - { - testModes(streamCiphers[i], new String[]{""}, false); - } - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - runTest(new CipherStreamTest2()); - } - -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/DESedeTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/DESedeTest.java deleted file mode 100644 index 313f665f..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/DESedeTest.java +++ /dev/null @@ -1,326 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.security.Key; -import java.security.SecureRandom; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.DESedeKeySpec; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * basic test class for key generation for a DES-EDE block cipher, basically - * this just exercises the provider, and makes sure we are behaving sensibly, - * correctness of the implementation is shown in the lightweight test classes. - */ -public class DESedeTest - extends SimpleTest -{ - static String[] cipherTests1 = - { - "112", - "2f4bc6b30c893fa549d82c560d61cf3eb088aed020603de249d82c560d61cf3e529e95ecd8e05394", - "128", - "2f4bc6b30c893fa549d82c560d61cf3eb088aed020603de249d82c560d61cf3e529e95ecd8e05394", - "168", - "50ddb583a25c21e6c9233f8e57a86d40bb034af421c03096c9233f8e57a86d402fce91e8eb639f89", - "192", - "50ddb583a25c21e6c9233f8e57a86d40bb034af421c03096c9233f8e57a86d402fce91e8eb639f89", - }; - - static byte[] input1 = Hex.decode("000102030405060708090a0b0c0d0e0fff0102030405060708090a0b0c0d0e0f"); - - /** - * a fake random number generator - we just want to make sure the random numbers - * aren't random so that we get the same output, while still getting to test the - * key generation facilities. - */ - private class FixedSecureRandom - extends SecureRandom - { - byte[] seed = { - (byte)0xaa, (byte)0xfd, (byte)0x12, (byte)0xf6, (byte)0x59, - (byte)0xca, (byte)0xe6, (byte)0x34, (byte)0x89, (byte)0xb4, - (byte)0x79, (byte)0xe5, (byte)0x07, (byte)0x6d, (byte)0xde, - (byte)0xc2, (byte)0xf0, (byte)0x6c, (byte)0xb5, (byte)0x8f - }; - - public void nextBytes( - byte[] bytes) - { - int offset = 0; - - while ((offset + seed.length) < bytes.length) - { - System.arraycopy(seed, 0, bytes, offset, seed.length); - offset += seed.length; - } - - System.arraycopy(seed, 0, bytes, offset, bytes.length - offset); - } - } - - public String getName() - { - return "DESEDE"; - } - - private boolean equalArray( - byte[] a, - byte[] b) - { - if (a.length != b.length) - { - return false; - } - - for (int i = 0; i != a.length; i++) - { - if (a[i] != b[i]) - { - return false; - } - } - - return true; - } - - private boolean equalArray( - byte[] a, - byte[] b, - int length) - { - if (a.length < length) - { - return false; - } - - if (b.length < length) - { - return false; - } - - for (int i = 0; i != length; i++) - { - if (a[i] != b[i]) - { - return false; - } - } - - return true; - } - - private void wrapTest( - String alg, - int id, - byte[] kek, - byte[] iv, - byte[] in, - byte[] out) - { - try - { - Cipher wrapper = Cipher.getInstance(alg + "Wrap", "BC"); - - wrapper.init(Cipher.WRAP_MODE, new SecretKeySpec(kek, alg), new IvParameterSpec(iv)); - - try - { - byte[] cText = wrapper.wrap(new SecretKeySpec(in, alg)); - if (!equalArray(cText, out)) - { - fail("failed wrap test " + id + " expected " + new String(Hex.encode(out)) + " got " + new String(Hex.encode(cText))); - } - } - catch (Exception e) - { - fail("failed wrap test exception " + e.toString()); - } - - wrapper.init(Cipher.UNWRAP_MODE, new SecretKeySpec(kek, alg)); - - try - { - Key pText = wrapper.unwrap(out, alg, Cipher.SECRET_KEY); - if (!equalArray(pText.getEncoded(), in)) - { - fail("failed unwrap test " + id + " expected " + new String(Hex.encode(in)) + " got " + new String(Hex.encode(pText.getEncoded()))); - } - } - catch (Exception e) - { - fail("failed unwrap test exception " + e.toString()); - } - } - catch (Exception ex) - { - fail("failed exception " + ex.toString()); - } - } - - public void test( - String alg, - int strength, - byte[] input, - byte[] output) - { - Key key = null; - KeyGenerator keyGen; - SecureRandom rand; - Cipher in = null; - Cipher out = null; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - rand = new FixedSecureRandom(); - - try - { - keyGen = KeyGenerator.getInstance(alg, "BC"); - keyGen.init(strength, rand); - - key = keyGen.generateKey(); - - in = Cipher.getInstance(alg + "/ECB/PKCS7Padding", "BC"); - out = Cipher.getInstance(alg + "/ECB/PKCS7Padding", "BC"); - - out.init(Cipher.ENCRYPT_MODE, key, rand); - } - catch (Exception e) - { - fail(alg + " failed initialisation - " + e.toString()); - } - - try - { - in.init(Cipher.DECRYPT_MODE, key); - } - catch (Exception e) - { - fail(alg + " failed initialisation - " + e.toString()); - } - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - try - { - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - } - catch (IOException e) - { - fail(alg + " failed encryption - " + e.toString()); - } - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!equalArray(bytes, output)) - { - fail(alg + " failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - try - { - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - } - catch (Exception e) - { - fail(alg + " failed encryption - " + e.toString()); - } - - if (!equalArray(bytes, input)) - { - fail(alg + " failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - - // - // keyspec test - // - try - { - SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(alg, "BC"); - DESedeKeySpec keySpec = (DESedeKeySpec)keyFactory.getKeySpec((SecretKey)key, DESedeKeySpec.class); - - if (!equalArray(key.getEncoded(), keySpec.getKey(), 16)) - { - fail(alg + " KeySpec does not match key."); - } - } - catch (Exception e) - { - fail(alg + " failed keyspec - " + e.toString()); - } - } - - public void performTest() - { - for (int i = 0; i != cipherTests1.length; i += 2) - { - test("DESEDE", Integer.parseInt(cipherTests1[i]), input1, Hex.decode(cipherTests1[i + 1])); - } - - for (int i = 0; i != cipherTests1.length; i += 2) - { - test("TDEA", Integer.parseInt(cipherTests1[i]), input1, Hex.decode(cipherTests1[i + 1])); - } - - byte[] kek1 = Hex.decode("255e0d1c07b646dfb3134cc843ba8aa71f025b7c0838251f"); - byte[] iv1 = Hex.decode("5dd4cbfc96f5453b"); - byte[] in1 = Hex.decode("2923bf85e06dd6ae529149f1f1bae9eab3a7da3d860d3e98"); - byte[] out1 = Hex.decode("690107618ef092b3b48ca1796b234ae9fa33ebb4159604037db5d6a84eb3aac2768c632775a467d4"); - - wrapTest("DESEDE", 1, kek1, iv1, in1, out1); - wrapTest("TDEA", 1, kek1, iv1, in1, out1); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new DESedeTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/DHIESTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/DHIESTest.java deleted file mode 100755 index f081d80b..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/DHIESTest.java +++ /dev/null @@ -1,194 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.SecureRandom; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.interfaces.DHPrivateKey; -import javax.crypto.interfaces.DHPublicKey; -import javax.crypto.spec.DHParameterSpec; - -import org.bouncycastle.crypto.agreement.DHBasicAgreement; -import org.bouncycastle.crypto.digests.SHA1Digest; -import org.bouncycastle.crypto.engines.DESEngine; -import org.bouncycastle.crypto.engines.IESEngine; -import org.bouncycastle.crypto.generators.KDF2BytesGenerator; -import org.bouncycastle.crypto.macs.HMac; -import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jcajce.provider.asymmetric.dh.IESCipher; -import org.bouncycastle.jce.spec.IESParameterSpec; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * Test for DHIES - Diffie-Hellman Integrated Encryption Scheme - */ -public class DHIESTest - extends SimpleTest -{ - // Oakley group 2 - RFC 5996 - BigInteger p1024 = new BigInteger( - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" + - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" + - "FFFFFFFFFFFFFFFF",16); - - BigInteger g1024 = new BigInteger("2",16); - - DHParameterSpec param = new DHParameterSpec(p1024, g1024); - - DHIESTest() - { - } - - public String getName() - { - return "DHIES"; - } - - public void performTest() - throws Exception - { - byte[] derivation = Hex.decode("202122232425262728292a2b2c2d2e2f"); - byte[] encoding = Hex.decode("303132333435363738393a3b3c3d3e3f"); - - - IESCipher c1 = new org.bouncycastle.jcajce.provider.asymmetric.dh.IESCipher.IES(); - IESCipher c2 = new org.bouncycastle.jcajce.provider.asymmetric.dh.IESCipher.IES(); - IESParameterSpec params = new IESParameterSpec(derivation,encoding,128); - - // Testing DHIES with default prime in streaming mode - KeyPairGenerator g = KeyPairGenerator.getInstance("DH", "BC"); - - g.initialize(param); - - doTest("DHIES with default", g, "DHIES", params); - - // Testing DHIES with 512-bit prime in streaming mode - g.initialize(512, new SecureRandom()); - doTest("DHIES with 512-bit", g, "DHIES", params); - - // Testing ECIES with 1024-bit prime in streaming mode - g.initialize(1024, new SecureRandom()); - doTest("DHIES with 1024-bit", g, "DHIES", params); - - c1 = new IESCipher(new IESEngine(new DHBasicAgreement(), - new KDF2BytesGenerator(new SHA1Digest()), - new HMac(new SHA1Digest()), - new PaddedBufferedBlockCipher(new DESEngine()))); - - c2 = new IESCipher(new IESEngine(new DHBasicAgreement(), - new KDF2BytesGenerator(new SHA1Digest()), - new HMac(new SHA1Digest()), - new PaddedBufferedBlockCipher(new DESEngine()))); - - params = new IESParameterSpec(derivation, encoding, 128, 192); - - // Testing DHIES with default prime using DESEDE - g = KeyPairGenerator.getInstance("DH", "BC"); - doTest("DHIESwithDES default", g, "DHIESwithDESEDE", params); - - // Testing DHIES with 512-bit prime using DESEDE - g.initialize(512, new SecureRandom()); - doTest("DHIESwithDES 512-bit", g, "DHIESwithDESEDE", params); - - // Testing DHIES with 1024-bit prime using DESEDE - g.initialize(1024, new SecureRandom()); - doTest("DHIESwithDES 1024-bit", g, "DHIESwithDESEDE", params); - - g = KeyPairGenerator.getInstance("DH", "BC"); - g.initialize(param); - - c1 = new IESCipher.IESwithAES(); - c2 = new IESCipher.IESwithAES(); - params = new IESParameterSpec(derivation, encoding, 128, 128); - - // Testing DHIES with default curve using AES - doTest("DHIESwithAES default", g, "DHIESwithAES", params); - - // Testing DHIES with 512-bit curve using AES - g.initialize(512, new SecureRandom()); - doTest("DHIESwithAES 512-bit", g, "DHIESwithAES", params); - - // Testing DHIES with 1024-bit curve using AES - g.initialize(1024, new SecureRandom()); - doTest("DHIESwithAES 1024-bit", g, "DHIESwithAES", params); - - } - - public void doTest( - String testname, - KeyPairGenerator g, - String cipher, - IESParameterSpec p) - throws Exception - { - - byte[] message = Hex.decode("0102030405060708090a0b0c0d0e0f10111213141516"); - byte[] out1, out2; - - Cipher c1 = Cipher.getInstance(cipher, "BC"); - Cipher c2 = Cipher.getInstance(cipher, "BC"); - // Generate static key pair - KeyPair keyPair = g.generateKeyPair(); - DHPublicKey pub = (DHPublicKey)keyPair.getPublic(); - DHPrivateKey priv = (DHPrivateKey)keyPair.getPrivate(); - - - // Testing with null parameters and DHAES mode off - c1.init(Cipher.ENCRYPT_MODE, pub, new SecureRandom()); - c2.init(Cipher.DECRYPT_MODE, priv, new SecureRandom()); - out1 = c1.doFinal(message, 0, message.length); - out2 = c2.doFinal(out1, 0, out1.length); - if (!areEqual(out2, message)) - { - fail(testname + " test failed with null parameters, DHAES mode false."); - } - - - // Testing with given parameters and DHAES mode off - c1.init(Cipher.ENCRYPT_MODE, pub, p, new SecureRandom()); - c2.init(Cipher.DECRYPT_MODE, priv, p, new SecureRandom()); - out1 = c1.doFinal(message, 0, message.length); - out2 = c2.doFinal(out1, 0, out1.length); - if (!areEqual(out2, message)) - fail(testname + " test failed with non-null parameters, DHAES mode false."); - - // Testing with null parameters and DHAES mode on - c1 = Cipher.getInstance(cipher + "/DHAES/PKCS7Padding","BC"); - c2 = Cipher.getInstance(cipher + "/DHAES/PKCS7Padding","BC"); - c1.init(Cipher.ENCRYPT_MODE, pub, new SecureRandom()); - c2.init(Cipher.DECRYPT_MODE, priv, new SecureRandom()); - out1 = c1.doFinal(message, 0, message.length); - out2 = c2.doFinal(out1, 0, out1.length); - if (!areEqual(out2, message)) - fail(testname + " test failed with null parameters, DHAES mode true."); - - - // Testing with given parameters and DHAES mode on - c1 = Cipher.getInstance(cipher + "/DHAES/PKCS7Padding","BC"); - c2 = Cipher.getInstance(cipher + "/DHAES/PKCS7Padding","BC"); - - c1.init(Cipher.ENCRYPT_MODE, pub, p, new SecureRandom()); - c2.init(Cipher.DECRYPT_MODE, priv, p, new SecureRandom()); - - out1 = c1.doFinal(message, 0, message.length); - out2 = c2.doFinal(out1, 0, out1.length); - if (!areEqual(out2, message)) - fail(testname + " test failed with non-null parameters, DHAES mode true."); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new DHIESTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/DHTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/DHTest.java deleted file mode 100644 index 6b9ad4e5..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/DHTest.java +++ /dev/null @@ -1,990 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.math.BigInteger; -import java.security.AlgorithmParameterGenerator; -import java.security.AlgorithmParameters; -import java.security.Key; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.SecureRandom; -import java.security.Security; -import java.security.interfaces.ECPrivateKey; -import java.security.interfaces.ECPublicKey; -import java.security.spec.ECFieldFp; -import java.security.spec.ECParameterSpec; -import java.security.spec.EllipticCurve; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; - -import javax.crypto.KeyAgreement; -import javax.crypto.SecretKey; -import javax.crypto.interfaces.DHPrivateKey; -import javax.crypto.interfaces.DHPublicKey; -import javax.crypto.spec.DESKeySpec; -import javax.crypto.spec.DESedeKeySpec; -import javax.crypto.spec.DHParameterSpec; -import javax.crypto.spec.DHPrivateKeySpec; -import javax.crypto.spec.DHPublicKeySpec; - -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jce.ECNamedCurveTable; -import org.bouncycastle.jce.ECPointUtil; -import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class DHTest - extends SimpleTest -{ - private BigInteger g512 = new BigInteger("153d5d6172adb43045b68ae8e1de1070b6137005686d29d3d73a7749199681ee5b212c9b96bfdcfa5b20cd5e3fd2044895d609cf9b410b7a0f12ca1cb9a428cc", 16); - private BigInteger p512 = new BigInteger("9494fec095f3b85ee286542b3836fc81a5dd0a0349b4c239dd38744d488cf8e31db8bcb7d33b41abb9e5a33cca9144b1cef332c94bf0573bf047a3aca98cdf3b", 16); - - private BigInteger g768 = new BigInteger("7c240073c1316c621df461b71ebb0cdcc90a6e5527e5e126633d131f87461c4dc4afc60c2cb0f053b6758871489a69613e2a8b4c8acde23954c08c81cbd36132cfd64d69e4ed9f8e51ed6e516297206672d5c0a69135df0a5dcf010d289a9ca1", 16); - private BigInteger p768 = new BigInteger("8c9dd223debed1b80103b8b309715be009d48860ed5ae9b9d5d8159508efd802e3ad4501a7f7e1cfec78844489148cd72da24b21eddd01aa624291c48393e277cfc529e37075eccef957f3616f962d15b44aeab4039d01b817fde9eaa12fd73f", 16); - - private BigInteger g1024 = new BigInteger("1db17639cdf96bc4eabba19454f0b7e5bd4e14862889a725c96eb61048dcd676ceb303d586e30f060dbafd8a571a39c4d823982117da5cc4e0f89c77388b7a08896362429b94a18a327604eb7ff227bffbc83459ade299e57b5f77b50fb045250934938efa145511166e3197373e1b5b1e52de713eb49792bedde722c6717abf", 16); - private BigInteger p1024 = new BigInteger("a00e283b3c624e5b2b4d9fbc2653b5185d99499b00fd1bf244c6f0bb817b4d1c451b2958d62a0f8a38caef059fb5ecd25d75ed9af403f5b5bdab97a642902f824e3c13789fed95fa106ddfe0ff4a707c85e2eb77d49e68f2808bcea18ce128b178cd287c6bc00efa9a1ad2a673fe0dceace53166f75b81d6709d5f8af7c66bb7", 16); - - // public key with mismatched oid/parameters - private byte[] oldPubEnc = Base64.decode( - "MIIBnzCCARQGByqGSM4+AgEwggEHAoGBAPxSrN417g43VAM9sZRf1dt6AocAf7D6" + - "WVCtqEDcBJrMzt63+g+BNJzhXVtbZ9kp9vw8L/0PHgzv0Ot/kOLX7Khn+JalOECW" + - "YlkyBhmOVbjR79TY5u2GAlvG6pqpizieQNBCEMlUuYuK1Iwseil6VoRuA13Zm7uw" + - "WO1eZmaJtY7LAoGAQaPRCFKM5rEdkMrV9FNzeSsYRs8m3DqPnnJHpuySpyO9wUcX" + - "OOJcJY5qvHbDO5SxHXu/+bMgXmVT6dXI5o0UeYqJR7fj6pR4E6T0FwG55RFr5Ok4" + - "3C4cpXmaOu176SyWuoDqGs1RDGmYQjwbZUi23DjaaTFUly9LCYXMliKrQfEDgYQA" + - "AoGAQUGCBN4TaBw1BpdBXdTvTfCU69XDB3eyU2FOBE3UWhpx9D8XJlx4f5DpA4Y6" + - "6sQMuCbhfmjEph8W7/sbMurM/awR+PSR8tTY7jeQV0OkmAYdGK2nzh0ZSifMO1oE" + - "NNhN2O62TLs67msxT28S4/S89+LMtc98mevQ2SX+JF3wEVU="); - - // bogus key with full PKCS parameter set - private byte[] oldFullParams = Base64.decode( - "MIIBIzCCARgGByqGSM4+AgEwggELAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9E" + - "AMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f" + - "6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv" + - "8iIDGZ3RSAHHAoGBAPfhoIXWmz3ey7yrXDa4V7l5lK+7+jrqgvlXTAs9B4JnUVlX" + - "jrrUWU/mcQcQgYC0SRZxI+hMKBYTt88JMozIpuE8FnqLVHyNKOCjrh4rs6Z1kW6j" + - "fwv6ITVi8ftiegEkO8yk8b6oUZCJqIPf4VrlnwaSi2ZegHtVJWQBTDv+z0kqAgFk" + - "AwUAAgIH0A=="); - - private byte[] samplePubEnc = Base64.decode( - "MIIBpjCCARsGCSqGSIb3DQEDATCCAQwCgYEA/X9TgR11EilS30qcLuzk5/YRt1I8" + - "70QAwx4/gLZRJmlFXUAiUftZPY1Y+r/F9bow9subVWzXgTuAHTRv8mZgt2uZUKWk" + - "n5/oBHsQIsJPu6nX/rfGG/g7V+fGqKYVDwT7g/bTxR7DAjVUE1oWkTL2dfOuK2HX" + - "Ku/yIgMZndFIAccCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdR" + - "WVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWR" + - "bqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoC" + - "AgIAA4GEAAKBgEIiqxoUW6E6GChoOgcfNbVFclW91ITf5MFSUGQwt2R0RHoOhxvO" + - "lZhNs++d0VPATLAyXovjfgENT9SGCbuZttYcqqLdKTbMXBWPek+rfnAl9E4iEMED" + - "IDd83FJTKs9hQcPAm7zmp0Xm1bGF9CbUFjP5G02265z7eBmHDaT0SNlB"); - - private byte[] samplePrivEnc = Base64.decode( - "MIIBZgIBADCCARsGCSqGSIb3DQEDATCCAQwCgYEA/X9TgR11EilS30qcLuzk5/YR" + - "t1I870QAwx4/gLZRJmlFXUAiUftZPY1Y+r/F9bow9subVWzXgTuAHTRv8mZgt2uZ" + - "UKWkn5/oBHsQIsJPu6nX/rfGG/g7V+fGqKYVDwT7g/bTxR7DAjVUE1oWkTL2dfOu" + - "K2HXKu/yIgMZndFIAccCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0H" + - "gmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuz" + - "pnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7P" + - "SSoCAgIABEICQAZYXnBHazxXUUdFP4NIf2Ipu7du0suJPZQKKff81wymi2zfCfHh" + - "uhe9gQ9xdm4GpzeNtrQ8/MzpTy+ZVrtd29Q="); - - public String getName() - { - return "DH"; - } - - private void testGP( - String algName, - int size, - int privateValueSize, - BigInteger g, - BigInteger p) - throws Exception - { - DHParameterSpec dhParams = new DHParameterSpec(p, g, privateValueSize); - - KeyPairGenerator keyGen = KeyPairGenerator.getInstance(algName, "BC"); - - keyGen.initialize(dhParams); - - testTwoParty(algName, size, privateValueSize, keyGen); - - KeyPair aKeyPair = keyGen.generateKeyPair(); - - // - // public key encoding test - // - byte[] pubEnc = aKeyPair.getPublic().getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance(algName, "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - DHPublicKey pubKey = (DHPublicKey)keyFac.generatePublic(pubX509); - DHParameterSpec spec = pubKey.getParams(); - - if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP())) - { - fail(size + " bit public key encoding/decoding test failed on parameters"); - } - - if (!((DHPublicKey)aKeyPair.getPublic()).getY().equals(pubKey.getY())) - { - fail(size + " bit public key encoding/decoding test failed on y value"); - } - - // - // public key serialisation test - // - pubKey = (DHPublicKey)serializeDeserialize(aKeyPair.getPublic()); - spec = pubKey.getParams(); - - if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP())) - { - fail(size + " bit public key serialisation test failed on parameters"); - } - - if (!((DHPublicKey)aKeyPair.getPublic()).getY().equals(pubKey.getY())) - { - fail(size + " bit public key serialisation test failed on y value"); - } - - if (!aKeyPair.getPublic().equals(pubKey)) - { - fail("equals test failed"); - } - - if (aKeyPair.getPublic().hashCode() != pubKey.hashCode()) - { - fail("hashCode test failed"); - } - - // - // private key encoding test - // - byte[] privEnc = aKeyPair.getPrivate().getEncoded(); - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - DHPrivateKey privKey = (DHPrivateKey)keyFac.generatePrivate(privPKCS8); - - spec = privKey.getParams(); - - if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP())) - { - fail(size + " bit private key encoding/decoding test failed on parameters"); - } - - if (!((DHPrivateKey)aKeyPair.getPrivate()).getX().equals(privKey.getX())) - { - fail(size + " bit private key encoding/decoding test failed on y value"); - } - - // - // private key serialisation test - // - privKey = (DHPrivateKey)serializeDeserialize(aKeyPair.getPrivate()); - spec = privKey.getParams(); - - if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP())) - { - fail(size + " bit private key serialisation test failed on parameters"); - } - - if (!((DHPrivateKey)aKeyPair.getPrivate()).getX().equals(privKey.getX())) - { - fail(size + " bit private key serialisation test failed on X value"); - } - - if (!aKeyPair.getPrivate().equals(privKey)) - { - fail("equals test failed"); - } - - if (aKeyPair.getPrivate().hashCode() != privKey.hashCode()) - { - fail("hashCode test failed"); - } - - if (!(privKey instanceof PKCS12BagAttributeCarrier)) - { - fail("private key not implementing PKCS12 attribute carrier"); - } - - // - // three party test - // - KeyPairGenerator aPairGen = KeyPairGenerator.getInstance(algName, "BC"); - aPairGen.initialize(spec); - KeyPair aPair = aPairGen.generateKeyPair(); - - KeyPairGenerator bPairGen = KeyPairGenerator.getInstance(algName, "BC"); - bPairGen.initialize(spec); - KeyPair bPair = bPairGen.generateKeyPair(); - - KeyPairGenerator cPairGen = KeyPairGenerator.getInstance(algName, "BC"); - cPairGen.initialize(spec); - KeyPair cPair = cPairGen.generateKeyPair(); - - KeyAgreement aKeyAgree = KeyAgreement.getInstance(algName, "BC"); - aKeyAgree.init(aPair.getPrivate()); - - KeyAgreement bKeyAgree = KeyAgreement.getInstance(algName, "BC"); - bKeyAgree.init(bPair.getPrivate()); - - KeyAgreement cKeyAgree = KeyAgreement.getInstance(algName, "BC"); - cKeyAgree.init(cPair.getPrivate()); - - Key ac = aKeyAgree.doPhase(cPair.getPublic(), false); - - Key ba = bKeyAgree.doPhase(aPair.getPublic(), false); - - Key cb = cKeyAgree.doPhase(bPair.getPublic(), false); - - aKeyAgree.doPhase(cb, true); - - bKeyAgree.doPhase(ac, true); - - cKeyAgree.doPhase(ba, true); - - BigInteger aShared = new BigInteger(aKeyAgree.generateSecret()); - BigInteger bShared = new BigInteger(bKeyAgree.generateSecret()); - BigInteger cShared = new BigInteger(cKeyAgree.generateSecret()); - - if (!aShared.equals(bShared)) - { - fail(size + " bit 3-way test failed (a and b differ)"); - } - - if (!cShared.equals(bShared)) - { - fail(size + " bit 3-way test failed (c and b differ)"); - } - } - - private void testTwoParty(String algName, int size, int privateValueSize, KeyPairGenerator keyGen) - throws Exception - { - testTwoParty(algName, size, privateValueSize, keyGen.generateKeyPair(), keyGen.generateKeyPair()); - } - - private byte[] testTwoParty(String algName, int size, int privateValueSize, KeyPair aKeyPair, KeyPair bKeyPair) - throws Exception - { - // - // a side - // - KeyAgreement aKeyAgree = KeyAgreement.getInstance(algName, "BC"); - - checkKeySize(privateValueSize, aKeyPair); - - aKeyAgree.init(aKeyPair.getPrivate()); - - // - // b side - // - KeyAgreement bKeyAgree = KeyAgreement.getInstance(algName, "BC"); - - checkKeySize(privateValueSize, bKeyPair); - - bKeyAgree.init(bKeyPair.getPrivate()); - - // - // agreement - // - aKeyAgree.doPhase(bKeyPair.getPublic(), true); - bKeyAgree.doPhase(aKeyPair.getPublic(), true); - - byte[] aSecret = aKeyAgree.generateSecret(); - byte[] bSecret = bKeyAgree.generateSecret(); - - if (!Arrays.areEqual(aSecret, bSecret)) - { - fail(size + " bit 2-way test failed"); - } - - return aSecret; - } - - private void testExplicitWrapping( - int size, - int privateValueSize, - BigInteger g, - BigInteger p) - throws Exception - { - DHParameterSpec dhParams = new DHParameterSpec(p, g, privateValueSize); - - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH", "BC"); - - keyGen.initialize(dhParams); - - // - // a side - // - KeyPair aKeyPair = keyGen.generateKeyPair(); - - KeyAgreement aKeyAgree = KeyAgreement.getInstance("DH", "BC"); - - checkKeySize(privateValueSize, aKeyPair); - - aKeyAgree.init(aKeyPair.getPrivate()); - - // - // b side - // - KeyPair bKeyPair = keyGen.generateKeyPair(); - - KeyAgreement bKeyAgree = KeyAgreement.getInstance("DH", "BC"); - - checkKeySize(privateValueSize, bKeyPair); - - bKeyAgree.init(bKeyPair.getPrivate()); - - // - // agreement - // - aKeyAgree.doPhase(bKeyPair.getPublic(), true); - bKeyAgree.doPhase(aKeyPair.getPublic(), true); - - SecretKey k1 = aKeyAgree.generateSecret(PKCSObjectIdentifiers.id_alg_CMS3DESwrap.getId()); - SecretKey k2 = bKeyAgree.generateSecret(PKCSObjectIdentifiers.id_alg_CMS3DESwrap.getId()); - - // TODO Compare k1 and k2? - } - - private Object serializeDeserialize(Object o) - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(o); - oOut.close(); - - ObjectInputStream oIn = new ObjectInputStream(new ByteArrayInputStream(bOut.toByteArray())); - - return oIn.readObject(); - } - - private void checkKeySize(int privateValueSize, KeyPair aKeyPair) - { - if (privateValueSize != 0) - { - DHPrivateKey key = (DHPrivateKey)aKeyPair.getPrivate(); - - if (key.getX().bitLength() != privateValueSize) - { - fail("limited key check failed for key size " + privateValueSize); - } - } - } - - private void testRandom( - int size) - throws Exception - { - AlgorithmParameterGenerator a = AlgorithmParameterGenerator.getInstance("DH", "BC"); - a.init(size, new SecureRandom()); - AlgorithmParameters params = a.generateParameters(); - - byte[] encodeParams = params.getEncoded(); - - AlgorithmParameters a2 = AlgorithmParameters.getInstance("DH", "BC"); - a2.init(encodeParams); - - // a and a2 should be equivalent! - byte[] encodeParams_2 = a2.getEncoded(); - - if (!areEqual(encodeParams, encodeParams_2)) - { - fail("encode/decode parameters failed"); - } - - DHParameterSpec dhP = (DHParameterSpec)params.getParameterSpec(DHParameterSpec.class); - - testGP("DH", size, 0, dhP.getG(), dhP.getP()); - } - - private void testDefault( - int privateValueSize, - BigInteger g, - BigInteger p) - throws Exception - { - DHParameterSpec dhParams = new DHParameterSpec(p, g, privateValueSize); - String algName = "DH"; - int size = p.bitLength(); - - new BouncyCastleProvider().setParameter(ConfigurableProvider.DH_DEFAULT_PARAMS, dhParams); - - KeyPairGenerator keyGen = KeyPairGenerator.getInstance(algName, "BC"); - - keyGen.initialize(dhParams.getP().bitLength()); - - testTwoParty("DH", size, privateValueSize, keyGen); - - KeyPair aKeyPair = keyGen.generateKeyPair(); - - new BouncyCastleProvider().setParameter(ConfigurableProvider.DH_DEFAULT_PARAMS, null); - - // - // public key encoding test - // - byte[] pubEnc = aKeyPair.getPublic().getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance(algName, "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - DHPublicKey pubKey = (DHPublicKey)keyFac.generatePublic(pubX509); - DHParameterSpec spec = pubKey.getParams(); - - if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP())) - { - fail(size + " bit public key encoding/decoding test failed on parameters"); - } - - if (!((DHPublicKey)aKeyPair.getPublic()).getY().equals(pubKey.getY())) - { - fail(size + " bit public key encoding/decoding test failed on y value"); - } - - // - // public key serialisation test - // - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(aKeyPair.getPublic()); - - ByteArrayInputStream bIn = new ByteArrayInputStream(bOut.toByteArray()); - ObjectInputStream oIn = new ObjectInputStream(bIn); - - pubKey = (DHPublicKey)oIn.readObject(); - spec = pubKey.getParams(); - - if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP())) - { - fail(size + " bit public key serialisation test failed on parameters"); - } - - if (!((DHPublicKey)aKeyPair.getPublic()).getY().equals(pubKey.getY())) - { - fail(size + " bit public key serialisation test failed on y value"); - } - - // - // private key encoding test - // - byte[] privEnc = aKeyPair.getPrivate().getEncoded(); - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - DHPrivateKey privKey = (DHPrivateKey)keyFac.generatePrivate(privPKCS8); - - spec = privKey.getParams(); - - if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP())) - { - fail(size + " bit private key encoding/decoding test failed on parameters"); - } - - if (!((DHPrivateKey)aKeyPair.getPrivate()).getX().equals(privKey.getX())) - { - fail(size + " bit private key encoding/decoding test failed on y value"); - } - - // - // private key serialisation test - // - bOut = new ByteArrayOutputStream(); - oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(aKeyPair.getPrivate()); - - bIn = new ByteArrayInputStream(bOut.toByteArray()); - oIn = new ObjectInputStream(bIn); - - privKey = (DHPrivateKey)oIn.readObject(); - spec = privKey.getParams(); - - if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP())) - { - fail(size + " bit private key serialisation test failed on parameters"); - } - - if (!((DHPrivateKey)aKeyPair.getPrivate()).getX().equals(privKey.getX())) - { - fail(size + " bit private key serialisation test failed on y value"); - } - - // - // three party test - // - KeyPairGenerator aPairGen = KeyPairGenerator.getInstance(algName, "BC"); - aPairGen.initialize(spec); - KeyPair aPair = aPairGen.generateKeyPair(); - - KeyPairGenerator bPairGen = KeyPairGenerator.getInstance(algName, "BC"); - bPairGen.initialize(spec); - KeyPair bPair = bPairGen.generateKeyPair(); - - KeyPairGenerator cPairGen = KeyPairGenerator.getInstance(algName, "BC"); - cPairGen.initialize(spec); - KeyPair cPair = cPairGen.generateKeyPair(); - - KeyAgreement aKeyAgree = KeyAgreement.getInstance(algName, "BC"); - aKeyAgree.init(aPair.getPrivate()); - - KeyAgreement bKeyAgree = KeyAgreement.getInstance(algName, "BC"); - bKeyAgree.init(bPair.getPrivate()); - - KeyAgreement cKeyAgree = KeyAgreement.getInstance(algName, "BC"); - cKeyAgree.init(cPair.getPrivate()); - - Key ac = aKeyAgree.doPhase(cPair.getPublic(), false); - - Key ba = bKeyAgree.doPhase(aPair.getPublic(), false); - - Key cb = cKeyAgree.doPhase(bPair.getPublic(), false); - - aKeyAgree.doPhase(cb, true); - - bKeyAgree.doPhase(ac, true); - - cKeyAgree.doPhase(ba, true); - - BigInteger aShared = new BigInteger(aKeyAgree.generateSecret()); - BigInteger bShared = new BigInteger(bKeyAgree.generateSecret()); - BigInteger cShared = new BigInteger(cKeyAgree.generateSecret()); - - if (!aShared.equals(bShared)) - { - fail(size + " bit 3-way test failed (a and b differ)"); - } - - if (!cShared.equals(bShared)) - { - fail(size + " bit 3-way test failed (c and b differ)"); - } - } - - private void testECDH(String algorithm, String cipher, int keyLen) - throws Exception - { - ECNamedCurveParameterSpec parameterSpec = ECNamedCurveTable.getParameterSpec("secp521r1"); - KeyPairGenerator g = KeyPairGenerator.getInstance(algorithm, "BC"); - - g.initialize(parameterSpec); - - // - // a side - // - KeyPair aKeyPair = g.generateKeyPair(); - - KeyAgreement aKeyAgree = KeyAgreement.getInstance(algorithm, "BC"); - - aKeyAgree.init(aKeyPair.getPrivate()); - - // - // b side - // - KeyPair bKeyPair = g.generateKeyPair(); - - KeyAgreement bKeyAgree = KeyAgreement.getInstance(algorithm, "BC"); - - bKeyAgree.init(bKeyPair.getPrivate()); - - // - // agreement - // - aKeyAgree.doPhase(bKeyPair.getPublic(), true); - bKeyAgree.doPhase(aKeyPair.getPublic(), true); - - SecretKey k1 = aKeyAgree.generateSecret(cipher); - SecretKey k2 = bKeyAgree.generateSecret(cipher); - - if (!k1.equals(k2)) - { - fail(algorithm + " 2-way test failed"); - } - - if (k1.getEncoded().length != keyLen / 8) - { - fail("key for " + cipher + " the wrong size expected " + keyLen / 8 + " got " + k1.getEncoded().length); - } - } - - private void testECDH(String algorithm) - throws Exception - { - KeyPairGenerator g = KeyPairGenerator.getInstance(algorithm, "BC"); - - EllipticCurve curve = new EllipticCurve( - new ECFieldFp(new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839")), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - ECPointUtil.decodePoint(curve, Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307"), // n - 1); // h - - g.initialize(ecSpec, new SecureRandom()); - - // - // a side - // - KeyPair aKeyPair = g.generateKeyPair(); - - KeyAgreement aKeyAgree = KeyAgreement.getInstance(algorithm, "BC"); - - aKeyAgree.init(aKeyPair.getPrivate()); - - // - // b side - // - KeyPair bKeyPair = g.generateKeyPair(); - - KeyAgreement bKeyAgree = KeyAgreement.getInstance(algorithm, "BC"); - - bKeyAgree.init(bKeyPair.getPrivate()); - - // - // agreement - // - aKeyAgree.doPhase(bKeyPair.getPublic(), true); - bKeyAgree.doPhase(aKeyPair.getPublic(), true); - - BigInteger k1 = new BigInteger(aKeyAgree.generateSecret()); - BigInteger k2 = new BigInteger(bKeyAgree.generateSecret()); - - if (!k1.equals(k2)) - { - fail(algorithm + " 2-way test failed"); - } - - // - // public key encoding test - // - byte[] pubEnc = aKeyPair.getPublic().getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance(algorithm, "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - ECPublicKey pubKey = (ECPublicKey)keyFac.generatePublic(pubX509); - - if (!pubKey.getW().equals(((ECPublicKey)aKeyPair.getPublic()).getW())) - { - System.out.println(" expected " + pubKey.getW().getAffineX() + " got " + ((ECPublicKey)aKeyPair.getPublic()).getW().getAffineX()); - System.out.println(" expected " + pubKey.getW().getAffineY() + " got " + ((ECPublicKey)aKeyPair.getPublic()).getW().getAffineY()); - fail(algorithm + " public key encoding (W test) failed"); - } - - if (!pubKey.getParams().getGenerator().equals(((ECPublicKey)aKeyPair.getPublic()).getParams().getGenerator())) - { - fail(algorithm + " public key encoding (G test) failed"); - } - - // - // private key encoding test - // - byte[] privEnc = aKeyPair.getPrivate().getEncoded(); - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - ECPrivateKey privKey = (ECPrivateKey)keyFac.generatePrivate(privPKCS8); - - if (!privKey.getS().equals(((ECPrivateKey)aKeyPair.getPrivate()).getS())) - { - fail(algorithm + " private key encoding (S test) failed"); - } - - if (!privKey.getParams().getGenerator().equals(((ECPrivateKey)aKeyPair.getPrivate()).getParams().getGenerator())) - { - fail(algorithm + " private key encoding (G test) failed"); - } - } - - private void testExceptions() - { - try - { - KeyAgreement aKeyAgree = KeyAgreement.getInstance("DH", "BC"); - - aKeyAgree.generateSecret("DES"); - } - catch (IllegalStateException e) - { - // okay - } - catch (Exception e) - { - fail("Unexpected exception: " + e, e); - } - } - - private void testDESAndDESede(BigInteger g, BigInteger p) - throws Exception - { - DHParameterSpec dhParams = new DHParameterSpec(p, g, 256); - - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH", "BC"); - - keyGen.initialize(dhParams); - - KeyPair kp = keyGen.generateKeyPair(); - - KeyAgreement keyAgreement = KeyAgreement.getInstance("DH", "BC"); - - keyAgreement.init(kp.getPrivate()); - keyAgreement.doPhase(kp.getPublic(), true); - - SecretKey key = keyAgreement.generateSecret("DES"); - - if (key.getEncoded().length != 8) - { - fail("DES length wrong"); - } - - if (!DESKeySpec.isParityAdjusted(key.getEncoded(), 0)) - { - fail("DES parity wrong"); - } - - key = keyAgreement.generateSecret("DESEDE"); - - if (key.getEncoded().length != 24) - { - fail("DESEDE length wrong"); - } - - if (!DESedeKeySpec.isParityAdjusted(key.getEncoded(), 0)) - { - fail("DESEDE parity wrong"); - } - - key = keyAgreement.generateSecret("Blowfish"); - - if (key.getEncoded().length != 16) - { - fail("Blowfish length wrong"); - } - } - - private void testInitialise() - throws Exception - { - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH", "BC"); - - keyGen.initialize(512); - - keyGen.generateKeyPair(); - - testTwoParty("DH", 512, 0, keyGen); - } - - private void testSmallSecret() - throws Exception - { - BigInteger p = new BigInteger("ff3b512a4cc0961fa625d6cbd9642c377ece46b8dbc3146a98e0567f944034b5e3a1406edb179a77cd2539bdb74dc819f0a74d486606e26e578ff52c5242a5ff", 16); - BigInteger g = new BigInteger("58a66667431136e99d86de8199eb650a21afc9de3dd4ef9da6dfe89c866e928698952d95e68b418becef26f23211572eebfcbf328809bdaf02bba3d24c74f8c0", 16); - - DHPrivateKeySpec aPrivSpec = new DHPrivateKeySpec( - new BigInteger("30a6ea4e2240a42867ad98bd3adbfd5b81aba48bd930f20a595983d807566f7cba4e766951efef2c6c0c1be3823f63d66e12c2a091d5ff3bbeb1ea6e335d072d", 16), p, g); - DHPublicKeySpec aPubSpec = new DHPublicKeySpec( - new BigInteger("694dfea1bfc8897e2fcbfd88033ab34f4581892d7d5cc362dc056e3d43955accda12222bd651ca31c85f008a05dea914de68828dfd83a54a340fa84f3bbe6caf", 16), p, g); - - DHPrivateKeySpec bPrivSpec = new DHPrivateKeySpec( - new BigInteger("775b1e7e162190700e2212dd8e4aaacf8a2af92c9c108b81d5bf9a14548f494eaa86a6c4844b9512eb3e3f2f22ffec44c795c813edfea13f075b99bbdebb34bd", 16), p, g); - - DHPublicKeySpec bPubSpec = new DHPublicKeySpec( - new BigInteger("d8ddd4ff9246635eadbfa0bc2ef06d98a329b6e8cd2d1435d7b4921467570e697c9a9d3c172c684626a9d2b6b2fa0fc725d5b91f9a9625b717a4169bc714b064", 16), p, g); - - KeyFactory kFact = KeyFactory.getInstance("DH", "BC"); - - byte[] secret = testTwoParty("DH", 512, 0, new KeyPair(kFact.generatePublic(aPubSpec), kFact.generatePrivate(aPrivSpec)), new KeyPair(kFact.generatePublic(bPubSpec), kFact.generatePrivate(bPrivSpec))); - - if (secret.length != ((p.bitLength() + 7) / 8)) - { - fail("short secret wrong length"); - } - - if (!Arrays.areEqual(Hex.decode("00340d3309ddc86e99e2f0be4fc212837bfb5c59336b09b9e1aeb1884b72c8b485b56723d0bf1c1d37fc89a292fc1cface9125106f1df15f55f22e4f77c5879b"), secret)) - { - fail("short secret mismatch"); - } - } - - private void testEnc() - throws Exception - { - KeyFactory kFact = KeyFactory.getInstance("DH", "BC"); - - Key k = kFact.generatePrivate(new PKCS8EncodedKeySpec(samplePrivEnc)); - - if (!Arrays.areEqual(samplePrivEnc, k.getEncoded())) - { - fail("private key re-encode failed"); - } - - k = kFact.generatePublic(new X509EncodedKeySpec(samplePubEnc)); - - if (!Arrays.areEqual(samplePubEnc, k.getEncoded())) - { - fail("public key re-encode failed"); - } - - k = kFact.generatePublic(new X509EncodedKeySpec(oldPubEnc)); - - if (!Arrays.areEqual(oldPubEnc, k.getEncoded())) - { - fail("old public key re-encode failed"); - } - - k = kFact.generatePublic(new X509EncodedKeySpec(oldFullParams)); - - if (!Arrays.areEqual(oldFullParams, k.getEncoded())) - { - fail("old full public key re-encode failed"); - } - } - - private void testConfig() - { - ConfigurableProvider prov = new BouncyCastleProvider(); - - DHParameterSpec dhSpec512 = new DHParameterSpec( - new BigInteger("fca682ce8e12caba26efccf7110e526db078b05edecbcd1eb4a208f3ae1617ae01f35b91a47e6df63413c5e12ed0899bcd132acd50d99151bdc43ee737592e17", 16), - new BigInteger("678471b27a9cf44ee91a49c5147db1a9aaf244f05a434d6486931d2d14271b9e35030b71fd73da179069b32e2935630e1c2062354d0da20a6c416e50be794ca4", 16), - 384); - - DHParameterSpec dhSpec768 = new DHParameterSpec( - new BigInteger("e9e642599d355f37c97ffd3567120b8e25c9cd43e927b3a9670fbec5d890141922d2c3b3ad2480093799869d1e846aab49fab0ad26d2ce6a22219d470bce7d777d4a21fbe9c270b57f607002f3cef8393694cf45ee3688c11a8c56ab127a3daf", 16), - new BigInteger("30470ad5a005fb14ce2d9dcd87e38bc7d1b1c5facbaecbe95f190aa7a31d23c4dbbcbe06174544401a5b2c020965d8c2bd2171d3668445771f74ba084d2029d83c1c158547f3a9f1a2715be23d51ae4d3e5a1f6a7064f316933a346d3f529252", 16), - 384); - - DHParameterSpec dhSpec1024 = new DHParameterSpec( - new BigInteger("f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d0782675159578ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea8519089a883dfe15ae59f06928b665e807b552564014c3bfecf492a", 16), - new BigInteger("fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d402251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7", 16), - 512); - - prov.setParameter(ConfigurableProvider.DH_DEFAULT_PARAMS, dhSpec512); - - if (!dhSpec512.equals(BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(512))) - { - fail("config mismatch"); - } - - if (BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(768) != null) - { - fail("config found when none expected"); - } - - prov.setParameter(ConfigurableProvider.DH_DEFAULT_PARAMS, new DHParameterSpec[] { dhSpec512, dhSpec768, dhSpec1024 }); - - if (!dhSpec512.equals(BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(512))) - { - fail("512 config mismatch"); - } - - if (!dhSpec768.equals(BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(768))) - { - fail("768 config mismatch"); - } - - if (!dhSpec1024.equals(BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(1024))) - { - fail("1024 config mismatch"); - } - - prov.setParameter(ConfigurableProvider.DH_DEFAULT_PARAMS, null); - - if (BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(512) != null) - { - fail("config found for 512 when none expected"); - } - - if (BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(768) != null) - { - fail("config found for 768 when none expected"); - } - - prov.setParameter(ConfigurableProvider.THREAD_LOCAL_DH_DEFAULT_PARAMS, dhSpec512); - - if (!dhSpec512.equals(BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(512))) - { - fail("config mismatch"); - } - - if (BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(768) != null) - { - fail("config found when none expected"); - } - - prov.setParameter(ConfigurableProvider.THREAD_LOCAL_DH_DEFAULT_PARAMS, new DHParameterSpec[] { dhSpec512, dhSpec768, dhSpec1024 }); - - if (!dhSpec512.equals(BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(512))) - { - fail("512 config mismatch"); - } - - if (!dhSpec768.equals(BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(768))) - { - fail("768 config mismatch"); - } - - if (!dhSpec1024.equals(BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(1024))) - { - fail("1024 config mismatch"); - } - - prov.setParameter(ConfigurableProvider.THREAD_LOCAL_DH_DEFAULT_PARAMS, null); - - if (BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(512) != null) - { - fail("config found for 512 when none expected"); - } - - if (BouncyCastleProvider.CONFIGURATION.getDHDefaultParameters(768) != null) - { - fail("config found for 768 when none expected"); - } - } - - public void performTest() - throws Exception - { - testDefault(64, g512, p512); - - testEnc(); - testGP("DH", 512, 0, g512, p512); - testGP("DiffieHellman", 768, 0, g768, p768); - testGP("DIFFIEHELLMAN", 1024, 0, g1024, p1024); - testGP("DH", 512, 64, g512, p512); - testGP("DiffieHellman", 768, 128, g768, p768); - testGP("DIFFIEHELLMAN", 1024, 256, g1024, p1024); - testExplicitWrapping(512, 0, g512, p512); - testRandom(256); - - testECDH("ECDH"); - testECDH("ECDHC"); - testECDH("ECDH", "AES", 256); - testECDH("ECDH", "DESEDE", 192); - testECDH("ECDH", "DES", 64); - testECDH("ECDHwithSHA1KDF", "AES", 256); - testECDH("ECDHwithSHA1KDF", "DESEDE", 192); - - testExceptions(); - testDESAndDESede(g768, p768); - testInitialise(); - testSmallSecret(); - testConfig(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new DHTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/DSATest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/DSATest.java deleted file mode 100644 index 3e2ebd41..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/DSATest.java +++ /dev/null @@ -1,1016 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.math.BigInteger; -import java.security.AlgorithmParameterGenerator; -import java.security.AlgorithmParameters; -import java.security.InvalidKeyException; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.SignatureException; -import java.security.interfaces.DSAPrivateKey; -import java.security.interfaces.DSAPublicKey; -import java.security.spec.DSAParameterSpec; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.ASN1Integer; -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.ASN1Primitive; -import org.bouncycastle.asn1.ASN1Sequence; -import org.bouncycastle.asn1.eac.EACObjectIdentifiers; -import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; -import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; -import org.bouncycastle.crypto.params.DSAParameters; -import org.bouncycastle.crypto.params.DSAPublicKeyParameters; -import org.bouncycastle.crypto.signers.DSASigner; -import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECNamedCurveGenParameterSpec; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.jce.spec.ECPrivateKeySpec; -import org.bouncycastle.jce.spec.ECPublicKeySpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.BigIntegers; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.FixedSecureRandom; -import org.bouncycastle.util.test.SimpleTest; - -public class DSATest - extends SimpleTest -{ - byte[] k1 = Hex.decode("d5014e4b60ef2ba8b6211b4062ba3224e0427dd3"); - byte[] k2 = Hex.decode("345e8d05c075c3a508df729a1685690e68fcfb8c8117847e89063bca1f85d968fd281540b6e13bd1af989a1fbf17e06462bf511f9d0b140fb48ac1b1baa5bded"); - - SecureRandom random = new FixedSecureRandom(new byte[][] { k1, k2 }); - - private void testCompat() - throws Exception - { - if (Security.getProvider("SUN") == null) - { - return; - } - - Signature s = Signature.getInstance("DSA", "SUN"); - KeyPairGenerator g = KeyPairGenerator.getInstance("DSA", "SUN"); - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - - g.initialize(512, new SecureRandom()); - - KeyPair p = g.generateKeyPair(); - - PrivateKey sKey = p.getPrivate(); - PublicKey vKey = p.getPublic(); - - // - // sign SUN - verify with BC - // - s.initSign(sKey); - - s.update(data); - - byte[] sigBytes = s.sign(); - - s = Signature.getInstance("DSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("SUN -> BC verification failed"); - } - - // - // sign BC - verify with SUN - // - - s.initSign(sKey); - - s.update(data); - - sigBytes = s.sign(); - - s = Signature.getInstance("DSA", "SUN"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("BC -> SUN verification failed"); - } - - // - // key encoding test - BC decoding Sun keys - // - KeyFactory f = KeyFactory.getInstance("DSA", "BC"); - X509EncodedKeySpec x509s = new X509EncodedKeySpec(vKey.getEncoded()); - - DSAPublicKey k1 = (DSAPublicKey)f.generatePublic(x509s); - - checkPublic(k1, vKey); - - PKCS8EncodedKeySpec pkcs8 = new PKCS8EncodedKeySpec(sKey.getEncoded()); - - DSAPrivateKey k2 = (DSAPrivateKey)f.generatePrivate(pkcs8); - - checkPrivateKey(k2, sKey); - - // - // key decoding test - SUN decoding BC keys - // - f = KeyFactory.getInstance("DSA", "SUN"); - x509s = new X509EncodedKeySpec(k1.getEncoded()); - - vKey = (DSAPublicKey)f.generatePublic(x509s); - - checkPublic(k1, vKey); - - pkcs8 = new PKCS8EncodedKeySpec(k2.getEncoded()); - sKey = f.generatePrivate(pkcs8); - - checkPrivateKey(k2, sKey); - } - - private void testNONEwithDSA() - throws Exception - { - byte[] dummySha1 = Hex.decode("01020304050607080910111213141516"); - - KeyPairGenerator kpGen = KeyPairGenerator.getInstance("DSA", "BC"); - - kpGen.initialize(512); - - KeyPair kp = kpGen.generateKeyPair(); - - Signature sig = Signature.getInstance("NONEwithDSA", "BC"); - - sig.initSign(kp.getPrivate()); - - sig.update(dummySha1); - - byte[] sigBytes = sig.sign(); - - sig.initVerify(kp.getPublic()); - - sig.update(dummySha1); - - sig.verify(sigBytes); - - // reset test - - sig.update(dummySha1); - - if (!sig.verify(sigBytes)) - { - fail("NONEwithDSA failed to reset"); - } - - // lightweight test - DSAPublicKey key = (DSAPublicKey)kp.getPublic(); - DSAParameters params = new DSAParameters(key.getParams().getP(), key.getParams().getQ(), key.getParams().getG()); - DSAPublicKeyParameters keyParams = new DSAPublicKeyParameters(key.getY(), params); - DSASigner signer = new DSASigner(); - ASN1Sequence derSig = ASN1Sequence.getInstance(ASN1Primitive.fromByteArray(sigBytes)); - - signer.init(false, keyParams); - - if (!signer.verifySignature(dummySha1, ASN1Integer.getInstance(derSig.getObjectAt(0)).getValue(), ASN1Integer.getInstance(derSig.getObjectAt(1)).getValue())) - { - fail("NONEwithDSA not really NONE!"); - } - } - - private void checkPublic(DSAPublicKey k1, PublicKey vKey) - { - if (!k1.getY().equals(((DSAPublicKey)vKey).getY())) - { - fail("public number not decoded properly"); - } - - if (!k1.getParams().getG().equals(((DSAPublicKey)vKey).getParams().getG())) - { - fail("public generator not decoded properly"); - } - - if (!k1.getParams().getP().equals(((DSAPublicKey)vKey).getParams().getP())) - { - fail("public p value not decoded properly"); - } - - if (!k1.getParams().getQ().equals(((DSAPublicKey)vKey).getParams().getQ())) - { - fail("public q value not decoded properly"); - } - } - - private void checkPrivateKey(DSAPrivateKey k2, PrivateKey sKey) - { - if (!k2.getX().equals(((DSAPrivateKey)sKey).getX())) - { - fail("private number not decoded properly"); - } - - if (!k2.getParams().getG().equals(((DSAPrivateKey)sKey).getParams().getG())) - { - fail("private generator not decoded properly"); - } - - if (!k2.getParams().getP().equals(((DSAPrivateKey)sKey).getParams().getP())) - { - fail("private p value not decoded properly"); - } - - if (!k2.getParams().getQ().equals(((DSAPrivateKey)sKey).getParams().getQ())) - { - fail("private q value not decoded properly"); - } - } - - private Object serializeDeserialize(Object o) - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(o); - oOut.close(); - - ObjectInputStream oIn = new ObjectInputStream(new ByteArrayInputStream(bOut.toByteArray())); - - return oIn.readObject(); - } - - /** - * X9.62 - 1998,<br> - * J.3.2, Page 155, ECDSA over the field Fp<br> - * an example with 239 bit prime - */ - private void testECDSA239bitPrime() - throws Exception - { - BigInteger r = new BigInteger("308636143175167811492622547300668018854959378758531778147462058306432176"); - BigInteger s = new BigInteger("323813553209797357708078776831250505931891051755007842781978505179448783"); - - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("700000017569056646655505781757157107570501575775705779575555657156756655")); - - SecureRandom k = new FixedSecureRandom(kData); - - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec spec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - - ECPrivateKeySpec priKey = new ECPrivateKeySpec( - new BigInteger("876300101507107567501066130761671078357010671067781776716671676178726717"), // d - spec); - - ECPublicKeySpec pubKey = new ECPublicKeySpec( - curve.decodePoint(Hex.decode("025b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c70")), // Q - spec); - - Signature sgr = Signature.getInstance("ECDSA", "BC"); - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - PrivateKey sKey = f.generatePrivate(priKey); - PublicKey vKey = f.generatePublic(pubKey); - - sgr.initSign(sKey, k); - - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail("239 Bit EC verification failed"); - } - - BigInteger[] sig = derDecode(sigBytes); - - if (!r.equals(sig[0])) - { - fail("r component wrong." + System.getProperty("line.separator") - + " expecting: " + r + System.getProperty("line.separator") - + " got : " + sig[0]); - } - - if (!s.equals(sig[1])) - { - fail("s component wrong." + System.getProperty("line.separator") - + " expecting: " + s + System.getProperty("line.separator") - + " got : " + sig[1]); - } - } - - private void testNONEwithECDSA239bitPrime() - throws Exception - { - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec spec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - - ECPrivateKeySpec priKey = new ECPrivateKeySpec( - new BigInteger("876300101507107567501066130761671078357010671067781776716671676178726717"), // d - spec); - - ECPublicKeySpec pubKey = new ECPublicKeySpec( - curve.decodePoint(Hex.decode("025b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c70")), // Q - spec); - - Signature sgr = Signature.getInstance("NONEwithECDSA", "BC"); - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - PrivateKey sKey = f.generatePrivate(priKey); - PublicKey vKey = f.generatePublic(pubKey); - - byte[] message = "abc".getBytes(); - byte[] sig = Hex.decode("3040021e2cb7f36803ebb9c427c58d8265f11fc5084747133078fc279de874fbecb0021e64cb19604be06c57e761b3de5518f71de0f6e0cd2df677cec8a6ffcb690d"); - - checkMessage(sgr, sKey, vKey, message, sig); - - message = "abcdefghijklmnopqrstuvwxyz".getBytes(); - sig = Hex.decode("3040021e2cb7f36803ebb9c427c58d8265f11fc5084747133078fc279de874fbecb0021e43fd65b3363d76aabef8630572257dbb67c82818ad9fad31256539b1b02c"); - - checkMessage(sgr, sKey, vKey, message, sig); - - message = "a very very long message gauranteed to cause an overflow".getBytes(); - sig = Hex.decode("3040021e2cb7f36803ebb9c427c58d8265f11fc5084747133078fc279de874fbecb0021e7d5be84b22937a1691859a3c6fe45ed30b108574431d01b34025825ec17a"); - - checkMessage(sgr, sKey, vKey, message, sig); - } - - private void checkMessage(Signature sgr, PrivateKey sKey, PublicKey vKey, byte[] message, byte[] sig) - throws InvalidKeyException, SignatureException - { - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("700000017569056646655505781757157107570501575775705779575555657156756655")); - - SecureRandom k = new FixedSecureRandom(kData); - - sgr.initSign(sKey, k); - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - if (!Arrays.areEqual(sigBytes, sig)) - { - fail(new String(message) + " signature incorrect"); - } - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail(new String(message) + " verification failed"); - } - } - - /** - * X9.62 - 1998,<br> - * J.2.1, Page 100, ECDSA over the field F2m<br> - * an example with 191 bit binary field - */ - private void testECDSA239bitBinary() - throws Exception - { - BigInteger r = new BigInteger("21596333210419611985018340039034612628818151486841789642455876922391552"); - BigInteger s = new BigInteger("197030374000731686738334997654997227052849804072198819102649413465737174"); - - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("171278725565216523967285789236956265265265235675811949404040041670216363")); - - SecureRandom k = new FixedSecureRandom(kData); - - ECCurve curve = new ECCurve.F2m( - 239, // m - 36, // k - new BigInteger("32010857077C5431123A46B808906756F543423E8D27877578125778AC76", 16), // a - new BigInteger("790408F2EEDAF392B012EDEFB3392F30F4327C0CA3F31FC383C422AA8C16", 16)); // b - - ECParameterSpec params = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("0457927098FA932E7C0A96D3FD5B706EF7E5F5C156E16B7E7C86038552E91D61D8EE5077C33FECF6F1A16B268DE469C3C7744EA9A971649FC7A9616305")), // G - new BigInteger("220855883097298041197912187592864814557886993776713230936715041207411783"), // n - BigInteger.valueOf(4)); // h - - ECPrivateKeySpec priKeySpec = new ECPrivateKeySpec( - new BigInteger("145642755521911534651321230007534120304391871461646461466464667494947990"), // d - params); - - ECPublicKeySpec pubKeySpec = new ECPublicKeySpec( - curve.decodePoint(Hex.decode("045894609CCECF9A92533F630DE713A958E96C97CCB8F5ABB5A688A238DEED6DC2D9D0C94EBFB7D526BA6A61764175B99CB6011E2047F9F067293F57F5")), // Q - params); - - Signature sgr = Signature.getInstance("ECDSA", "BC"); - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - PrivateKey sKey = f.generatePrivate(priKeySpec); - PublicKey vKey = f.generatePublic(pubKeySpec); - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - sgr.initSign(sKey, k); - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail("239 Bit EC verification failed"); - } - - BigInteger[] sig = derDecode(sigBytes); - - if (!r.equals(sig[0])) - { - fail("r component wrong." + System.getProperty("line.separator") - + " expecting: " + r + System.getProperty("line.separator") - + " got : " + sig[0]); - } - - if (!s.equals(sig[1])) - { - fail("s component wrong." + System.getProperty("line.separator") - + " expecting: " + s + System.getProperty("line.separator") - + " got : " + sig[1]); - } - } - - private void testECDSA239bitBinary(String algorithm, ASN1ObjectIdentifier oid) - throws Exception - { - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("171278725565216523967285789236956265265265235675811949404040041670216363")); - - SecureRandom k = new FixedSecureRandom(kData); - - ECCurve curve = new ECCurve.F2m( - 239, // m - 36, // k - new BigInteger("32010857077C5431123A46B808906756F543423E8D27877578125778AC76", 16), // a - new BigInteger("790408F2EEDAF392B012EDEFB3392F30F4327C0CA3F31FC383C422AA8C16", 16)); // b - - ECParameterSpec params = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("0457927098FA932E7C0A96D3FD5B706EF7E5F5C156E16B7E7C86038552E91D61D8EE5077C33FECF6F1A16B268DE469C3C7744EA9A971649FC7A9616305")), // G - new BigInteger("220855883097298041197912187592864814557886993776713230936715041207411783"), // n - BigInteger.valueOf(4)); // h - - ECPrivateKeySpec priKeySpec = new ECPrivateKeySpec( - new BigInteger("145642755521911534651321230007534120304391871461646461466464667494947990"), // d - params); - - ECPublicKeySpec pubKeySpec = new ECPublicKeySpec( - curve.decodePoint(Hex.decode("045894609CCECF9A92533F630DE713A958E96C97CCB8F5ABB5A688A238DEED6DC2D9D0C94EBFB7D526BA6A61764175B99CB6011E2047F9F067293F57F5")), // Q - params); - - Signature sgr = Signature.getInstance(algorithm, "BC"); - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - PrivateKey sKey = f.generatePrivate(priKeySpec); - PublicKey vKey = f.generatePublic(pubKeySpec); - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - sgr.initSign(sKey, k); - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr = Signature.getInstance(oid.getId(), "BC"); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail("239 Bit EC RIPEMD160 verification failed"); - } - } - - private void testGeneration() - throws Exception - { - Signature s = Signature.getInstance("DSA", "BC"); - KeyPairGenerator g = KeyPairGenerator.getInstance("DSA", "BC"); - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - - - // test exception - // - try - { - g.initialize(513, new SecureRandom()); - - fail("illegal parameter 513 check failed."); - } - catch (IllegalArgumentException e) - { - // expected - } - - try - { - g.initialize(510, new SecureRandom()); - - fail("illegal parameter 510 check failed."); - } - catch (IllegalArgumentException e) - { - // expected - } - - try - { - g.initialize(1025, new SecureRandom()); - - fail("illegal parameter 1025 check failed."); - } - catch (IllegalArgumentException e) - { - // expected - } - - g.initialize(512, new SecureRandom()); - - KeyPair p = g.generateKeyPair(); - - PrivateKey sKey = p.getPrivate(); - PublicKey vKey = p.getPublic(); - - s.initSign(sKey); - - s.update(data); - - byte[] sigBytes = s.sign(); - - s = Signature.getInstance("DSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("DSA verification failed"); - } - - // - // key decoding test - serialisation test - // - - DSAPublicKey k1 = (DSAPublicKey)serializeDeserialize(vKey); - - checkPublic(k1, vKey); - - checkEquals(k1, vKey); - - DSAPrivateKey k2 = (DSAPrivateKey)serializeDeserialize(sKey); - - checkPrivateKey(k2, sKey); - - checkEquals(k2, sKey); - - if (!(k2 instanceof PKCS12BagAttributeCarrier)) - { - fail("private key not implementing PKCS12 attribute carrier"); - } - - // - // ECDSA Fp generation test - // - s = Signature.getInstance("ECDSA", "BC"); - g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - g.initialize(ecSpec, new SecureRandom()); - - p = g.generateKeyPair(); - - sKey = p.getPrivate(); - vKey = p.getPublic(); - - s.initSign(sKey); - - s.update(data); - - sigBytes = s.sign(); - - s = Signature.getInstance("ECDSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("ECDSA verification failed"); - } - - // - // key decoding test - serialisation test - // - - PublicKey eck1 = (PublicKey)serializeDeserialize(vKey); - - checkEquals(eck1, vKey); - - PrivateKey eck2 = (PrivateKey)serializeDeserialize(sKey); - - checkEquals(eck2, sKey); - - // Named curve parameter - g.initialize(new ECNamedCurveGenParameterSpec("P-256"), new SecureRandom()); - - p = g.generateKeyPair(); - - sKey = p.getPrivate(); - vKey = p.getPublic(); - - s.initSign(sKey); - - s.update(data); - - sigBytes = s.sign(); - - s = Signature.getInstance("ECDSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("ECDSA verification failed"); - } - - // - // key decoding test - serialisation test - // - - eck1 = (PublicKey)serializeDeserialize(vKey); - - checkEquals(eck1, vKey); - - eck2 = (PrivateKey)serializeDeserialize(sKey); - - checkEquals(eck2, sKey); - - // - // ECDSA F2m generation test - // - s = Signature.getInstance("ECDSA", "BC"); - g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - curve = new ECCurve.F2m( - 239, // m - 36, // k - new BigInteger("32010857077C5431123A46B808906756F543423E8D27877578125778AC76", 16), // a - new BigInteger("790408F2EEDAF392B012EDEFB3392F30F4327C0CA3F31FC383C422AA8C16", 16)); // b - - ecSpec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("0457927098FA932E7C0A96D3FD5B706EF7E5F5C156E16B7E7C86038552E91D61D8EE5077C33FECF6F1A16B268DE469C3C7744EA9A971649FC7A9616305")), // G - new BigInteger("220855883097298041197912187592864814557886993776713230936715041207411783"), // n - BigInteger.valueOf(4)); // h - - g.initialize(ecSpec, new SecureRandom()); - - p = g.generateKeyPair(); - - sKey = p.getPrivate(); - vKey = p.getPublic(); - - s.initSign(sKey); - - s.update(data); - - sigBytes = s.sign(); - - s = Signature.getInstance("ECDSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("ECDSA verification failed"); - } - - // - // key decoding test - serialisation test - // - - eck1 = (PublicKey)serializeDeserialize(vKey); - - checkEquals(eck1, vKey); - - eck2 = (PrivateKey)serializeDeserialize(sKey); - - checkEquals(eck2, sKey); - - if (!(eck2 instanceof PKCS12BagAttributeCarrier)) - { - fail("private key not implementing PKCS12 attribute carrier"); - } - } - - private void checkEquals(Object o1, Object o2) - { - if (!o1.equals(o2)) - { - fail("comparison test failed"); - } - - if (o1.hashCode() != o2.hashCode()) - { - fail("hashCode test failed"); - } - } - - private void testParameters() - throws Exception - { - AlgorithmParameterGenerator a = AlgorithmParameterGenerator.getInstance("DSA", "BC"); - a.init(512, random); - AlgorithmParameters params = a.generateParameters(); - - byte[] encodeParams = params.getEncoded(); - - AlgorithmParameters a2 = AlgorithmParameters.getInstance("DSA", "BC"); - a2.init(encodeParams); - - // a and a2 should be equivalent! - byte[] encodeParams_2 = a2.getEncoded(); - - if (!areEqual(encodeParams, encodeParams_2)) - { - fail("encode/decode parameters failed"); - } - - DSAParameterSpec dsaP = (DSAParameterSpec)params.getParameterSpec(DSAParameterSpec.class); - - KeyPairGenerator g = KeyPairGenerator.getInstance("DSA", "BC"); - g.initialize(dsaP, new SecureRandom()); - KeyPair p = g.generateKeyPair(); - - PrivateKey sKey = p.getPrivate(); - PublicKey vKey = p.getPublic(); - - Signature s = Signature.getInstance("DSA", "BC"); - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - - s.initSign(sKey); - - s.update(data); - - byte[] sigBytes = s.sign(); - - s = Signature.getInstance("DSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("DSA verification failed"); - } - } - - private void testDSA2Parameters() - throws Exception - { - byte[] seed = Hex.decode("4783081972865EA95D43318AB2EAF9C61A2FC7BBF1B772A09017BDF5A58F4FF0"); - - AlgorithmParameterGenerator a = AlgorithmParameterGenerator.getInstance("DSA", "BC"); - a.init(2048, new DSATestSecureRandom(seed)); - AlgorithmParameters params = a.generateParameters(); - - DSAParameterSpec dsaP = (DSAParameterSpec)params.getParameterSpec(DSAParameterSpec.class); - - if (!dsaP.getQ().equals(new BigInteger("C24ED361870B61E0D367F008F99F8A1F75525889C89DB1B673C45AF5867CB467", 16))) - { - fail("Q incorrect"); - } - - if (!dsaP.getP().equals(new BigInteger( - "F56C2A7D366E3EBDEAA1891FD2A0D099" + - "436438A673FED4D75F594959CFFEBCA7BE0FC72E4FE67D91" + - "D801CBA0693AC4ED9E411B41D19E2FD1699C4390AD27D94C" + - "69C0B143F1DC88932CFE2310C886412047BD9B1C7A67F8A2" + - "5909132627F51A0C866877E672E555342BDF9355347DBD43" + - "B47156B2C20BAD9D2B071BC2FDCF9757F75C168C5D9FC431" + - "31BE162A0756D1BDEC2CA0EB0E3B018A8B38D3EF2487782A" + - "EB9FBF99D8B30499C55E4F61E5C7DCEE2A2BB55BD7F75FCD" + - "F00E48F2E8356BDB59D86114028F67B8E07B127744778AFF" + - "1CF1399A4D679D92FDE7D941C5C85C5D7BFF91BA69F9489D" + - "531D1EBFA727CFDA651390F8021719FA9F7216CEB177BD75", 16))) - { - fail("P incorrect"); - } - - if (!dsaP.getG().equals(new BigInteger( - "8DC6CC814CAE4A1C05A3E186A6FE27EA" + - "BA8CDB133FDCE14A963A92E809790CBA096EAA26140550C1" + - "29FA2B98C16E84236AA33BF919CD6F587E048C52666576DB" + - "6E925C6CBE9B9EC5C16020F9A44C9F1C8F7A8E611C1F6EC2" + - "513EA6AA0B8D0F72FED73CA37DF240DB57BBB27431D61869" + - "7B9E771B0B301D5DF05955425061A30DC6D33BB6D2A32BD0" + - "A75A0A71D2184F506372ABF84A56AEEEA8EB693BF29A6403" + - "45FA1298A16E85421B2208D00068A5A42915F82CF0B858C8" + - "FA39D43D704B6927E0B2F916304E86FB6A1B487F07D8139E" + - "428BB096C6D67A76EC0B8D4EF274B8A2CF556D279AD267CC" + - "EF5AF477AFED029F485B5597739F5D0240F67C2D948A6279", 16))) - { - fail("G incorrect"); - } - - KeyPairGenerator g = KeyPairGenerator.getInstance("DSA", "BC"); - g.initialize(dsaP, new FixedSecureRandom(Hex.decode("0CAF2EF547EC49C4F3A6FE6DF4223A174D01F2C115D49A6F73437C29A2A8458C"))); - KeyPair p = g.generateKeyPair(); - - DSAPrivateKey sKey = (DSAPrivateKey)p.getPrivate(); - DSAPublicKey vKey = (DSAPublicKey)p.getPublic(); - - if (!vKey.getY().equals(new BigInteger( - "2828003D7C747199143C370FDD07A286" + - "1524514ACC57F63F80C38C2087C6B795B62DE1C224BF8D1D" + - "1424E60CE3F5AE3F76C754A2464AF292286D873A7A30B7EA" + - "CBBC75AAFDE7191D9157598CDB0B60E0C5AA3F6EBE425500" + - "C611957DBF5ED35490714A42811FDCDEB19AF2AB30BEADFF" + - "2907931CEE7F3B55532CFFAEB371F84F01347630EB227A41" + - "9B1F3F558BC8A509D64A765D8987D493B007C4412C297CAF" + - "41566E26FAEE475137EC781A0DC088A26C8804A98C23140E" + - "7C936281864B99571EE95C416AA38CEEBB41FDBFF1EB1D1D" + - "C97B63CE1355257627C8B0FD840DDB20ED35BE92F08C49AE" + - "A5613957D7E5C7A6D5A5834B4CB069E0831753ECF65BA02B", 16))) - { - fail("Y value incorrect"); - } - - if (!sKey.getX().equals( - new BigInteger("0CAF2EF547EC49C4F3A6FE6DF4223A174D01F2C115D49A6F73437C29A2A8458C", 16))) - { - fail("X value incorrect"); - } - - byte[] encodeParams = params.getEncoded(); - - AlgorithmParameters a2 = AlgorithmParameters.getInstance("DSA", "BC"); - a2.init(encodeParams); - - // a and a2 should be equivalent! - byte[] encodeParams_2 = a2.getEncoded(); - - if (!areEqual(encodeParams, encodeParams_2)) - { - fail("encode/decode parameters failed"); - } - - Signature s = Signature.getInstance("DSA", "BC"); - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - - s.initSign(sKey); - - s.update(data); - - byte[] sigBytes = s.sign(); - - s = Signature.getInstance("DSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("DSA verification failed"); - } - } - - public void performTest() - throws Exception - { - testCompat(); - testNONEwithDSA(); - testECDSA239bitPrime(); - testNONEwithECDSA239bitPrime(); - testECDSA239bitBinary(); - testECDSA239bitBinary("RIPEMD160withECDSA", TeleTrusTObjectIdentifiers.ecSignWithRipemd160); - testECDSA239bitBinary("SHA1withECDSA", TeleTrusTObjectIdentifiers.ecSignWithSha1); - testECDSA239bitBinary("SHA224withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA224); - testECDSA239bitBinary("SHA256withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA256); - testECDSA239bitBinary("SHA384withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA384); - testECDSA239bitBinary("SHA512withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA512); - testECDSA239bitBinary("SHA1withCVC-ECDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_1); - testECDSA239bitBinary("SHA224withCVC-ECDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_224); - testECDSA239bitBinary("SHA256withCVC-ECDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_256); - testECDSA239bitBinary("SHA384withCVC-ECDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_384); - testECDSA239bitBinary("SHA512withCVC-ECDSA", EACObjectIdentifiers.id_TA_ECDSA_SHA_512); - - testGeneration(); - testParameters(); - testDSA2Parameters(); - } - - protected BigInteger[] derDecode( - byte[] encoding) - throws IOException - { - ByteArrayInputStream bIn = new ByteArrayInputStream(encoding); - ASN1InputStream aIn = new ASN1InputStream(bIn); - ASN1Sequence s = (ASN1Sequence)aIn.readObject(); - - BigInteger[] sig = new BigInteger[2]; - - sig[0] = ((ASN1Integer)s.getObjectAt(0)).getValue(); - sig[1] = ((ASN1Integer)s.getObjectAt(1)).getValue(); - - return sig; - } - - public String getName() - { - return "DSA/ECDSA"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new DSATest()); - } - - private class DSATestSecureRandom - extends FixedSecureRandom - { - private boolean first = true; - - public DSATestSecureRandom(byte[] value) - { - super(value); - } - - public void nextBytes(byte[] bytes) - { - if (first) - { - super.nextBytes(bytes); - first = false; - } - else - { - bytes[bytes.length - 1] = 2; - } - } - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/DSTU4145Test.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/DSTU4145Test.java deleted file mode 100644 index 5d29841c..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/DSTU4145Test.java +++ /dev/null @@ -1,196 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.IOException; -import java.math.BigInteger; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.interfaces.ECPrivateKey; -import java.security.interfaces.ECPublicKey; - -import org.bouncycastle.asn1.ASN1OctetString; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.jce.spec.ECPrivateKeySpec; -import org.bouncycastle.jce.spec.ECPublicKeySpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.FixedSecureRandom; -import org.bouncycastle.util.test.SimpleTest; - -public class DSTU4145Test - extends SimpleTest -{ - - public String getName() - { - return "DSTU4145"; - } - - public void performTest() - throws Exception - { - - DSTU4145Test(); - generationTest(); - //parametersTest(); - - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - runTest(new DSTU4145Test()); - } - - static final BigInteger r = new BigInteger("00f2702989366e9569d5092b83ac17f918bf040c487a", 16); - static final BigInteger s = new BigInteger("01dd460039db3be70392d7012f2a492d3e59091ab7a6", 16); - - private void generationTest() throws Exception - { - ECCurve.F2m curve = new ECCurve.F2m(173, 1, 2, 10, BigInteger.ZERO, new BigInteger("108576C80499DB2FC16EDDF6853BBB278F6B6FB437D9", 16)); - - ECParameterSpec spec = new ECParameterSpec( - curve, - curve.createPoint(new BigInteger("BE6628EC3E67A91A4E470894FBA72B52C515F8AEE9", 16), new BigInteger("D9DEEDF655CF5412313C11CA566CDC71F4DA57DB45C", 16), false), - new BigInteger("800000000000000000000189B4E67606E3825BB2831", 16)); - - SecureRandom k = new FixedSecureRandom(Hex.decode("00137449348C1249971759D99C252FFE1E14D8B31F00")); - SecureRandom keyRand = new FixedSecureRandom(Hex.decode("0000955CD7E344303D1034E66933DC21C8044D42ADB8")); - - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSTU4145", "BC"); - keyGen.initialize(spec, keyRand); - KeyPair pair = keyGen.generateKeyPair(); - - Signature sgr = Signature.getInstance("DSTU4145", "BC"); - - sgr.initSign(pair.getPrivate(), k); - - byte[] message = new byte[]{(byte)'a', (byte)'b', (byte)'c'}; - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(pair.getPublic()); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail("DSTU4145 verification failed"); - } - - BigInteger[] sig = decode(sigBytes); - - if (!r.equals(sig[0])) - { - fail( - ": r component wrong." + System.getProperty("line.separator") - + " expecting: " + r + System.getProperty("line.separator") - + " got : " + sig[0].toString(16)); - } - - if (!s.equals(sig[1])) - { - fail( - ": s component wrong." + System.getProperty("line.separator") - + " expecting: " + s + System.getProperty("line.separator") - + " got : " + sig[1].toString(16)); - } - } - - private void DSTU4145Test() - throws Exception - { - - SecureRandom k = new FixedSecureRandom(Hex.decode("00137449348C1249971759D99C252FFE1E14D8B31F00")); - - ECCurve.F2m curve = new ECCurve.F2m(173, 1, 2, 10, BigInteger.ZERO, new BigInteger("108576C80499DB2FC16EDDF6853BBB278F6B6FB437D9", 16)); - - ECParameterSpec spec = new ECParameterSpec( - curve, - curve.createPoint(new BigInteger("BE6628EC3E67A91A4E470894FBA72B52C515F8AEE9", 16), new BigInteger("D9DEEDF655CF5412313C11CA566CDC71F4DA57DB45C", 16), false), - new BigInteger("800000000000000000000189B4E67606E3825BB2831", 16)); - - ECPrivateKeySpec priKey = new ECPrivateKeySpec( - new BigInteger("955CD7E344303D1034E66933DC21C8044D42ADB8", 16), // d - spec); - - ECPublicKeySpec pubKey = new ECPublicKeySpec( - curve.createPoint(new BigInteger("22de541d48a75c1c3b8c7c107b2551c5093c6c096e1", 16), new BigInteger("1e5b602efc0269d61e64d97c9193d2788fa05c4b7fd5", 16), false), - spec); - - Signature sgr = Signature.getInstance("DSTU4145", "BC"); - KeyFactory f = KeyFactory.getInstance("DSTU4145", "BC"); - PrivateKey sKey = f.generatePrivate(priKey); - PublicKey vKey = f.generatePublic(pubKey); - - sgr.initSign(sKey, k); - - byte[] message = new byte[]{(byte)'a', (byte)'b', (byte)'c'}; - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail("DSTU4145 verification failed"); - } - - BigInteger[] sig = decode(sigBytes); - - if (!r.equals(sig[0])) - { - fail( - ": r component wrong." + System.getProperty("line.separator") - + " expecting: " + r + System.getProperty("line.separator") - + " got : " + sig[0].toString(16)); - } - - if (!s.equals(sig[1])) - { - fail( - ": s component wrong." + System.getProperty("line.separator") - + " expecting: " + s + System.getProperty("line.separator") - + " got : " + sig[1].toString(16)); - } - } - - private BigInteger[] decode( - byte[] encoding) - throws IOException - { - ASN1OctetString octetString = (ASN1OctetString)ASN1OctetString.fromByteArray(encoding); - encoding = octetString.getOctets(); - - byte[] r = new byte[encoding.length / 2]; - byte[] s = new byte[encoding.length / 2]; - - System.arraycopy(encoding, 0, s, 0, encoding.length / 2); - - System.arraycopy(encoding, encoding.length / 2, r, 0, encoding.length / 2); - - BigInteger[] sig = new BigInteger[2]; - - sig[0] = new BigInteger(1, r); - sig[1] = new BigInteger(1, s); - - return sig; - } - -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/DetDSATest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/DetDSATest.java deleted file mode 100644 index 16c19694..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/DetDSATest.java +++ /dev/null @@ -1,152 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.PrivateKey; -import java.security.Security; -import java.security.Signature; -import java.security.spec.DSAPrivateKeySpec; -import java.security.spec.ECFieldFp; -import java.security.spec.ECParameterSpec; -import java.security.spec.ECPoint; -import java.security.spec.ECPrivateKeySpec; -import java.security.spec.EllipticCurve; - -import org.bouncycastle.asn1.ASN1Integer; -import org.bouncycastle.asn1.ASN1Sequence; -import org.bouncycastle.asn1.nist.NISTNamedCurves; -import org.bouncycastle.asn1.x9.X9ECParameters; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * Tests are taken from RFC 6979 - "Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)" - */ -public class DetDSATest - extends SimpleTest -{ - - public static final byte[] SAMPLE = Hex.decode("73616d706c65"); // "sample" - public static final byte[] TEST = Hex.decode("74657374"); // "test" - - // test vectors from appendix in RFC 6979 - private void testHMacDeterministic() - throws Exception - { - DSAPrivateKeySpec privKeySpec = new DSAPrivateKeySpec(new BigInteger("411602CB19A6CCC34494D79D98EF1E7ED5AF25F7", 16), - new BigInteger("86F5CA03DCFEB225063FF830A0C769B9DD9D6153AD91D7CE27F787C43278B447" + - "E6533B86B18BED6E8A48B784A14C252C5BE0DBF60B86D6385BD2F12FB763ED88" + - "73ABFD3F5BA2E0A8C0A59082EAC056935E529DAF7C610467899C77ADEDFC846C" + - "881870B7B19B2B58F9BE0521A17002E3BDD6B86685EE90B3D9A1B02B782B1779", 16), - new BigInteger("996F967F6C8E388D9E28D01E205FBA957A5698B1", 16), - new BigInteger("07B0F92546150B62514BB771E2A0C0CE387F03BDA6C56B505209FF25FD3C133D" + - "89BBCD97E904E09114D9A7DEFDEADFC9078EA544D2E401AEECC40BB9FBBF78FD" + - "87995A10A1C27CB7789B594BA7EFB5C4326A9FE59A070E136DB77175464ADCA4" + - "17BE5DCE2F40D10A46A3A3943F26AB7FD9C0398FF8C76EE0A56826A8A88F1DBD", 16)); - - KeyFactory keyFact = KeyFactory.getInstance("DSA", "BC"); - - PrivateKey privKey = keyFact.generatePrivate(privKeySpec); - - doTestHMACDetDSASample("SHA1withDETDSA", privKey, new BigInteger("2E1A0C2562B2912CAAF89186FB0F42001585DA55", 16), new BigInteger("29EFB6B0AFF2D7A68EB70CA313022253B9A88DF5", 16)); - doTestHMACDetDSASample("SHA224withDETDSA", privKey, new BigInteger("4BC3B686AEA70145856814A6F1BB53346F02101E", 16), new BigInteger("410697B92295D994D21EDD2F4ADA85566F6F94C1", 16)); - doTestHMACDetDSASample("SHA256withDETDSA", privKey, new BigInteger("81F2F5850BE5BC123C43F71A3033E9384611C545", 16), new BigInteger("4CDD914B65EB6C66A8AAAD27299BEE6B035F5E89", 16)); - doTestHMACDetDSASample("SHA384withDETDSA", privKey, new BigInteger("07F2108557EE0E3921BC1774F1CA9B410B4CE65A", 16), new BigInteger("54DF70456C86FAC10FAB47C1949AB83F2C6F7595", 16)); - doTestHMACDetDSASample("SHA512withDETDSA", privKey, new BigInteger("16C3491F9B8C3FBBDD5E7A7B667057F0D8EE8E1B", 16), new BigInteger("02C36A127A7B89EDBB72E4FFBC71DABC7D4FC69C", 16)); - } - - private void doTestHMACDetDSASample(String algName, PrivateKey privKey, BigInteger r, BigInteger s) - throws Exception - { - doTestHMACDetECDSA(Signature.getInstance(algName, "BC"), SAMPLE, privKey, r, s); - } - - // test vectors from appendix in RFC 6979 - private void testECHMacDeterministic() - throws Exception - { - X9ECParameters x9ECParameters = NISTNamedCurves.getByName("P-192"); - ECCurve curve = x9ECParameters.getCurve(); - - ECPrivateKeySpec privKeySpec = new ECPrivateKeySpec(new BigInteger("6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4", 16), - new ECParameterSpec( - new EllipticCurve(new ECFieldFp(((ECCurve.Fp)curve).getQ()), curve.getA().toBigInteger(), curve.getB().toBigInteger(), null), - new ECPoint(x9ECParameters.getG().getXCoord().toBigInteger(), x9ECParameters.getG().getYCoord().toBigInteger()), - x9ECParameters.getN(), x9ECParameters.getH().intValue()) - ); - - KeyFactory keyFact = KeyFactory.getInstance("ECDSA", "BC"); - - PrivateKey privKey = keyFact.generatePrivate(privKeySpec); - - doTestHMACDetECDSASample("SHA1withDETECDSA", privKey, new BigInteger("98C6BD12B23EAF5E2A2045132086BE3EB8EBD62ABF6698FF", 16), new BigInteger("57A22B07DEA9530F8DE9471B1DC6624472E8E2844BC25B64", 16)); - doTestHMACDetECDSASample("SHA224withDETECDSA", privKey, new BigInteger("A1F00DAD97AEEC91C95585F36200C65F3C01812AA60378F5", 16), new BigInteger("E07EC1304C7C6C9DEBBE980B9692668F81D4DE7922A0F97A", 16)); - doTestHMACDetECDSASample("SHA256withDETECDSA", privKey, new BigInteger("4B0B8CE98A92866A2820E20AA6B75B56382E0F9BFD5ECB55", 16), new BigInteger("CCDB006926EA9565CBADC840829D8C384E06DE1F1E381B85", 16)); - doTestHMACDetECDSASample("SHA384withDETECDSA", privKey, new BigInteger("DA63BF0B9ABCF948FBB1E9167F136145F7A20426DCC287D5", 16), new BigInteger("C3AA2C960972BD7A2003A57E1C4C77F0578F8AE95E31EC5E", 16)); - doTestHMACDetECDSASample("SHA512withDETECDSA", privKey, new BigInteger("4D60C5AB1996BD848343B31C00850205E2EA6922DAC2E4B8", 16), new BigInteger("3F6E837448F027A1BF4B34E796E32A811CBB4050908D8F67", 16)); - - doTestHMACDetECDSATest("SHA1withDETECDSA", privKey, new BigInteger("0F2141A0EBBC44D2E1AF90A50EBCFCE5E197B3B7D4DE036D", 16), new BigInteger("EB18BC9E1F3D7387500CB99CF5F7C157070A8961E38700B7", 16)); - doTestHMACDetECDSATest("SHA224withDETECDSA", privKey, new BigInteger("6945A1C1D1B2206B8145548F633BB61CEF04891BAF26ED34", 16), new BigInteger("B7FB7FDFC339C0B9BD61A9F5A8EAF9BE58FC5CBA2CB15293", 16)); - doTestHMACDetECDSATest("SHA256withDETECDSA", privKey, new BigInteger("3A718BD8B4926C3B52EE6BBE67EF79B18CB6EB62B1AD97AE", 16), new BigInteger("5662E6848A4A19B1F1AE2F72ACD4B8BBE50F1EAC65D9124F", 16)); - doTestHMACDetECDSATest("SHA384withDETECDSA", privKey, new BigInteger("B234B60B4DB75A733E19280A7A6034BD6B1EE88AF5332367", 16), new BigInteger("7994090B2D59BB782BE57E74A44C9A1C700413F8ABEFE77A", 16)); - doTestHMACDetECDSATest("SHA512withDETECDSA", privKey, new BigInteger("FE4F4AE86A58B6507946715934FE2D8FF9D95B6B098FE739", 16), new BigInteger("74CF5605C98FBA0E1EF34D4B5A1577A7DCF59457CAE52290", 16)); - } - - private void doTestHMACDetECDSASample(String sigAlg, PrivateKey privKey, BigInteger r, BigInteger s) - throws Exception - { - doTestHMACDetECDSA(Signature.getInstance(sigAlg, "BC"), SAMPLE, privKey, r, s); - } - - private void doTestHMACDetECDSATest(String sigAlg, PrivateKey privKey, BigInteger r, BigInteger s) - throws Exception - { - doTestHMACDetECDSA(Signature.getInstance(sigAlg, "BC"), TEST, privKey, r, s); - } - - private void doTestHMACDetECDSA(Signature detSigner, byte[] data, PrivateKey privKey, BigInteger r, BigInteger s) - throws Exception - { - detSigner.initSign(privKey); - - detSigner.update(data, 0, data.length); - - byte[] m = detSigner.sign(); - - ASN1Sequence seq = ASN1Sequence.getInstance(m); - - - if (!r.equals(ASN1Integer.getInstance(seq.getObjectAt(0)).getValue())) - { - fail("r value wrong"); - } - if (!s.equals(ASN1Integer.getInstance(seq.getObjectAt(1)).getValue())) - { - fail("s value wrong"); - } - } - - public String getName() - { - return "DetDSA"; - } - - public void performTest() - throws Exception - { - testHMacDeterministic(); - testECHMacDeterministic(); - } - - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new DetDSATest()); - } -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/DigestTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/DigestTest.java deleted file mode 100644 index 679f3eab..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/DigestTest.java +++ /dev/null @@ -1,154 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.MessageDigest; -import java.security.Security; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class DigestTest - extends SimpleTest -{ - final static String provider = "BC"; - - static private String[][] abcVectors = - { - { "MD2", "da853b0d3f88d99b30283a69e6ded6bb" }, - { "MD4", "a448017aaf21d8525fc10ae87aa6729d" }, - { "MD5", "900150983cd24fb0d6963f7d28e17f72"}, - { "SHA-1", "a9993e364706816aba3e25717850c26c9cd0d89d" }, - { "SHA-224", "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7" }, - { "SHA-256", "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" }, - { "SHA-384", "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7" }, - { "SHA-512", "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f" }, - { "SHA-512/224", "4634270F707B6A54DAAE7530460842E20E37ED265CEEE9A43E8924AA" }, - { "SHA-512/256", "53048E2681941EF99B2E29B76B4C7DABE4C2D0C634FC6D46E0E2F13107E7AF23" }, - { "RIPEMD128", "c14a12199c66e4ba84636b0f69144c77" }, - { "RIPEMD160", "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc" }, - { "RIPEMD256", "afbd6e228b9d8cbbcef5ca2d03e6dba10ac0bc7dcbe4680e1e42d2e975459b65" }, - { "RIPEMD320", "de4c01b3054f8930a79d09ae738e92301e5a17085beffdc1b8d116713e74f82fa942d64cdbc4682d" }, - { "Tiger", "2AAB1484E8C158F2BFB8C5FF41B57A525129131C957B5F93" }, - { "GOST3411", "b285056dbf18d7392d7677369524dd14747459ed8143997e163b2986f92fd42c" }, - { "WHIRLPOOL", "4E2448A4C6F486BB16B6562C73B4020BF3043E3A731BCE721AE1B303D97E6D4C7181EEBDB6C57E277D0E34957114CBD6C797FC9D95D8B582D225292076D4EEF5" }, - { "SM3", "66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0" }, - }; - - public String getName() - { - return "Digest"; - } - - void test(String algorithm) - throws Exception - { - byte[] message = "hello world".getBytes(); - - MessageDigest digest = MessageDigest.getInstance(algorithm, provider); - - byte[] result = digest.digest(message); - byte[] result2 = digest.digest(message); - - // test one digest the same message with the same instance - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 1 not equal"); - } - - // test two, single byte updates - for (int i = 0; i < message.length; i++) - { - digest.update(message[i]); - } - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 2 not equal"); - } - - // test three, two half updates - digest.update(message, 0, message.length/2); - digest.update(message, message.length/2, message.length-message.length/2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 3 not equal"); - } - - // test four, clone test - digest.update(message, 0, message.length/2); - MessageDigest d = (MessageDigest)digest.clone(); - digest.update(message, message.length/2, message.length-message.length/2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 4(a) not equal"); - } - - d.update(message, message.length/2, message.length-message.length/2); - result2 = d.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 4(b) not equal"); - } - - // test five, check reset() method - digest.update(message, 0, message.length/2); - digest.reset(); - digest.update(message, 0, message.length/2); - digest.update(message, message.length/2, message.length-message.length/2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 5 not equal"); - } - } - - /** - * Test the hash against a standard value for the string "abc" - * - * @param algorithm algorithm to test - * @param hash expected value - * @return the test result. - */ - void abcTest( - String algorithm, - String hash) - throws Exception - { - byte[] abc = { (byte)0x61, (byte)0x62, (byte)0x63 }; - - MessageDigest digest = MessageDigest.getInstance(algorithm, provider); - - byte[] result = digest.digest(abc); - - if (!MessageDigest.isEqual(result, Hex.decode(hash))) - { - fail("abc result not equal for " + algorithm); - } - } - - public void performTest() - throws Exception - { - for (int i = 0; i != abcVectors.length; i++) - { - test(abcVectors[i][0]); - - abcTest(abcVectors[i][0], abcVectors[i][1]); - } - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new DigestTest()); - } -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/DoFinalTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/DoFinalTest.java deleted file mode 100644 index d0591386..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/DoFinalTest.java +++ /dev/null @@ -1,164 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Key; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTestResult; -import org.bouncycastle.util.test.Test; -import org.bouncycastle.util.test.TestResult; - -/** - * check that doFinal is properly reseting the cipher. - */ -public class DoFinalTest - implements Test -{ - public DoFinalTest() - { - } - - private boolean equalArray( - byte[] a, - int aOff, - byte[] b, - int length) - { - if (aOff + a.length < length) - { - return false; - } - - if (b.length < length) - { - return false; - } - - for (int i = 0; i != length; i++) - { - if (a[aOff + i] != b[i]) - { - return false; - } - } - - return true; - } - - public TestResult checkCipher( - String cipherName) - { - String lCode = "ABCDEFGHIJKLMNOPQRSTUVWXY0123456789"; - String baseAlgorithm; - int index = cipherName.indexOf('/'); - - if (index > 0) - { - baseAlgorithm = cipherName.substring(0, index); - } - else - { - baseAlgorithm = cipherName; - } - - try - { - KeyGenerator kGen = KeyGenerator.getInstance(baseAlgorithm, "BC"); - Cipher cipher = Cipher.getInstance(cipherName, "BC"); - Key key = kGen.generateKey(); - - cipher.init(Cipher.ENCRYPT_MODE, key); - - byte[] encrypted = cipher.doFinal(lCode.getBytes()); - - // 2nd try - byte[] encrypted2 = cipher.doFinal(lCode.getBytes()); - - if (encrypted.length != encrypted2.length) - { - return new SimpleTestResult(false, getName() + ": Failed " + cipherName + " - expected length " + encrypted.length + " got " + encrypted2.length); - } - - if (!equalArray(encrypted, 0, encrypted2, encrypted.length)) - { - return new SimpleTestResult(false, getName() + ": Failed " + cipherName + " - first two arrays not equal"); - } - - // 3rd try - byte[] enc1 = cipher.update(lCode.getBytes()); - byte[] enc2 = cipher.doFinal(); - - if ((enc1.length + enc2.length) != encrypted.length) - { - return new SimpleTestResult(false, getName() + ": Failed " + cipherName + " - expected length " + encrypted.length + " got " + (enc1.length + enc2.length)); - } - - if (!equalArray(encrypted, 0, enc1, enc1.length)) - { - return new SimpleTestResult(false, getName() + ": Failed " + cipherName + " - enc1 array not equal"); - } - - if (!equalArray(encrypted, enc1.length, enc2, enc2.length)) - { - return new SimpleTestResult(false, getName() + ": Failed " + cipherName + " - enc1 array not equal"); - } - - enc1 = cipher.update(lCode.getBytes()); - - if (!equalArray(encrypted, 0, enc1, enc1.length)) - { - return new SimpleTestResult(false, getName() + ": Failed " + cipherName + " - 2nd enc1 array not equal"); - } - - int len = cipher.doFinal(enc1, 0); - if ((enc1.length + len) != encrypted.length) - { - return new SimpleTestResult(false, getName() + ": Failed " + cipherName + " - expected length " + encrypted.length + " got " + (enc1.length + len)); - } - } - catch (Exception e) - { - return new SimpleTestResult(false, getName() + ": Failed " + cipherName + " - exception " + e.toString()); - } - - return new SimpleTestResult(true, getName() + ": Okay"); - } - - public TestResult perform() - { - TestResult result = checkCipher("RC4"); - - if (!result.isSuccessful()) - { - return result; - } - - result = checkCipher("DES/CBC/PKCS5Padding"); - - if (!result.isSuccessful()) - { - return result; - } - - return checkCipher("Rijndael"); - } - - public String getName() - { - return "DoFinalTest"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - Test test = new DoFinalTest(); - TestResult result = test.perform(); - - System.out.println(result.toString()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/ECDSA5Test.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/ECDSA5Test.java deleted file mode 100644 index 87773da8..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/ECDSA5Test.java +++ /dev/null @@ -1,934 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.math.BigInteger; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.SignatureException; -import java.security.interfaces.ECPrivateKey; -import java.security.interfaces.ECPublicKey; -import java.security.spec.AlgorithmParameterSpec; -import java.security.spec.ECFieldF2m; -import java.security.spec.ECFieldFp; -import java.security.spec.ECGenParameterSpec; -import java.security.spec.ECParameterSpec; -import java.security.spec.ECPoint; -import java.security.spec.ECPrivateKeySpec; -import java.security.spec.ECPublicKeySpec; -import java.security.spec.EllipticCurve; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.ASN1Integer; -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.ASN1Primitive; -import org.bouncycastle.asn1.ASN1Sequence; -import org.bouncycastle.asn1.bsi.BSIObjectIdentifiers; -import org.bouncycastle.asn1.eac.EACObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; -import org.bouncycastle.asn1.sec.SECObjectIdentifiers; -import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; -import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; -import org.bouncycastle.asn1.x9.X962Parameters; -import org.bouncycastle.asn1.x9.X9ECParameters; -import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; -import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil; -import org.bouncycastle.jce.ECKeyUtil; -import org.bouncycastle.jce.ECNamedCurveTable; -import org.bouncycastle.jce.ECPointUtil; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.BigIntegers; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.FixedSecureRandom; -import org.bouncycastle.util.test.SimpleTest; - -public class ECDSA5Test - extends SimpleTest -{ - byte[] k1 = Hex.decode("d5014e4b60ef2ba8b6211b4062ba3224e0427dd3"); - byte[] k2 = Hex.decode("345e8d05c075c3a508df729a1685690e68fcfb8c8117847e89063bca1f85d968fd281540b6e13bd1af989a1fbf17e06462bf511f9d0b140fb48ac1b1baa5bded"); - - SecureRandom random = new FixedSecureRandom(new byte[][] { k1, k2 }); - - private void decodeTest() - { - EllipticCurve curve = new EllipticCurve( - new ECFieldFp(new BigInteger("6277101735386680763835789423207666416083908700390324961279")), // q - new BigInteger("fffffffffffffffffffffffffffffffefffffffffffffffc", 16), // a - new BigInteger("64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1", 16)); // b - - ECPoint p = ECPointUtil.decodePoint(curve, Hex.decode("03188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012")); - - if (!p.getAffineX().equals(new BigInteger("188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012", 16))) - { - fail("x uncompressed incorrectly"); - } - - if (!p.getAffineY().equals(new BigInteger("7192b95ffc8da78631011ed6b24cdd573f977a11e794811", 16))) - { - fail("y uncompressed incorrectly"); - } - } - - /** - * X9.62 - 1998,<br> - * J.3.2, Page 155, ECDSA over the field Fp<br> - * an example with 239 bit prime - */ - private void testECDSA239bitPrime() - throws Exception - { - BigInteger r = new BigInteger("308636143175167811492622547300668018854959378758531778147462058306432176"); - BigInteger s = new BigInteger("323813553209797357708078776831250505931891051755007842781978505179448783"); - - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("700000017569056646655505781757157107570501575775705779575555657156756655")); - - SecureRandom k = new FixedSecureRandom(kData); - - EllipticCurve curve = new EllipticCurve( - new ECFieldFp(new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839")), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec spec = new ECParameterSpec( - curve, - ECPointUtil.decodePoint(curve, Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307"), // n - 1); // h - - - ECPrivateKeySpec priKey = new ECPrivateKeySpec( - new BigInteger("876300101507107567501066130761671078357010671067781776716671676178726717"), // d - spec); - - ECPublicKeySpec pubKey = new ECPublicKeySpec( - ECPointUtil.decodePoint(curve, Hex.decode("025b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c70")), // Q - spec); - - Signature sgr = Signature.getInstance("ECDSA", "BC"); - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - PrivateKey sKey = f.generatePrivate(priKey); - PublicKey vKey = f.generatePublic(pubKey); - - sgr.initSign(sKey, k); - - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail("239 Bit EC verification failed"); - } - - BigInteger[] sig = derDecode(sigBytes); - - if (!r.equals(sig[0])) - { - fail("r component wrong." + System.getProperty("line.separator") - + " expecting: " + r + System.getProperty("line.separator") - + " got : " + sig[0]); - } - - if (!s.equals(sig[1])) - { - fail("s component wrong." + System.getProperty("line.separator") - + " expecting: " + s + System.getProperty("line.separator") - + " got : " + sig[1]); - } - } - - // test BSI algorithm support. - private void testBSI() - throws Exception - { - KeyPairGenerator kpGen = KeyPairGenerator.getInstance("ECDSA", "BC"); - - kpGen.initialize(new ECGenParameterSpec(TeleTrusTObjectIdentifiers.brainpoolP512r1.getId())); - - KeyPair kp = kpGen.generateKeyPair(); - - byte[] data = "Hello World!!!".getBytes(); - String[] cvcAlgs = { "SHA1WITHCVC-ECDSA", "SHA224WITHCVC-ECDSA", - "SHA256WITHCVC-ECDSA", "SHA384WITHCVC-ECDSA", - "SHA512WITHCVC-ECDSA" }; - String[] cvcOids = { EACObjectIdentifiers.id_TA_ECDSA_SHA_1.getId(), EACObjectIdentifiers.id_TA_ECDSA_SHA_224.getId(), - EACObjectIdentifiers.id_TA_ECDSA_SHA_256.getId(), EACObjectIdentifiers.id_TA_ECDSA_SHA_384.getId(), - EACObjectIdentifiers.id_TA_ECDSA_SHA_512.getId() }; - - testBsiAlgorithms(kp, data, cvcAlgs, cvcOids); - - String[] plainAlgs = { "SHA1WITHPLAIN-ECDSA", "SHA224WITHPLAIN-ECDSA", - "SHA256WITHPLAIN-ECDSA", "SHA384WITHPLAIN-ECDSA", - "SHA512WITHPLAIN-ECDSA", "RIPEMD160WITHPLAIN-ECDSA" }; - String[] plainOids = { BSIObjectIdentifiers.ecdsa_plain_SHA1.getId(), BSIObjectIdentifiers.ecdsa_plain_SHA224.getId(), - BSIObjectIdentifiers.ecdsa_plain_SHA256.getId(), BSIObjectIdentifiers.ecdsa_plain_SHA384.getId(), - BSIObjectIdentifiers.ecdsa_plain_SHA512.getId(), BSIObjectIdentifiers.ecdsa_plain_RIPEMD160.getId() }; - - testBsiAlgorithms(kp, data, plainAlgs, plainOids); - } - - private void testBsiAlgorithms(KeyPair kp, byte[] data, String[] algs, String[] oids) - throws NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException, SignatureException - { - for (int i = 0; i != algs.length; i++) - { - Signature sig1 = Signature.getInstance(algs[i], "BC"); - Signature sig2 = Signature.getInstance(oids[i], "BC"); - - sig1.initSign(kp.getPrivate()); - - sig1.update(data); - - byte[] sig = sig1.sign(); - - sig2.initVerify(kp.getPublic()); - - sig2.update(data); - - if (!sig2.verify(sig)) - { - fail("BSI CVC signature failed: " + algs[i]); - } - } - } - - /** - * X9.62 - 1998,<br> - * J.2.1, Page 100, ECDSA over the field F2m<br> - * an example with 191 bit binary field - */ - private void testECDSA239bitBinary() - throws Exception - { - BigInteger r = new BigInteger("21596333210419611985018340039034612628818151486841789642455876922391552"); - BigInteger s = new BigInteger("197030374000731686738334997654997227052849804072198819102649413465737174"); - - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("171278725565216523967285789236956265265265235675811949404040041670216363")); - - SecureRandom k = new FixedSecureRandom(kData); - - EllipticCurve curve = new EllipticCurve( - new ECFieldF2m(239, // m - new int[] { 36 }), // k - new BigInteger("32010857077C5431123A46B808906756F543423E8D27877578125778AC76", 16), // a - new BigInteger("790408F2EEDAF392B012EDEFB3392F30F4327C0CA3F31FC383C422AA8C16", 16)); // b - - ECParameterSpec params = new ECParameterSpec( - curve, - ECPointUtil.decodePoint(curve, Hex.decode("0457927098FA932E7C0A96D3FD5B706EF7E5F5C156E16B7E7C86038552E91D61D8EE5077C33FECF6F1A16B268DE469C3C7744EA9A971649FC7A9616305")), // G - new BigInteger("220855883097298041197912187592864814557886993776713230936715041207411783"), // n - 4); // h - - ECPrivateKeySpec priKeySpec = new ECPrivateKeySpec( - new BigInteger("145642755521911534651321230007534120304391871461646461466464667494947990"), // d - params); - - ECPublicKeySpec pubKeySpec = new ECPublicKeySpec( - ECPointUtil.decodePoint(curve, Hex.decode("045894609CCECF9A92533F630DE713A958E96C97CCB8F5ABB5A688A238DEED6DC2D9D0C94EBFB7D526BA6A61764175B99CB6011E2047F9F067293F57F5")), // Q - params); - - Signature sgr = Signature.getInstance("ECDSA", "BC"); - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - PrivateKey sKey = f.generatePrivate(priKeySpec); - PublicKey vKey = f.generatePublic(pubKeySpec); - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - sgr.initSign(sKey, k); - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail("239 Bit EC verification failed"); - } - - BigInteger[] sig = derDecode(sigBytes); - - if (!r.equals(sig[0])) - { - fail("r component wrong." + System.getProperty("line.separator") - + " expecting: " + r + System.getProperty("line.separator") - + " got : " + sig[0]); - } - - if (!s.equals(sig[1])) - { - fail("s component wrong." + System.getProperty("line.separator") - + " expecting: " + s + System.getProperty("line.separator") - + " got : " + sig[1]); - } - } - - private void testGeneration() - throws Exception - { - // - // ECDSA generation test - // - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - Signature s = Signature.getInstance("ECDSA", "BC"); - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - EllipticCurve curve = new EllipticCurve( - new ECFieldFp(new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839")), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - ECPointUtil.decodePoint(curve, Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307"), // n - 1); // h - - g.initialize(ecSpec, new SecureRandom()); - - KeyPair p = g.generateKeyPair(); - - PrivateKey sKey = p.getPrivate(); - PublicKey vKey = p.getPublic(); - - s.initSign(sKey); - - s.update(data); - - byte[] sigBytes = s.sign(); - - s = Signature.getInstance("ECDSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("ECDSA verification failed"); - } - - testKeyFactory((ECPublicKey)vKey, (ECPrivateKey)sKey); - testSerialise((ECPublicKey)vKey, (ECPrivateKey)sKey); - } - - private void testSerialise(ECPublicKey ecPublicKey, ECPrivateKey ecPrivateKey) - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(ecPublicKey); - oOut.writeObject(ecPrivateKey); - oOut.close(); - - ObjectInputStream oIn = new ObjectInputStream(new ByteArrayInputStream(bOut.toByteArray())); - - PublicKey pubKey = (PublicKey)oIn.readObject(); - PrivateKey privKey = (PrivateKey)oIn.readObject(); - - if (!ecPublicKey.equals(pubKey)) - { - fail("public key serialisation check failed"); - } - - if (!ecPrivateKey.equals(privKey)) - { - fail("private key serialisation check failed"); - } - } - - private void testKeyFactory(ECPublicKey pub, ECPrivateKey priv) - throws Exception - { - KeyFactory ecFact = KeyFactory.getInstance("ECDSA"); - - ECPublicKeySpec pubSpec = (ECPublicKeySpec)ecFact.getKeySpec(pub, ECPublicKeySpec.class); - ECPrivateKeySpec privSpec = (ECPrivateKeySpec)ecFact.getKeySpec(priv, ECPrivateKeySpec.class); - - if (!pubSpec.getW().equals(pub.getW()) || !pubSpec.getParams().getCurve().equals(pub.getParams().getCurve())) - { - fail("pubSpec not correct"); - } - - if (!privSpec.getS().equals(priv.getS()) || !privSpec.getParams().getCurve().equals(priv.getParams().getCurve())) - { - fail("privSpec not correct"); - } - - ECPublicKey pubKey = (ECPublicKey)ecFact.translateKey(pub); - ECPrivateKey privKey = (ECPrivateKey)ecFact.translateKey(priv); - - if (!pubKey.getW().equals(pub.getW()) || !pubKey.getParams().getCurve().equals(pub.getParams().getCurve())) - { - fail("pubKey not correct"); - } - - if (!privKey.getS().equals(priv.getS()) || !privKey.getParams().getCurve().equals(priv.getParams().getCurve())) - { - fail("privKey not correct"); - } - } - - private void testKeyConversion() - throws Exception - { - KeyPairGenerator kpGen = KeyPairGenerator.getInstance("ECDSA", "BC"); - - kpGen.initialize(new ECGenParameterSpec("prime192v1")); - - KeyPair pair = kpGen.generateKeyPair(); - - PublicKey pubKey = ECKeyUtil.publicToExplicitParameters(pair.getPublic(), "BC"); - - SubjectPublicKeyInfo info = SubjectPublicKeyInfo.getInstance(ASN1Primitive.fromByteArray(pubKey.getEncoded())); - X962Parameters params = X962Parameters.getInstance(info.getAlgorithmId().getParameters()); - - if (params.isNamedCurve() || params.isImplicitlyCA()) - { - fail("public key conversion to explicit failed"); - } - - if (!((ECPublicKey)pair.getPublic()).getW().equals(((ECPublicKey)pubKey).getW())) - { - fail("public key conversion check failed"); - } - - PrivateKey privKey = ECKeyUtil.privateToExplicitParameters(pair.getPrivate(), "BC"); - PrivateKeyInfo privInfo = PrivateKeyInfo.getInstance(ASN1Primitive.fromByteArray(privKey.getEncoded())); - params = X962Parameters.getInstance(privInfo.getAlgorithmId().getParameters()); - - if (params.isNamedCurve() || params.isImplicitlyCA()) - { - fail("private key conversion to explicit failed"); - } - - if (!((ECPrivateKey)pair.getPrivate()).getS().equals(((ECPrivateKey)privKey).getS())) - { - fail("private key conversion check failed"); - } - } - - private void testAdaptiveKeyConversion() - throws Exception - { - KeyPairGenerator kpGen = KeyPairGenerator.getInstance("ECDSA", "BC"); - - kpGen.initialize(new ECGenParameterSpec("prime192v1")); - - KeyPair pair = kpGen.generateKeyPair(); - - final PrivateKey privKey = pair.getPrivate(); - final PublicKey pubKey = pair.getPublic(); - - Signature s = Signature.getInstance("ECDSA", "BC"); - - // raw interface tests - s.initSign(new PrivateKey() - { - public String getAlgorithm() - { - return privKey.getAlgorithm(); - } - - public String getFormat() - { - return privKey.getFormat(); - } - - public byte[] getEncoded() - { - return privKey.getEncoded(); - } - }); - - s.initVerify(new PublicKey() - { - public String getAlgorithm() - { - return pubKey.getAlgorithm(); - } - - public String getFormat() - { - return pubKey.getFormat(); - } - - public byte[] getEncoded() - { - return pubKey.getEncoded(); - } - }); - - - s.initSign(new ECPrivateKey() - { - public String getAlgorithm() - { - return privKey.getAlgorithm(); - } - - public String getFormat() - { - return privKey.getFormat(); - } - - public byte[] getEncoded() - { - return privKey.getEncoded(); - } - - public BigInteger getS() - { - return ((ECPrivateKey)privKey).getS(); - } - - public ECParameterSpec getParams() - { - return ((ECPrivateKey)privKey).getParams(); - } - }); - - s.initVerify(new ECPublicKey() - { - public String getAlgorithm() - { - return pubKey.getAlgorithm(); - } - - public String getFormat() - { - return pubKey.getFormat(); - } - - public byte[] getEncoded() - { - return pubKey.getEncoded(); - } - - public ECPoint getW() - { - return ((ECPublicKey)pubKey).getW(); - } - - public ECParameterSpec getParams() - { - return ((ECPublicKey)pubKey).getParams(); - } - }); - - try - { - s.initSign(new PrivateKey() - { - public String getAlgorithm() - { - return privKey.getAlgorithm(); - } - - public String getFormat() - { - return privKey.getFormat(); - } - - public byte[] getEncoded() - { - return null; - } - }); - - fail("no exception thrown!!!"); - } - catch (InvalidKeyException e) - { - // ignore - } - - try - { - s.initVerify(new PublicKey() - { - public String getAlgorithm() - { - return pubKey.getAlgorithm(); - } - - public String getFormat() - { - return pubKey.getFormat(); - } - - public byte[] getEncoded() - { - return null; - } - }); - - fail("no exception thrown!!!"); - } - catch (InvalidKeyException e) - { - // ignore - } - - // try bogus encoding - try - { - s.initSign(new PrivateKey() - { - public String getAlgorithm() - { - return privKey.getAlgorithm(); - } - - public String getFormat() - { - return privKey.getFormat(); - } - - public byte[] getEncoded() - { - return new byte[20]; - } - }); - - fail("no exception thrown!!!"); - } - catch (InvalidKeyException e) - { - // ignore - } - - try - { - s.initVerify(new PublicKey() - { - public String getAlgorithm() - { - return pubKey.getAlgorithm(); - } - - public String getFormat() - { - return pubKey.getFormat(); - } - - public byte[] getEncoded() - { - return new byte[20]; - } - }); - - fail("no exception thrown!!!"); - } - catch (InvalidKeyException e) - { - // ignore - } - - // try encoding of wrong key - kpGen = KeyPairGenerator.getInstance("RSA", "BC"); - - kpGen.initialize(512); - - pair = kpGen.generateKeyPair(); - - final PrivateKey privRsa = pair.getPrivate(); - final PublicKey pubRsa = pair.getPublic(); - - try - { - s.initSign(new PrivateKey() - { - public String getAlgorithm() - { - return privRsa.getAlgorithm(); - } - - public String getFormat() - { - return privRsa.getFormat(); - } - - public byte[] getEncoded() - { - return privRsa.getEncoded(); - } - }); - - fail("no exception thrown!!!"); - - } - catch (InvalidKeyException e) - { - // ignore - } - - try - { - s.initVerify(new PublicKey() - { - public String getAlgorithm() - { - return pubRsa.getAlgorithm(); - } - - public String getFormat() - { - return pubRsa.getFormat(); - } - - public byte[] getEncoded() - { - return pubRsa.getEncoded(); - } - }); - - fail("no exception thrown!!!"); - } - catch (InvalidKeyException e) - { - // ignore - } - } - - private void testKeyPairGenerationWithOIDs() - throws Exception - { - KeyPairGenerator kpGen = KeyPairGenerator.getInstance("ECDSA", "BC"); - - kpGen.initialize(new ECGenParameterSpec(X9ObjectIdentifiers.prime192v1.getId())); - kpGen.initialize(new ECGenParameterSpec(TeleTrusTObjectIdentifiers.brainpoolP160r1.getId())); - kpGen.initialize(new ECGenParameterSpec(SECObjectIdentifiers.secp128r1.getId())); - - try - { - kpGen.initialize(new ECGenParameterSpec("1.1")); - - fail("non-existant curve OID failed"); - } - catch (InvalidAlgorithmParameterException e) - { - if (!"unknown curve OID: 1.1".equals(e.getMessage())) - { - fail("OID message check failed"); - } - } - - try - { - kpGen.initialize(new ECGenParameterSpec("flibble")); - - fail("non-existant curve name failed"); - } - catch (InvalidAlgorithmParameterException e) - { - if (!"unknown curve name: flibble".equals(e.getMessage())) - { - fail("name message check failed"); - } - } - } - - private static class ECRandom - extends SecureRandom - { - public void nextBytes(byte[] bytes) - { - byte[] src = new BigInteger("e2eb6663f551331bda00b90f1272c09d980260c1a70cab1ec481f6c937f34b62", 16).toByteArray(); - - if (src.length <= bytes.length) - { - System.arraycopy(src, 0, bytes, bytes.length - src.length, src.length); - } - else - { - System.arraycopy(src, 0, bytes, 0, bytes.length); - } - } - } - - private void testNamedCurveParameterPreservation() - throws Exception - { - AlgorithmParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec("secp256r1"); - KeyPairGenerator keygen = KeyPairGenerator.getInstance("EC", "BC"); - keygen.initialize(ecSpec, new ECRandom()); - - KeyPair keys = keygen.generateKeyPair(); - - PrivateKeyInfo priv1 = PrivateKeyInfo.getInstance(keys.getPrivate().getEncoded()); - SubjectPublicKeyInfo pub1 = SubjectPublicKeyInfo.getInstance(keys.getPublic().getEncoded()); - - keygen = KeyPairGenerator.getInstance("EC", "BC"); - keygen.initialize(new ECGenParameterSpec("secp256r1"), new ECRandom()); - - PrivateKeyInfo priv2 = PrivateKeyInfo.getInstance(keys.getPrivate().getEncoded()); - SubjectPublicKeyInfo pub2 = SubjectPublicKeyInfo.getInstance(keys.getPublic().getEncoded()); - - if (!priv1.equals(priv2) || !pub1.equals(pub2)) - { - fail("mismatch between alg param spec and ECGenParameterSpec"); - } - - if (!(priv2.getPrivateKeyAlgorithm().getParameters() instanceof ASN1ObjectIdentifier)) - { - fail("OID not preserved in private key"); - } - - if (!(pub1.getAlgorithm().getParameters() instanceof ASN1ObjectIdentifier)) - { - fail("OID not preserved in public key"); - } - } - - private void testNamedCurveSigning() - throws Exception - { - testCustomNamedCurveSigning("secp256r1"); - - try - { - testCustomNamedCurveSigning("secp256k1"); - } - catch (IllegalArgumentException e) - { - if (!e.getMessage().equals("first coefficient is negative")) // bogus jdk 1.5 exception... - { - throw e; - } - } - } - - private void testCustomNamedCurveSigning(String name) - throws Exception - { - X9ECParameters x9Params = ECUtil.getNamedCurveByOid(ECUtil.getNamedCurveOid(name)); - - // TODO: one day this may have to change - if (x9Params.getCurve() instanceof ECCurve.Fp) - { - fail("curve not custom curve!!"); - } - - AlgorithmParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec(name); - KeyPairGenerator keygen = KeyPairGenerator.getInstance("EC", "BC"); - keygen.initialize(ecSpec, new ECRandom()); - - KeyPair keys = keygen.generateKeyPair(); - - PrivateKeyInfo priv1 = PrivateKeyInfo.getInstance(keys.getPrivate().getEncoded()); - SubjectPublicKeyInfo pub1 = SubjectPublicKeyInfo.getInstance(keys.getPublic().getEncoded()); - - keygen = KeyPairGenerator.getInstance("EC", "BC"); - keygen.initialize(new ECGenParameterSpec("secp256r1"), new ECRandom()); - - Signature ecdsaSigner = Signature.getInstance("ECDSA", "BC"); - - ecdsaSigner.initSign(keys.getPrivate()); - - ecdsaSigner.update(new byte[100]); - - byte[] sig = ecdsaSigner.sign(); - - ecdsaSigner.initVerify(keys.getPublic()); - - ecdsaSigner.update(new byte[100]); - - if (!ecdsaSigner.verify(sig)) - { - fail("signature failed to verify"); - } - - KeyFactory kFact = KeyFactory.getInstance("EC", "BC"); - - PublicKey pub = kFact.generatePublic(new X509EncodedKeySpec(pub1.getEncoded())); - PrivateKey pri = kFact.generatePrivate(new PKCS8EncodedKeySpec(priv1.getEncoded())); - - ecdsaSigner = Signature.getInstance("ECDSA", "BC"); - - ecdsaSigner.initSign(pri); - - ecdsaSigner.update(new byte[100]); - - sig = ecdsaSigner.sign(); - - ecdsaSigner.initVerify(pub); - - ecdsaSigner.update(new byte[100]); - - if (!ecdsaSigner.verify(sig)) - { - fail("signature failed to verify"); - } - } - - protected BigInteger[] derDecode( - byte[] encoding) - throws IOException - { - ByteArrayInputStream bIn = new ByteArrayInputStream(encoding); - ASN1InputStream aIn = new ASN1InputStream(bIn); - ASN1Sequence s = (ASN1Sequence)aIn.readObject(); - - BigInteger[] sig = new BigInteger[2]; - - sig[0] = ((ASN1Integer)s.getObjectAt(0)).getValue(); - sig[1] = ((ASN1Integer)s.getObjectAt(1)).getValue(); - - return sig; - } - - public String getName() - { - return "ECDSA5"; - } - - public void performTest() - throws Exception - { - testKeyConversion(); - testAdaptiveKeyConversion(); - decodeTest(); - testECDSA239bitPrime(); - testECDSA239bitBinary(); - testGeneration(); - testKeyPairGenerationWithOIDs(); - testNamedCurveParameterPreservation(); - testNamedCurveSigning(); - testBSI(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new ECDSA5Test()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/ECEncodingTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/ECEncodingTest.java deleted file mode 100644 index 1bd31783..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/ECEncodingTest.java +++ /dev/null @@ -1,214 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.math.BigInteger; -import java.security.InvalidKeyException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.KeyStore; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.Security; -import java.security.SignatureException; -import java.security.cert.Certificate; -import java.security.cert.X509Certificate; -import java.util.Date; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.x9.X9ECParameters; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.interfaces.ECPointEncoder; -import org.bouncycastle.jce.interfaces.ECPrivateKey; -import org.bouncycastle.jce.interfaces.ECPublicKey; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.x509.X509V3CertificateGenerator; - -public class ECEncodingTest - extends SimpleTest -{ - public String getName() - { - return "ECEncodingTest"; - } - - /** J.4.7 An Example with m = 304 */ - private int m = 304; - - /** f = 010000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000807 */ - private int k1 = 1; - private int k2 = 2; - private int k3 = 11; - private byte hexa[] = {(byte)0xFD, 0x0D, 0x69, 0x31, 0x49, (byte)0xA1, 0x18, (byte)0xF6, 0x51 - , (byte)0xE6, (byte)0xDC, (byte)0xE6, (byte)0x80, 0x20, (byte)0x85, 0x37, 0x7E, 0x5F, (byte)0x88, 0x2D, 0x1B, 0x51 - , 0x0B, 0x44, 0x16, 0x00, 0x74, (byte)0xC1, 0x28, (byte)0x80, 0x78, 0x36, 0x5A, 0x03 - , (byte)0x96, (byte)0xC8, (byte)0xE6, (byte)0x81}; - private byte hexb[] = {(byte)0xBD, (byte)0xDB, (byte)0x97, (byte)0xE5, (byte)0x55 - , (byte)0xA5, (byte)0x0A, (byte)0x90, (byte)0x8E, (byte)0x43, (byte)0xB0 - , (byte)0x1C, (byte)0x79, (byte)0x8E, (byte)0xA5, (byte)0xDA, (byte)0xA6 - , (byte)0x78, (byte)0x8F, (byte)0x1E, (byte)0xA2, (byte)0x79 - , (byte)0x4E, (byte)0xFC, (byte)0xF5, (byte)0x71, (byte)0x66, (byte)0xB8 - , (byte)0xC1, (byte)0x40, (byte)0x39, (byte)0x60, (byte)0x1E - , (byte)0x55, (byte)0x82, (byte)0x73, (byte)0x40, (byte)0xBE}; - private BigInteger a = new BigInteger(1, hexa); - private BigInteger b = new BigInteger(1, hexb); - - /** Base point G (with point compression) */ - private byte enc[] = - {0x02, 0x19, 0x7B, 0x07, (byte)0x84, 0x5E, (byte)0x9B, (byte)0xE2, (byte)0xD9, 0x6A, (byte)0xDB, 0x0F - , 0x5F, 0x3C, 0x7F, 0x2C, (byte)0xFF, (byte)0xBD, 0x7A, 0x3E, (byte)0xB8, (byte)0xB6, (byte)0xFE, - (byte)0xC3, 0x5C, 0x7F, (byte)0xD6, 0x7F, 0x26, (byte)0xDD, (byte)0xF6 - , 0x28, 0x5A, 0x64, 0x4F, 0x74, 0x0A, 0x26, 0x14}; - - private void testPointCompression() - throws Exception - { - ECCurve curve = new ECCurve.F2m(m, k1, k2, k3, a, b); - curve.decodePoint(enc); - - int ks[] = new int[3]; - ks[0] = k3; - ks[1] = k2; - ks[2] = k1; - } - - public void performTest() - throws Exception - { - byte[] ecParams = Hex.decode("3081C8020101302806072A8648CE3D0101021D00D7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF303C041C68A5E62CA9CE6C1C299803A6C1530B514E182AD8B0042A59CAD29F43041C2580F63CCFE44138870713B1A92369E33E2135D266DBB372386C400B0439040D9029AD2C7E5CF4340823B2A87DC68C9E4CE3174C1E6EFDEE12C07D58AA56F772C0726F24C6B89E4ECDAC24354B9E99CAA3F6D3761402CD021D00D7C134AA264366862A18302575D0FB98D116BC4B6DDEBCA3A5A7939F020101"); - testParams(ecParams, true); - - testParams(ecParams, false); - - ecParams = Hex.decode("3081C8020101302806072A8648CE3D0101021D00D7C134AA264366862A18302575D1D787B09F075797DA89F57EC8C0FF303C041C56E6C7E4F11A7B4B961A4DCB5BD282EB22E42E9BCBE3E7B361F18012041C4BE3E7B361F18012F2353D22975E02D8D05D2C6F3342DD8F57D4C76F0439048D127A0C27E0DE207ED3B7FB98F83C8BD5A2A57C827F4B97874DEB2C1BAEB0C006958CE61BB1FC81F5389E288CB3E86E2ED91FB47B08FCCA021D00D7C134AA264366862A18302575D11A5F7AABFBA3D897FF5CA727AF53020101"); - testParams(ecParams, true); - - testParams(ecParams, false); - - ecParams = Hex.decode("30820142020101303c06072a8648ce3d0101023100fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff3066043100fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc043100b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef046104aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab73617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f023100ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973020101"); - testParams(ecParams, true); - - testParams(ecParams, false); - - testPointCompression(); - } - - private void testParams(byte[] ecParameterEncoded, boolean compress) - throws Exception - { - String keyStorePass = "myPass"; - ASN1InputStream in = new ASN1InputStream(new ByteArrayInputStream( - ecParameterEncoded)); - X9ECParameters params = X9ECParameters.getInstance(in - .readObject()); - KeyPair kp = null; - boolean success = false; - while (!success) - { - KeyPairGenerator kpg = KeyPairGenerator.getInstance("ECDSA"); - kpg.initialize(new ECParameterSpec(params.getCurve(), - params.getG(), params.getN(), params.getH(), params - .getSeed())); - kp = kpg.generateKeyPair(); - // The very old Problem... we need a certificate chain to - // save a private key... - ECPublicKey pubKey = (ECPublicKey)kp.getPublic(); - if (!compress) - { - ((ECPointEncoder)pubKey).setPointFormat("UNCOMPRESSED"); - } - byte[] x = pubKey.getQ().getAffineXCoord().toBigInteger().toByteArray(); - byte[] y = pubKey.getQ().getAffineYCoord().toBigInteger().toByteArray(); - if (x.length == y.length) - { - success = true; - } - } - - // The very old Problem... we need a certificate chain to - // save a private key... - - Certificate[] chain = new Certificate[] { generateSelfSignedSoftECCert( - kp, compress) }; - - KeyStore keyStore = KeyStore.getInstance("BKS"); - keyStore.load(null, keyStorePass.toCharArray()); - - keyStore.setCertificateEntry("ECCert", chain[0]); - - ECPrivateKey privateECKey = (ECPrivateKey)kp.getPrivate(); - keyStore.setKeyEntry("ECPrivKey", privateECKey, keyStorePass - .toCharArray(), chain); - - // Test ec sign / verify - ECPublicKey pub = (ECPublicKey)kp.getPublic(); - String oldPrivateKey = new String(Hex.encode(privateECKey.getEncoded())); - String oldPublicKey = new String(Hex.encode(pub.getEncoded())); - ECPrivateKey newKey = (ECPrivateKey)keyStore.getKey("ECPrivKey", - keyStorePass.toCharArray()); - ECPublicKey newPubKey = (ECPublicKey)keyStore.getCertificate( - "ECCert").getPublicKey(); - if (!compress) - { - ((ECPointEncoder)newKey).setPointFormat("UNCOMPRESSED"); - ((ECPointEncoder)newPubKey).setPointFormat("UNCOMPRESSED"); - } - - String newPrivateKey = new String(Hex.encode(newKey.getEncoded())); - String newPublicKey = new String(Hex.encode(newPubKey.getEncoded())); - - if (!oldPrivateKey.equals(newPrivateKey)) - { - fail("failed private key comparison"); - } - - if (!oldPublicKey.equals(newPublicKey)) - { - fail("failed public key comparison"); - } - } - - /** - * Create a self signed cert for our software emulation - * - * @param kp - * is the keypair for our certificate - * @return a self signed cert for our software emulation - * @throws InvalidKeyException - * on error - * @throws SignatureException - * on error - */ - private X509Certificate generateSelfSignedSoftECCert(KeyPair kp, - boolean compress) throws Exception - { - X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); - ECPrivateKey privECKey = (ECPrivateKey)kp.getPrivate(); - ECPublicKey pubECKey = (ECPublicKey)kp.getPublic(); - if (!compress) - { - ((ECPointEncoder)privECKey).setPointFormat("UNCOMPRESSED"); - ((ECPointEncoder)pubECKey).setPointFormat("UNCOMPRESSED"); - } - certGen.setSignatureAlgorithm("ECDSAwithSHA1"); - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(new X509Principal("CN=Software emul (EC Cert)")); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000000)); - certGen.setSubjectDN(new X509Principal("CN=Software emul (EC Cert)")); - certGen.setPublicKey((PublicKey)pubECKey); - - return certGen.generate((PrivateKey)privECKey); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new ECEncodingTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/ECIESTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/ECIESTest.java deleted file mode 100755 index ad2b8b25..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/ECIESTest.java +++ /dev/null @@ -1,226 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.InvalidAlgorithmParameterException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.SecureRandom; -import java.security.Security; - -import javax.crypto.Cipher; - -import org.bouncycastle.crypto.agreement.ECDHBasicAgreement; -import org.bouncycastle.crypto.digests.SHA1Digest; -import org.bouncycastle.crypto.engines.DESEngine; -import org.bouncycastle.crypto.engines.IESEngine; -import org.bouncycastle.crypto.generators.KDF2BytesGenerator; -import org.bouncycastle.crypto.macs.HMac; -import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher; -import org.bouncycastle.jcajce.provider.asymmetric.ec.IESCipher; -import org.bouncycastle.jce.interfaces.ECPrivateKey; -import org.bouncycastle.jce.interfaces.ECPublicKey; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.IESParameterSpec; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * Test for ECIES - Elliptic Curve Integrated Encryption Scheme - */ -public class ECIESTest - extends SimpleTest -{ - - ECIESTest() - { - } - - public String getName() - { - return "ECIES"; - } - - public void performTest() - throws Exception - { - byte[] derivation = Hex.decode("202122232425262728292a2b2c2d2e2f"); - byte[] encoding = Hex.decode("303132333435363738393a3b3c3d3e3f"); - - - IESCipher c1 = new org.bouncycastle.jcajce.provider.asymmetric.ec.IESCipher.ECIES(); - IESCipher c2 = new org.bouncycastle.jcajce.provider.asymmetric.ec.IESCipher.ECIES(); - IESParameterSpec params = new IESParameterSpec(derivation,encoding,128); - - // Testing ECIES with default curve in streaming mode - KeyPairGenerator g = KeyPairGenerator.getInstance("EC", "BC"); - doTest("ECIES with default", g, "ECIES", params); - - // Testing ECIES with 192-bit curve in streaming mode - g.initialize(192, new SecureRandom()); - doTest("ECIES with 192-bit", g, "ECIES", params); - - // Testing ECIES with 256-bit curve in streaming mode - g.initialize(256, new SecureRandom()); - doTest("ECIES with 256-bit", g, "ECIES", params); - - - c1 = new IESCipher(new IESEngine(new ECDHBasicAgreement(), - new KDF2BytesGenerator(new SHA1Digest()), - new HMac(new SHA1Digest()), - new PaddedBufferedBlockCipher(new DESEngine()))); - - c2 = new IESCipher(new IESEngine(new ECDHBasicAgreement(), - new KDF2BytesGenerator(new SHA1Digest()), - new HMac(new SHA1Digest()), - new PaddedBufferedBlockCipher(new DESEngine()))); - - params = new IESParameterSpec(derivation, encoding, 128, 128); - - // Testing ECIES with default curve using DES - g = KeyPairGenerator.getInstance("EC", "BC"); - doTest("default", g, "ECIESwithDESEDE", params); - - // Testing ECIES with 192-bit curve using DES - g.initialize(192, new SecureRandom()); - doTest("192-bit", g, "ECIESwithDESEDE", params); - - // Testing ECIES with 256-bit curve using DES - g.initialize(256, new SecureRandom()); - doTest("256-bit", g, "ECIESwithDESEDE", params); - - // Testing ECIES with 256-bit curve using DES-CBC - g.initialize(256, new SecureRandom()); - doTest("256-bit", g, "ECIESwithDESEDE-CBC", params); - - params = new IESParameterSpec(derivation, encoding, 128, 128, Hex.decode("0001020304050607")); - g.initialize(256, new SecureRandom()); - doTest("256-bit", g, "ECIESwithDESEDE-CBC", params); - - try - { - params = new IESParameterSpec(derivation, encoding, 128, 128, new byte[10]); - g.initialize(256, new SecureRandom()); - doTest("256-bit", g, "ECIESwithDESEDE-CBC", params); - fail("DESEDE no exception!"); - } - catch (InvalidAlgorithmParameterException e) - { - if (!e.getMessage().equals("NONCE in IES Parameters needs to be 8 bytes long")) - { - fail("DESEDE wrong message!"); - } - } - - c1 = new org.bouncycastle.jcajce.provider.asymmetric.ec.IESCipher.ECIESwithAES(); - c2 = new org.bouncycastle.jcajce.provider.asymmetric.ec.IESCipher.ECIESwithAES(); - params = new IESParameterSpec(derivation, encoding, 128, 128); - - // Testing ECIES with default curve using AES - g = KeyPairGenerator.getInstance("EC", "BC"); - doTest("default", g, "ECIESwithAES", params); - - // Testing ECIES with 192-bit curve using AES - g.initialize(192, new SecureRandom()); - doTest("192-bit", g, "ECIESwithAES", params); - - // Testing ECIES with 256-bit curve using AES - g.initialize(256, new SecureRandom()); - doTest("256-bit", g, "ECIESwithAES", params); - - // Testing ECIES with 256-bit curve using AES-CBC - g.initialize(256, new SecureRandom()); - doTest("256-bit", g, "ECIESwithAES-CBC", params); - - params = new IESParameterSpec(derivation, encoding, 128, 128, Hex.decode("000102030405060708090a0b0c0d0e0f")); - g.initialize(256, new SecureRandom()); - doTest("256-bit", g, "ECIESwithAES-CBC", params); - - try - { - params = new IESParameterSpec(derivation, encoding, 128, 128, new byte[10]); - g.initialize(256, new SecureRandom()); - doTest("256-bit", g, "ECIESwithAES-CBC", params); - fail("AES no exception!"); - } - catch (InvalidAlgorithmParameterException e) - { - if (!e.getMessage().equals("NONCE in IES Parameters needs to be 16 bytes long")) - { - fail("AES wrong message!"); - } - } - } - - public void doTest( - String testname, - KeyPairGenerator g, - String cipher, - IESParameterSpec p) - throws Exception - { - - byte[] message = Hex.decode("0102030405060708090a0b0c0d0e0f10111213141516"); - byte[] out1, out2; - - // Generate static key pair - KeyPair KeyPair = g.generateKeyPair(); - ECPublicKey Pub = (ECPublicKey) KeyPair.getPublic(); - ECPrivateKey Priv = (ECPrivateKey) KeyPair.getPrivate(); - - Cipher c1 = Cipher.getInstance(cipher); - Cipher c2 = Cipher.getInstance(cipher); - - // Testing with null parameters and DHAES mode off - c1.init(Cipher.ENCRYPT_MODE, Pub, new SecureRandom()); - c2.init(Cipher.DECRYPT_MODE, Priv, new SecureRandom()); - out1 = c1.doFinal(message, 0, message.length); - out2 = c2.doFinal(out1, 0, out1.length); - if (!areEqual(out2, message)) - fail(testname + " test failed with null parameters, DHAES mode false."); - - - // Testing with given parameters and DHAES mode off - c1.init(Cipher.ENCRYPT_MODE, Pub, p, new SecureRandom()); - c2.init(Cipher.DECRYPT_MODE, Priv, p, new SecureRandom()); - out1 = c1.doFinal(message, 0, message.length); - out2 = c2.doFinal(out1, 0, out1.length); - if (!areEqual(out2, message)) - fail(testname + " test failed with non-null parameters, DHAES mode false."); - - -// TODO: DHAES mode is not currently implemented, perhaps it shouldn't be... -// c1 = Cipher.getInstance(cipher + "/DHAES/PKCS7Padding","BC"); -// c2 = Cipher.getInstance(cipher + "/DHAES/PKCS7Padding","BC"); -// -// // Testing with null parameters and DHAES mode on -// c1.init(Cipher.ENCRYPT_MODE, Pub, new SecureRandom()); -// c2.init(Cipher.DECRYPT_MODE, Priv, new SecureRandom()); -// -// out1 = c1.doFinal(message, 0, message.length); -// out2 = c2.doFinal(out1, 0, out1.length); -// if (!areEqual(out2, message)) -// fail(testname + " test failed with null parameters, DHAES mode true."); -// -// c1 = Cipher.getInstance(cipher + "/DHAES/PKCS7Padding"); -// c2 = Cipher.getInstance(cipher + "/DHAES/PKCS7Padding"); -// -// // Testing with given parameters and DHAES mode on -// c1.init(Cipher.ENCRYPT_MODE, Pub, p, new SecureRandom()); -// c2.init(Cipher.DECRYPT_MODE, Priv, p, new SecureRandom()); -// -// out1 = c1.doFinal(message, 0, message.length); -// out2 = c2.doFinal(out1, 0, out1.length); -// if (!areEqual(out2, message)) -// fail(testname + " test failed with non-null parameters, DHAES mode true."); - - } - - - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new ECIESTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/ECNRTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/ECNRTest.java deleted file mode 100644 index 74695060..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/ECNRTest.java +++ /dev/null @@ -1,247 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.ASN1Integer; -import org.bouncycastle.asn1.ASN1Sequence; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.jce.spec.ECPrivateKeySpec; -import org.bouncycastle.jce.spec.ECPublicKeySpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.BigIntegers; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.FixedSecureRandom; -import org.bouncycastle.util.test.SimpleTest; - -public class ECNRTest - extends SimpleTest -{ - byte[] k1 = Hex.decode("d5014e4b60ef2ba8b6211b4062ba3224e0427dd3"); - byte[] k2 = Hex.decode("345e8d05c075c3a508df729a1685690e68fcfb8c8117847e89063bca1f85d968fd281540b6e13bd1af989a1fbf17e06462bf511f9d0b140fb48ac1b1baa5bded"); - - SecureRandom random = new FixedSecureRandom(new byte[][] { k1, k2 }); - - /** - * X9.62 - 1998,<br> - * J.3.2, Page 155, ECDSA over the field Fp<br> - * an example with 239 bit prime - */ - private void testECNR239bitPrime() - throws Exception - { - BigInteger r = new BigInteger("308636143175167811492623515537541734843573549327605293463169625072911693"); - BigInteger s = new BigInteger("852401710738814635664888632022555967400445256405412579597015412971797143"); - - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("700000017569056646655505781757157107570501575775705779575555657156756655")); - - SecureRandom k = new FixedSecureRandom(kData); - - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec spec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - - ECPrivateKeySpec priKey = new ECPrivateKeySpec( - new BigInteger("876300101507107567501066130761671078357010671067781776716671676178726717"), // d - spec); - - ECPublicKeySpec pubKey = new ECPublicKeySpec( - curve.decodePoint(Hex.decode("025b6dc53bc61a2548ffb0f671472de6c9521a9d2d2534e65abfcbd5fe0c70")), // Q - spec); - - Signature sgr = Signature.getInstance("SHA1withECNR", "BC"); - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - checkSignature(239, priKey, pubKey, sgr, k, message, r, s); - } - - // ------------------------------------------------------------------------- - - /** - * X9.62 - 1998,<br> - * Page 104-105, ECDSA over the field Fp<br> - * an example with 192 bit prime - */ - private void testECNR192bitPrime() - throws Exception - { - BigInteger r = new BigInteger("2474388605162950674935076940284692598330235697454145648371"); - BigInteger s = new BigInteger("2997192822503471356158280167065034437828486078932532073836"); - - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("dcc5d1f1020906df2782360d36b2de7a17ece37d503784af", 16)); - - SecureRandom k = new FixedSecureRandom(kData); - - ECCurve.Fp curve = new ECCurve.Fp( - new BigInteger("6277101735386680763835789423207666416083908700390324961279"), // q (or p) - new BigInteger("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC", 16), // a - new BigInteger("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1", 16)); // b - - ECParameterSpec spec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("03188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012")), // G - new BigInteger("6277101735386680763835789423176059013767194773182842284081")); // n - - - ECPrivateKeySpec priKey = new ECPrivateKeySpec( - new BigInteger("651056770906015076056810763456358567190100156695615665659"), // d - spec); - - ECPublicKeySpec pubKey = new ECPublicKeySpec( - curve.decodePoint(Hex.decode("0262B12D60690CDCF330BABAB6E69763B471F994DD702D16A5")), // Q - spec); - - Signature sgr = Signature.getInstance("SHA1withECNR", "BC"); - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - checkSignature(192, priKey, pubKey, sgr, k, message, r, s); - } - - // ------------------------------------------------------------------------- - - /** - * SEC 2: Recommended Elliptic Curve Domain Parameters - September 2000,<br> - * Page 17-19, Recommended 521-bit Elliptic Curve Domain Parameters over Fp<br> - * an ECC example with a 521 bit prime and a 512 bit hash - */ - private void testECNR521bitPrime() - throws Exception - { - BigInteger r = new BigInteger("1820641608112320695747745915744708800944302281118541146383656165330049339564439316345159057453301092391897040509935100825960342573871340486684575368150970954"); - BigInteger s = new BigInteger("6358277176448326821136601602749690343031826490505780896013143436153111780706227024847359990383467115737705919410755190867632280059161174165591324242446800763"); - - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("cdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", 16)); - - SecureRandom k = new FixedSecureRandom(kData); - - ECCurve.Fp curve = new ECCurve.Fp( - new BigInteger("6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151"), // q (or p) - new BigInteger("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC", 16), // a - new BigInteger("0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00", 16)); // b - - ECParameterSpec spec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("0200C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66")), // G - new BigInteger("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409", 16)); // n - - - ECPrivateKeySpec priKey = new ECPrivateKeySpec( - new BigInteger("5769183828869504557786041598510887460263120754767955773309066354712783118202294874205844512909370791582896372147797293913785865682804434049019366394746072023"), // d - spec); - - ECPublicKeySpec pubKey = new ECPublicKeySpec( - curve.decodePoint(Hex.decode("02006BFDD2C9278B63C92D6624F151C9D7A822CC75BD983B17D25D74C26740380022D3D8FAF304781E416175EADF4ED6E2B47142D2454A7AC7801DD803CF44A4D1F0AC")), // Q - spec); - - Signature sgr = Signature.getInstance("SHA512withECNR", "BC"); - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - checkSignature(521, priKey, pubKey, sgr, k, message, r, s); - } - - private void checkSignature( - int size, - ECPrivateKeySpec priKey, - ECPublicKeySpec pubKey, - Signature sgr, - SecureRandom k, - byte[] message, - BigInteger r, - BigInteger s) - throws Exception - { - KeyFactory f = KeyFactory.getInstance("ECDSA", "BC"); - PrivateKey sKey = f.generatePrivate(priKey); - PublicKey vKey = f.generatePublic(pubKey); - - sgr.initSign(sKey, k); - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail(size + " bit EC verification failed"); - } - - BigInteger[] sig = derDecode(sigBytes); - - if (!r.equals(sig[0])) - { - fail(size + "bit" - + ": r component wrong." + System.getProperty("line.separator") - + " expecting: " + r + System.getProperty("line.separator") - + " got : " + sig[0]); - } - - if (!s.equals(sig[1])) - { - fail(size + "bit" - + ": s component wrong." + System.getProperty("line.separator") - + " expecting: " + s + System.getProperty("line.separator") - + " got : " + sig[1]); - } - } - - protected BigInteger[] derDecode( - byte[] encoding) - throws IOException - { - ByteArrayInputStream bIn = new ByteArrayInputStream(encoding); - ASN1InputStream aIn = new ASN1InputStream(bIn); - ASN1Sequence s = (ASN1Sequence)aIn.readObject(); - - BigInteger[] sig = new BigInteger[2]; - - sig[0] = ((ASN1Integer)s.getObjectAt(0)).getValue(); - sig[1] = ((ASN1Integer)s.getObjectAt(1)).getValue(); - - return sig; - } - - public String getName() - { - return "ECNR"; - } - - public void performTest() - throws Exception - { - testECNR192bitPrime(); - testECNR239bitPrime(); - testECNR521bitPrime(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new ECNRTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/ElGamalTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/ElGamalTest.java deleted file mode 100644 index 2ff08510..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/ElGamalTest.java +++ /dev/null @@ -1,497 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.math.BigInteger; -import java.security.AlgorithmParameterGenerator; -import java.security.AlgorithmParameters; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.SecureRandom; -import java.security.Security; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; - -import javax.crypto.Cipher; -import javax.crypto.interfaces.DHPrivateKey; -import javax.crypto.interfaces.DHPublicKey; -import javax.crypto.spec.DHParameterSpec; - -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class ElGamalTest - extends SimpleTest -{ - private BigInteger g512 = new BigInteger("153d5d6172adb43045b68ae8e1de1070b6137005686d29d3d73a7749199681ee5b212c9b96bfdcfa5b20cd5e3fd2044895d609cf9b410b7a0f12ca1cb9a428cc", 16); - private BigInteger p512 = new BigInteger("9494fec095f3b85ee286542b3836fc81a5dd0a0349b4c239dd38744d488cf8e31db8bcb7d33b41abb9e5a33cca9144b1cef332c94bf0573bf047a3aca98cdf3b", 16); - - private BigInteger g768 = new BigInteger("7c240073c1316c621df461b71ebb0cdcc90a6e5527e5e126633d131f87461c4dc4afc60c2cb0f053b6758871489a69613e2a8b4c8acde23954c08c81cbd36132cfd64d69e4ed9f8e51ed6e516297206672d5c0a69135df0a5dcf010d289a9ca1", 16); - private BigInteger p768 = new BigInteger("8c9dd223debed1b80103b8b309715be009d48860ed5ae9b9d5d8159508efd802e3ad4501a7f7e1cfec78844489148cd72da24b21eddd01aa624291c48393e277cfc529e37075eccef957f3616f962d15b44aeab4039d01b817fde9eaa12fd73f", 16); - - private BigInteger g1024 = new BigInteger("1db17639cdf96bc4eabba19454f0b7e5bd4e14862889a725c96eb61048dcd676ceb303d586e30f060dbafd8a571a39c4d823982117da5cc4e0f89c77388b7a08896362429b94a18a327604eb7ff227bffbc83459ade299e57b5f77b50fb045250934938efa145511166e3197373e1b5b1e52de713eb49792bedde722c6717abf", 16); - private BigInteger p1024 = new BigInteger("a00e283b3c624e5b2b4d9fbc2653b5185d99499b00fd1bf244c6f0bb817b4d1c451b2958d62a0f8a38caef059fb5ecd25d75ed9af403f5b5bdab97a642902f824e3c13789fed95fa106ddfe0ff4a707c85e2eb77d49e68f2808bcea18ce128b178cd287c6bc00efa9a1ad2a673fe0dceace53166f75b81d6709d5f8af7c66bb7", 16); - - public String getName() - { - return "ElGamal"; - } - - private void testGP( - int size, - int privateValueSize, - BigInteger g, - BigInteger p) - throws Exception - { - DHParameterSpec elParams = new DHParameterSpec(p, g, privateValueSize); - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ElGamal", "BC"); - byte[] in = "This is a test".getBytes(); - - keyGen.initialize(elParams); - - KeyPair keyPair = keyGen.generateKeyPair(); - SecureRandom rand = new SecureRandom(); - - checkKeySize(privateValueSize, keyPair); - - Cipher cipher = Cipher.getInstance("ElGamal", "BC"); - - cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic(), rand); - - if (cipher.getOutputSize(in.length) != (size / 8) * 2) - { - fail("getOutputSize wrong on encryption"); - } - - byte[] out = cipher.doFinal(in); - - cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate()); - - if (cipher.getOutputSize(out.length) != (size / 8) - 1) - { - fail("getOutputSize wrong on decryption"); - } - - // - // No Padding - maximum length - // - byte[] modBytes = ((DHPublicKey)keyPair.getPublic()).getParams().getP().toByteArray(); - byte[] maxInput = new byte[modBytes.length - 1]; - - maxInput[0] |= 0x7f; - - cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic(), rand); - - out = cipher.doFinal(maxInput); - - cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate()); - - out = cipher.doFinal(out); - - if (!areEqual(out, maxInput)) - { - fail("NoPadding test failed on decrypt expected " + new String(Hex.encode(maxInput)) + " got " + new String(Hex.encode(out))); - } - - // - // encrypt/decrypt - // - - Cipher c1 = Cipher.getInstance("ElGamal", "BC"); - Cipher c2 = Cipher.getInstance("ElGamal", "BC"); - - c1.init(Cipher.ENCRYPT_MODE, keyPair.getPublic(), rand); - - byte[] out1 = c1.doFinal(in); - - c2.init(Cipher.DECRYPT_MODE, keyPair.getPrivate()); - - byte[] out2 = c2.doFinal(out1); - - if (!areEqual(in, out2)) - { - fail(size + " encrypt test failed"); - } - - // - // encrypt/decrypt with update - // - int outLen = c1.update(in, 0, 2, out1, 0); - - outLen += c1.doFinal(in, 2, in.length - 2, out1, outLen); - - outLen = c2.update(out1, 0, 2, out2, 0); - - outLen += c2.doFinal(out1, 2, out1.length - 2, out2, outLen); - - if (!areEqual(in, out2)) - { - fail(size + " encrypt with update test failed"); - } - - // - // public key encoding test - // - byte[] pubEnc = keyPair.getPublic().getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance("ElGamal", "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - DHPublicKey pubKey = (DHPublicKey)keyFac.generatePublic(pubX509); - DHParameterSpec spec = pubKey.getParams(); - - if (!spec.getG().equals(elParams.getG()) || !spec.getP().equals(elParams.getP())) - { - fail(size + " bit public key encoding/decoding test failed on parameters"); - } - - if (!((DHPublicKey)keyPair.getPublic()).getY().equals(pubKey.getY())) - { - fail(size + " bit public key encoding/decoding test failed on y value"); - } - - // - // public key serialisation test - // - pubKey = (DHPublicKey)serializeDeserialize(keyPair.getPublic()); - spec = pubKey.getParams(); - - if (!spec.getG().equals(elParams.getG()) || !spec.getP().equals(elParams.getP())) - { - fail(size + " bit public key serialisation test failed on parameters"); - } - - if (!((DHPublicKey)keyPair.getPublic()).getY().equals(pubKey.getY())) - { - fail(size + " bit public key serialisation test failed on y value"); - } - - if (!keyPair.getPublic().equals(pubKey)) - { - fail("equals test failed"); - } - - if (keyPair.getPublic().hashCode() != pubKey.hashCode()) - { - fail("hashCode test failed"); - } - - // - // private key encoding test - // - byte[] privEnc = keyPair.getPrivate().getEncoded(); - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - DHPrivateKey privKey = (DHPrivateKey)keyFac.generatePrivate(privPKCS8); - - spec = privKey.getParams(); - - if (!spec.getG().equals(elParams.getG()) || !spec.getP().equals(elParams.getP())) - { - fail(size + " bit private key encoding/decoding test failed on parameters"); - } - - if (!((DHPrivateKey)keyPair.getPrivate()).getX().equals(privKey.getX())) - { - fail(size + " bit private key encoding/decoding test failed on y value"); - } - - // - // private key serialisation test - // - privKey = (DHPrivateKey)serializeDeserialize(keyPair.getPrivate()); - spec = privKey.getParams(); - - if (!spec.getG().equals(elParams.getG()) || !spec.getP().equals(elParams.getP())) - { - fail(size + " bit private key serialisation test failed on parameters"); - } - - if (!((DHPrivateKey)keyPair.getPrivate()).getX().equals(privKey.getX())) - { - fail(size + " bit private key serialisation test failed on y value"); - } - - if (!keyPair.getPrivate().equals(privKey)) - { - fail("equals test failed"); - } - - if (keyPair.getPrivate().hashCode() != privKey.hashCode()) - { - fail("hashCode test failed"); - } - - if (!(privKey instanceof PKCS12BagAttributeCarrier)) - { - fail("private key not implementing PKCS12 attribute carrier"); - } - } - - private Object serializeDeserialize(Object o) - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(o); - oOut.close(); - - ObjectInputStream oIn = new ObjectInputStream(new ByteArrayInputStream(bOut.toByteArray())); - - return oIn.readObject(); - } - - private void checkKeySize(int privateValueSize, KeyPair aKeyPair) - { - if (privateValueSize != 0) - { - DHPrivateKey key = (DHPrivateKey)aKeyPair.getPrivate(); - - if (key.getX().bitLength() != privateValueSize) - { - fail("limited key check failed for key size " + privateValueSize); - } - } - } - - private void testRandom( - int size) - throws Exception - { - AlgorithmParameterGenerator a = AlgorithmParameterGenerator.getInstance("ElGamal", "BC"); - a.init(size, new SecureRandom()); - AlgorithmParameters params = a.generateParameters(); - - byte[] encodeParams = params.getEncoded(); - - AlgorithmParameters a2 = AlgorithmParameters.getInstance("ElGamal", "BC"); - a2.init(encodeParams); - - // a and a2 should be equivalent! - byte[] encodeParams_2 = a2.getEncoded(); - - if (!areEqual(encodeParams, encodeParams_2)) - { - fail(this.getName() + ": encode/decode parameters failed"); - } - - DHParameterSpec elP = (DHParameterSpec)params.getParameterSpec(DHParameterSpec.class); - - testGP(size, 0, elP.getG(), elP.getP()); - } - - private void testDefault( - int privateValueSize, - BigInteger g, - BigInteger p) - throws Exception - { - DHParameterSpec elParams = new DHParameterSpec(p, g, privateValueSize); - int size = p.bitLength(); - - new BouncyCastleProvider().setParameter(ConfigurableProvider.DH_DEFAULT_PARAMS, elParams); - - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("ElGamal", "BC"); - byte[] in = "This is a test".getBytes(); - - keyGen.initialize(p.bitLength()); - - KeyPair keyPair = keyGen.generateKeyPair(); - - new BouncyCastleProvider().setParameter(ConfigurableProvider.DH_DEFAULT_PARAMS, elParams); - - SecureRandom rand = new SecureRandom(); - - checkKeySize(privateValueSize, keyPair); - - Cipher cipher = Cipher.getInstance("ElGamal", "BC"); - - cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic(), rand); - - if (cipher.getOutputSize(in.length) != (size / 8) * 2) - { - fail("getOutputSize wrong on encryption"); - } - - byte[] out = cipher.doFinal(in); - - cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate()); - - if (cipher.getOutputSize(out.length) != (size / 8) - 1) - { - fail("getOutputSize wrong on decryption"); - } - - // - // No Padding - maximum length - // - byte[] modBytes = ((DHPublicKey)keyPair.getPublic()).getParams().getP().toByteArray(); - byte[] maxInput = new byte[modBytes.length - 1]; - - maxInput[0] |= 0x7f; - - cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic(), rand); - - out = cipher.doFinal(maxInput); - - cipher.init(Cipher.DECRYPT_MODE, keyPair.getPrivate()); - - out = cipher.doFinal(out); - - if (!areEqual(out, maxInput)) - { - fail("NoPadding test failed on decrypt expected " + new String(Hex.encode(maxInput)) + " got " + new String(Hex.encode(out))); - } - - // - // encrypt/decrypt - // - - Cipher c1 = Cipher.getInstance("ElGamal", "BC"); - Cipher c2 = Cipher.getInstance("ElGamal", "BC"); - - c1.init(Cipher.ENCRYPT_MODE, keyPair.getPublic(), rand); - - byte[] out1 = c1.doFinal(in); - - c2.init(Cipher.DECRYPT_MODE, keyPair.getPrivate()); - - byte[] out2 = c2.doFinal(out1); - - if (!areEqual(in, out2)) - { - fail(size + " encrypt test failed"); - } - - // - // encrypt/decrypt with update - // - int outLen = c1.update(in, 0, 2, out1, 0); - - outLen += c1.doFinal(in, 2, in.length - 2, out1, outLen); - - outLen = c2.update(out1, 0, 2, out2, 0); - - outLen += c2.doFinal(out1, 2, out1.length - 2, out2, outLen); - - if (!areEqual(in, out2)) - { - fail(size + " encrypt with update test failed"); - } - - // - // public key encoding test - // - byte[] pubEnc = keyPair.getPublic().getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance("ElGamal", "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - DHPublicKey pubKey = (DHPublicKey)keyFac.generatePublic(pubX509); - DHParameterSpec spec = pubKey.getParams(); - - if (!spec.getG().equals(elParams.getG()) || !spec.getP().equals(elParams.getP())) - { - fail(size + " bit public key encoding/decoding test failed on parameters"); - } - - if (!((DHPublicKey)keyPair.getPublic()).getY().equals(pubKey.getY())) - { - fail(size + " bit public key encoding/decoding test failed on y value"); - } - - // - // public key serialisation test - // - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(keyPair.getPublic()); - - ByteArrayInputStream bIn = new ByteArrayInputStream(bOut.toByteArray()); - ObjectInputStream oIn = new ObjectInputStream(bIn); - - pubKey = (DHPublicKey)oIn.readObject(); - spec = pubKey.getParams(); - - if (!spec.getG().equals(elParams.getG()) || !spec.getP().equals(elParams.getP())) - { - fail(size + " bit public key serialisation test failed on parameters"); - } - - if (!((DHPublicKey)keyPair.getPublic()).getY().equals(pubKey.getY())) - { - fail(size + " bit public key serialisation test failed on y value"); - } - - // - // private key encoding test - // - byte[] privEnc = keyPair.getPrivate().getEncoded(); - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - DHPrivateKey privKey = (DHPrivateKey)keyFac.generatePrivate(privPKCS8); - - spec = privKey.getParams(); - - if (!spec.getG().equals(elParams.getG()) || !spec.getP().equals(elParams.getP())) - { - fail(size + " bit private key encoding/decoding test failed on parameters"); - } - - if (!((DHPrivateKey)keyPair.getPrivate()).getX().equals(privKey.getX())) - { - fail(size + " bit private key encoding/decoding test failed on y value"); - } - - // - // private key serialisation test - // - bOut = new ByteArrayOutputStream(); - oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(keyPair.getPrivate()); - - bIn = new ByteArrayInputStream(bOut.toByteArray()); - oIn = new ObjectInputStream(bIn); - - privKey = (DHPrivateKey)oIn.readObject(); - spec = privKey.getParams(); - - if (!spec.getG().equals(elParams.getG()) || !spec.getP().equals(elParams.getP())) - { - fail(size + " bit private key serialisation test failed on parameters"); - } - - if (!((DHPrivateKey)keyPair.getPrivate()).getX().equals(privKey.getX())) - { - fail(size + " bit private key serialisation test failed on y value"); - } - } - - public void performTest() - throws Exception - { - testDefault(64, g512, p512); - - testGP(512, 0, g512, p512); - testGP(768, 0, g768, p768); - testGP(1024, 0, g1024, p1024); - - testGP(512, 64, g512, p512); - testGP(768, 128, g768, p768); - testGP(1024, 256, g1024, p1024); - - testRandom(256); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new ElGamalTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/EncryptedPrivateKeyInfoTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/EncryptedPrivateKeyInfoTest.java deleted file mode 100644 index 80e64ac6..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/EncryptedPrivateKeyInfoTest.java +++ /dev/null @@ -1,145 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.AlgorithmParameters; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.MessageDigest; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.spec.PKCS8EncodedKeySpec; - -import javax.crypto.Cipher; -import javax.crypto.EncryptedPrivateKeyInfo; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.PBEParameterSpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTestResult; -import org.bouncycastle.util.test.Test; -import org.bouncycastle.util.test.TestResult; - -public class EncryptedPrivateKeyInfoTest - implements Test -{ - String alg = "1.2.840.113549.1.12.1.3"; // 3 key triple DES with SHA-1 - - public TestResult perform() - { - try - { - KeyPairGenerator fact = KeyPairGenerator.getInstance("RSA", "BC"); - fact.initialize(512, new SecureRandom()); - - KeyPair keyPair = fact.generateKeyPair(); - - PrivateKey priKey = keyPair.getPrivate(); - PublicKey pubKey = keyPair.getPublic(); - - // - // set up the parameters - // - byte[] salt = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; - int iterationCount = 100; - PBEParameterSpec defParams = new PBEParameterSpec(salt, iterationCount); - - AlgorithmParameters params = AlgorithmParameters.getInstance(alg, "BC"); - - params.init(defParams); - - // - // set up the key - // - char[] password1 = { 'h', 'e', 'l', 'l', 'o' }; - - PBEKeySpec pbeSpec = new PBEKeySpec(password1); - SecretKeyFactory keyFact = SecretKeyFactory.getInstance(alg, "BC"); - Cipher cipher = Cipher.getInstance(alg, "BC"); - - cipher.init(Cipher.WRAP_MODE, keyFact.generateSecret(pbeSpec), params); - - byte[] wrappedKey = cipher.wrap(priKey); - - // - // create encrypted object - // - - EncryptedPrivateKeyInfo pInfo = new EncryptedPrivateKeyInfo(params, wrappedKey); - - // - // decryption step - // - char[] password2 = { 'h', 'e', 'l', 'l', 'o' }; - - pbeSpec = new PBEKeySpec(password2); - - cipher = Cipher.getInstance(pInfo.getAlgName(), "BC"); - - cipher.init(Cipher.DECRYPT_MODE, keyFact.generateSecret(pbeSpec), pInfo.getAlgParameters()); - - PKCS8EncodedKeySpec keySpec = pInfo.getKeySpec(cipher); - - if (!MessageDigest.isEqual(priKey.getEncoded(), keySpec.getEncoded())) - { - return new SimpleTestResult(false, "Private key does not match"); - } - - // - // using Cipher parameters test - // - pbeSpec = new PBEKeySpec(password1); - keyFact = SecretKeyFactory.getInstance(alg, "BC"); - cipher = Cipher.getInstance(alg, "BC"); - - cipher.init(Cipher.WRAP_MODE, keyFact.generateSecret(pbeSpec), params); - - wrappedKey = cipher.wrap(priKey); - - // - // create encrypted object - // - - pInfo = new EncryptedPrivateKeyInfo(cipher.getParameters(), wrappedKey); - - // - // decryption step - // - pbeSpec = new PBEKeySpec(password2); - - cipher = Cipher.getInstance(pInfo.getAlgName(), "BC"); - - cipher.init(Cipher.DECRYPT_MODE, keyFact.generateSecret(pbeSpec), pInfo.getAlgParameters()); - - keySpec = pInfo.getKeySpec(cipher); - - if (!MessageDigest.isEqual(priKey.getEncoded(), keySpec.getEncoded())) - { - return new SimpleTestResult(false, "Private key does not match"); - } - - return new SimpleTestResult(true, getName() + ": Okay"); - } - catch (Exception e) - { - return new SimpleTestResult(false, getName() + ": exception - " + e.toString(), e); - } - } - - public String getName() - { - return "EncryptedPrivateKeyInfoTest"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - Test test = new EncryptedPrivateKeyInfoTest(); - TestResult result = test.perform(); - - System.out.println(result.toString()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/FIPSDESTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/FIPSDESTest.java deleted file mode 100644 index 5a599879..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/FIPSDESTest.java +++ /dev/null @@ -1,229 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.security.InvalidAlgorithmParameterException; -import java.security.Key; -import java.security.KeyException; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTestResult; -import org.bouncycastle.util.test.Test; -import org.bouncycastle.util.test.TestResult; - -/** - * basic FIPS test class for a block cipher, just to make sure ECB/CBC/OFB/CFB are behaving - * correctly. Tests from <a href=http://www.itl.nist.gov/fipspubs/fip81.htm>FIPS 81</a>. - */ -public class FIPSDESTest - implements Test -{ - static String[] fips1Tests = - { - "DES/ECB/NoPadding", - "3fa40e8a984d48156a271787ab8883f9893d51ec4b563b53", - "DES/CBC/NoPadding", - "e5c7cdde872bf27c43e934008c389c0f683788499a7c05f6", - "DES/CFB/NoPadding", - "f3096249c7f46e51a69e839b1a92f78403467133898ea622" - }; - - static String[] fips2Tests = - { - "DES/CFB8/NoPadding", - "f31fda07011462ee187f", - "DES/OFB8/NoPadding", - "f34a2850c9c64985d684" - }; - - static byte[] input1 = Hex.decode("4e6f77206973207468652074696d6520666f7220616c6c20"); - static byte[] input2 = Hex.decode("4e6f7720697320746865"); - - public String getName() - { - return "FIPSDESTest"; - } - - private boolean equalArray( - byte[] a, - byte[] b) - { - if (a.length != b.length) - { - return false; - } - - for (int i = 0; i != a.length; i++) - { - if (a[i] != b[i]) - { - return false; - } - } - - return true; - } - - public TestResult test( - String algorithm, - byte[] input, - byte[] output) - { - Key key; - Cipher in, out; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - IvParameterSpec spec = new IvParameterSpec(Hex.decode("1234567890abcdef")); - - try - { - String baseAlgorithm; - - key = new SecretKeySpec(Hex.decode("0123456789abcdef"), "DES"); - - in = Cipher.getInstance(algorithm, "BC"); - out = Cipher.getInstance(algorithm, "BC"); - - if (algorithm.startsWith("DES/ECB")) - { - out.init(Cipher.ENCRYPT_MODE, key); - } - else - { - out.init(Cipher.ENCRYPT_MODE, key, spec); - } - } - catch (Exception e) - { - return new SimpleTestResult(false, getName() + ": " + algorithm + " failed initialisation - " + e.toString(), e); - } - - try - { - if (algorithm.startsWith("DES/ECB")) - { - in.init(Cipher.DECRYPT_MODE, key); - } - else - { - in.init(Cipher.DECRYPT_MODE, key, spec); - } - } - catch (Exception e) - { - return new SimpleTestResult(false, getName() + ": " + algorithm + " failed initialisation - " + e.toString(), e); - } - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - try - { - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - } - catch (IOException e) - { - return new SimpleTestResult(false, getName() + ": " + algorithm + " failed encryption - " + e.toString()); - } - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!equalArray(bytes, output)) - { - return new SimpleTestResult(false, getName() + ": " + algorithm + " failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - try - { - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - } - catch (Exception e) - { - return new SimpleTestResult(false, getName() + ": " + algorithm + " failed encryption - " + e.toString()); - } - - if (!equalArray(bytes, input)) - { - return new SimpleTestResult(false, getName() + ": " + algorithm + " failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - - return new SimpleTestResult(true, getName() + ": " + algorithm + " Okay"); - } - - public TestResult perform() - { - for (int i = 0; i != fips1Tests.length; i += 2) - { - TestResult result; - - result = test(fips1Tests[i], input1, Hex.decode(fips1Tests[i + 1])); - if (!result.isSuccessful()) - { - return result; - } - } - - for (int i = 0; i != fips2Tests.length; i += 2) - { - TestResult result; - - result = test(fips2Tests[i], input2, Hex.decode(fips2Tests[i + 1])); - if (!result.isSuccessful()) - { - return result; - } - } - - return new SimpleTestResult(true, getName() + ": Okay"); - } - - public static void main( - String[] args) - throws KeyException, InvalidAlgorithmParameterException - { - Security.addProvider(new BouncyCastleProvider()); - - Test test = new FIPSDESTest(); - TestResult result = test.perform(); - - System.out.println(result.toString()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/GMacTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/GMacTest.java deleted file mode 100644 index 3a26d3cd..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/GMacTest.java +++ /dev/null @@ -1,144 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.NoSuchAlgorithmException; -import java.security.Security; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.Mac; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.util.test.TestFailedException; - -public class GMacTest - extends SimpleTest -{ - public String getName() - { - return "GMac"; - } - - public void performTest() - throws Exception - { - checkRegistrations(); - } - - private void checkRegistrations() - throws Exception - { - List missingMacs = new ArrayList(); - List missingKeyGens = new ArrayList(); - - String[] ciphers = new String[] { "AES", "NOEKEON", "Twofish", "CAST6", "SEED", "Serpent", "RC6", "CAMELLIA" }; - String[] macs = new String[] - { - "a52308801b32d4770c701ace9b826f12", - "cf11dacaf6024a78dba76b256e23caab", - "13db7c428e5a7128149b5ec782d07fac", - "d13a33e78e48b274bf7d64bf9aecdb82", - "d05d550054735c6e7e01b6981fc14b4e", - "4a34dfe4f5410afd7c40b1e110377a73", - "d9f597c96b41f641da6c83d4760f543b", - "371ad8cc920c6bda2a26d8f237bd446b" - }; - - for (int i = 0; i < ciphers.length; i++) - { - String cipherName = ciphers[i]; - Cipher cipher; - try - { - cipher = Cipher.getInstance(cipherName, "BC"); - } - catch (Exception e) - { - System.err.println(cipherName + ": " + e.getMessage()); - continue; - } - int blocksize; - try - { - blocksize = cipher.getBlockSize(); - } - catch (Exception e) - { - System.err.println(cipherName + ": " + e.getMessage()); - continue; - } - // GCM is defined over 128 bit block ciphers - if (blocksize == 16) - { - String macName = cipherName + "-GMAC"; - String macNameAlt = cipherName + "GMAC"; - - // Check we have a GMAC registered for each name - checkMac(macName, missingMacs, missingKeyGens, macs[i]); - checkMac(macNameAlt, missingMacs, missingKeyGens, macs[i]); - } - } - if (missingMacs.size() != 0) - { - fail("Did not find GMAC registrations for the following ciphers: " + missingMacs); - } - if (missingKeyGens.size() != 0) - { - fail("Did not find GMAC KeyGenerator registrations for the following macs: " + missingKeyGens); - } - } - - private void checkMac(String name, List missingMacs, List missingKeyGens, String macOutput) - { - try - { - Mac mac = Mac.getInstance(name); - - mac.init(new SecretKeySpec(new byte[mac.getMacLength()], mac.getAlgorithm()), new IvParameterSpec( - new byte[16])); - mac.update(new byte[128]); - byte[] bytes = mac.doFinal(); - - if (!Arrays.areEqual(bytes, Hex.decode(macOutput))) - { - fail("wrong mac value computed for " + name); - } - - try - { - KeyGenerator kg = KeyGenerator.getInstance(name); - kg.generateKey(); - } - catch (NoSuchAlgorithmException e) - { - missingKeyGens.add(name); - } - } - catch (NoSuchAlgorithmException e) - { - missingMacs.add(name); - } - catch (TestFailedException e) - { - throw e; - } - catch (Exception e) - { - fail("Unexpected error", e); - } - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new GMacTest()); - } -}
\ No newline at end of file diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/GOST28147Test.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/GOST28147Test.java deleted file mode 100644 index 93e3ad74..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/GOST28147Test.java +++ /dev/null @@ -1,249 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.security.Key; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * basic test class for the GOST28147 cipher - */ -public class GOST28147Test - extends SimpleTest -{ - static String[] cipherTests = - { - "256", - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", - "4e6f77206973207468652074696d6520666f7220616c6c20", - "281630d0d5770030068c252d841e84149ccc1912052dbc02", - - "256", - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef", - "4e6f77206973207468652074696d65208a920c6ed1a804f5", - "88e543dfc04dc4f764fa7b624741cec07de49b007bf36065" - }; - - public String getName() - { - return "GOST28147"; - } - - public void testECB( - int strength, - byte[] keyBytes, - byte[] input, - byte[] output) - throws Exception - { - Key key; - Cipher in, out; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - key = new SecretKeySpec(keyBytes, "GOST28147"); - - in = Cipher.getInstance("GOST28147/ECB/NoPadding", "BC"); - out = Cipher.getInstance("GOST28147/ECB/NoPadding", "BC"); - out.init(Cipher.ENCRYPT_MODE, key); - in.init(Cipher.DECRYPT_MODE, key); - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!areEqual(bytes, output)) - { - fail("GOST28147 failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - - if (!areEqual(bytes, input)) - { - fail("GOST28147 failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - } - - public void testCFB( - int strength, - byte[] keyBytes, - byte[] input, - byte[] output) - throws Exception - { - Key key; - Cipher in, out; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - key = new SecretKeySpec(keyBytes, "GOST28147"); - - in = Cipher.getInstance("GOST28147/CFB8/NoPadding", "BC"); - out = Cipher.getInstance("GOST28147/CFB8/NoPadding", "BC"); - byte[] iv = {1,2,3,4,5,6,7,8}; - - out.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv)); - in.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(iv)); - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!areEqual(bytes, output)) - { - fail("GOST28147 failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - - if (!areEqual(bytes, input)) - { - fail("GOST28147 failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - } - - private void oidTest() - { - String[] oids = { - CryptoProObjectIdentifiers.gostR28147_gcfb.getId(), - }; - - String[] names = { - "GOST28147/GCFB/NoPadding" - }; - - try - { - - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; - IvParameterSpec ivSpec = new IvParameterSpec(new byte[8]); - - for (int i = 0; i != oids.length; i++) - { - Cipher c1 = Cipher.getInstance(oids[i], "BC"); - Cipher c2 = Cipher.getInstance(names[i], "BC"); - KeyGenerator kg = KeyGenerator.getInstance(oids[i], "BC"); - - SecretKey k = kg.generateKey(); - - c1.init(Cipher.ENCRYPT_MODE, k, ivSpec); - c2.init(Cipher.DECRYPT_MODE, k, ivSpec); - - byte[] result = c2.doFinal(c1.doFinal(data)); - - if (!areEqual(data, result)) - { - fail("failed OID test"); - } - } - } - catch (Exception ex) - { - fail("failed exception " + ex.toString(), ex); - } - } - - public void performTest() - throws Exception - { - for (int i = 0; i != cipherTests.length; i += 8) - { - testECB(Integer.parseInt(cipherTests[i]), - Hex.decode(cipherTests[i + 1]), - Hex.decode(cipherTests[i + 2]), - Hex.decode(cipherTests[i + 3])); - - testCFB(Integer.parseInt(cipherTests[i + 4]), - Hex.decode(cipherTests[i + 4 + 1]), - Hex.decode(cipherTests[i + 4 + 2]), - Hex.decode(cipherTests[i + 4 + 3])); - - oidTest(); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new GOST28147Test()); - } - } diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/GOST3410Test.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/GOST3410Test.java deleted file mode 100644 index 472f2742..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/GOST3410Test.java +++ /dev/null @@ -1,517 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.math.BigInteger; -import java.security.InvalidKeyException; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.SignatureException; -import java.security.UnrecoverableKeyException; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; -import java.util.Date; - -import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.interfaces.ECPrivateKey; -import org.bouncycastle.jce.interfaces.ECPublicKey; -import org.bouncycastle.jce.interfaces.GOST3410PrivateKey; -import org.bouncycastle.jce.interfaces.GOST3410PublicKey; -import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECNamedCurveGenParameterSpec; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.jce.spec.ECPrivateKeySpec; -import org.bouncycastle.jce.spec.ECPublicKeySpec; -import org.bouncycastle.jce.spec.GOST3410ParameterSpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.math.ec.ECFieldElement; -import org.bouncycastle.math.ec.ECPoint; -import org.bouncycastle.util.BigIntegers; -import org.bouncycastle.util.test.FixedSecureRandom; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.x509.X509V3CertificateGenerator; - -public class GOST3410Test - extends SimpleTest -{ - private void ecGOST3410Test() - throws Exception - { - - BigInteger r = new BigInteger("29700980915817952874371204983938256990422752107994319651632687982059210933395"); - BigInteger s = new BigInteger("46959264877825372965922731380059061821746083849389763294914877353246631700866"); - - byte[] kData = BigIntegers.asUnsignedByteArray(new BigInteger("53854137677348463731403841147996619241504003434302020712960838528893196233395")); - - SecureRandom k = new FixedSecureRandom(kData); - - BigInteger mod_p = new BigInteger("57896044618658097711785492504343953926634992332820282019728792003956564821041"); //p - - ECCurve curve = new ECCurve.Fp( - mod_p, // p - new BigInteger("7"), // a - new BigInteger("43308876546767276905765904595650931995942111794451039583252968842033849580414")); // b - - ECParameterSpec spec = new ECParameterSpec( - curve, - new ECPoint.Fp(curve, - new ECFieldElement.Fp(mod_p,new BigInteger("2")), // x - new ECFieldElement.Fp(mod_p,new BigInteger("4018974056539037503335449422937059775635739389905545080690979365213431566280"))), // y - new BigInteger("57896044618658097711785492504343953927082934583725450622380973592137631069619")); // q - - ECPrivateKeySpec priKey = new ECPrivateKeySpec( - new BigInteger("55441196065363246126355624130324183196576709222340016572108097750006097525544"), // d - spec); - - ECPublicKeySpec pubKey = new ECPublicKeySpec( - new ECPoint.Fp(curve, - new ECFieldElement.Fp(mod_p, new BigInteger("57520216126176808443631405023338071176630104906313632182896741342206604859403")), // x - new ECFieldElement.Fp(mod_p, new BigInteger("17614944419213781543809391949654080031942662045363639260709847859438286763994"))), // y - spec); - - Signature sgr = Signature.getInstance("ECGOST3410", "BC"); - KeyFactory f = KeyFactory.getInstance("ECGOST3410", "BC"); - PrivateKey sKey = f.generatePrivate(priKey); - PublicKey vKey = f.generatePublic(pubKey); - - sgr.initSign(sKey, k); - - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail("ECGOST3410 verification failed"); - } - - BigInteger[] sig = decode(sigBytes); - - if (!r.equals(sig[0])) - { - fail( - ": r component wrong." + System.getProperty("line.separator") - + " expecting: " + r + System.getProperty("line.separator") - + " got : " + sig[0]); - } - - if (!s.equals(sig[1])) - { - fail( - ": s component wrong." + System.getProperty("line.separator") - + " expecting: " + s + System.getProperty("line.separator") - + " got : " + sig[1]); - } - } - - private void generationTest() - throws Exception - { - Signature s = Signature.getInstance("GOST3410", "BC"); - KeyPairGenerator g = KeyPairGenerator.getInstance("GOST3410", "BC"); - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - GOST3410ParameterSpec gost3410P = new GOST3410ParameterSpec(CryptoProObjectIdentifiers.gostR3410_94_CryptoPro_A.getId()); - - g.initialize(gost3410P, new SecureRandom()); - - KeyPair p = g.generateKeyPair(); - - PrivateKey sKey = p.getPrivate(); - PublicKey vKey = p.getPublic(); - - s.initSign(sKey); - - s.update(data); - - byte[] sigBytes = s.sign(); - - s = Signature.getInstance("GOST3410", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("GOST3410 verification failed"); - } - - // - // default initialisation test - // - s = Signature.getInstance("GOST3410", "BC"); - g = KeyPairGenerator.getInstance("GOST3410", "BC"); - - p = g.generateKeyPair(); - - sKey = p.getPrivate(); - vKey = p.getPublic(); - - s.initSign(sKey); - - s.update(data); - - sigBytes = s.sign(); - - s = Signature.getInstance("GOST3410", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("GOST3410 verification failed"); - } - - // - // encoded test - // - KeyFactory f = KeyFactory.getInstance("GOST3410", "BC"); - - X509EncodedKeySpec x509s = new X509EncodedKeySpec(vKey.getEncoded()); - GOST3410PublicKey k1 = (GOST3410PublicKey)f.generatePublic(x509s); - - if (!k1.getY().equals(((GOST3410PublicKey)vKey).getY())) - { - fail("public number not decoded properly"); - } - - if (!k1.getParameters().equals(((GOST3410PublicKey)vKey).getParameters())) - { - fail("public parameters not decoded properly"); - } - - PKCS8EncodedKeySpec pkcs8 = new PKCS8EncodedKeySpec(sKey.getEncoded()); - GOST3410PrivateKey k2 = (GOST3410PrivateKey)f.generatePrivate(pkcs8); - - if (!k2.getX().equals(((GOST3410PrivateKey)sKey).getX())) - { - fail("private number not decoded properly"); - } - - if (!k2.getParameters().equals(((GOST3410PrivateKey)sKey).getParameters())) - { - fail("private number not decoded properly"); - } - - k2 = (GOST3410PrivateKey)serializeDeserialize(sKey); - if (!k2.getX().equals(((GOST3410PrivateKey)sKey).getX())) - { - fail("private number not deserialised properly"); - } - - if (!k2.getParameters().equals(((GOST3410PrivateKey)sKey).getParameters())) - { - fail("private number not deserialised properly"); - } - - checkEquals(k2, sKey); - - if (!(k2 instanceof PKCS12BagAttributeCarrier)) - { - fail("private key not implementing PKCS12 attribute carrier"); - } - - k1 = (GOST3410PublicKey)serializeDeserialize(vKey); - - if (!k1.getY().equals(((GOST3410PublicKey)vKey).getY())) - { - fail("public number not deserialised properly"); - } - - if (!k1.getParameters().equals(((GOST3410PublicKey)vKey).getParameters())) - { - fail("public parameters not deserialised properly"); - } - - checkEquals(k1, vKey); - - // - // ECGOST3410 generation test - // - s = Signature.getInstance("ECGOST3410", "BC"); - g = KeyPairGenerator.getInstance("ECGOST3410", "BC"); - -// BigInteger mod_p = new BigInteger("57896044618658097711785492504343953926634992332820282019728792003956564821041"); //p -// -// ECCurve curve = new ECCurve.Fp( -// mod_p, // p -// new BigInteger("7"), // a -// new BigInteger("43308876546767276905765904595650931995942111794451039583252968842033849580414")); // b -// -// ECParameterSpec ecSpec = new ECParameterSpec( -// curve, -// new ECPoint.Fp(curve, -// new ECFieldElement.Fp(mod_p,new BigInteger("2")), // x -// new ECFieldElement.Fp(mod_p,new BigInteger("4018974056539037503335449422937059775635739389905545080690979365213431566280"))), // y -// new BigInteger("57896044618658097711785492504343953927082934583725450622380973592137631069619")); // q - - g.initialize(new ECNamedCurveGenParameterSpec("GostR3410-2001-CryptoPro-A"), new SecureRandom()); - - p = g.generateKeyPair(); - - sKey = p.getPrivate(); - vKey = p.getPublic(); - - s.initSign(sKey); - - s.update(data); - - sigBytes = s.sign(); - - s = Signature.getInstance("ECGOST3410", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("ECGOST3410 verification failed"); - } - - // - // encoded test - // - f = KeyFactory.getInstance("ECGOST3410", "BC"); - - x509s = new X509EncodedKeySpec(vKey.getEncoded()); - ECPublicKey eck1 = (ECPublicKey)f.generatePublic(x509s); - - if (!eck1.getQ().equals(((ECPublicKey)vKey).getQ())) - { - fail("public number not decoded properly"); - } - - if (!eck1.getParameters().equals(((ECPublicKey)vKey).getParameters())) - { - fail("public parameters not decoded properly"); - } - - pkcs8 = new PKCS8EncodedKeySpec(sKey.getEncoded()); - ECPrivateKey eck2 = (ECPrivateKey)f.generatePrivate(pkcs8); - - if (!eck2.getD().equals(((ECPrivateKey)sKey).getD())) - { - fail("private number not decoded properly"); - } - - if (!eck2.getParameters().equals(((ECPrivateKey)sKey).getParameters())) - { - fail("private number not decoded properly"); - } - - eck2 = (ECPrivateKey)serializeDeserialize(sKey); - if (!eck2.getD().equals(((ECPrivateKey)sKey).getD())) - { - fail("private number not decoded properly"); - } - - if (!eck2.getParameters().equals(((ECPrivateKey)sKey).getParameters())) - { - fail("private number not decoded properly"); - } - - checkEquals(eck2, sKey); - - if (!(eck2 instanceof PKCS12BagAttributeCarrier)) - { - fail("private key not implementing PKCS12 attribute carrier"); - } - - eck1 = (ECPublicKey)serializeDeserialize(vKey); - - if (!eck1.getQ().equals(((ECPublicKey)vKey).getQ())) - { - fail("public number not decoded properly"); - } - - if (!eck1.getParameters().equals(((ECPublicKey)vKey).getParameters())) - { - fail("public parameters not decoded properly"); - } - - checkEquals(eck1, vKey); - } - - private void keyStoreTest(PrivateKey sKey, PublicKey vKey) - throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, NoSuchProviderException, SignatureException, InvalidKeyException, UnrecoverableKeyException - { - // - // keystore test - // - KeyStore ks = KeyStore.getInstance("JKS"); - - ks.load(null, null); - - // - // create the certificate - version 3 - // - X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(new X509Principal("CN=Test")); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000)); - certGen.setSubjectDN(new X509Principal("CN=Test")); - certGen.setPublicKey(vKey); - certGen.setSignatureAlgorithm("GOST3411withGOST3410"); - - X509Certificate cert = certGen.generate(sKey, "BC"); - - ks.setKeyEntry("gost",sKey, "gost".toCharArray(), new Certificate[] { cert }); - - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - ks.store(bOut, "gost".toCharArray()); - - ks = KeyStore.getInstance("JKS"); - - ks.load(new ByteArrayInputStream(bOut.toByteArray()), "gost".toCharArray()); - - PrivateKey gKey = (PrivateKey)ks.getKey("gost", "gost".toCharArray()); - } - - private void checkEquals(Object o1, Object o2) - { - if (!o1.equals(o2)) - { - fail("comparison test failed"); - } - - if (o1.hashCode() != o2.hashCode()) - { - fail("hashCode test failed"); - } - } - - private void parametersTest() - throws Exception - { -// AlgorithmParameterGenerator a = AlgorithmParameterGenerator.getInstance("GOST3410", "BC"); -// a.init(512, random); -// AlgorithmParameters params = a.generateParameters(); -// -// byte[] encodeParams = params.getEncoded(); -// -// AlgorithmParameters a2 = AlgorithmParameters.getInstance("GOST3410", "BC"); -// a2.init(encodeParams); -// -// // a and a2 should be equivalent! -// byte[] encodeParams_2 = a2.getEncoded(); -// -// if (!arrayEquals(encodeParams, encodeParams_2)) -// { -// fail("encode/decode parameters failed"); -// } - - GOST3410ParameterSpec gost3410P = new GOST3410ParameterSpec(CryptoProObjectIdentifiers.gostR3410_94_CryptoPro_B.getId()); - - KeyPairGenerator g = KeyPairGenerator.getInstance("GOST3410", "BC"); - g.initialize(gost3410P, new SecureRandom()); - KeyPair p = g.generateKeyPair(); - - PrivateKey sKey = p.getPrivate(); - PublicKey vKey = p.getPublic(); - - Signature s = Signature.getInstance("GOST3410", "BC"); - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - - s.initSign(sKey); - - s.update(data); - - byte[] sigBytes = s.sign(); - - s = Signature.getInstance("GOST3410", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("GOST3410 verification failed"); - } - - keyStoreTest(sKey, vKey); - } - - private BigInteger[] decode( - byte[] encoding) - { - byte[] r = new byte[32]; - byte[] s = new byte[32]; - - System.arraycopy(encoding, 0, s, 0, 32); - - System.arraycopy(encoding, 32, r, 0, 32); - - BigInteger[] sig = new BigInteger[2]; - - sig[0] = new BigInteger(1, r); - sig[1] = new BigInteger(1, s); - - return sig; - } - - private Object serializeDeserialize(Object o) - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(o); - oOut.close(); - - ObjectInputStream oIn = new ObjectInputStream(new ByteArrayInputStream(bOut.toByteArray())); - - return oIn.readObject(); - } - - public String getName() - { - return "GOST3410/ECGOST3410"; - } - - public void performTest() - throws Exception - { - ecGOST3410Test(); - generationTest(); - parametersTest(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new GOST3410Test()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/HMacTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/HMacTest.java deleted file mode 100644 index 080df072..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/HMacTest.java +++ /dev/null @@ -1,187 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.Security; - -import javax.crypto.KeyGenerator; -import javax.crypto.Mac; -import javax.crypto.SecretKey; -import javax.crypto.spec.RC5ParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.asn1.iana.IANAObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; - -/** - * HMAC tester - */ -public class HMacTest - extends SimpleTest -{ - static byte[] keyBytes = Hex.decode("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"); - static byte[] message = "Hi There".getBytes(); - static byte[] output1 = Hex.decode("b617318655057264e28bc0b6fb378c8ef146be00"); - static byte[] outputMD5 = Hex.decode("5ccec34ea9656392457fa1ac27f08fbc"); - static byte[] outputMD2 = Hex.decode("dc1923ef5f161d35bef839ca8c807808"); - static byte[] outputMD4 = Hex.decode("5570ce964ba8c11756cdc3970278ff5a"); - static byte[] output224 = Hex.decode("896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22"); - static byte[] output256 = Hex.decode("b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7"); - static byte[] output384 = Hex.decode("afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6"); - static byte[] output512 = Hex.decode("87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854"); - static byte[] output512_224 = Hex.decode("b244ba01307c0e7a8ccaad13b1067a4cf6b961fe0c6a20bda3d92039"); - static byte[] output512_256 = Hex.decode("9f9126c3d9c3c330d760425ca8a217e31feae31bfe70196ff81642b868402eab"); - static byte[] outputRipeMD128 = Hex.decode("fda5717fb7e20cf05d30bb286a44b05d"); - static byte[] outputRipeMD160 = Hex.decode("24cb4bd67d20fc1a5d2ed7732dcc39377f0a5668"); - static byte[] outputTiger = Hex.decode("1d7a658c75f8f004916e7b07e2a2e10aec7de2ae124d3647"); - static byte[] outputOld384 = Hex.decode("0a046aaa0255e432912228f8ccda437c8a8363fb160afb0570ab5b1fd5ddc20eb1888b9ed4e5b6cb5bc034cd9ef70e40"); - static byte[] outputOld512 = Hex.decode("9656975ee5de55e75f2976ecce9a04501060b9dc22a6eda2eaef638966280182477fe09f080b2bf564649cad42af8607a2bd8d02979df3a980f15e2326a0a22a"); - - public HMacTest() - { - } - - public void testHMac( - String hmacName, - byte[] output) - throws Exception - { - SecretKey key = new SecretKeySpec(keyBytes, hmacName); - byte[] out; - Mac mac; - - mac = Mac.getInstance(hmacName, "BC"); - - mac.init(key); - - mac.reset(); - - mac.update(message, 0, message.length); - - out = mac.doFinal(); - - if (!areEqual(out, output)) - { - fail("Failed - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(out))); - } - - // no key generator for the old algorithms - if (hmacName.startsWith("Old")) - { - return; - } - - KeyGenerator kGen = KeyGenerator.getInstance(hmacName, "BC"); - - mac.init(kGen.generateKey()); - - mac.update(message); - - out = mac.doFinal(); - } - - private void testExceptions() - throws Exception - { - Mac mac = null; - - mac = Mac.getInstance("HmacSHA1", "BC"); - - byte [] b = {(byte)1, (byte)2, (byte)3, (byte)4, (byte)5}; - SecretKeySpec sks = new SecretKeySpec(b, "HmacSHA1"); - RC5ParameterSpec algPS = new RC5ParameterSpec(100, 100, 100); - - try - { - mac.init(sks, algPS); - } - catch (InvalidAlgorithmParameterException e) - { - // ignore okay - } - - try - { - mac.init(null, null); - } - catch (InvalidKeyException e) - { - // ignore okay - } - catch (InvalidAlgorithmParameterException e) - { - // ignore okay - } - - try - { - mac.init(null); - } - catch (InvalidKeyException e) - { - // ignore okay - } - } - - public void performTest() - throws Exception - { - testHMac("HMac-SHA1", output1); - testHMac("HMac-MD5", outputMD5); - testHMac("HMac-MD4", outputMD4); - testHMac("HMac-MD2", outputMD2); - testHMac("HMac-SHA224", output224); - testHMac("HMac-SHA256", output256); - testHMac("HMac-SHA384", output384); - testHMac("HMac-SHA512", output512); - testHMac("HMac-SHA512/224", output512_224); - testHMac("HMac-SHA512/256", output512_256); - testHMac("HMac-RIPEMD128", outputRipeMD128); - testHMac("HMac-RIPEMD160", outputRipeMD160); - testHMac("HMac-TIGER", outputTiger); - - testHMac("HMac/SHA1", output1); - testHMac("HMac/MD5", outputMD5); - testHMac("HMac/MD4", outputMD4); - testHMac("HMac/MD2", outputMD2); - testHMac("HMac/SHA224", output224); - testHMac("HMac/SHA256", output256); - testHMac("HMac/SHA384", output384); - testHMac("HMac/SHA512", output512); - testHMac("HMac/RIPEMD128", outputRipeMD128); - testHMac("HMac/RIPEMD160", outputRipeMD160); - testHMac("HMac/TIGER", outputTiger); - - testHMac(PKCSObjectIdentifiers.id_hmacWithSHA1.getId(), output1); - testHMac(PKCSObjectIdentifiers.id_hmacWithSHA224.getId(), output224); - testHMac(PKCSObjectIdentifiers.id_hmacWithSHA256.getId(), output256); - testHMac(PKCSObjectIdentifiers.id_hmacWithSHA384.getId(), output384); - testHMac(PKCSObjectIdentifiers.id_hmacWithSHA512.getId(), output512); - testHMac(IANAObjectIdentifiers.hmacSHA1.getId(), output1); - testHMac(IANAObjectIdentifiers.hmacMD5.getId(), outputMD5); - testHMac(IANAObjectIdentifiers.hmacRIPEMD160.getId(), outputRipeMD160); - testHMac(IANAObjectIdentifiers.hmacTIGER.getId(), outputTiger); - - // test for compatibility with broken HMac. - testHMac("OldHMacSHA384", outputOld384); - testHMac("OldHMacSHA512", outputOld512); - - testExceptions(); - } - - public String getName() - { - return "HMac"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new HMacTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/IESTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/IESTest.java deleted file mode 100644 index 8dc1c0b5..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/IESTest.java +++ /dev/null @@ -1,244 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.AlgorithmParameters; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.spec.DHParameterSpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.jce.spec.IEKeySpec; -import org.bouncycastle.jce.spec.IESParameterSpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * test for ECIES - Elliptic Curve Integrated Encryption Scheme - */ -public class IESTest - extends SimpleTest -{ - private BigInteger g512 = new BigInteger("153d5d6172adb43045b68ae8e1de1070b6137005686d29d3d73a7749199681ee5b212c9b96bfdcfa5b20cd5e3fd2044895d609cf9b410b7a0f12ca1cb9a428cc", 16); - private BigInteger p512 = new BigInteger("9494fec095f3b85ee286542b3836fc81a5dd0a0349b4c239dd38744d488cf8e31db8bcb7d33b41abb9e5a33cca9144b1cef332c94bf0573bf047a3aca98cdf3b", 16); - - IESTest() - { - } - - public String getName() - { - return "IES"; - } - - public void performTest() - throws Exception - { - KeyPairGenerator g = KeyPairGenerator.getInstance("ECIES", "BC"); - - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - g.initialize(ecSpec, new SecureRandom()); - - Cipher c1 = Cipher.getInstance("ECIES", "BC"); - Cipher c2 = Cipher.getInstance("ECIES", "BC"); - - doTest(g, c1, c2); - - g = KeyPairGenerator.getInstance("ECIES", "BC"); - - g.initialize(192, new SecureRandom()); - - doTest(g, c1, c2); - - g = KeyPairGenerator.getInstance("ECIES", "BC"); - - g.initialize(239, new SecureRandom()); - - doTest(g, c1, c2); - - g = KeyPairGenerator.getInstance("ECIES", "BC"); - - g.initialize(256, new SecureRandom()); - - doTest(g, c1, c2); - - doDefTest(g, c1, c2); - - DHParameterSpec dhParams = new DHParameterSpec(p512, g512); - - c1 = Cipher.getInstance("IES", "BC"); - c2 = Cipher.getInstance("IES", "BC"); - - g = KeyPairGenerator.getInstance("DH", "BC"); - - g.initialize(dhParams); - - doTest(g, c1, c2); - - doDefTest(g, c1, c2); - } - - public void doTest( - KeyPairGenerator g, - Cipher c1, - Cipher c2) - throws Exception - { - // - // a side - // - KeyPair aKeyPair = g.generateKeyPair(); - PublicKey aPub = aKeyPair.getPublic(); - PrivateKey aPriv = aKeyPair.getPrivate(); - - // - // b side - // - KeyPair bKeyPair = g.generateKeyPair(); - PublicKey bPub = bKeyPair.getPublic(); - PrivateKey bPriv = bKeyPair.getPrivate(); - - // - // stream test - // - - IEKeySpec c1Key = new IEKeySpec(aPriv, bPub); - IEKeySpec c2Key = new IEKeySpec(bPriv, aPub); - - byte[] d = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; - byte[] e = new byte[] { 8, 7, 6, 5, 4, 3, 2, 1 }; - - IESParameterSpec param = new IESParameterSpec(d, e, 128); - - c1.init(Cipher.ENCRYPT_MODE, c1Key, param); - - c2.init(Cipher.DECRYPT_MODE, c2Key, param); - - byte[] message = Hex.decode("1234567890abcdef"); - - byte[] out1 = c1.doFinal(message, 0, message.length); - - byte[] out2 = c2.doFinal(out1, 0, out1.length); - - if (!areEqual(out2, message)) - { - fail("stream cipher test failed"); - } - } - - public void doDefTest( - KeyPairGenerator g, - Cipher c1, - Cipher c2) - throws Exception - { - // - // a side - // - KeyPair aKeyPair = g.generateKeyPair(); - PublicKey aPub = aKeyPair.getPublic(); - PrivateKey aPriv = aKeyPair.getPrivate(); - - // - // b side - // - KeyPair bKeyPair = g.generateKeyPair(); - PublicKey bPub = bKeyPair.getPublic(); - PrivateKey bPriv = bKeyPair.getPrivate(); - - // - // stream test - // - IEKeySpec c1Key = new IEKeySpec(aPriv, bPub); - IEKeySpec c2Key = new IEKeySpec(bPriv, aPub); - - c1.init(Cipher.ENCRYPT_MODE, c1Key); - - AlgorithmParameters param = c1.getParameters(); - - c2.init(Cipher.DECRYPT_MODE, c2Key, param); - - byte[] message = Hex.decode("1234567890abcdef"); - - byte[] out1 = c1.doFinal(message, 0, message.length); - - byte[] out2 = c2.doFinal(out1, 0, out1.length); - - if (!areEqual(out2, message)) - { - fail("stream cipher test failed"); - } - - // - // int doFinal - // - int len1 = c1.doFinal(message, 0, message.length, out1, 0); - - if (len1 != out1.length) - { - fail("encryption length wrong"); - } - - int len2 = c2.doFinal(out1, 0, out1.length, out2, 0); - - if (len2 != out2.length) - { - fail("decryption length wrong"); - } - - if (!areEqual(out2, message)) - { - fail("stream cipher test failed"); - } - - // - // int doFinal with update - // - len1 = c1.update(message, 0, 2, out1, 0); - - len1 += c1.doFinal(message, 2, message.length - 2, out1, len1); - - if (len1 != out1.length) - { - fail("update encryption length wrong"); - } - - len2 = c2.update(out1, 0, 2, out2, 0); - - len2 += c2.doFinal(out1, 2, out1.length - 2, out2, len2); - - if (len2 != out2.length) - { - fail("update decryption length wrong"); - } - - if (!areEqual(out2, message)) - { - fail("update stream cipher test failed"); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new IESTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/ImplicitlyCaTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/ImplicitlyCaTest.java deleted file mode 100644 index fa90108e..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/ImplicitlyCaTest.java +++ /dev/null @@ -1,342 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.interfaces.ECKey; -import java.security.spec.ECFieldFp; -import java.security.spec.EllipticCurve; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.DERNull; -import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; -import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; -import org.bouncycastle.jcajce.provider.config.ConfigurableProvider; -import org.bouncycastle.jce.ECPointUtil; -import org.bouncycastle.jce.interfaces.ECPrivateKey; -import org.bouncycastle.jce.interfaces.ECPublicKey; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.jce.spec.ECPrivateKeySpec; -import org.bouncycastle.jce.spec.ECPublicKeySpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.FixedSecureRandom; -import org.bouncycastle.util.test.SimpleTest; - -public class ImplicitlyCaTest - extends SimpleTest -{ - byte[] k1 = Hex.decode("d5014e4b60ef2ba8b6211b4062ba3224e0427dd3"); - byte[] k2 = Hex.decode("345e8d05c075c3a508df729a1685690e68fcfb8c8117847e89063bca1f85d968fd281540b6e13bd1af989a1fbf17e06462bf511f9d0b140fb48ac1b1baa5bded"); - - SecureRandom random = new FixedSecureRandom(new byte[][] { k1, k2 }); - - public void performTest() - throws Exception - { - testBCAPI(); - - testJDKAPI(); - - testKeyFactory(); - - testBasicThreadLocal(); - } - - private void testBCAPI() - throws Exception - { - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - ConfigurableProvider config = (ConfigurableProvider)Security.getProvider("BC"); - - config.setParameter(ConfigurableProvider.EC_IMPLICITLY_CA, ecSpec); - - g.initialize(null, new SecureRandom()); - - KeyPair p = g.generateKeyPair(); - - ECPrivateKey sKey = (ECPrivateKey)p.getPrivate(); - ECPublicKey vKey = (ECPublicKey)p.getPublic(); - - testECDSA(sKey, vKey); - - testBCParamsAndQ(sKey, vKey); - testEC5Params(sKey, vKey); - - testEncoding(sKey, vKey); - } - - private void testKeyFactory() - throws Exception - { - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - ConfigurableProvider config = (ConfigurableProvider)Security.getProvider("BC"); - - config.setParameter(ConfigurableProvider.EC_IMPLICITLY_CA, ecSpec); - - g.initialize(null, new SecureRandom()); - - KeyPair p = g.generateKeyPair(); - - ECPrivateKey sKey = (ECPrivateKey)p.getPrivate(); - ECPublicKey vKey = (ECPublicKey)p.getPublic(); - - KeyFactory fact = KeyFactory.getInstance("ECDSA", "BC"); - - vKey = (ECPublicKey)fact.generatePublic(new ECPublicKeySpec(vKey.getQ(), null)); - sKey = (ECPrivateKey)fact.generatePrivate(new ECPrivateKeySpec(sKey.getD(), null)); - - testECDSA(sKey, vKey); - - testBCParamsAndQ(sKey, vKey); - testEC5Params(sKey, vKey); - - testEncoding(sKey, vKey); - - ECPublicKey vKey2 = (ECPublicKey)fact.generatePublic(new ECPublicKeySpec(vKey.getQ(), null)); - ECPrivateKey sKey2 = (ECPrivateKey)fact.generatePrivate(new ECPrivateKeySpec(sKey.getD(), null)); - - if (!vKey.equals(vKey2) || vKey.hashCode() != vKey2.hashCode()) - { - fail("public equals/hashCode failed"); - } - - if (!sKey.equals(sKey2) || sKey.hashCode() != sKey2.hashCode()) - { - fail("private equals/hashCode failed"); - } - - // check we can get specs. - fact.getKeySpec(vKey, java.security.spec.ECPublicKeySpec.class); - - fact.getKeySpec(sKey, java.security.spec.ECPrivateKeySpec.class); - } - - private void testJDKAPI() - throws Exception - { - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - EllipticCurve curve = new EllipticCurve( - new ECFieldFp(new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839")), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - java.security.spec.ECParameterSpec ecSpec = new java.security.spec.ECParameterSpec( - curve, - ECPointUtil.decodePoint(curve, Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307"), // n - 1); // h - - - ConfigurableProvider config = (ConfigurableProvider)Security.getProvider("BC"); - - config.setParameter(ConfigurableProvider.EC_IMPLICITLY_CA, ecSpec); - - g.initialize(null, new SecureRandom()); - - KeyPair p = g.generateKeyPair(); - - ECPrivateKey sKey = (ECPrivateKey)p.getPrivate(); - ECPublicKey vKey = (ECPublicKey)p.getPublic(); - - testECDSA(sKey, vKey); - - testBCParamsAndQ(sKey, vKey); - testEC5Params(sKey, vKey); - - testEncoding(sKey, vKey); - } - - private void testBasicThreadLocal() - throws Exception - { - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - EllipticCurve curve = new EllipticCurve( - new ECFieldFp(new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839")), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - java.security.spec.ECParameterSpec ecSpec = new java.security.spec.ECParameterSpec( - curve, - ECPointUtil.decodePoint(curve, Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307"), // n - 1); // h - - - ConfigurableProvider config = (ConfigurableProvider)Security.getProvider("BC"); - - config.setParameter(ConfigurableProvider.THREAD_LOCAL_EC_IMPLICITLY_CA, ecSpec); - - g.initialize(null, new SecureRandom()); - - KeyPair p = g.generateKeyPair(); - - ECPrivateKey sKey = (ECPrivateKey)p.getPrivate(); - ECPublicKey vKey = (ECPublicKey)p.getPublic(); - - testECDSA(sKey, vKey); - - testBCParamsAndQ(sKey, vKey); - testEC5Params(sKey, vKey); - - testEncoding(sKey, vKey); - } - - private void testECDSA( - ECPrivateKey sKey, - ECPublicKey vKey) - throws Exception - { - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - Signature s = Signature.getInstance("ECDSA", "BC"); - - s.initSign(sKey); - - s.update(data); - - byte[] sigBytes = s.sign(); - - s = Signature.getInstance("ECDSA", "BC"); - - s.initVerify(vKey); - - s.update(data); - - if (!s.verify(sigBytes)) - { - fail("ECDSA verification failed"); - } - } - - private void testEncoding( - ECPrivateKey privKey, - ECPublicKey pubKey) - throws Exception - { - KeyFactory kFact = KeyFactory.getInstance("ECDSA", "BC"); - - byte[] bytes = privKey.getEncoded(); - - PrivateKeyInfo sInfo = PrivateKeyInfo.getInstance(new ASN1InputStream(bytes).readObject()); - - if (!sInfo.getPrivateKeyAlgorithm().getParameters().equals(DERNull.INSTANCE)) - { - fail("private key parameters wrong"); - } - - ECPrivateKey sKey = (ECPrivateKey)kFact.generatePrivate(new PKCS8EncodedKeySpec(bytes)); - - if (!sKey.equals(privKey)) - { - fail("private equals failed"); - } - - if (sKey.hashCode() != privKey.hashCode()) - { - fail("private hashCode failed"); - } - - bytes = pubKey.getEncoded(); - - SubjectPublicKeyInfo vInfo = SubjectPublicKeyInfo.getInstance(new ASN1InputStream(bytes).readObject()); - - if (!vInfo.getAlgorithm().getParameters().equals(DERNull.INSTANCE)) - { - fail("public key parameters wrong"); - } - - ECPublicKey vKey = (ECPublicKey)kFact.generatePublic(new X509EncodedKeySpec(bytes)); - - if (!vKey.equals(pubKey) || vKey.hashCode() != pubKey.hashCode()) - { - fail("public equals/hashCode failed"); - } - - testBCParamsAndQ(sKey, vKey); - testEC5Params(sKey, vKey); - - testECDSA(sKey, vKey); - } - - private void testBCParamsAndQ( - ECPrivateKey sKey, - ECPublicKey vKey) - { - if (sKey.getParameters() != null) - { - fail("parameters exposed in private key"); - } - - if (vKey.getParameters() != null) - { - fail("parameters exposed in public key"); - } - - if (vKey.getQ().getCurve() != null) - { - fail("curve exposed in public point"); - } - } - - private void testEC5Params( - ECPrivateKey sKey, - ECPublicKey vKey) - { - java.security.interfaces.ECKey k = (java.security.interfaces.ECKey)sKey; - - if (k.getParams() != null) - { - fail("parameters exposed in private key"); - } - - k = (ECKey)vKey; - if (k.getParams() != null) - { - fail("parameters exposed in public key"); - } - } - - public String getName() - { - return "ImplicitlyCA"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new ImplicitlyCaTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/JceTestUtil.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/JceTestUtil.java deleted file mode 100644 index 9c0805a8..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/JceTestUtil.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Security; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -abstract class JceTestUtil -{ - private JceTestUtil() - { - } - - static String[] getRegisteredAlgorithms(String prefix, String[] exclusionPatterns) - { - final BouncyCastleProvider prov = (BouncyCastleProvider)Security.getProvider("BC"); - - List matches = new ArrayList(); - Enumeration algos = prov.keys(); - while (algos.hasMoreElements()) - { - String algo = (String)algos.nextElement(); - if (!algo.startsWith(prefix)) - { - continue; - } - String algoName = algo.substring(prefix.length()); - if (!isExcluded(algoName, exclusionPatterns)) - { - matches.add(algoName); - } - } - return (String[])matches.toArray(new String[matches.size()]); - } - - private static boolean isExcluded(String algoName, String[] exclusionPatterns) - { - for (int i = 0; i < exclusionPatterns.length; i++) - { - if (algoName.contains(exclusionPatterns[i])) - { - return true; - } - } - return false; - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/KeyStoreTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/KeyStoreTest.java deleted file mode 100644 index 4dc62479..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/KeyStoreTest.java +++ /dev/null @@ -1,424 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.math.BigInteger; -import java.security.Key; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.KeyStore; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.cert.Certificate; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; -import java.util.Date; -import java.util.Hashtable; -import java.util.Vector; - -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.x509.X509V3CertificateGenerator; - -/** - * Exercise the various key stores, making sure we at least get back what we put in! - * <p> - * This tests both the BKS, and the UBER key store. - */ -public class KeyStoreTest - extends SimpleTest -{ - static char[] passwd = { 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd' }; - - byte[] v1BKS = Base64.decode( - "AAAAAQAAABTqZbNMyPjsFazhFplWWDMBLPRdRAAABcYEAAdhbmRyb2lkAAAB" - + "NOifkPwAAAAAAAAAPAAAABTZOLhcyhB0gKyfoDvyQbpzftB7GgAABEYPrZP8" - + "q20AJLETjDv0K9C5rIl1erpyvpv20bqcbghK6wD0b8OP5/XzOz/8knhxmqJZ" - + "3yRJMw=="); - byte[] v2BKS = Base64.decode( - "AAAAAgAAABSkmTXz4VIznO1SSUqsIHdxWcxsuQAABFMEAAdhbmRyb2lkAAABN" + - "OifkPwAAAAAAAAAPAAAABTZOLhcyhB0gKyfoDvyQbpzftB7GgAABEYPrZP8q2" + - "0AJLETjDv0K9C5rIl1erpyvpv20bqcbghK6wBO59KOGPvSrmJpd32P6ZAh9qLZJw=="); - - byte[] v1UBER = Base64.decode( - "AAAAAQAAABRP0F6p2p3FyQKqyJiJt3NbvdybiwAAB2znqrO779YIW5gMtbt+" - + "NUs96VPPcfZiKJPg7RKH7Yu3CQB0/g9nYsvgFB0fQ05mHcW3KjntN2/31A6G" - + "i00n4ZnUTjJL16puZnQrloeGXxFy58tjwkFuwJ7V7ELYgiZlls0beHSdDGQW" - + "iyYECwWs1la/"); - byte[] v2UBER = Base64.decode( - "AAAAAgAAABQ/D9k3376OG/REg4Ams9Up332tLQAABujoVcsRcKWwhlo4mMg5" - + "lF2vJfK+okIYecJGWCvdykF5r8kDn68llt52IDXDkpRXVXcNJ0/aD7sa7iZ0" - + "SL0TAwcfp/9v4j/w8slj/qgO0i/76+zROrP0NGFIa5k/iOg5Z0Tj77muMaJf" - + "n3vLlIHa4IsX"); - - byte[] negSaltBKS = Base64.decode( - "AAAAAv////+WnyglO06djy6JgCxGiIemnZdcOwAAB2AEAAdhbmRyb2lkAAAB" + - "NOifkPwAAAAAAAAAPAAAABTZOLhcyhB0gKyfoDvyQbpzftB7GgAABEYPrZP8" + - "q20AJLETjDv0K9C5rIl1erpyvpv20bqcbghK6wDrg6gUHsh27wNjUwkR+REe" + - "NeFYBg=="); - - char[] oldStorePass = "fredfred".toCharArray(); - - public void ecStoreTest( - String storeName) - throws Exception - { - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - g.initialize(ecSpec, new SecureRandom()); - - KeyPair keyPair = g.generateKeyPair(); - - PublicKey pubKey = keyPair.getPublic(); - PrivateKey privKey = keyPair.getPrivate(); - - // - // distinguished name table. - // - Hashtable attrs = new Hashtable(); - Vector order = new Vector(); - - attrs.put(X509Principal.C, "AU"); - attrs.put(X509Principal.O, "The Legion of the Bouncy Castle"); - attrs.put(X509Principal.L, "Melbourne"); - attrs.put(X509Principal.ST, "Victoria"); - attrs.put(X509Principal.E, "feedback-crypto@bouncycastle.org"); - - order.addElement(X509Principal.C); - order.addElement(X509Principal.O); - order.addElement(X509Principal.L); - order.addElement(X509Principal.ST); - order.addElement(X509Principal.E); - - // - // create the certificate - version 3 - // - X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(new X509Principal(order, attrs)); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000)); - certGen.setSubjectDN(new X509Principal(order, attrs)); - certGen.setPublicKey(pubKey); - certGen.setSignatureAlgorithm("ECDSAwithSHA1"); - - Certificate[] chain = new Certificate[1]; - - try - { - X509Certificate cert = certGen.generate(privKey); - - cert.checkValidity(new Date()); - - cert.verify(pubKey); - - ByteArrayInputStream bIn = new ByteArrayInputStream(cert.getEncoded()); - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - cert = (X509Certificate)fact.generateCertificate(bIn); - - chain[0] = cert; - } - catch (Exception e) - { - fail("error generating cert - " + e.toString()); - } - - KeyStore store = KeyStore.getInstance(storeName, "BC"); - - store.load(null, null); - - store.setKeyEntry("private", privKey, passwd, chain); - - // - // write out and read back store - // - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - store.store(bOut, passwd); - - ByteArrayInputStream bIn = new ByteArrayInputStream(bOut.toByteArray()); - - // - // start with a new key store - // - store = KeyStore.getInstance(storeName, "BC"); - - store.load(bIn, passwd); - - // - // load the private key - // - privKey = (PrivateKey)store.getKey("private", passwd); - - // - // double public key encoding test - // - byte[] pubEnc = pubKey.getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance(pubKey.getAlgorithm(), "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - - pubKey = (PublicKey)keyFac.generatePublic(pubX509); - - pubEnc = pubKey.getEncoded(); - keyFac = KeyFactory.getInstance(pubKey.getAlgorithm(), "BC"); - pubX509 = new X509EncodedKeySpec(pubEnc); - - pubKey = (PublicKey)keyFac.generatePublic(pubX509); - - // - // double private key encoding test - // - byte[] privEnc = privKey.getEncoded(); - - keyFac = KeyFactory.getInstance(privKey.getAlgorithm(), "BC"); - - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - privKey = (PrivateKey)keyFac.generatePrivate(privPKCS8); - - keyFac = KeyFactory.getInstance(privKey.getAlgorithm(), "BC"); - privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - privKey = (PrivateKey)keyFac.generatePrivate(privPKCS8); - } - - public void keyStoreTest( - String storeName) - throws Exception - { - KeyStore store = KeyStore.getInstance(storeName, "BC"); - - store.load(null, null); - - KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "BC"); - - gen.initialize(1024, new SecureRandom()); - - KeyPair pair = gen.generateKeyPair(); - RSAPrivateKey privKey = (RSAPrivateKey)pair.getPrivate(); - RSAPublicKey pubKey = (RSAPublicKey)pair.getPublic(); - BigInteger modulus = privKey.getModulus(); - BigInteger privateExponent = privKey.getPrivateExponent(); - - - // - // distinguished name table. - // - Hashtable attrs = new Hashtable(); - Vector order = new Vector(); - - attrs.put(X509Principal.C, "AU"); - attrs.put(X509Principal.O, "The Legion of the Bouncy Castle"); - attrs.put(X509Principal.L, "Melbourne"); - attrs.put(X509Principal.ST, "Victoria"); - attrs.put(X509Principal.EmailAddress, "feedback-crypto@bouncycastle.org"); - - order.addElement(X509Principal.C); - order.addElement(X509Principal.O); - order.addElement(X509Principal.L); - order.addElement(X509Principal.ST); - order.addElement(X509Principal.EmailAddress); - - // - // extensions - // - - // - // create the certificate. - // - X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(new X509Principal(order, attrs)); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000)); - certGen.setSubjectDN(new X509Principal(order, attrs)); - certGen.setPublicKey(pubKey); - certGen.setSignatureAlgorithm("MD5WithRSAEncryption"); - - Certificate[] chain = new Certificate[1]; - - try - { - X509Certificate cert = certGen.generate(privKey); - - cert.checkValidity(new Date()); - - cert.verify(pubKey); - - ByteArrayInputStream bIn = new ByteArrayInputStream(cert.getEncoded()); - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - cert = (X509Certificate)fact.generateCertificate(bIn); - - chain[0] = cert; - } - catch (Exception e) - { - fail("error generating cert - " + e.toString()); - } - - store.setKeyEntry("private", privKey, passwd, chain); - - // - // write out and read back store - // - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - store.store(bOut, passwd); - - ByteArrayInputStream bIn = new ByteArrayInputStream(bOut.toByteArray()); - - // - // start with a new key store - // - store = KeyStore.getInstance(storeName, "BC"); - - store.load(bIn, passwd); - - // - // verify public key - // - privKey = (RSAPrivateKey)store.getKey("private", passwd); - - if (!privKey.getModulus().equals(modulus)) - { - fail("private key modulus wrong"); - } - else if (!privKey.getPrivateExponent().equals(privateExponent)) - { - fail("private key exponent wrong"); - } - - // - // verify certificate - // - Certificate cert = store.getCertificateChain("private")[0]; - - cert.verify(pubKey); - } - - private void oldStoreTest() - throws Exception - { - checkStore(KeyStore.getInstance("BKS", "BC"), v1BKS); - checkStore(KeyStore.getInstance("BKS", "BC"), v2BKS); - checkStore(KeyStore.getInstance("UBER", "BC"), v1UBER); - checkStore(KeyStore.getInstance("UBER", "BC"), v2UBER); - - checkOldStore(KeyStore.getInstance("BKS-V1", "BC"), v1BKS); - checkOldStore(KeyStore.getInstance("BKS-V1", "BC"), v2BKS); - } - - private void checkStore(KeyStore ks, byte[] data) - throws Exception - { - ks.load(new ByteArrayInputStream(data), oldStorePass); - - if (!ks.containsAlias("android")) - { - fail("cannot find alias"); - } - - Key key = ks.getKey("android", oldStorePass); - if (key == null) - { - fail("cannot find key"); - } - - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - ks.store(bOut, oldStorePass); - } - - private void checkOldStore(KeyStore ks, byte[] data) - throws Exception - { - ks.load(new ByteArrayInputStream(data), oldStorePass); - - if (!ks.containsAlias("android")) - { - fail("cannot find alias"); - } - - Key key = ks.getKey("android", oldStorePass); - if (key == null) - { - fail("cannot find key"); - } - - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - ks.store(bOut, oldStorePass); - - if (data.length != bOut.toByteArray().length) - { - fail("Old version key store write incorrect"); - } - } - - private void checkException() - throws Exception - { - KeyStore ks = KeyStore.getInstance("BKS", "BC"); - - try - { - ks.load(new ByteArrayInputStream(negSaltBKS), oldStorePass); - } - catch (IOException e) - { - if (!e.getMessage().equals("Invalid salt detected")) - { - fail("negative salt length not detected"); - } - } - } - - public String getName() - { - return "KeyStore"; - } - - public void performTest() - throws Exception - { - keyStoreTest("BKS"); - keyStoreTest("UBER"); - keyStoreTest("BKS-V1"); - ecStoreTest("BKS"); - oldStoreTest(); - checkException(); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new KeyStoreTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/MQVTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/MQVTest.java deleted file mode 100644 index 3b0b8a2f..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/MQVTest.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.SecureRandom; -import java.security.Security; -import java.security.spec.ECFieldFp; -import java.security.spec.ECParameterSpec; -import java.security.spec.EllipticCurve; - -import javax.crypto.KeyAgreement; - -import org.bouncycastle.jce.ECPointUtil; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.MQVPrivateKeySpec; -import org.bouncycastle.jce.spec.MQVPublicKeySpec; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class MQVTest - extends SimpleTest -{ - public String getName() - { - return "MQV"; - } - - public void performTest() - throws Exception - { - testECMQV(); - } - - private void testECMQV() - throws Exception - { - KeyPairGenerator g = KeyPairGenerator.getInstance("ECMQV", "BC"); - - EllipticCurve curve = new EllipticCurve( - new ECFieldFp(new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839")), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - ECPointUtil.decodePoint(curve, Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307"), // n - 1); // h - - g.initialize(ecSpec, new SecureRandom()); - - // - // U side - // - KeyPair U1 = g.generateKeyPair(); - KeyPair U2 = g.generateKeyPair(); - - KeyAgreement uAgree = KeyAgreement.getInstance("ECMQV", "BC"); - uAgree.init(new MQVPrivateKeySpec(U1.getPrivate(), U2.getPrivate(), U2.getPublic())); - - // - // V side - // - KeyPair V1 = g.generateKeyPair(); - KeyPair V2 = g.generateKeyPair(); - - KeyAgreement vAgree = KeyAgreement.getInstance("ECMQV", "BC"); - vAgree.init(new MQVPrivateKeySpec(V1.getPrivate(), V2.getPrivate(), V2.getPublic())); - - // - // agreement - // - uAgree.doPhase(new MQVPublicKeySpec(V1.getPublic(), V2.getPublic()), true); - vAgree.doPhase(new MQVPublicKeySpec(U1.getPublic(), U2.getPublic()), true); - - BigInteger ux = new BigInteger(uAgree.generateSecret()); - BigInteger vx = new BigInteger(vAgree.generateSecret()); - - if (!ux.equals(vx)) - { - fail("Agreement failed"); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new MQVTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java deleted file mode 100644 index d011eb71..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/MacTest.java +++ /dev/null @@ -1,186 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Security; - -import javax.crypto.Mac; -import javax.crypto.SecretKey; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * MAC tester - vectors from - * <a href=http://www.itl.nist.gov/fipspubs/fip81.htm>FIP 81</a> and - * <a href=http://www.itl.nist.gov/fipspubs/fip113.htm>FIP 113</a>. - */ -public class MacTest - extends SimpleTest -{ - static byte[] keyBytes = Hex.decode("0123456789abcdef"); - static byte[] ivBytes = Hex.decode("1234567890abcdef"); - - static byte[] input = Hex.decode("37363534333231204e6f77206973207468652074696d6520666f7220"); - - static byte[] output1 = Hex.decode("f1d30f68"); - static byte[] output2 = Hex.decode("58d2e77e"); - static byte[] output3 = Hex.decode("cd647403"); - - static byte[] keyBytesISO9797 = Hex.decode("7CA110454A1A6E570131D9619DC1376E"); - - static byte[] inputISO9797 = "Hello World !!!!".getBytes(); - - static byte[] outputISO9797 = Hex.decode("F09B856213BAB83B"); - - static byte[] inputDesEDE64 = "Hello World !!!!".getBytes(); - - static byte[] outputDesEDE64 = Hex.decode("862304d33af01096"); - - public MacTest() - { - } - - private void aliasTest(SecretKey key, String primary, String[] aliases) - throws Exception - { - Mac mac = Mac.getInstance(primary, "BC"); - - // - // standard DAC - zero IV - // - mac.init(key); - - mac.update(input, 0, input.length); - - byte[] ref = mac.doFinal(); - - for (int i = 0; i != aliases.length; i++) - { - mac = Mac.getInstance(aliases[i], "BC"); - - mac.init(key); - - mac.update(input, 0, input.length); - - byte[] out = mac.doFinal(); - if (!areEqual(out, ref)) - { - fail("Failed - expected " + new String(Hex.encode(ref)) + " got " + new String(Hex.encode(out))); - } - } - } - - public void performTest() - throws Exception - { - SecretKey key = new SecretKeySpec(keyBytes, "DES"); - byte[] out; - Mac mac; - - mac = Mac.getInstance("DESMac", "BC"); - - // - // standard DAC - zero IV - // - mac.init(key); - - mac.update(input, 0, input.length); - - out = mac.doFinal(); - - if (!areEqual(out, output1)) - { - fail("Failed - expected " + new String(Hex.encode(output1)) + " got " + new String(Hex.encode(out))); - } - - // - // mac with IV. - // - mac.init(key, new IvParameterSpec(ivBytes)); - - mac.update(input, 0, input.length); - - out = mac.doFinal(); - - if (!areEqual(out, output2)) - { - fail("Failed - expected " + new String(Hex.encode(output2)) + " got " + new String(Hex.encode(out))); - } - - // - // CFB mac with IV - 8 bit CFB mode - // - mac = Mac.getInstance("DESMac/CFB8", "BC"); - - mac.init(key, new IvParameterSpec(ivBytes)); - - mac.update(input, 0, input.length); - - out = mac.doFinal(); - - if (!areEqual(out, output3)) - { - fail("Failed - expected " + new String(Hex.encode(output3)) + " got " + new String(Hex.encode(out))); - } - - // - // ISO9797 algorithm 3 using DESEDE - // - key = new SecretKeySpec(keyBytesISO9797, "DESEDE"); - - mac = Mac.getInstance("ISO9797ALG3", "BC"); - - mac.init(key); - - mac.update(inputISO9797, 0, inputISO9797.length); - - out = mac.doFinal(); - - if (!areEqual(out, outputISO9797)) - { - fail("Failed - expected " + new String(Hex.encode(outputISO9797)) + " got " + new String(Hex.encode(out))); - } - - // - // 64bit DESede Mac - // - key = new SecretKeySpec(keyBytesISO9797, "DESEDE"); - - mac = Mac.getInstance("DESEDE64", "BC"); - - mac.init(key); - - mac.update(inputDesEDE64, 0, inputDesEDE64.length); - - out = mac.doFinal(); - - if (!areEqual(out, outputDesEDE64)) - { - fail("Failed - expected " + new String(Hex.encode(outputDesEDE64)) + " got " + new String(Hex.encode(out))); - } - - aliasTest(new SecretKeySpec(keyBytesISO9797, "DESede"), "DESedeMac64withISO7816-4Padding", - new String[] { "DESEDE64WITHISO7816-4PADDING", "DESEDEISO9797ALG1MACWITHISO7816-4PADDING", "DESEDEISO9797ALG1WITHISO7816-4PADDING" }); - - aliasTest(new SecretKeySpec(keyBytesISO9797, "DESede"), "ISO9797ALG3WITHISO7816-4PADDING", - new String[] { "ISO9797ALG3MACWITHISO7816-4PADDING" }); - - aliasTest(new SecretKeySpec(keyBytes, "DES"), "DES64", - new String[] { "DESMAC64" }); - } - - public String getName() - { - return "Mac"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new MacTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/MultiCertStoreTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/MultiCertStoreTest.java deleted file mode 100644 index 240d1e63..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/MultiCertStoreTest.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.jce.MultiCertStoreParameters; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTest; - -import java.io.ByteArrayInputStream; -import java.security.Security; -import java.security.cert.CertStore; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.X509CRL; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -public class MultiCertStoreTest - extends SimpleTest -{ - - public void performTest() - throws Exception - { - basicTest(); - } - - private void basicTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate rootCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.rootCertBin)); - X509Certificate interCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.interCertBin)); - X509Certificate finalCert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream( - CertPathTest.finalCertBin)); - X509CRL rootCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream( - CertPathTest.rootCrlBin)); - X509CRL interCrl = (X509CRL)cf - .generateCRL(new ByteArrayInputStream( - CertPathTest.interCrlBin)); - - // Testing CollectionCertStore generation from List - List list = new ArrayList(); - list.add(rootCert); - list.add(interCert); - list.add(finalCert); - list.add(rootCrl); - list.add(interCrl); - CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters(list); - CertStore store1 = CertStore.getInstance("Collection", ccsp, "BC"); - CertStore store2 = CertStore.getInstance("Collection", ccsp, "BC"); - - List storeList = new ArrayList(); - storeList.add(store1); - storeList.add(store2); - CertStore store = CertStore.getInstance("Multi", new MultiCertStoreParameters(storeList)); - - // Searching for rootCert by subjectDN - X509CertSelector targetConstraints = new X509CertSelector(); - targetConstraints.setSubject(rootCert.getSubjectX500Principal().getName()); - Collection certs = store.getCertificates(targetConstraints); - - if (certs.size() != 2 || !certs.contains(rootCert)) - { - fail("2 rootCerts not found by subjectDN"); - } - - store = CertStore.getInstance("Multi", new MultiCertStoreParameters(storeList, false)); - certs = store.getCertificates(targetConstraints); - - if (certs.size() != 1 || !certs.contains(rootCert)) - { - fail("1 rootCert not found by subjectDN"); - } - } - - public String getName() - { - return "MultiCertStore"; - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new MultiCertStoreTest()); - } - -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/NISTCertPathTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/NISTCertPathTest.java deleted file mode 100644 index 43f90a1c..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/NISTCertPathTest.java +++ /dev/null @@ -1,5173 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.security.GeneralSecurityException; -import java.security.Security; -import java.security.cert.CertPathBuilder; -import java.security.cert.CertPathBuilderResult; -import java.security.cert.CertStore; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.PKIXBuilderParameters; -import java.security.cert.TrustAnchor; -import java.security.cert.X509CRL; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.util.HashSet; -import java.util.Set; -import java.util.Vector; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.ASN1OctetString; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTest; - - -/* - * These tests are taken from the NIST X.509 Validation Test Suite - * available at: http://csrc.nist.gov/pki/testing/x509paths.html - * - * Only the relevant certificate and crl data has been kept, in order - * to keep the class size to a minimum. - * - */ - -public class NISTCertPathTest - extends SimpleTest -{ - private static final String TEST_POLICY_1 = "2.16.840.1.101.3.1.48.1"; - private static final String TEST_POLICY_2 = "2.16.840.1.101.3.1.48.2"; - private static final String TEST_POLICY_3 = "2.16.840.1.101.3.1.48.3"; - private static final String TEST_POLICY_4 = "2.16.840.1.101.3.1.48.4"; - private static final String TEST_POLICY_5 = "2.16.840.1.101.3.1.48.5"; - - private static Set ANY; - private static Set TP1; - private static Set TP2; - private static Set TP3; - private static Set TP4; - private static Set TP1_TP2; - - static { - ANY = new HashSet(); - - TP1 = new HashSet(); - TP1.add(TEST_POLICY_1); - - TP2 = new HashSet(); - TP2.add(TEST_POLICY_2); - - TP3 = new HashSet(); - TP3.add(TEST_POLICY_3); - - TP4 = new HashSet(); - TP4.add(TEST_POLICY_4); - - TP1_TP2 = new HashSet(); - TP1_TP2.add(TEST_POLICY_1); - TP1_TP2.add(TEST_POLICY_2); - } - - /* - * - * FIELDS - * - */ - - private CertificateFactory fact; - - private X509Certificate trustedCert; - private X509CRL trustedCRL; - private Set trustedSet; - private int testCount; - private Vector testFail; - private StringBuffer resultBuf; - - public String getName() - { - return "NISTCertPathTest"; - } - - - public void performTest() - { - init(); - - test(" 1", TEST_1_DATA , true , false); - test(" 2", TEST_2_DATA , false, false); - test(" 3", TEST_3_DATA , false, false); - test(" 4", TEST_4_DATA , true , false); - test(" 5", TEST_5_DATA , false, false); - test(" 6", TEST_6_DATA , false, false); - test(" 7", TEST_7_DATA , true , false); - test(" 8", TEST_8_DATA , false, false); - test(" 9", TEST_9_DATA , false, false); - - test("10", TEST_10_DATA, false, false); - test("11", TEST_11_DATA, false, false); - test("12", TEST_12_DATA, true , false); - test("13", TEST_13_DATA, false, false); - test("14", TEST_14_DATA, false, false); - test("15", TEST_15_DATA, true , false); - test("16", TEST_16_DATA, true , false); - test("17", TEST_17_DATA, true , false); - test("18", TEST_18_DATA, true , false); - test("19", TEST_19_DATA, false, false); - - test("20", TEST_20_DATA, false, false); - test("21", TEST_21_DATA, false, false); - test("22", TEST_22_DATA, false, false); - test("23", TEST_23_DATA, false, false); - test("24", TEST_24_DATA, true , false); - test("25", TEST_25_DATA, false, false); - test("26", TEST_26_DATA, true , false); - test("27", TEST_27_DATA, true , false); - test("28", TEST_28_DATA, false, false); - test("29", TEST_29_DATA, false, false); - - test("30", TEST_30_DATA, true , false); - test("31", TEST_31_DATA, false, false); - test("32", TEST_32_DATA, false, false); - test("33", TEST_33_DATA, true , false); - - - - test("34a", TEST_34_DATA, ANY , true , true , false); - test("34b", TEST_34_DATA, ANY , false, true , false); - test("34c", TEST_34_DATA, TP1 , true , true , false); - test("34d", TEST_34_DATA, TP1 , false, true , false); - test("34e", TEST_34_DATA, TP2 , true , false, false); - test("34f", TEST_34_DATA, TP2 , false, true , false); - - test("35a", TEST_35_DATA, false, true , false); - test("35b", TEST_35_DATA, true , false, false); - - test("36a", TEST_36_DATA, false, true , false); - test("36b", TEST_36_DATA, true , false, false); - - test("37a", TEST_37_DATA, false, true , false); - test("37b", TEST_37_DATA, true , false, false); - - test("38a", TEST_38_DATA, false, true , false); - test("38b", TEST_38_DATA, true , false, false); - - test("39a", TEST_39_DATA, ANY , true , true , false); - test("39b", TEST_39_DATA, ANY , false, true , false); - test("39c", TEST_39_DATA, TP1 , true , true , false); - test("39d", TEST_39_DATA, TP1 , false, true , false); - test("39e", TEST_39_DATA, TP2 , true , false, false); - test("39f", TEST_39_DATA, TP2 , false, true , false); - - - test("40a", TEST_40_DATA, false, true , false); - test("40b", TEST_40_DATA, true , false, false); - - test("41a", TEST_41_DATA, false, true , false); - test("41b", TEST_41_DATA, true , false, false); - - test("42a", TEST_42_DATA, false, true , false); - test("42b", TEST_42_DATA, true , false, false); - - test("43a", TEST_43_DATA, false, true , false); - test("43b", TEST_43_DATA, true , false, false); - - test("44a", TEST_44_DATA, false, true , false); - test("44b", TEST_44_DATA, true , false, false); - - test("45a", TEST_45_DATA, false, false, false); - test("45b", TEST_45_DATA, true , false, false); - - test("46a", TEST_46_DATA, ANY , false, true , false); - test("46b", TEST_46_DATA, ANY , true , true , false); - test("46c", TEST_46_DATA, TP1 , true , true , false); - test("46d", TEST_46_DATA, TP1 , false, true , false); - test("46e", TEST_46_DATA, TP2 , true , false, false); - test("46f", TEST_46_DATA, TP2 , false, false, false); - - test("47a", TEST_47_DATA, false, false, false); - test("47b", TEST_47_DATA, true , false, false); - - test("48a", TEST_48_DATA, TP1 , false, true , false); - test("48b", TEST_48_DATA, TP1 , true , true , false); - test("48c", TEST_48_DATA, ANY , false, true , false); - test("48d", TEST_48_DATA, ANY , true , true , false); - test("48e", TEST_48_DATA, TP2 , false, true , false); - test("48f", TEST_48_DATA, TP2 , true , false, false); - - test("49a", TEST_49_DATA, TP1 , false, true , false); - test("49b", TEST_49_DATA, TP1 , true , true , false); - test("49c", TEST_49_DATA, TP3 , false, true , false); - test("49d", TEST_49_DATA, TP3 , true , false, false); - test("49e", TEST_49_DATA, ANY , false, true , false); - test("49f", TEST_49_DATA, ANY , true , true , false); - - test("50a", TEST_50_DATA, TP1 , false, true , false); - test("50b", TEST_50_DATA, TP1 , true , true , false); - test("50c", TEST_50_DATA, TP1_TP2 , false, true , false); - test("50d", TEST_50_DATA, TP1_TP2 , true , true , false); - test("50e", TEST_50_DATA, ANY , false, true , false); - test("50f", TEST_50_DATA, ANY , true , true , false); - - test("51a", TEST_51_DATA, false, true , false); - test("51b", TEST_51_DATA, true , false, false); - - test("52a", TEST_52_DATA, TP1 , false, true , false); - test("52b", TEST_52_DATA, TP1 , true , false, false); - test("52c", TEST_52_DATA, TP1_TP2 , false, true , false); - test("52d", TEST_52_DATA, TP1_TP2 , true , false, false); - test("52e", TEST_52_DATA, ANY , false, true , false); - test("52f", TEST_52_DATA, ANY , true , true , false); - - test("53a", TEST_53_DATA, TP1 , false, true , false); - test("53b", TEST_53_DATA, TP1 , true , true , false); - test("53c", TEST_53_DATA, TP1_TP2 , false, true , false); - test("53d", TEST_53_DATA, TP1_TP2 , true , true , false); - test("53e", TEST_53_DATA, TP4 , false, true , false); - test("53f", TEST_53_DATA, TP4 , true , false, false); - test("53g", TEST_53_DATA, ANY , false, true , false); - test("53h", TEST_53_DATA, ANY , true , true , false); - - test("54", TEST_54_DATA, false, false); - test("55", TEST_55_DATA, false, false); - test("56", TEST_56_DATA, true , false); - test("57", TEST_57_DATA, true , false); - test("58", TEST_58_DATA, false, false); - test("59", TEST_59_DATA, false, false); - - test("60", TEST_60_DATA, false, false); - test("61", TEST_61_DATA, false, false); - test("62", TEST_62_DATA, true , false); - test("63", TEST_63_DATA, true , false); - test("64", TEST_64_DATA, false, false); - test("65", TEST_65_DATA, false, false); - test("66", TEST_66_DATA, false, false); - test("67", TEST_67_DATA, true , false); - test("68", TEST_68_DATA, false, false); - test("69", TEST_69_DATA, false, false); - - test("70", TEST_70_DATA, false, false); - test("71", TEST_71_DATA, false, false); - test("72", TEST_72_DATA, false, false); - test("73", TEST_73_DATA, false, false); - test("74", TEST_74_DATA, true , false); - test("75", TEST_75_DATA, false, false); - test("76", TEST_76_DATA, false, false); - - resultBuf.append("NISTCertPathTest -- Failed: ").append(testFail.size()).append('/').append(testCount).append('\n'); - if (!testFail.isEmpty()) - { - fail(resultBuf.toString()); - } - } - - private void init() - { - try - { - fact = CertificateFactory.getInstance("X.509", "BC"); - trustedCert = (X509Certificate)fact - .generateCertificate(new ByteArrayInputStream(Base64 - .decode(Trust_Anchor_CP_01_01_crt))); - trustedCRL = (X509CRL)fact.generateCRL(new ByteArrayInputStream( - Base64.decode(Trust_Anchor_CRL_CP_01_01_crl))); - trustedSet = new HashSet(); - - byte[] _ncBytes = null; - byte[] _octBytes = trustedCert.getExtensionValue("2.5.29.30"); - if (_octBytes != null) - { - ASN1InputStream _ais = new ASN1InputStream( - new ByteArrayInputStream(_octBytes)); - ASN1OctetString _oct = ASN1OctetString.getInstance(_ais - .readObject()); - _ais.close(); - _ncBytes = _oct.getOctets(); - } - - trustedSet.add(new TrustAnchor(trustedCert, _ncBytes)); - testCount = 0; - testFail = new Vector(); - resultBuf = new StringBuffer(); - } - catch (Exception ex) - { - throw new RuntimeException(ex.getMessage()); - } - } - - private X509Certificate decodeCertificate(String _str) - throws GeneralSecurityException - { - - return (X509Certificate)fact - .generateCertificate(new ByteArrayInputStream(Base64 - .decode(_str))); - } - - private X509CRL decodeCRL(String _str) - throws GeneralSecurityException - { - - return (X509CRL)fact.generateCRL(new ByteArrayInputStream(Base64 - .decode(_str))); - } - - private CertStore makeCertStore(String[] _strs) - throws GeneralSecurityException - { - - Vector _vec = new Vector(); - _vec.addElement(trustedCRL); - - for (int i = 0; i < _strs.length; i++) - { - if (_strs[i].startsWith("MIIC")) - { - _vec.addElement(fact - .generateCertificate(new ByteArrayInputStream(Base64 - .decode(_strs[i])))); - } - else if (_strs[i].startsWith("MIIB")) - { - _vec.addElement(fact.generateCRL(new ByteArrayInputStream( - Base64.decode(_strs[i])))); - } - else - { - throw new IllegalArgumentException("Invalid certificate or crl"); - } - } - - // Insert elements backwards to muck up forward ordering dependency - Vector _vec2 = new Vector(); - for (int i = _vec.size() - 1; i >= 0; i--) - { - _vec2.add(_vec.elementAt(i)); - } - - return CertStore.getInstance("Collection", - new CollectionCertStoreParameters(_vec2), "BC"); - } - - private void test(String _name, String[] _data, boolean _accept, - boolean _debug) - { - - test(_name, _data, null, false, _accept, _debug); - } - - private void test(String _name, String[] _data, boolean _explicit, - boolean _accept, boolean _debug) - { - - test(_name, _data, null, _explicit, _accept, _debug); - } - - private void test(String _name, String[] _data, Set _ipolset, - boolean _explicit, boolean _accept, boolean _debug) - { - - testCount++; - boolean _pass = true; - - try - { - CertPathBuilder _cpb = CertPathBuilder.getInstance("PKIX", "BC"); - X509Certificate _ee = decodeCertificate(_data[_data.length - 1]); - X509CertSelector _select = new X509CertSelector(); - _select.setSubject(_ee.getSubjectX500Principal().getEncoded()); - - PKIXBuilderParameters _param = new PKIXBuilderParameters( - trustedSet, _select); - _param.setExplicitPolicyRequired(_explicit); - _param.addCertStore(makeCertStore(_data)); - _param.setRevocationEnabled(true); - if (_ipolset != null) - { - _param.setInitialPolicies(_ipolset); - } - - CertPathBuilderResult _result = _cpb.build(_param); - - if (!_accept) - { - System.out.println("Accept when it should reject"); - _pass = false; - testFail.addElement(_name); - } - } - catch (Exception ex) - { - if (_accept) - { - System.out.println("Reject when it should accept"); - _pass = false; - testFail.addElement(_name); - } - } - - resultBuf.append("NISTCertPathTest -- ").append(_name).append(": ") - .append(_pass ? "\n" : "Failed.\n"); - } - - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new NISTCertPathTest()); - } - - /* - * Trust Anchor - * - */ - public static final String Trust_Anchor_CP_01_01_crt = - "MIICbDCCAdWgAwIBAgIDAYafMA0GCSqGSIb3DQEBBQUAMF4xCzAJBgNVBAYTAlVTMRgwFg" + - "YDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsTA0RvRDEQMA4GA1UECxMHVGVzdGlu" + - "ZzEVMBMGA1UEAxMMVHJ1c3QgQW5jaG9yMB4XDTk5MDEwMTEyMDEwMFoXDTQ4MDEwMTEyMD" + - "EwMFowXjELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UE" + - "CxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5nMRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBANPzucEztz+nJ/ZBHVyceZ2q0pUQt4TO2qPlWAw+" + - "TotWvz6qIS1QE/7zGS56yxHP89O4X1efnZeArx2VVxLfNNS9865N53ymINQETtpjYT49Ko" + - "03z8U8yfn68DlIBHi9sN31JEYzoUafF58Eu883lAwTQ6qQrJF4HbrzGIQqgitHAgMBAAGj" + - "ODA2MBEGA1UdDgQKBAirmuv5wudUjzAMBgNVHRMEBTADAQH/MBMGA1UdIwQMMAqACKua6/" + - "nC51SPMA0GCSqGSIb3DQEBBQUAA4GBABZWD2Gsh4tP62QSG8OFWUpo4TulIcFZLpGsaP4T" + - "/2Nt7lXUoIJMN7wWjqkmYf5/Rvo4HxNcimq3EkeYcrm1VoDueJUYGvRjcCY5mxkghI27Yl" + - "/fLKE9/BvQOrvYzBs2EqKrrT7m4VK0dRMR7CeVpmPP08z0Tti6uK2tzBplp1pF"; - public static final String Trust_Anchor_CRL_CP_01_01_crl = - "MIIBbzCB2QIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDFRydXN0IEFuY2hvchcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWjAiMCACAS" + - "cXDTk5MDEwMTEyMDAwMFowDDAKBgNVHRUEAwoBAaAjMCEwCgYDVR0UBAMCAQEwEwYDVR0j" + - "BAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcNAQEFBQADgYEAC7lqZwejJRW7QvzH11/7cYcL3r" + - "acgMxH3PSU/ufvyLk7ahR++RtHary/WeCvRdyznLiIOA8ZBiguWtVPqsNysNn7WLofQIVa" + - "+/TD3T+lece4e1NwGQvj5Q+e2wRtGXg+gCuTjTKUFfKRnWz7O7RyiJKKim0jtAF4RkCpLe" + - "bNChY="; - - - /* - * test1 - * - */ - - public static final String End_Certificate_CP_01_01_crt = - "MIIChjCCAe+gAwIBAgIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDEuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMY07G8M4FkOvF+6LpO7BKcDuXCKudfl1+bKSowj" + - "2GCza8uIiMfYSH5k+fYb43lGQeRh9yVHcfNQlE7yfGo3tgxGv5yWpeKvDMqL8Iy6Q0oIjm" + - "qH80ZOz21dUkermcckzTEOfe/R2fNpJPv8M24pq29SdYAqu+CpLDHFtws9O+q1AgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIrNv88bwFLtIwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcNAQEFBQADgYEAK4hP" + - "goWtZbHf6qWfRfmrPrz9hDH1644NrJop2Y7MXzuTtpo1zp4NCG4+ii0CSOfvhugc8yOmq3" + - "I6olgE0V16VtC5br2892UHYZ55Q4oQ9BWouVVlOyY9rogOB160BnsqBELFhT0Wf6mnbsdD" + - "G+BB5fFyeK61aYDWV84kS7cSX5w="; - public static final String[] TEST_1_DATA = new String[] { - End_Certificate_CP_01_01_crt, - }; - - /* - * test2 - * - */ - - public static final String Intermediate_Certificate_CP_01_02_crt = - "MIIClTCCAf6gAwIBAgIBAjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAxLjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDWOZ4hk+K6NX/l+OiHC4pfKCWFt+XM2n/TxwkqY+mt" + - "j9Co77rPPPtVA7mDKU4OiYT74mIWH52HQBZr+PRmOFh0Z9S1oTpLbxNLCDc6OmQKBo6iex" + - "SIt/jOatFFmzmTZ78Kq9s3nfrOVA83ggmPDTPkuG5GwcxPgFq0vRmAJ0CESQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQI5o5Am09NlOYwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEA3C7Ye5/Te14LIwo/LK2fnpobbQA3dhOn5UgqZ8lKbQ/HV1D8/eU9dK" + - "2v5gW43XvFq4whK0WKLBvBFchKtp9T1QX3CI2WCqdJRyqla6TkQsS36T17/ww2nzy1853Y" + - "hfDYNsge5XW8YZNfNjjVxcR3RnyFxPax1YIlISiGdI0dnag="; - public static final String Intermediate_CRL_CP_01_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMS4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI5o5Am09NlOYwDQYJKoZIhvcNAQEFBQADgYEAl26W" + - "g1Gqq3R93XPjghABVocfeIi8zcSJ0YAKqbifh5V3JCC8Piy19GzZdL244GqBDls44IAhKj" + - "YuXN2mSohdqwULbye4agAgfl37XhhwsBDTYwaJiv3njFQ6Ml7KJ3STmoIpmlLvrXibDuHX" + - "ocuNGo72ckhOdBpXd+PhgGuoTis="; - public static final String End_Certificate_CP_01_02_crt = - "MIIChjCCAe+gAwIBAgIBAzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMS4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDEuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALwJrZT6bJXQnZzc3socZ/mNsEag4BTdym99ZCP2" + - "3PGsTCfV2z7+p4DehIFrn/N/a1d1nvyqRqpQGPU86tl1CWgFtXS+zCctDR71P76bjd6yef" + - "5vxxdO/SBIRHfQTjM8F3BTLkrC+PVl5wbaLcEXRORXrFvBvsj0oqwZ4C8ZObh/AgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIf5mSjuNhs/gwEwYDVR0jBAwwCoAI5o5Am09NlOYwDQYJKoZIhvcNAQEFBQADgYEAK7wd" + - "MyLlIZ/Qsqj3/A3Gat0d5BORtFTZH0VdlVVOWN1JCZxrnjeIFB92NNzUROemxgBxzneuWN" + - "SlYlcpTk25pAbs6RMdbT8dovKQkQkF2TXeQ+4qktFaLQntVT8UsEzHR4Diw0/gH8tseGqF" + - "F7FyiW8ni6zInSO+embUKiibj9I="; - public static final String[] TEST_2_DATA = new String[] { - Intermediate_Certificate_CP_01_02_crt, - Intermediate_CRL_CP_01_02_crl, - End_Certificate_CP_01_02_crt - }; - - /* - * test3 - * - */ - - public static final String Intermediate_Certificate_CP_01_03_crt = - "MIIClTCCAf6gAwIBAgIBBDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAxLjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC4RZ0R82sA+BfyynFeoIDG7c5IlZ8HorEv+O4Ij3Oy" + - "7FR1MB4no8hDEBPBf5fCrAR/8PVxCZjVj2HOwnSAqUQgxo6WPcmkabux12k8kK6yeKq3b7" + - "u5fL6tb7eKElQzsz8Je4z4rCDkI10vV+X0VZ5Ip/Es428dw2KoN8eyGmw3+QIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIz08WhMpG2JswEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAQ+iqlFvbvDejO/m+RCHh2UuUau1FuABObkPOu2Tv9yTWvTSWDRygdO" + - "LQRiOLsjgrdXPdbDutVGjllBoTN8cdz3SWjCpampg5TBikArxmNEYMDQvL6n2lkUcetRJR" + - "gQ7TYLvFj9+SycKXfM5CUXAyCfcU/QwDghhZgc99AuDZtJc="; - public static final String Intermediate_CRL_CP_01_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMS4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIz08WhMpG2JswDQYJKoZIhvcNAQEFBQADgYEAoyO/" + - "xcpJ0Obj4rTXhHFd7XMzslt79njkEgdwnon9BaYB3xSmkEXCMwLMurrjVYKaB6SWAiPeUv" + - "G7ScDHJE6UFVJwIt4vP/M7gTOJ7uak33aWi9e5DeIuLqE6pFqTGu+uoBkkd82SHg2GhJhZ" + - "VXDtJ3UcO/3JQPbslc02s9HiRBg="; - public static final String End_Certificate_CP_01_03_crt = - "MIIChjCCAe+gAwIBAgIBBTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMS4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDEuMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBANAD1vQj//4BGEXW1Q7HX/AUyFJFyHoYcvg5y4u/" + - "8Sj6okriXj3knnBKDiJLpKfcsO5p5MQS5QzAc+lxErXD+duiw8lm61hj0StsRzhDFsaC1g" + - "akjzU70R2Tmz/djUnqO3aa2wICc4NVAXnIMMsH/b6XXFZpC0/C32TPTv9aa9mrAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIPw2wltiRqz4wEwYDVR0jBAwwCoAIz08WhMpG2JswDQYJKoZIhvcNAQEFBQADgYEAln42" + - "iR3eHyazF8CRjS9Jnas/26MaBtjUyDtcSjTVDWFlccwrQ7TgtzjkNm9fCmgSyvryDnUYGM" + - "DoEjwYNLIgtCAkVIEBTmJvlqiPHH+tV5oJvIav+Fn8okHpuuK44umDcdKiFWlOyxrShxzV" + - "3Bez/eHklaPTw/VsVhyh+Uru5zM="; - public static final String[] TEST_3_DATA = new String[] { - Intermediate_Certificate_CP_01_03_crt, - Intermediate_CRL_CP_01_03_crl, - End_Certificate_CP_01_03_crt - }; - - /* - * test4 - * - */ - - public static final String Intermediate_Certificate_1_CP_02_01_crt = - "MIIClTCCAf6gAwIBAgIBBjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05OTAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAyLjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC/lQLtWKzklgYuzhjMiK2CzFmzODsEY/JIVNdn9T8M" + - "W4ufpGwnfIV62EUHCFeMYydKBm8Hyjbjrz1otINJmrGL5WSAX1/UPtHy1chgXOsFYD6nAH" + - "jZAJJGw74nUbKw5+L1wUHU8qXABaaTrRpS1UdKSq4TCZ18NCjC4Oxcf/yDdQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQINsJcxaBqdugwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAOQP3iUX7FtJlL9nvu4F+8o/N5vr+OB28OsbYtW+Q1FzEfjkUGtT9Ri" + - "teradpN/xUnS/oj3BfqFtNANkYKrBeqRtm2VeOC3kdCVFnWFME2aoRAQZbWvOwCFc3yLA7" + - "JBdENtDNI54yYHMHPA4/2CuNQq1Iu1ektAS95DIe7ddxL18="; - public static final String Intermediate_Certificate_2_CP_02_01_crt = - "MIIClTCCAf6gAwIBAgIBBzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMi4wMTAeFw05OTAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLUNQLjAyLjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCx/mIo1Ma/IN8OR7KOjclvIwsv0JFXD/T258DruDZU" + - "uGoYiEbAc/ZN7R8OHI7dnv9pBfsvyEl7m2DVoLZnP0eXJTHjdZxb1TwPHoSIysi9u3xWlP" + - "Rg+v+GGfKLB9pL0m8SZh97SngerZI14w7vQy0kkXziGatSpBoXtWNmsHJNuQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIoI0mSmDmzZUwEwYDVR0jBAwwCoAINsJcxaBqdugwDQYJKoZI" + - "hvcNAQEFBQADgYEAcfs1pH12Qwdhv4NOJO2xxgMZZo8+A9Zl9c7RxsvuoZOOyCxoE9wT/l" + - "PdUpGoGxtIPoWQs1qXEXnAlXJCXjLCJUHIG1/E6gQUXW0Ty6Ztpc5Dz06pPTN2gt+41B3J" + - "sL/Klqc4iyCaWr8sYgEPQ8nColWRmIwk9gAasPNkNhyxA3Y="; - public static final String Intermediate_CRL_1_CP_02_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAINsJcxaBqdugwDQYJKoZIhvcNAQEFBQADgYEAlBaV" + - "VfrZqvyRhGXNYFik169nBHiNfKpw8k1YgFAQeNYdmfScq1KHmKzDhsx9kQteczBL7ltviK" + - "TN3CKlZW82c16mfd4yYx0l5tkU80lwKCHSUzx92+qrvYjSMup+bqSsi8JhqByBf6b0JbKf" + - "yx53Vpw1OCzjxrVHcfHPx8Q/vR4="; - public static final String Intermediate_CRL_2_CP_02_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1DUC4wMi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIoI0mSmDmzZUwDQYJKoZIhvcNAQEFBQADgYEAhAHP" + - "QxpcrTTN0GXeOwoMXuQUoHMvezEpM0BYOVLzI3KbRXWa9iWZINr99cRQvonMtOGkhIH3iS" + - "wSNbsjmF9HX5UvNzrofOWataVP+macpCuNlK0NS3xxJjKRWOB9C1Ib7tiSSrQqIPcchlF6" + - "vofy2ALEL6Usa1UTVYMhzGYnVZU="; - public static final String End_Certificate_CP_02_01_crt = - "MIIChjCCAe+gAwIBAgIBCDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1DUC4wMi4wMTAeFw05OTAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDIuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOzYq2murB5ZjQd4wReI51Lc1F5VwK90OMGRfi71" + - "YvwdRjgCudeDXZGW5ayid82y+eTDKFSzo1Li/BPTUXMpeqHHMCmLeefqxAWmz3aDoilF8I" + - "Q53PlejnXJdntsal44w6WdP6ssiXlwzcZDnobAfuDTPgsnWWfzAkr1/LqEw/QZAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIP5tVdEyxotcwEwYDVR0jBAwwCoAIoI0mSmDmzZUwDQYJKoZIhvcNAQEFBQADgYEAkVx9" + - "S/20Hir8qMnfMpMGTgMKoVeWoljxim83IkNs1Xqe1oLGHdyDUA66uF8wPkoTqGrfDYvgBa" + - "5Mi0iJREnMWoiWvCe467+L1b2gtvRBMl9bcRj40bvelk0Wn4lBl3VuKXarP5M0PKT5OWvN" + - "2cPLNeXHvV6ZIrC4rmK2ISpIXX4="; - public static final String[] TEST_4_DATA = new String[] { - Intermediate_Certificate_1_CP_02_01_crt, - Intermediate_Certificate_2_CP_02_01_crt, - Intermediate_CRL_1_CP_02_01_crl, - Intermediate_CRL_2_CP_02_01_crl, - End_Certificate_CP_02_01_crt - }; - - /* - * test5 - * - */ - - public static final String Intermediate_Certificate_CP_02_02_crt = - "MIIClTCCAf6gAwIBAgIBCTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw00NzAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAyLjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDHJmlRKb+mjc61iiqGe9gx/VUMLNmGrXGRYKMmYSxO" + - "Q5sGLoztd2XtEgtZEPwvzd9KLKGP3XmgTrc4BGohqoFoG9Qb+w2ZGFwVC22GpeSoXc+J2u" + - "2t3uRKYgboHpB0Jk42XLy+2wSEtS+/er7cFu2ufdPsvT4J1AqiuZSco96vtQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIBvoP1E6PGiMwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAmOyFq2vZrUNDVWRcyzYvZhs1uQ4zgXtfqnPE0V19RgaYffCrSCI86z" + - "5kyDUyZwbGABMxBaVxEw536MesyDTdZdEVw6lN5RRtxr8/WEiSH6oI6t0xNxuNOkSNpz4d" + - "28HA4UfUvtXK8RK2YZnPAd6UXsRUPBPXKEpzy4v/9RyihSg="; - public static final String Intermediate_CRL_CP_02_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIBvoP1E6PGiMwDQYJKoZIhvcNAQEFBQADgYEAALlA" + - "f3IDWexcdkMQHWTdGeFe+bG5dBvVPL5ZyQUw9DWbLwrjw/Jm4v9t+HLjETLSymsFT4bW21" + - "OwnEiAAdaKT96k5t+sTyU5QQ6HL/jRXLHLGdCQgMFCglm5iNqaCLIFoMAVCaFkYtFUE3m/" + - "iVt+319JOh5UyshMuWrAEW0IGGQ="; - public static final String End_Certificate_CP_02_02_crt = - "MIIChjCCAe+gAwIBAgIBCjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMi4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDIuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL/Src6e8qXwL+KJs5+v+JsakZdSDqMAFJUMfA2O" + - "OO2TIqcvDFHzqesX+G+28MUwy6++ux07CD3FCaapgzBN4zO4RfKcamxFReKMKcEvNVVCOO" + - "wO4Lvku1Sad14oYyGLOMzZwZFjRp8paaz5g87k70EOPBLeDlFMcch36czw53sLAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIPoHc2Sfk6XUwEwYDVR0jBAwwCoAIBvoP1E6PGiMwDQYJKoZIhvcNAQEFBQADgYEAFHhm" + - "o6QRFdO1x1wp7Jb1QQAlChFfP8MrGVNK04Ur8f+wfkwIypTDifJ0AoFpjcM3Ohu9Ixvb9q" + - "3kCSIWKDnWtDWw1/dN8mPL5If5gGqPA0+wRbUKVKvduOg7hKr4mWjKw7oYiaJuIIoN9RRZ" + - "ejzltd0NEaODNPW/JaKeQUVgZbY="; - public static final String[] TEST_5_DATA = new String[] { - Intermediate_Certificate_CP_02_02_crt, - Intermediate_CRL_CP_02_02_crl, - End_Certificate_CP_02_02_crt - }; - - /* - * test6 - * - */ - - public static final String Intermediate_Certificate_CP_02_03_crt = - "MIIClTCCAf6gAwIBAgIBCzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAyLjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCaJ7NcOvb22F6HjMF1R/AORa4+pKFfFfd9teXPpVWC" + - "9InTq+alY11QaSj27Qg0znOIItmf2W/8Dub9sjnbg+SgAkoV5+CAkplodRNC8AbD4x8rh/" + - "fioQ8lb0Qb4Dn9I0n2wjOgitmMRdE2uW4uwVpH52vsMyenbDVxVI7jA4NS/wIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIC2T+/BkG93AwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEApr6kDXVY5jYt23wC9n3LmhoxDoWh8cBQxcWmr1wpVxIrCbaP0/y00a" + - "29wbewKfucUoh/W2OfjNcohjpKRrnVmOpi5vN7SmbZIHaxbKLzyQ7JwF17aznyCSZVrGpF" + - "A/S49T5rlCm8KDBcc2ym7gRJzwUApbC0Wws4Pg46czrpQlg="; - public static final String Intermediate_CRL_CP_02_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMi4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIC2T+/BkG93AwDQYJKoZIhvcNAQEFBQADgYEAlBFY" + - "vPxhFYsjFOIfQkd7MwKIi7vgPgoWTP5f+QlI0ison5n4N3rYJv31hTZRRRP99JZce1hY6J" + - "Qiv1OtkpG7VfQIhr0FAGxTNaJD6F6rLbGjG8cap4+VibFQf5gZv0XQcyW4akYiRqSXImYn" + - "NVlNyaxiJja+5GA9XVqvWOjjz4o="; - public static final String End_Certificate_CP_02_03_crt = - "MIIChjCCAe+gAwIBAgIBDDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMi4wMzAeFw00NzAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDIuMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMlW6FOLwhRsKZM6p0ww4QEWjQzjpjYhKnz3BnLw" + - "SdGZqMe4wzZnDWc/0eyDOMCSYXIWQhlDMqQn2zCVPbDKzMRkdEeRSvE6ghhYP/hn3ipjSw" + - "D8QwaqofCp0sFkbDPke+xD2tMhLdUyNKynPjpSQmYtfoA98PD7so3cSAtrYuSDAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIc/X6kp7teCQwEwYDVR0jBAwwCoAIC2T+/BkG93AwDQYJKoZIhvcNAQEFBQADgYEAStub" + - "g3DzhJgzYO+ZmRc0acldZGwZFm6F1Ckc1JzQDgVHU0bnCANgBcJj49UV2MwbNKPQdVzdwo" + - "c91rfwrSY/PrvVQ9tUonZ28y/esFRBAdJTLf4u++p/gI3vfCvEXa5xVTIz1Hc+iKzAGKrI" + - "cveDHy3ZZluQ3J6tbHs2BhnQFXM="; - public static final String[] TEST_6_DATA = new String[] { - Intermediate_Certificate_CP_02_03_crt, - Intermediate_CRL_CP_02_03_crl, - End_Certificate_CP_02_03_crt - }; - - /* - * test7 - * - */ - - public static final String Intermediate_Certificate_CP_02_04_crt = - "MIIClTCCAf6gAwIBAgIBDTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAyLjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDgZy2Xs5pIoJrT7GuagmKLrn8F9rj8p8w2wELorGhM" + - "1HJMVOurH+o+y6RXd0oMGJkKNrhjEnbHKm3PBYiLgpCjVEcFNhQF1OOxJ7RdahvA9ifsuw" + - "jV1TxTGq35jeaJYASRXb2TiNfzuPWSVm0MWr5zz+YB6NNuvjxwEBgZvNiV8QIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIWAOnkHkwSVkwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAMiHozz92EOhSXU/krwQVs0GNEWoAUH3LHt70Zr01dFzEF6QhA/wUa4" + - "+V4XwbMob+q4zGnTHj+tL9ChGWi3NDGELQ4cN64OMPsToGKkepLy+sDwdm9LaUP1bDvPxd" + - "v2hjlskJ7TEu4+6ltXSG/k36Jk8C0/I/ayNGbYcEcLyes3s="; - public static final String Intermediate_CRL_CP_02_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMi4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIWAOnkHkwSVkwDQYJKoZIhvcNAQEFBQADgYEAVtCi" + - "IocktnWOwWiaOc7tTUJvvH5+IYVyB/XhmMhF7cDbL292gyrnuh1+3+lHwZQBPoF9kzF0vt" + - "WaweG7mDvYKxENQODdph/VcnypgUiFTWRTIPB1ZXfCTMWYf2QSalpHRDR4vVsqF748QbcG" + - "E9mbzvLUz6NDA+Vf8wEwZehqSDM="; - public static final String End_Certificate_CP_02_04_crt = - "MIIChjCCAe+gAwIBAgIBDjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMi4wNDAeFw01MDAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDIuMDQwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALBX5GIQtvwswWwMDDPnphIk1rJSbcq7iClXLM2E" + - "kgvBu+hbOzb0v9mtl0KJB71TWJCfwceVQiXc3Gk+YduujAbZRVTkROf9UOWD9bfrI7g+52" + - "g4ms2n7evCO33b+kGEf4I014xl8dJDWtHK9Bhr+569RW9TzO06IeVeTD7whxMXAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIuKXv5WkUTWAwEwYDVR0jBAwwCoAIWAOnkHkwSVkwDQYJKoZIhvcNAQEFBQADgYEAiu0B" + - "yR5Ru8qVsgRqkOpCvrJnkqBAImbbR6+BUYH0juRxxKzKnbFOjU6a9WvkKpEBB8Q2xLynPN" + - "68ecLpnOynx3xj2sWWSVbsRKPy0iOesQblKrq3yHAm4lhzoWA8t1Xz29Ko1WxylDhyxGpR" + - "QAWsyGVCfJFlsZE0ibw3erlWTnA="; - public static final String[] TEST_7_DATA = new String[] { - Intermediate_Certificate_CP_02_04_crt, - Intermediate_CRL_CP_02_04_crl, - End_Certificate_CP_02_04_crt - }; - - /* - * test8 - * - */ - - public static final String Intermediate_Certificate_CP_02_05_crt = - "MIIClTCCAf6gAwIBAgIBDzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAyLjA1MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC2d80bD1RounqjKizkZJYPFUuVWZQ8W2nZDkEp8qR9" + - "fRWCAGOZGs84tgHj5gasmxy1mxJc9ogyQ2mcZhJRitRm5LVNuGevO6JmfqYtJxbW54aZGE" + - "5AWSRXqjJKJEih4VmPjA3vjQaSZSZJnu0DSnO82qWfu1ZUDlvIG6dfKJWRQQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQI3uNhI+QuI4owEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAG/+Rpk8dYrSFdaEO8Ch5tuvvKTOMi7W/DRA4B4xR7WyRJmosPB+37c" + - "teGKVzqFND22Xc8xQH/b/nxYW08sCSLAfN0cRusoSWwWSRtPO2f9fyC/BqCy2B2kQLFNPM" + - "Bk22jNFwLqPUeZn1UHN05RFAqVx325kpl2m1V7tw/mrXATI="; - public static final String Intermediate_CRL_CP_02_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMi4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI3uNhI+QuI4owDQYJKoZIhvcNAQEFBQADgYEAWZUI" + - "2VGY4pak0kICONP/CKvamYFs5txJfR69AC5tEJ+Fy3PmSeHkLUZf/oc9d8EEyr0MsIjRHj" + - "N4X4MquMlk4FflZcc8GblQK8LdXBK4Dy1SiXHA5GB3U1AmgzAzEQGwGRZnzWP5+rJ65upX" + - "vksAYyPQmruRM0O5sElctPn6B+Y="; - public static final String End_Certificate_CP_02_05_crt = - "MIICiDCCAfGgAwIBAgIBEDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMi4wNTAgGA8yMDUwMDEwMTEyMDEwMFoXDTQ4MDEwMTEyMD" + - "EwMFowYDELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UE" + - "CxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5nMRcwFQYDVQQDEw5Vc2VyMS1DUC4wMi4wNTCBnz" + - "ANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAviLKpW4iblWNLQfmBJJ+ruMgygmjRWfoFGya" + - "Ndv2ma0Ugqm5xXq8c0orbnezwSp+tnzZZhG5KDNZr5+z3krCkqOGGzuUvVLqeJxPOLu7Js" + - "y472nAA7+FhwfZrXUI+Vg9F4qF+Ye81ivDrYVAEmalCpCyHOAKdvwkwQjRucifu90CAwEA" + - "AaNSMFAwDgYDVR0PAQH/BAQDAgXgMBYGA1UdIAQPMA0wCwYJYIZIAWUDATABMBEGA1UdDg" + - "QKBAjgph7BA5L7dzATBgNVHSMEDDAKgAje42Ej5C4jijANBgkqhkiG9w0BAQUFAAOBgQBr" + - "MDMv9NWCTIQ3blMEqPiEyjiBhSJl88Cu797P4lIn+gc6E+0vZp61X7B2k5CHgsnxyVLK5e" + - "bwl0bYAPKwRI9yzHLrj71RNw8HA7PCRPn1GNrtBBbIpLE0/sqLo51UPu/377+CnzYhIycL" + - "tvS0KDLUTDSY/OowDcplF6Xwnt8cUQ=="; - public static final String[] TEST_8_DATA = new String[] { - Intermediate_Certificate_CP_02_05_crt, - Intermediate_CRL_CP_02_05_crl, - End_Certificate_CP_02_05_crt - }; - - /* - * test9 - * - */ - - public static final String Intermediate_Certificate_CP_03_01_crt = - "MIIClTCCAf6gAwIBAgIBETANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw0wMDAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAzLjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCuF8mub5cgUYZytrRjJ5Rhc2fgazGxWIj6EIKzeSpo" + - "FwScItRX9KxnTIXEBTguBk7eQUsbN8yu49/Mlq45EAnemyZRBWzLFLYLPCco7pyTsWm7Ps" + - "2FAGJ3vE9pC9xaZC+KrwF3Ho+DZNDwhj5InXTP8pChAIPfB8/7V/2mk0lN0wIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQI4mI6Ojs0onswEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAMVGzU6f4YOHpHla+YuGCjHOUZYrA9J25G3UFFoPr2JZEG+Fb5hRQUh" + - "4S1qUQKXn6dpVua+qTJDk3Tg2N8OdIHG/gy0hvYHsxhLCSDQBsfPN7p3FClM7r/VHOqgAN" + - "vzT+KYvxx6gwn6O+n7ERkrBIfkyrGFhnmjx3+VOCc9P4SDE="; - public static final String Intermediate_CRL_CP_03_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMy4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI4mI6Ojs0onswDQYJKoZIhvcNAQEFBQADgYEAfwYf" + - "4kAG4srB2VxWimJs1HwXTaPDooellQclZ5hP/EluT7oe03+ReFef6uXbHt/xRdeaoQhJGy" + - "SP8dWf6UIbL82oaSYqChIvAZD6zTMavEgSET0PlUsK1aEMTpMEtKPvedFSOTNBaMNvMzSW" + - "t5xwurn63qyXTOxHf4m2L4w8+i0="; - public static final String End_Certificate_CP_03_01_crt = - "MIIChjCCAe+gAwIBAgIBEjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMy4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDMuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ/ALaZ+MdNxKDH49+7jUm+17DII5QQEfjk8IaEU" + - "syApOhsByOG06HPItiBEnnfDDxU5kjsZDtw/9LlouBocNXAJt+ZmL3QYyOgeH4SQ4f21rw" + - "7j8fw57gUkP5oWhEc0loXr/hB92hoKbsBoRpv8F1zPZcPNLUnyUzqLH5+CeIibAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QI822isg/wPCowEwYDVR0jBAwwCoAI4mI6Ojs0onswDQYJKoZIhvcNAQEFBQADgYEAilIn" + - "OD0iQrLrHRkO4zr9S9VXAJXJV3l9wfbLBweXM3q/zt4HGKBw4Wq1Yn+AfDxXrBtJA5hP5e" + - "d7CDd4eM93yeKozdZCLNZfUM8sJ2/MRh07tvwJ19e2STklED8b/ndmr5my8H8jjJDaaYww" + - "qTSnXqpcqsUsj+kV4Mk0DvVWT3w="; - public static final String[] TEST_9_DATA = new String[] { - Intermediate_Certificate_CP_03_01_crt, - Intermediate_CRL_CP_03_01_crl, - End_Certificate_CP_03_01_crt - }; - - /* - * test10 - * - */ - - public static final String Intermediate_Certificate_CP_03_02_crt = - "MIIClTCCAf6gAwIBAgIBEzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAzLjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC4AbP8gDUUcIa8w4pEsGgbYH2sz08QMUXd4xwx691i" + - "9QCcyWSovQO4Jozeb9JwtyN2+f3T+JqZL/gwUHuLO2IEXpzE2C8FzQg6Ma+TiSrlvGJfec" + - "TlSooFmEtD3Xh6I6N5PM1fpyyY2sOOhARN5S6qR9BOuxkBAqrAT0fgqD2TswIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQI97nJCqq6+kIwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAWwpfh9oOOvj9xHS0zcczaUIHTkpjgk09I+pERlu0Z0+rHvpZGge4Ov" + - "NDFtMc4TgthGcydbIwiKogjtGBM2/sNHIO2jcpNeOtNKLxrzD4Y0Ve164kXBu9Mmsxx4sG" + - "7XUXZWgiOPfu/HmyPVdzbIReJdQO515SNx7JdgVyUkyhBxM="; - public static final String Intermediate_CRL_CP_03_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMy4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI97nJCqq6+kIwDQYJKoZIhvcNAQEFBQADgYEAC9Hv" + - "NevV6/Oz3wcgEbDgZYRKJRdr4OW4Es7R4ahjz3sH6GXZ1HiEjx2+frmp8LMshQ4D+hpjRk" + - "drSPko1M4a/fQCYxbonZ0xjpYw067dwLmr56+GPJAxkzcSmFKXx+ejyQpG+9+qCR+zm98V" + - "lop6besAaGUjZKnYShIQOfNzDZk="; - public static final String End_Certificate_CP_03_02_crt = - "MIIChjCCAe+gAwIBAgIBFDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMy4wMjAeFw05ODAxMDExMjAxMDBaFw0wMDAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDMuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMJMiW+G4bgoRaYz2OUu/+PQ/yp4JgFOB3Vegf5/" + - "vIrF4gsnoQxOCCsO5JTLrbS5fi3COjvM5w9/SZpNHtSfyWb9afmx4DdrT1bNjma7I6PCid" + - "yxMzX4iTLeaMRnqBk4A+/0Wf2+4VzCqr8aViIiQ7u2JfZiTQ4dZxDoUW6G8lrbAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIEjny2GzFXGQwEwYDVR0jBAwwCoAI97nJCqq6+kIwDQYJKoZIhvcNAQEFBQADgYEAJw3T" + - "3aL3pYbZhswgshOvJ9Y1qv65R6rClSxB5lqBw6+Qki4ZpW57NK8LwaGS03XzDUPaDi4/9R" + - "hGCHpP24fIskS4n4jNZgKpGtt6VEVorUH7cOLNCw2cuwMlKbkyZnNdx2JqTMMlHzNJ3cmy" + - "aX3F70IY0OZbwCKdUo/uMVC6hss="; - public static final String[] TEST_10_DATA = new String[] { - Intermediate_Certificate_CP_03_02_crt, - Intermediate_CRL_CP_03_02_crl, - End_Certificate_CP_03_02_crt - }; - - /* - * test11 - * - */ - - public static final String Intermediate_Certificate_CP_03_03_crt = - "MIIClTCCAf6gAwIBAgIBFTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAzLjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCjLYKGKEMJgC/r0NH7vubQZ5qPEFEEN6QdLUWWqf/O" + - "Yqo9hboQq6S8dFHp3DVR5x/4NOdNRjsTABbXsnz8U+L7+4CorhDhXj29weGMYIIfJ3XSIb" + - "T7sE/GOPmXeGhrTv2zucI1j80sN5nTEoiGFm10LQqAgoyV46BxDltf3/D7wwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIhCIOyzfScpAwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAA18kQijoJebmTQS7n/q/fQx2iblOJaJAWQLHeGCCGqKxCjUpOxuD+y" + - "xMspmTKdQqEkqQ5vpHdFYQ5MYuecqAdp6woWUNQGVd4HHPmHsAW3Oppwb0yLggYs8IVHjm" + - "dNO1pYb+YYciCKBtX8D1OnedIRcrQmDMJUjbfmAEv/4b0EM="; - public static final String Intermediate_CRL_CP_03_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMy4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIhCIOyzfScpAwDQYJKoZIhvcNAQEFBQADgYEAk34j" + - "SxMr8p1h1qJWlfoh4er9pu1AkkHujovan6Ctx89VwFdOS5Kw82OCvD+nmJAHrFuncNlClf" + - "51G8FCEAFLhMNwic4WAxrBX15hcUTaWk8Wj00dfUFwjG8/Kv3QUCDBN8f3KC8/oBeORRX9" + - "dHW5ei2IUKuD1ITCeIoyRDBxQIg="; - public static final String End_Certificate_CP_03_03_crt = - "MIIChjCCAe+gAwIBAgIBFjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMy4wMzAeFw05ODAxMDExMjAxMDBaFw01MDA3MDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDMuMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALSw1Ey7kzFzzjMS4oTSrZH/95NMHLxtUSaVGMCy" + - "0q2iLfGZ79eTS9megQUranYlIuK411yvFtskbFKf0idMKBtM8nX3Rxubm5EnbnpgvNrBEg" + - "0FbOPqpSaR+8pxZ6lweB45tkzLU3OZeAZSpGOY1UvT/htn6Ae8JQAVajSvYyfNAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIF014kOHikvcwEwYDVR0jBAwwCoAIhCIOyzfScpAwDQYJKoZIhvcNAQEFBQADgYEAdLMM" + - "zGPPvBLgPbhn2tba/7HiaZaayHIxTXmpW0KAhP+8hwapOitrtLGPwqVtxQ3GoSMZJPMDCV" + - "WsrT3OZm27G6ytqqNZ2ZO49UC7WwQ49TVlN79Ui9RZIBnRzlMIDNKsyuohfSRhFZTkWdoH" + - "/y8ulY8k4xBThV8e8IRgtYj3nhc="; - public static final String[] TEST_11_DATA = new String[] { - Intermediate_Certificate_CP_03_03_crt, - Intermediate_CRL_CP_03_03_crl, - End_Certificate_CP_03_03_crt - }; - - /* - * test12 - * - */ - - public static final String Intermediate_Certificate_CP_03_04_crt = - "MIIClTCCAf6gAwIBAgIBFzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjAzLjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDbUii3czeUQ2zNlxvrhnJ0LcBGxCDHFr3xx+plDg3f" + - "uasDKCY/VjCLEfQ5a2oqcovvGKsd2CPXbCFJtimW1R7Dvt+a0y95fppsdseorYDikiBlOj" + - "ja6LR3Cz3bslYc133C+W/MKHMJ0tdvtTk+SJrq7lqs+iv/b/xHC3k/gDjIswIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIFNw3o1kc4XkwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAn/pr7/noYyjXSKEe/eLk3l4Rb6PEhNAnzySmxGkjIjWKAgh5IVYSGV" + - "KFO/FaNOiYkRFHwXZFNj71q7gbM+HwALurN0Mr/MUA1TSpPy7YhFL0SWq3C3XsC/dVJ50b" + - "HmTW+dGcxboX0h9HeKFxp3VyOY/dUut2oc+s/TnmqQII1CU="; - public static final String Intermediate_CRL_CP_03_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wMy4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIFNw3o1kc4XkwDQYJKoZIhvcNAQEFBQADgYEAMoJ5" + - "jGE1AxxfluixG8Sk7H4W2rqSEkQyNHfnlKSMbh9KZA3evI8HGKGGfkbBNoe4/HauZ4NVFw" + - "FXgllCp+TI8Qd+HafFoDv6ff1K7T86p6r7tE3AEM1XmbnfohP3/ivpIzustv/f2rqjxILK" + - "Ldvrth2/OlNygwY+D54lcWH1DX8="; - public static final String End_Certificate_CP_03_04_crt = - "MIICiDCCAfGgAwIBAgIBGDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wMy4wNDAgFw05ODAxMDExMjAxMDBaGA8yMDUwMDEwMTEyMD" + - "EwMFowYDELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UE" + - "CxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5nMRcwFQYDVQQDEw5Vc2VyMS1DUC4wMy4wNDCBnz" + - "ANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuSL9tB1JW6JPUO2Xw6TMYkPX41lru3EPyYko" + - "YgXy4giy6LGoqbgtskHehD22v3rfWjqOd9iV2PBio/vYE4zEz0H0n84dpnBvog6A1AlE19" + - "PkQ1txjzIA52FQIRwRfZ38LaulQEfJ0a+fiRHQiM960O3YvHXV+GEbNcw4jo8b0sUCAwEA" + - "AaNSMFAwDgYDVR0PAQH/BAQDAgXgMBYGA1UdIAQPMA0wCwYJYIZIAWUDATABMBEGA1UdDg" + - "QKBAh9/WgM+UT6bTATBgNVHSMEDDAKgAgU3DejWRzheTANBgkqhkiG9w0BAQUFAAOBgQDR" + - "I6PKUGg876/fSljtqxXCR4CoGAAurNFOcM4EWeoc6ZvuDOi3P7rNYiYAXXlmp7epOAgvZP" + - "EV4vS16ODaJO6qIMR1YsaGEPo0ecT2pEStvP37X6pb5TdyjyKYF3586IN6TJdFMFsW/Lqg" + - "tucl9bGlWmfTVwxTexq6+D8diK48KQ=="; - public static final String[] TEST_12_DATA = new String[] { - Intermediate_Certificate_CP_03_04_crt, - Intermediate_CRL_CP_03_04_crl, - End_Certificate_CP_03_04_crt - }; - - /* - * test13 - * - */ - - public static final String Intermediate_Certificate_CP_04_01_crt = - "MIIClTCCAf6gAwIBAgIBGTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjA0LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC5UJ+KMj8tAmzr3OGYL2gSFcNTf8ik+ZVxlaPVGHyS" + - "KjYQBAEbefhfg5Ps2aIuqBwYkbtFXuHif5GEhgObA4InCyESeRjYLGcVMqwSZzAOFAR0dP" + - "1LzgzQs3ZgG9JX5MO5wEZ8IMnVN4Otu4XIlWSgIpUNS2vyet8Zi7t9fX+JewIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIOZvfph4Uu9YwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAXMyscmGpKSLG3hQltMQLegy0+g5wzgOrbFOWxZmiVNR+zSsHDD3UAH" + - "H4SyTozlooC0jAY4yAhZ5RX6SSJKx9fHsOZD9ldCmst14qLk3pkI+M0QiPBZkVTx5/7dR2" + - "wGkuNKSVWH6woOq7BbEzpO7xMlrUr6tgHt4Dc6Evt1pVZls="; - public static final String Intermediate_CRL_CP_04_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wNC4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIOZvfph4Uu9YwDQYJKoZIhvcNAQEFBQADgYEAe79z" + - "iEUgP/mvouJ9ufit1y4SjnHQWik75W65eGn/XGArRrBqJ8jZVJE4/rpDBbzm2V0hQoWU8z" + - "zchZFlesUyqQZ9KUlT0YGR0YPcNw/V+58RonWWfmU3M2DvWDrXgCOXPm61+AYq4+kTowsG" + - "0stmeML6NxjDzWpfAgI/MpXqe80="; - public static final String End_Certificate_CP_04_01_crt = - "MIIChjCCAe+gAwIBAgIBGjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC45OS45OTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDQuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPiAZKXPjK8jvaNj34VynyKPK7dQtFysBPKFW5Y1" + - "Bc+OMsyd2pPpQoJYcQTMMomlAqoBvSXUJCMNly/BxVuvn7l6I9crtx6PjBBUlEzdcsscaa" + - "EaHuCCVl+Msnr66cSV3GqVGAhujun81+lyurcTEog3ftsohwbQnfA76qNU/N3/AgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIJZPDbf2xNv8wEwYDVR0jBAwwCoAIOZvfph4Uu9YwDQYJKoZIhvcNAQEFBQADgYEAZf4L" + - "1RDHDXwwA2CgcIhM4CAfZ72CR2zOan0at38VVFB3u9vs4VLwFcrOQCIjDbdLijc0XWLima" + - "4vCD1qrsv6Hk5+6113HfFNmD8mp6X5jAwoNPa/I4kmFOA8iIm4TTk7M75vQyCQTPG0VzbU" + - "Nu3uwTbXKm5ME9C5MFMf7z347CM="; - public static final String[] TEST_13_DATA = new String[] { - Intermediate_Certificate_CP_04_01_crt, - Intermediate_CRL_CP_04_01_crl, - End_Certificate_CP_04_01_crt - }; - - /* - * test14 - * - */ - - public static final String Intermediate_Certificate_CP_04_02_crt = - "MIIClTCCAf6gAwIBAgIBGzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjA0LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCteErspc5ekSOel/wmjn/XQ0HUy4XzxB5Zj0nGn9FD" + - "PbjF2LERCHOn5aBnIMHYhyr7PDynwbvSx2egzGC6wGe9Zrri1MteirQ9Ppw7062IIleloy" + - "UAiuwvD+s0npKsvboarQsCMfOB1hOB1tGG1bjXP6B5B187SZXuR3KawggyJwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIUjnGp96itUMwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAR6fmN+9p5AWy/asEAiVBnbY9q7EQXyB8WuZK9FtFmupe3hlfcTq84E" + - "A+TGvXOlNr05/1iLRv82GsWXDif7DlGVPN8CS1+0kb5Ve8Pmv2ziiWVREqWx916ioPjDRp" + - "wvdGcCNC26+fyvv5TrP8uzojurl1ZlVRRqi2sIbopVX5r8w="; - public static final String Intermediate_CRL_CP_04_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wNC4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIUjnGp96itUMwDQYJKoZIhvcNAQEFBQADgYEAZkXJ" + - "aJG4QDE02wFURwaxWuv2VyD7m+N/2B0/9KR+6UKVpsMd2XHq+G3SlFOa6dA/fHUdhtUs2D" + - "gpx3SfQYbcgKFrryZHqJDK230eP3F41S9g5XJTRaNR5iZvxvh4bmSf4l6a5MXsKEoBoJoT" + - "j8cU4qg6j7Xk4NpIR1JbWiSIYQc="; - public static final String End_Certificate_CP_04_02_crt = - "MIIChjCCAe+gAwIBAgIBHDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MRAwDgYDVQQLEwdUZXN0aW5nMQwwCgYDVQQLEwNEb0Qx" + - "FTATBgNVBAMTDENBMS1DUC4wNC4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDQuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALM7mfq+hpLfvQdqZUJfIx/2gFcgHS2AsgZn0An+" + - "Yn61WtG8K2+lt/a8aypa/q+J93RVkRYKWKFQcJHiRgx7DMlXElVnfQbSFuLX46ng4hqmQL" + - "sSOKmXDld2BlyMZ41B3rfdhJT8P12RMR6uAwvc9CH3b0UTcsc498Kj+JeaRbzxAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIo7S64S6t5nswEwYDVR0jBAwwCoAIUjnGp96itUMwDQYJKoZIhvcNAQEFBQADgYEApNT5" + - "Y+9Jc28m5Qwjm+/8SKk83iCPnIW3BsAvQUB9Wmd1+kMZvqLySQjm1tBBbcGYuSERMJ2Et5" + - "eoTdL9B6EG2CZYnPqu1vk0TVugRxs7IJm4h5z4MCInf2g1KTt0AMEasQW6ZTj7DIkkU48Z" + - "EKLPoBGXfD9t9Y9cmdj1e1RQbog="; - public static final String[] TEST_14_DATA = new String[] { - Intermediate_Certificate_CP_04_02_crt, - Intermediate_CRL_CP_04_02_crl, - End_Certificate_CP_04_02_crt - }; - - /* - * test15 - * - */ - - public static final String Intermediate_Certificate_CP_04_03_crt = - "MIICmzCCAgSgAwIBAgIBHTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGQxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEbMBkGA1UEAxMSICBDQTEgLSAgIENQLjA0LjAzMI" + - "GfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD11QBcw4P2rTUfPmbVNYqdo0AMmcB3Yxsx" + - "Iz5me/S1I2PJLtRh9KP7lUV20SMEFsFKtE1C+9O7ODtOUCJA/6ECeXbyj20SbG1E2oQrZe" + - "gkcn7IQDUgnuedzdFj4kTevok6ao9hycg+qeZrL6oeBD2XQCd9nqMmzhihNu/QOSnp5wID" + - "AQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMA" + - "sGCWCGSAFlAwEwATARBgNVHQ4ECgQInx+ELo31rJMwEwYDVR0jBAwwCoAIq5rr+cLnVI8w" + - "DQYJKoZIhvcNAQEFBQADgYEAriYMoRDpSPI4HWrxN1rjqWIzggz8p1wpbEFgK5o/Fi2KT3" + - "jCd6bfCcIFDpoXNqlsc+dvzc4XB1Eg/Qbcror8HP8LSxrbFw/y7VhC+wCaDCmhcqQn3rp/" + - "WaOWnR7/H7HlKM9m1u7MBtwlxHINnLKwPHIA1XwmAnItAXIL2yHRJhU="; - public static final String Intermediate_CRL_CP_04_03_crl = - "MIIBUTCBuwIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxGzAZBgNV" + - "BAMTEiAgQ0ExIC0gICBDUC4wNC4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWq" + - "AjMCEwCgYDVR0UBAMCAQEwEwYDVR0jBAwwCoAInx+ELo31rJMwDQYJKoZIhvcNAQEFBQAD" + - "gYEAvJgOX6tewnRbC9Ch+Fe4KjkB9IAhe5anQKGfnDHuLfga6JEjOzyfhonWZeppJwvYpl" + - "1rZbsKICNphMDkd/eaWnn8Q9w02ah4kzIb0LuzrNBrxpFv9AAidfGU2VeF0gRi02jtAZsh" + - "gUNbrdC+ovA8mAsBigy+HMzCi61+wrumwvo="; - public static final String End_Certificate_CP_04_03_crt = - "MIICijCCAfOgAwIBAgIBHjANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "GTAXBgNVBAMTEGNhMSAtIENQLjA0LjAzICAwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMT" + - "IwMTAwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYD" + - "VQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLUNQLjA0LjAzMI" + - "GfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2Rd0VKnTIrME7hzpnpIPGXGXZCjpf5lSO" + - "19zvB3WdZumLGdwUBXpIQTrl5teYgL62PpOwNC93URZDEUt+rqoqvs8E7MpF3IulStp2+H" + - "/xa6Ihf4OmkgKjpHNTWOIFXeRJ4sVgWuH6cqQ+6GL+0fa1sed1crsEgTTAGYNhFi6ebwID" + - "AQABo1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR" + - "0OBAoECBNwCFdDgPCqMBMGA1UdIwQMMAqACJ8fhC6N9ayTMA0GCSqGSIb3DQEBBQUAA4GB" + - "ABAjSPg794yiVz9RqdNxic8TGnApNrZui/vwr1U8ZkETZfx8W1fWgQ0z7KjryML5IOmvps" + - "zycM7by6jb2kMmxI1SQCwjiNQ1fb1osrNAj2bRfpp2YgjjbHx1XkddommtVc0V8kvyQBcb" + - "7NdxfbwKr8AtpiWTWIajc2uqUlELsLzr"; - public static final String[] TEST_15_DATA = new String[] { - Intermediate_Certificate_CP_04_03_crt, - Intermediate_CRL_CP_04_03_crl, - End_Certificate_CP_04_03_crt - }; - - /* - * test16 - * - */ - - public static final String Intermediate_Certificate_CP_04_04_crt = - "MIIClzCCAgCgAwIBAgIBHzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOQ0ExIC0gQ1AuMDQuMDQwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOFf5hr4R8IqTp53qQSiBEjOFQ3Q3ICcafl+FLzm" + - "K3xIFqERjyXARsTM4gDQ9yntFeNp2TiIi98xBrz7D8TlrbTAmxO/PUfAQ68tXpz9Id/XrU" + - "WeAKxMZULPL9nPFcGQoh0qq3JKpFRSb3Iobryfysblm7cCDDCJOI7uK14XZtTFAgMBAAGj" + - "YzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMBYGA1UdIAQPMA0wCwYJYI" + - "ZIAWUDATABMBEGA1UdDgQKBAjior7qCuLBljATBgNVHSMEDDAKgAirmuv5wudUjzANBgkq" + - "hkiG9w0BAQUFAAOBgQBhh55gTy5htqjxW1Ch2hRrRikhBH7LJz1PmDuzwiIOtnWL+EiQOY" + - "T6h3NV1j8Kn5S4KhUOrhnvrPXRi22HdqRzEPl7y/wXm6G0XcgYlyy2ofZKdYVWCVStKAMW" + - "5SwV2wC5RPK2KphdhnlEqss6QVRUsliDDjnf9Saiey9nzJAfNw=="; - public static final String Intermediate_CRL_CP_04_04_crl = - "MIIBTTCBtwIBATANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNV" + - "BAMTDkNBMSAtIENQLjA0LjA0Fw05OTAxMDExMjAxMDBaFw00ODAxMDExMjAxMDBaoCMwIT" + - "AKBgNVHRQEAwIBATATBgNVHSMEDDAKgAjior7qCuLBljANBgkqhkiG9w0BAQUFAAOBgQBI" + - "VlXD5FnIiO8tavLJ8qo/qRhbBNgUbFBdAgAY6yVnFNP6YN4qPineYPN6NV1XdqNDrZh2Nz" + - "GHzX3YDo1Uv9yABVR0NvXCaMIW5/raqZp/on6bPuQLgJe9UisOPKunzehTm/NmO1RW9dwU" + - "37UzC0XnVHyVipDVh07DrTKBUtQJQw=="; - public static final String End_Certificate_CP_04_04_crt = - "MIICjTCCAfagAwIBAgIBIDANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJVUzEZMBcGA1" + - "UEChMQVS5TLiAgR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRswGQYDVQQDExJDQTEgICAgLSAgQ1AuMDQuMDQwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMT" + - "AxMTIwMTAwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQww" + - "CgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLUNQLjA0Lj" + - "A0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCegy6qOnM14CS7+enBElgh2DLtF5bn" + - "ah0yfA18/hbqnmUaWOWJQllyXa8QFawnvdXOOEXJm1ErIm3rDYihkbUTP+ybOBH9dprWtl" + - "1cSGL9CkoxwzkJRLQTu5xG72EhET3S3kwqZsmYbgy4MduGKv9VGFbv75Wr17Vo9K4Lz6QK" + - "vQIDAQABo1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQ" + - "YDVR0OBAoECEc4b3BP059HMBMGA1UdIwQMMAqACOKivuoK4sGWMA0GCSqGSIb3DQEBBQUA" + - "A4GBADj73jXpPLev5crwZIoXCJd/nXXp1fJzEEbByWggsR9cFHN4wnp7N6gpIxQbLQwjmo" + - "cLPC1pHQ3A5VHVrCbxAk6nifmSvnKFWHTBftZGpfTGkrXbURFF64T/CB4O+JXr1eBUGheN" + - "Q0T8L17UNgi3oBENKjASWnpjxvD2QrOnH0rb"; - public static final String[] TEST_16_DATA = new String[] { - Intermediate_Certificate_CP_04_04_crt, - Intermediate_CRL_CP_04_04_crl, - End_Certificate_CP_04_04_crt - }; - - /* - * test17 - * - */ - - public static final String Intermediate_Certificate_CP_04_05_crt = - "MIIClzCCAgCgAwIBAgIBITANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOICBDQTEtQ1AuMDQuMDUwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMBsWmrcKH0J9bkI3zHthZ0S3904f3fMUSasY5qp" + - "7CSQ0sbXTwP947sfAPK4Dso6Bpwl0WExRCdFHd6qfY9wR+NtfuI/DkFEY8WveoqM4Vskpi" + - "cutWghCx14PiPY5YGFn8VvXu7wbuHp4TnHtUCMEUt3EfYO5oqm+/I8y0eTKMNHAgMBAAGj" + - "YzBhMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMBYGA1UdIAQPMA0wCwYJYI" + - "ZIAWUDATABMBEGA1UdDgQKBAjOoKlp+BfGqTATBgNVHSMEDDAKgAirmuv5wudUjzANBgkq" + - "hkiG9w0BAQUFAAOBgQDLhQ/RJFqMDNRonAHZ30DYyphf8do4q6ARikhhXSSa6G2G/PzbpS" + - "x3T+3G8ot+NnFhtf9ZWo7KfwmFEbUA/B/X2vJaJbNImkMDT1aTY5sPXtA69B3QKQVz7HST" + - "f5XH6DjuoV0/m1M153A4vf1Z783dOPw1MzOq19t+6tYFeELEHQ=="; - public static final String Intermediate_CRL_CP_04_05_crl = - "MIIBTTCBtwIBATANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNV" + - "BAMTDiAgQ0ExLUNQLjA0LjA1Fw05OTAxMDExMjAxMDBaFw00ODAxMDExMjAxMDBaoCMwIT" + - "AKBgNVHRQEAwIBATATBgNVHSMEDDAKgAjOoKlp+BfGqTANBgkqhkiG9w0BAQUFAAOBgQAp" + - "6gLCdPQw7Hisnr1i3QbD7GybqfD6b1s10GQ3c/j59RYDe1Fk47Srs9ol/baleasWjcdt8M" + - "SlTc66KvK9YPFAqIdYoOW4FidpJBF/1cvSc2hGYwVsxLnXKr9CJ5Py5vBCCjovIRiLdzoL" + - "ZoteOKFIEHkV7V8V2OTFawxpW9hkiA=="; - public static final String End_Certificate_CP_04_05_crt = - "MIICiDCCAfGgAwIBAgIBIjANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FzAVBgNVBAMTDkNBMS1DUC4wNC4wNSAgMB4XDTk4MDEwMTEyMDEwMFoXDTQ4MDEwMTEyMD" + - "EwMFowYDELMAkGA1UEBhMCVVMxGDAWBgNVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UE" + - "CxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5nMRcwFQYDVQQDEw5Vc2VyMS1DUC4wNC4wNTCBnz" + - "ANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwZsiUhXiFHN9dfJb0Yyy+rYtV8gx+d0+8WkW" + - "5C68nQgSqqk2uSTpvZbx0bpHF+s+LKppj2M2tt/AfZgVQHTsp5rO0IftZE2iLwqejj0rYU" + - "Poprq1PE3vVhs818ZlDS0PTUP97YxLysQjq2jS/d/9lF5pS3sMlP4Usp24gXX0vG0CAwEA" + - "AaNSMFAwDgYDVR0PAQH/BAQDAgXgMBYGA1UdIAQPMA0wCwYJYIZIAWUDATABMBEGA1UdDg" + - "QKBAjpC0ZvCXrvBTATBgNVHSMEDDAKgAjOoKlp+BfGqTANBgkqhkiG9w0BAQUFAAOBgQB7" + - "YwJWcx+PU1sUZUOVleoB5amHFu0GT+Hy7cRa82UJMHFkz0bmnyEV8CBNcnn0xa5iVfwe2y" + - "5ZKwy61DLR3MPTar9eKITL67uZag9w+1tnIf594XRbEiUzn20uxuDFX3oPoZCemtWdVanj" + - "2T+9TVQKfrp15+qzOCObNNRHZw29EA=="; - public static final String[] TEST_17_DATA = new String[] { - Intermediate_Certificate_CP_04_05_crt, - Intermediate_CRL_CP_04_05_crl, - End_Certificate_CP_04_05_crt - }; - - /* - * test18 - * - */ - - public static final String Intermediate_Certificate_CP_04_06_crt = - "MIIClTCCAf6gAwIBAgIBIzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjA0LjA2MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQD0t0dfe82Su58bJdn4dh7E3OCam1AUPTzPnt7DwT2w" + - "1XwD76OCUYP7SBBjsLYDDfUCb2ek96pSK4jpzyE6/4IOtfObe7OW+iBT9YAB5WeW+SmvEO" + - "TIX+xo13sbz6rG6j9svcOxtth98yv7mxzV/ZwTNBSO72CcfDXIIq20TVunlwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQI0AufZEn1f9AwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAbfhxuNBYizxfMZNcyiN61j+7LXZZo3SmMU21UmOhPBTmdTbIkuVCI+" + - "F1jSWdu3eGShVNJ3jmkidDvojMm+E8ZZ1YGHYfgeG16dDQudaGUjGmOfYzzlkFmsaf0paG" + - "4y4sBerPsZCmhN7BanGh3qYPFvadSmp3OapGfEmDtS+BbVQ="; - public static final String Intermediate_CRL_CP_04_06_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wNC4wNhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI0AufZEn1f9AwDQYJKoZIhvcNAQEFBQADgYEAIAI7" + - "W6K69twJZnHx6CoIMs5+P9DrJ2yKHptmntlOCTSJirC/xdj0Zv2k5FW84VrTtdCSZDT1Ce" + - "4Dh69fT2sUUexJb/4IcDtzloiuASSJzKWCeVIj9A8e6+coNUJVKtRKRX8bHJ5Un7xpFrY6" + - "t1hdxt8gUecAAdXEFGuZ3QEHHN0="; - public static final String End_Certificate_CP_04_06_crt = - "MIIChjCCAe+gAwIBAgIBJDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPdS5zLiBHT1ZFUk5NRU5UMQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1RFU1RJTkcx" + - "FTATBgNVBAMTDGNhMS1DUC4wNC4wNjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDQuMDYwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKq8rAPXsu1RVm3vT7od7CDLn8k/C3x3wvfzoWrm" + - "W0cmlhp9xRy5a3HWiJATD8yCKY1psBgnrOpv37sdtUX4P2kf668HrYOaGo365fKPeT5Wjm" + - "gp0pL3sXKNNsCuJPd3wKAXGHAi1R9arZFYPsKJlfQl1774dwAvzxSOMr5+pbnzAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QI33MEYdo5YX4wEwYDVR0jBAwwCoAI0AufZEn1f9AwDQYJKoZIhvcNAQEFBQADgYEAo8Ge" + - "ADBoJFEIRzdO37uasuyIBhClTUgyFhEKemMBN6aelYeiJMX6FZIL3DgZOce4dg7Zg3Ak/w" + - "B5m8XlGQLW9xIbpEzY/Iq9kr+qK6k9YmvtcOiHFbnudCFNZngTQZpxjiDaj4eA48uqKIxs" + - "51taC5gOv9LYWPnugN8TsUUFZ1s="; - public static final String[] TEST_18_DATA = new String[] { - Intermediate_Certificate_CP_04_06_crt, - Intermediate_CRL_CP_04_06_crl, - End_Certificate_CP_04_06_crt - }; - - /* - * test19 - * - */ - - public static final String Intermediate_Certificate_CP_05_01_crt = - "MIIClTCCAf6gAwIBAgIBJTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjA1LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCshocJtyGsxeEd2ouVTVKp+HuhDjnDk9eXtaLQIKaB" + - "7aTODHYbq1mC+1LO5DmRV5PBVd8NuuCA+1DmzFrfYl+nMCjjgOkC0//Gf9O85Hi/n21q0T" + - "F+oVa1j9fc7nAgLIziexaXrflYSbaeNWkwHHftGUninKPuNGM2re0krEeurQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIaUi/P20o4LcwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAWBLeJl4qlAPKxmBM5QZ2JYsbCV3VBeYGAKQ+4L7ehS63VQMCwIjBCI" + - "LaHGIFfCqecDNd6cpYIArdx4tY7X2/Zxm3j5ocngpI1Tv8zydQcFeraILglsHf2UZUuK/N" + - "6jKGjwL68C8YwmA+u6ZhcQFD2Xg4wSMC/xxzAs9zEAQGBPo="; - public static final String End_Certificate_CP_05_01_crt = - "MIIChjCCAe+gAwIBAgIBJjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wNS4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDUuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO9ODA12Fky/Md5AELkaOvOwB31UlfZq3SHAOvs0" + - "Y4NYoA7Q5KDIwW8RNzMSKD30z51VlgOAaBVR6HLo6rkcWB4wGiV7EPelewdSOdk72IrnYR" + - "npJEm2KEuLkHB+gejgk+paw8CejxMsrvT6loN8Pz0btBKxWaCfknTIyXVyQsolAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QI5LtSKs/inGMwEwYDVR0jBAwwCoAIaUi/P20o4LcwDQYJKoZIhvcNAQEFBQADgYEAOMrC" + - "38uzHckKMkiawXhPUHtDQfyR7bLweS2qro7GyndfxPpeMJwjzVxqvQBtMuHON+al8jyXpy" + - "BsEryV6qvdFC1vczLzJHAJZmLe5np27zQIXOObsyYcOG+aPq727/pKoD90DAlBvrxNW0ox" + - "x7citflEYpmOEv9Do5xiO3MuCFw="; - public static final String[] TEST_19_DATA = new String[] { - Intermediate_Certificate_CP_05_01_crt, - End_Certificate_CP_05_01_crt - }; - - /* - * test20 - * - */ - - public static final String Intermediate_Certificate_CP_06_01_crt = - "MIIClTCCAf6gAwIBAgIBJzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjA2LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDI4MXZB08BfUHxo//4Re7Ax0qWkHgy6nb+/XaLQ2Fw" + - "Pbvpb5mkhLhqDZBSX3KQL0YiJ8p81tmdvRQH/LbFzX/3OKBTUfV5imYy979A2NEb4otFp6" + - "EDSskZhttY3d2IzUICoCWUXhObnmkHJ2jEc81bggFkK5Lir1m/tKq2IOPFJQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQICIAmlz6+Cc0wEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEA0ZvIG2cnk32p6uxqGw8Bu40NrfHu9gNkJL5MhDHJXA6OxU5BX5bWZp" + - "LnKXLoHiqSdtEdmy5cLZw3kggxndxjsnRFMyCawaYupJBhlgquFbuvBtA8rMtkc5H4zudP" + - "ZcOcvXu7Xw58K+1caSGURL+A6uXFPnMUBd1+k+ejbtO8Pto="; - public static final String Intermediate_CRL_CP_06_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wNi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAICIAmlz6+Cc0wDQYJKoZIhvcNAQEFBQADgYEAbkJe" + - "jfc1rztCbtC6xJZ3iZEDDMW2CxFvOvSwhmCjPqVY3lrCPNSQzdjmqepioCnu7ongP+HAA7" + - "hM7bm+SoN7KzXKufQ7C2ONoAwvoPZgnoidg7RVECxUByD6AJu04yd2wCLYRpCfS2tDtXLh" + - "HEDpe+ELwv35pbkCMlCO2u7J+Tc="; - public static final String End_Certificate_CP_06_01_crt = - "MIIChjCCAe+gAwIBAgIBKDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wNi4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDYuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOh7lUwMRet7t/ABI6mo27CsnRzQ64Xx7f1dqxrJ" + - "NuuSRslVShaWnwiGHjc+5/TS7Urfj9VO0dseBCzPsyYFoIX1q7Q5zlArwy24qpXTGMmlpE" + - "GByzi7jkXO8w5+wqh3+8RFrQQzr71zLtAVV/qPUyleuF8M8jzkwfPvawunmwdLAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIayC0PPU9zyswEwYDVR0jBAwwCoAICIAmlz6+Cc0wDQYJKoZIhvcNAQEFBQADgYEAPz7b" + - "UvaEV7Myjhe8LJO/soj84X71rvVPtBPrhYjWTJ6p69GCfJRyho3vAUIt8RFal1GFb72c45" + - "DQGkcVzLLJw8cDP3ajtWac5HZ9dNPJkW+Kh12l9gqjn061XAjQ4XnbbwQDYCuXhguPE9v3" + - "kzDbimwVwIEOB/4SARX37y7TUWk="; - public static final String[] TEST_20_DATA = new String[] { - Intermediate_Certificate_CP_06_01_crt, - Intermediate_CRL_CP_06_01_crl, - End_Certificate_CP_06_01_crt - }; - - /* - * test21 - * - */ - - public static final String Intermediate_Certificate_CP_06_02_crt = - "MIIClTCCAf6gAwIBAgIBKTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUNQLjA2LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC/IejV3DmeaLW8OwMfAGyr5+8NOxM1C+UBYslbOfWj" + - "KUGdhlX6TxFc5AOJVJBpS/QjeA+RWoUCxnxKb9QSlOrBmADrcnGz8zV0/c0JDLaU3oSgsV" + - "EWZE0SexBVWrKcl1j7wN0RuxMeAp342/YoyvBwea3VeqJkmSCc7Y2TjruWEQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIaHxWOdHsLbUwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAuzeq/lqp0qs62krK6EA81Silhy42l/KmynE3mVu9GPBgQS0BUDi7+r" + - "QQ+m0UxYElzj2SNO4J5aBYeC98lVJFCHX7QE8yVOoPBQd5rA+rrz4HD9QoP7glxTqLU6Tc" + - "9VFd+iaFpqsVtSh2bxH2BtUB2ARgebTklaNl5VPbu0+yc2I="; - public static final String Intermediate_CRL_CP_06_02_crl = - "MIIBbzCB2QIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1DUC4wNi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWjAiMCACAS" + - "oXDTk5MDEwMTEyMDAwMFowDDAKBgNVHRUEAwoBAaAjMCEwCgYDVR0UBAMCAQEwEwYDVR0j" + - "BAwwCoAIaHxWOdHsLbUwDQYJKoZIhvcNAQEFBQADgYEAYGaAzVoUdlSZ3uGKiRPfHAFIoK" + - "T79hNOvtOxaGA0aIek9OypDrDqYAh/s2jsXSheL0pr/v9WRIHvtCt7ytXDxVyn4Nxjpfv7" + - "BkAMMiccdUx1OH1VElTRkmmtMe7ROzUeHUGzXJNPex1Bc9BvSChH18bWYckyOZdYJBjctC" + - "KJFgw="; - public static final String End_Certificate_CP_06_02_crt = - "MIIChjCCAe+gAwIBAgIBKjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1DUC4wNi4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtQ1AuMDYuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK4D9H8JxeIrFuOmx0cSkIYNS0p7cDSBlcc57Na3" + - "+1k7lJD7mE9ZP6/47YsDVK2bwe4aTKCTXtPk/kGQ6bsLswJXbyW4k4+f5LeAYoXgbmZXjA" + - "WF+BKIl8uKetsqC3HkCeqhBaY1AGUqef4oOAkakEP+1jYFumNYtMaB+9x/0ncBAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIC9MiJNI71RMwEwYDVR0jBAwwCoAIaHxWOdHsLbUwDQYJKoZIhvcNAQEFBQADgYEAo/ib" + - "mIxteityjZlszjCc/s7yM/0snL78pYpMOZ3P2TPKkYh2Th4+Bw8JqX10+M/zwFBj5Bw7Im" + - "zCIRfS3GFuKmcVcyHB4OZLMcQZtXWA8GOZ94YvWq5TBINlVtThQtusQj15KBq2TJNNFUyD" + - "pBdvyo05AnEsRY0HbIQu6ZhNQ40="; - public static final String[] TEST_21_DATA = new String[] { - Intermediate_Certificate_CP_06_02_crt, - Intermediate_CRL_CP_06_02_crl, - End_Certificate_CP_06_02_crt - }; - - /* - * test22 - * - */ - - public static final String Intermediate_Certificate_IC_01_01_crt = - "MIIChDCCAe2gAwIBAgIBKzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjAxLjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDDOu1J/VIzbB4VcS2Dwf2fsHOmIj3iatM8y61V7CrN" + - "RCxCWTJ1Os8e/mFWOi/zN+0afizA0UzJDTe8L++/RlP68IFg5Ju2OhXqQC3HbUZmQ7ve9g" + - "QdWTfur3oEJV6/XoVE4WG0Ic7D1p7BENb3LUT+8MJdSboTvAggA1CiOI6zRQIDAQABo1Iw" + - "UDAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBAoECP" + - "RyRiSV+4XrMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqGSIb3DQEBBQUAA4GBAJlmJ9EW" + - "9ujUosqHZyZkniu2vX8VOL52OnxtLxw3LqxLyuxivjyYCaMAaJNr7/xfm3C2ozh9mQyZTQ" + - "6TpBapLFUH8QsEKUhy57MDUgIvZsyOvvjJh3AXfSkXDaMZ3ncLg6x0wwjN/Hxu9i+IhX1W" + - "1E7/5foGx7AEVfwY7Fo9S82d"; - public static final String Intermediate_CRL_IC_01_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wMS4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI9HJGJJX7heswDQYJKoZIhvcNAQEFBQADgYEAV4DM" + - "F5gU8MZ6E/mnjAWS+dIRKUBJV1GZJ+hOysdbmK1hD0mj5Pd5qTzlcvLjuatIoIsB5DCpYd" + - "AcNRLVvF5EJFhVjqsPzRlfUZth0Xqa+U/DeHjVxHxYsLEOSt+v2bLkbGh88SmOAk6F8xj1" + - "l7YIfPX5cIkUBTVZlsUt51slMXc="; - public static final String End_Certificate_IC_01_01_crt = - "MIIChjCCAe+gAwIBAgIBLDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wMS4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDEuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAPrk1fosBu0hemIKgTDCeV/RoFbbsm02X4LfZonX" + - "KeGRGYZXz4tpWgbNpjKBq1e/2bOO1DCn9I8I2kjvZdOkabk4MLeuRDo/sqlNndu4Ar5502" + - "pAo4A2V0QLR4IDHAJoDpxtSFrqELOiiyCx9O9V19ywe5pcBFrxVEWDqTnBUeDJAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIbI6BhABrmQ8wEwYDVR0jBAwwCoAI9HJGJJX7heswDQYJKoZIhvcNAQEFBQADgYEAYzYy" + - "M0wbzNhZftAWz7TfFi64uA9WmTmd4MeK9vga4ChswT4H1zlaV1Sr+3hqpGmOoP5AUd9XIq" + - "O/ui+/gFaeuOLI+ATmK+V2KHGAneMwzcw9qbXRc+xZqGGjbXMb3Bowe3qrj3mhyowfa1n7" + - "x5xB7XEOqO6sfWxLdDjLVo4sn88="; - public static final String[] TEST_22_DATA = new String[] { - Intermediate_Certificate_IC_01_01_crt, - Intermediate_CRL_IC_01_01_crl, - End_Certificate_IC_01_01_crt - }; - - /* - * test23 - * - */ - - public static final String Intermediate_Certificate_IC_02_01_crt = - "MIICkjCCAfugAwIBAgIBLTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjAyLjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDemJgZnOzXOwNGqRA3Xq9aMrAWQU4oFuhSELsEYfLZ" + - "GO3ntBjJLqCn+rs3FjR9N94cu63TduOAgqlXqrNbvyO1+SF9m35JXreqn/OS6KrK6c8W2I" + - "pDAWJcr89nGyyCXMoJeaOOtj8m2NjZblmCZvtAl5UMOew73GE7Z5fE+jtA2wIDAQABo2Aw" + - "XjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSAFlAw" + - "EwATARBgNVHQ4ECgQIhT9GjaaHj68wEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcN" + - "AQEFBQADgYEAWhKJUujLapxpz/DoD/w48HMzkL6UQCxQPOAjwwHicX8wFcKmcrWLVBdVC3" + - "0+ywrzMraWhaq+QCOqsgtxCwTZrfUxbCNqhKS0lZijCMgNN4Jht+PAZ22tzEsw7nCwiMM2" + - "n1jeKF/3btoDEUvZn9SuzhkIyxy7Q8l2tbNOsANqpxE="; - public static final String Intermediate_CRL_IC_02_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wMi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIhT9GjaaHj68wDQYJKoZIhvcNAQEFBQADgYEAJsjf" + - "oS3F1KMpcVBOC1Z6P5N20TYLCCHG6KETlBA3Rjf8ehNxJKJW0lGd7qHpVHp4BGvkSfaOAa" + - "OrC0G59wjDEY+Ci4QS46OYzBcHXMFX5HF2xMq+y5SfQnyV6MQUVVkxJRjgsTLrYwP2JaYm" + - "BK/zExhqQgPfgcR+56swBPXqogo="; - public static final String End_Certificate_IC_02_01_crt = - "MIIChjCCAe+gAwIBAgIBLjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wMi4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDIuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBANbTVeAxOibAO3KGqxxY3VqKXDr9tKJN+igpKb4w" + - "goR0ZnWGDusSVm4pvneZ9qfmi8A0sM0E91+B2hAwsU6Y9RoA7nPsTkFYi5F+hHGIF46Op6" + - "8blGrZraGf9bsWXCZFoLoxcgltwjGPQqyZ5mnnm8cxUbtaWmgo28MK1yBH/sS5AgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QI3gkBNo/SISMwEwYDVR0jBAwwCoAIhT9GjaaHj68wDQYJKoZIhvcNAQEFBQADgYEAQGl1" + - "7uT2xxYDks6HolrQIpesIoPqEiZ8TkizEBuLG3sUKsC7klHwy2iyVvA6nRUDwf/XzDLpGW" + - "/Gn0KTW6ZYIX6snOC1+7HX5OJglQx8tDpDvcAgyocK8PvCrHfu9o33J49aSeLAVpoCHwne" + - "tTtJxVfTMmjYWKeDbHHHi8a2YTI="; - public static final String[] TEST_23_DATA = new String[] { - Intermediate_Certificate_IC_02_01_crt, - Intermediate_CRL_IC_02_01_crl, - End_Certificate_IC_02_01_crt - }; - - /* - * test24 - * - */ - - public static final String Intermediate_Certificate_IC_02_02_crt = - "MIIClTCCAf6gAwIBAgIBLzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjAyLjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDoeA32BPwgq8pLJoR/tbOSjHtAz6fmzvzJrhJMvl64" + - "ccVuIzGxzOneYsO/ZYWy3ZGtlCoMZJRnS83tw0ikU9vQUwBw7DEcfRlLKYkY68rp25N1V5" + - "JEjnlHw+RvubdGkonWzUNJFbY1GA24J3no2GZHiLPgWmGb1jsA8Ag32MUrCQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIKx4Ybzu2PaYwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAotGeNFzmktvcxpCRcpuARHkv1lW+LegvbDBnSPvGnr1+Cn9rZcuLup" + - "u8ex6VJ7KWtgWBtzdOelerO6ytfWQ67uNpTOuc0SDdk/f3tCagdx44LBVQywuq/Kj57ZuN" + - "jpe4J8UPZSBFFK+P3gTX3S/lIKsDi6xjRnqFLSQYGX2XiIE="; - public static final String Intermediate_CRL_IC_02_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wMi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIKx4Ybzu2PaYwDQYJKoZIhvcNAQEFBQADgYEAOfuX" + - "wRv4skbPZAbOH/LVXdc/cA7vCSTAnWecN3ZKm/eCsxbyRxqn7fcDyHmqg5H3Ac5UOlMHR4" + - "FMe0Dp+Yu4Xg8xg3zRvE/3M/5jyRILGGi7olh4ikkOMD+UlreysvYvUX2MVP1iM9qAkXh8" + - "E8n/LZIlABN2GGkFEMRMJA6KTXg="; - public static final String End_Certificate_IC_02_02_crt = - "MIIChjCCAe+gAwIBAgIBMDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wMi4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDIuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKogqWGx9EpJ/0G7ORopyIQ4IZXYKKTE48WqOJbu" + - "nLD3txGjMUb5Xefl/QyTfd6J758ddGzPiKs1zWO6riffJLIBoOFDmt8tchPBJuIM3gKgXe" + - "VcZMyF5mebm5/GZekMOjbs8P/zbLdrlu1D9CZWZMXONYitdluSg2moMGbewS2NAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIP8N7OmNGshEwEwYDVR0jBAwwCoAIKx4Ybzu2PaYwDQYJKoZIhvcNAQEFBQADgYEAwkpF" + - "j6Kv+OcKrUtOgnH9QddB0Ej0oU6B5/5Hhhf3liAPKtllDHnhUj6nqfh4APNq/iqYFOkKMR" + - "RUZoaj6kakJNSOlgvRIiQfuFIgv3CqLZnhr85YFRnKgoluZE1pq3TvunoiKyJbCjbmyCos" + - "Rd32gVcJq024xvY2eVBTl6tfn5A="; - public static final String[] TEST_24_DATA = new String[] { - Intermediate_Certificate_IC_02_02_crt, - Intermediate_CRL_IC_02_02_crl, - End_Certificate_IC_02_02_crt - }; - - /* - * test25 - * - */ - - public static final String Intermediate_Certificate_IC_02_03_crt = - "MIICjzCCAfigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjAyLjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC7LFt+yGItQFqSEPi03ICIr5ydWnFPQHZdEMNu2tRU" + - "3XiOpfam1wl0xgAPGBkQK768OfidpP/i1hgYOU/isOB5dyALscvIQ9XJG1OWQXBBLgKuCb" + - "MS5fuDhBNa4KiFuGMbJ3/UjluRsD9qaXwGUavc436JwbRHvW8FomaBYYY1hQIDAQABo10w" + - "WzAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSAFlAwEwAT" + - "ARBgNVHQ4ECgQIPsBg9tMABhAwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcNAQEF" + - "BQADgYEANZcayTTX+FGhtRUJ+XuYA7jR14CJL6qTHPvdSMgHNw9mGXI/7sO5I4v1vayOCI" + - "YQ9luBvrTYlMPmuej8+bhM8YTYpiiOjVFANwvSKArI9U2CAGBcoBMXydykkm8qYw4gtYQT" + - "neiOz7VqI9plLWA111IRMgayD3CAt4Ntpzd1VSE="; - public static final String Intermediate_CRL_IC_02_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wMi4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIPsBg9tMABhAwDQYJKoZIhvcNAQEFBQADgYEAVeQi" + - "tT1FRUaJlhfpkfjZr6VHmvGnqYapdo4DRT/pm8tsp1LbZZXpYW638ztwgZNgeBRPFlcb+x" + - "8naQjEkoaYzLbCYfdY+PPVDv7ym15PE48Kve8ImvANY0YnTGS8pcKdK1dpNKBnYYMOG9JN" + - "+H5K/4cSm/WMCKIuKdsiAWFYauE="; - public static final String End_Certificate_IC_02_03_crt = - "MIIChjCCAe+gAwIBAgIBMjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wMi4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDIuMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALGbo9yEujZ9RFU+Vmxb5+Rx1VdIG/3E/5hXV/xI" + - "OFu4mEfYh2tBhP2qIMH2KbrR1tiW5t4DvTCBM3NKKqp75wpiuu7E3q6imt1pLbGW13NVL+" + - "81gYWXnCnzHpxYjMTIqqCkPIAeOG+SBJ1MgERbL+NBl+AK3WG4TeQ8vw7r2CGrAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIS/HbII+ki/kwEwYDVR0jBAwwCoAIPsBg9tMABhAwDQYJKoZIhvcNAQEFBQADgYEAWHy4" + - "sHrTkqY1XjDBY5XpNEyhP6htcnjYD9bos4wjxPlJUyxdIWACWrLDE+R5iRCOYsh/nDAJEt" + - "CUcVASukvP6VLJaFjyxUOaCp6JCVV+txk7Fh0S/Ur3Zyysfp5LllP1plOA3N/k1Hliljp0" + - "+bnSiDhA1+3hJh0gDMjWUdRq9yM="; - public static final String[] TEST_25_DATA = new String[] { - Intermediate_Certificate_IC_02_03_crt, - Intermediate_CRL_IC_02_03_crl, - End_Certificate_IC_02_03_crt - }; - - /* - * test26 - * - */ - - public static final String Intermediate_Certificate_IC_02_04_crt = - "MIICkjCCAfugAwIBAgIBMzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjAyLjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDf5u5ouGQlQmdNfc4ell3RXKWmtq+ar9VKMme3kp8D" + - "cbDbUaVwlvhWTkOKxb9I208wfGG2nQiArezIwutlASf7sWo16EPapmGdCF+rp1dpjAPBUu" + - "fruEyCZ8nu2ITD52wuPY9OAcKHQE2/bBpCJWkw97fYX6Q9PPW5uobWoUJtOwIDAQABo2Aw" + - "XjAMBgNVHRMEBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSAFlAw" + - "EwATARBgNVHQ4ECgQIjDm8K5YcGakwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcN" + - "AQEFBQADgYEAEQIJeZj/HE3HvjjJV7PdU+2Ze8OeCYeeWDocxrA647xpeOksVXBXKmq2OV" + - "NqoFk7YNtlSUqiS2TlqjGqLtKYetk7a17qS/8EIQct+H5KWdvkLkYMkfIAAMJvJZHPGxEv" + - "j+oVPAi9FITRbFdN8Jvdo9MAuU2q8d2x8MF236RmEds="; - public static final String Intermediate_CRL_IC_02_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wMi4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIjDm8K5YcGakwDQYJKoZIhvcNAQEFBQADgYEAV5bX" + - "7WsT8sWeA0iQ7V/+ZQESDzvyHA7Ziju0iRsvTL7qOVF/Nl5v+zND+ZNPhdJDKEM/Q0lEaA" + - "ybe0E73NMmM1qRX1daAwE++jHukF9TMeNl750HJaS667H6jcjeRrHUJDD0+AgqrZY52dL6" + - "CPM3V4QSvdfc1/xtKmNIZWSSoqY="; - public static final String End_Certificate_IC_02_04_crt = - "MIIChjCCAe+gAwIBAgIBNDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wMi4wNDAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDIuMDQwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMW45d5dPrzUJbuRIDeQ5gIJRYxi80PxPvxSmJe8" + - "ScG1A+l75SAtgLGWAxBqxPSzL+teBBUsnmf2Xsc8/qQHHev74uat0lxq9YrZ3npLW2YNo2" + - "CfxLK0M7F1/bhkHK2f9ttIvOrrKI67BeEjfACULdJEhl431uWINWV0pY+fHq+pAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QII61NnUvgvjYwEwYDVR0jBAwwCoAIjDm8K5YcGakwDQYJKoZIhvcNAQEFBQADgYEAjwgL" + - "6qMnnqUvNspsDaYpPQzTCqXkqshZhsy5G/nLk621H/YbNGlnZ6asHGljYVYMzjmcny16y6" + - "ntiv9QPB7YorAx27WT7pQPFla96s+nM/rfwWHPWI6QGDsquPriwJm/MwQC+1oDXEFKvdIL" + - "0urejfd5hgiXYbRRwMI7km97iHg="; - public static final String[] TEST_26_DATA = new String[] { - Intermediate_Certificate_IC_02_04_crt, - Intermediate_CRL_IC_02_04_crl, - End_Certificate_IC_02_04_crt - }; - - /* - * test27 - * - */ - - public static final String Intermediate_Certificate_IC_04_01_crt = - "MIICjzCCAfigAwIBAgIBNTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjA0LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDBtNwpr9LZBF2LRtAp9Tb1FZnfM3b/Jv2sdO5zc/Bk" + - "sO4ByUgY+Mux9dEvFrkVWBK110TvXn+dj+85TuboILv4MDKlu+tI/rtuadXGwwDIg8TQnz" + - "uyC7LWhxM5JZs1/Is+sPKUY4PTCHs3+EHPBWf2tFiP3l6ZftkySEiL6+2LSQIDAQABo10w" + - "WzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSAFlAwEwAT" + - "ARBgNVHQ4ECgQIbMuZ73onuZswEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcNAQEF" + - "BQADgYEAhaTSc2xafdP/QceMm9YJ/rZJ5gTgBR/SlmKQwd2BclHabG+Fozdg4delDjtRXS" + - "FKY3sFWBFZHVeprh4T93Oj6IVA5X4DIuUeBpprtS+psCnWZxdtcUWmbyYQwZNCifG5C5D0" + - "lRwxlMlv40xT2oCM1zPZpfmqemBDUPJ2OhkCjvo="; - public static final String Intermediate_CRL_IC_04_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wNC4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIbMuZ73onuZswDQYJKoZIhvcNAQEFBQADgYEAMk6D" + - "Rztz1AyFnFr1KAlbjLLwxtQplf2eIc//zUkDFVUHtX5TrEC/ijUaItjdkOoPGQfpnL0w8x" + - "wyqWndMh593QPCqIJTtv/iACoiJNZ90ZJS0adcdZ+AEmQpa0Zv0e1JOqRrPoAfTq4HrOfR" + - "vhBwhvKQNtTExupW/EBudznKC6Q="; - public static final String End_Certificate_IC_04_01_crt = - "MIIChjCCAe+gAwIBAgIBNjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wNC4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDQuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM2dGkraKGdIi6EXxAu6/ekMqDloX5YSVBGh4Hp2" + - "faujr1u4j8Lp8afqjngRxFUpTqGbqH0ETgm4cVPXmc9rUvUzYTMdxTUmIZ+iW+ULZEvzNB" + - "712kxRPCD2kDFN2fH2ai8miXr434w+weLm8VQN4jJGo4nswhSs2w1gsUmWyn/ZAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QITsLx/sO1edwwEwYDVR0jBAwwCoAIbMuZ73onuZswDQYJKoZIhvcNAQEFBQADgYEAeKft" + - "0RM8/b3zQodaKrTdWiFyLg5fzoOsTecSfdFPXoqz9J5ejLVkvJevSmfXJrIUhKXySzsQi+" + - "GazuTh/hvWjwUTIvmupi+EiFudnMpXCro8bgi48+NkepNjXvjsSmOfzlrK3SxtpH5dqonL" + - "6LHjGyg+Xp0Nor1m5g1rLHyrcEk="; - public static final String[] TEST_27_DATA = new String[] { - Intermediate_Certificate_IC_04_01_crt, - Intermediate_CRL_IC_04_01_crl, - End_Certificate_IC_04_01_crt - }; - - /* - * test28 - * - */ - - public static final String Intermediate_Certificate_IC_05_01_crt = - "MIIClTCCAf6gAwIBAgIBNzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjA1LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDM3aWmgX3OzAaBg6lnWjpFQ9ufeTOia3+lIUqn+Ypf" + - "5OH/s9dLRqg1ZynV3YIUyzaJPP/YlUEmrhheJn3Bjw25bHeIKdge73pfEbuBAugbUMS75D" + - "csBV7Ze9D+sVw8w/LtT3ZPcvM3Vju4d+c14Ip/8pC15jlgQPhwVQSf0x3V2QIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBAjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIJ2DFtxoQnXkwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEASvdcfBOh2d1dC10pGLZLI3T+oSPCup/U9riynIR3RxZsIaS/+Q2s81" + - "oeg++WQV6pyYvCLneZIp0efvqh5DThNV9lhBcJjlYwm/T8Hi2IaRGsSMwIvzrFN7zxA/zu" + - "tW98wigAKM2myk/nlYxmholgbQkQ7ZxYM3lD1TDRl69N66Q="; - public static final String Intermediate_CRL_IC_05_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wNS4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIJ2DFtxoQnXkwDQYJKoZIhvcNAQEFBQADgYEAK7Ym" + - "Y9PjX5CpVewe2E9PNxj3dLYElghaQyapYoVtNq3jDqLMWspdmHdNdeaQoXsjlSJe0Zy8xH" + - "ZvpimwifnFZ5hq4yByzHjzNMpcA2yFtg2MtPWGEia+BmaZYZi3X0lR+OShKpNLFc4CfVM/" + - "aWG6W2BulHjIAThZhTg3uRekDzs="; - public static final String End_Certificate_IC_05_01_crt = - "MIIChjCCAe+gAwIBAgIBODANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wNS4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDUuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALlcUtceuxDznvI3pVM7YddPcBOrNvrOtpuLOa1L" + - "Lj9LeNH6+8CzRZnMsUtt+bRGqCKMEJLUIIstWwGg4SskXWk2m+nDKm5Ai6Kyx4nldpgtgQ" + - "xZSEwNcwRhpy7TtmLkxDVM9DoTbIbK0dZ7aWw4bXVHPK/lnOMtOaJbFDq0sLfxAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIiXgrRBVcDf0wEwYDVR0jBAwwCoAIJ2DFtxoQnXkwDQYJKoZIhvcNAQEFBQADgYEAhyO6" + - "SP6brWDDKZwdQGULno4Om5+DuilJKamyEcvSqE666z1KhvOCdLicqwVa6tQiAL6akrt5Kv" + - "R+TT0xqHR4JGosGLGolvK4DLrMeD+PRK7m1a+nJl44luo5Mn48HrKI7jn7n8Lp9bNdCHvr" + - "NHaQksCIR/Q8xoucPa+8sCTVSj4="; - public static final String[] TEST_28_DATA = new String[] { - Intermediate_Certificate_IC_05_01_crt, - Intermediate_CRL_IC_05_01_crl, - End_Certificate_IC_05_01_crt - }; - - /* - * test29 - * - */ - - public static final String Intermediate_Certificate_IC_05_02_crt = - "MIICkjCCAfugAwIBAgIBOTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjA1LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCrtIYqo2Is8Cd6Ld+fyWC755oA6hQiiruooaR/6O4z" + - "ikyhOUztnHkOGMF5H4CKWafwwVrfFtqe7iop3N6AToEIpNlJLVy3cj14A/IASVYSSNFeHd" + - "O44Id1NWhPiKx3paPTWslMEdKQV9BlXb7gu8pQpvqTa/38hNQ9vdil/4QZbQIDAQABo2Aw" + - "XjAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBAjAWBgNVHSAEDzANMAsGCWCGSAFlAw" + - "EwATARBgNVHQ4ECgQI9P78RavuWW8wEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcN" + - "AQEFBQADgYEA0sAEmWBYSazUav6RtuNFtZgNrlQ2i5i138VzRHoF/kq/CxeR/lINQqgJhC" + - "ZlUnlslUuM86g8OQGlR8SS0Wsi0MdCQCtPCKA2hStlTx9MMux2IZAGoyHy6P95UE9qINHE" + - "fYZUYjO9rh96fzNyJ5Oy2kJdJWdhFXtSh3BSOe0ZD+Y="; - public static final String Intermediate_CRL_IC_05_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wNS4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI9P78RavuWW8wDQYJKoZIhvcNAQEFBQADgYEAlPLh" + - "+CMqRcbLgUKEAL2UlSY5tjsF8At0hf000kec93TnBf7f1NKYVJ5eyeoh/WK4s+k4paAA5E" + - "/P2C8JMlGXNTrqKZXMy2zIlufE1ymXAZCKLOLC5ezXRSpwIsBWxko2nfw8Bz/mZO/bCSCT" + - "nDwkH8BJIbFV51vJFlyyOmZnCz4="; - public static final String End_Certificate_IC_05_02_crt = - "MIIChjCCAe+gAwIBAgIBOjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wNS4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDUuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMPsWBfT8HqaiLnoUCPAFniq502odL4uVqzOOxkx" + - "evZtjh7NaFlRjuYjTofdkj/IAgg7lkkBEW3auK47Td3TvqnHO401PqvOFNTlbhr5wDLmXS" + - "WWcR6XrvgYL3Z3wx15/z6eojcSgu07kdvKqzuLzcDs+noG8lbcruokX0A186pVAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QImgomUTkzwbEwEwYDVR0jBAwwCoAI9P78RavuWW8wDQYJKoZIhvcNAQEFBQADgYEATAEq" + - "YVV0iYdYomPqxbTapSCJFAMQO/WZhN9brCXP88+jRfk6cAHzTodQOYTOAVe8YXa904505e" + - "RA11NNTViP3s/AseGWuqbWjsom9mbR+tVkvufGqPQtm1JhfLgR/68e29AI7tj7zIJyFVYD" + - "nLRXGwMGnosqSHDle+WYyfok6a8="; - public static final String[] TEST_29_DATA = new String[] { - Intermediate_Certificate_IC_05_02_crt, - Intermediate_CRL_IC_05_02_crl, - End_Certificate_IC_05_02_crt - }; - - /* - * test30 - * - */ - - public static final String Intermediate_Certificate_IC_05_03_crt = - "MIICkjCCAfugAwIBAgIBOzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjA1LjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCajRjoRNL9HFTytLLx7C8WYouW0uONGsrtGS5tKMiW" + - "oLlQUkohqB2a2PhA1InNGQqnbDtNdqKbR1k6EzD6MyegvXK1sXs0ZE8gt0LZYio7Xp3k+Q" + - "7i4Rk5iTruAUrV8bFMYmeIXHXL/9rl5LQV8YRp/Ut3Bg3VECzfhQG4EavMlwIDAQABo2Aw" + - "XjAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSAFlAw" + - "EwATARBgNVHQ4ECgQI9041oiwvHsgwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcN" + - "AQEFBQADgYEAYwGYwLsA/kxYZG/RM+kvoH+mUebrBVZRBxjovYsYzNznD26fssjBFfiTmg" + - "zwZJfG7MZRsgDSRsS+bxuTlXMVeGRKH8fVj7PNq05sS18QZQOF0CCKzg9DLkCzkzkEWBxc" + - "5ersciPrL90UarOIPIJWUxQ/5sdMS/wZtYTU34rNNWE="; - public static final String Intermediate_CRL_IC_05_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wNS4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI9041oiwvHsgwDQYJKoZIhvcNAQEFBQADgYEAJHTp" + - "k+RRsD0dUv59J1GQMWjQTjVz39Xaonx2sk38WHcrHBB78L0W6Skjvt082PwZg32sb7FQBt" + - "boAQ3PIKpXMnFnkjnkyaFihrnMdfa0abCPtQhFl3yra+w+1a2RDjQBZOOdq3xlFcLi9unT" + - "YYome7eS93wchIvNWFpgwF5A5XY="; - public static final String End_Certificate_IC_05_03_crt = - "MIIChjCCAe+gAwIBAgIBPDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wNS4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDUuMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYxdSZq7qRBdPOz6H+l0GGAtymAWTshfZZCubHK" + - "lQjbVq98qudORfhCOZgOy83j/mo2KAecBhxaxB9YA5ggWNAgaKtFvknvjFemtBCZwt6cVK" + - "8LCyUGKzStwAV1+HSDlHxdWo7pRwP0beXFvFECrX418osGt6E/v7Cz++ZtvaDhAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIgTuCLfTVa+QwEwYDVR0jBAwwCoAI9041oiwvHsgwDQYJKoZIhvcNAQEFBQADgYEAQRuC" + - "rAx9zzu9QwOq9weNit9PNgFHBpo3Gh9jPVYGJjOQxeSqqou503xi82H3W30FT/3ESCO7IF" + - "hfpr/uQZVEmUQnvDsVwbKvED1QF9qkTp6ILk38ITJJgfb+sdSL3bsUeNqVXd0C9wzVoErc" + - "OuoCulwkZzfoIOlO2YAjAnR1nUc="; - public static final String[] TEST_30_DATA = new String[] { - Intermediate_Certificate_IC_05_03_crt, - Intermediate_CRL_IC_05_03_crl, - End_Certificate_IC_05_03_crt - }; - - /* - * test31 - * - */ - - public static final String Intermediate_Certificate_IC_06_01_crt = - "MIIClTCCAf6gAwIBAgIBPTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjA2LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDmutL9PY/BLXvXMEDQLQnWE7dCOsrLNvJiuSjDdznF" + - "vBz6WS/RqUr9zsDFknpOWB3Epo2syV4ZFto+v4VWNo61uaClIEsw5x1y0saG19px34KVpQ" + - "wkpvLeRZySdCydKdE1rptYR/JbHvPo5TU4mxOo6L7JeEwAvjSI4tK4rwJ4MwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwICBDAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQI1BB9j6Jyny4wEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAajWMbY8zL8jS2VUjCPBMuIjUvBfy55+92EXg5pZnyNNwN1diZfJFiB" + - "rrPWEg3Fa4NMLgaDKWZsYkOcDDo8I+Qb9FsU9LphCzQ1ubIEuxu6KPX9X29BscFOxUnZCz" + - "yuzVfadACxi5Y7Bz5pN5LfC/jEb2iXjkdN5Rm8AqT81syIo="; - public static final String Intermediate_CRL_IC_06_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wNi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI1BB9j6Jyny4wDQYJKoZIhvcNAQEFBQADgYEAxH4/" + - "mgACT847PyufmF1nob9TSqBj+cM5ye2bgv83gTVd3B1Gopr75Tnu4iP10d0PpSXjySWCjB" + - "0HPJ7BdxzkKxSrcM5vcb/jLdk9PqMUS30ohexsx1xK+E38pDJdLX4kbJ3E62AgyXm9WQlD" + - "9xsDk7TMXwuxHT4fX070HL6lWGI="; - public static final String End_Certificate_IC_06_01_crt = - "MIIChjCCAe+gAwIBAgIBPjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wNi4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDYuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAO1VOl25MTf068LOgzmQOmyh8MXunBrQ4t6UYuEj" + - "H7v+owR9JTDXpfzLPcYfkR+BH2jjISSHIJsUDesKVhpmhABNXcOI5tiRNkeDlV2zKCBXKC" + - "wFi5qkhrE8FUCP0hL8YzbybOrYZYSVEP8GgIgMSQcTvhN/Tor0o1jdJvRLmevXAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIFJA9XGd9UZUwEwYDVR0jBAwwCoAI1BB9j6Jyny4wDQYJKoZIhvcNAQEFBQADgYEApRQC" + - "OTU9cp16BHM2n0TdZThgj9kSAQ4wHk/dKNOjYNEWu6n/GQ0alxy1dyRzpsr058FOvft23Z" + - "Kp0YhdKG/7F1hkcoNvC2yN+Re44n7S+F/jcEPTWnOX6h1Nkw8OS7Uz2fZ8t61iHjqjX4sv" + - "M/cKP+AkC8g7p2tfdkP1fQ6ww5E="; - public static final String[] TEST_31_DATA = new String[] { - Intermediate_Certificate_IC_06_01_crt, - Intermediate_CRL_IC_06_01_crl, - End_Certificate_IC_06_01_crt - }; - - /* - * test32 - * - */ - - public static final String Intermediate_Certificate_IC_06_02_crt = - "MIICkjCCAfugAwIBAgIBPzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjA2LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC0JoTnPaI/HT2eAqCW1204nRNjcA8EQSp87tvHLpWy" + - "5aafmxeJxvk5V9Ba7Ye8eY8yX9losbNUpHJFNdE46fD5qp/oS7Cn3NXA0dwIDQEn1X9vaz" + - "nqtZtMjt1S/yGv2xDOb2LKT9zRrqSvxGszCHFUBcJ4HDFJMAdhXPUZiLyXVQIDAQABo2Aw" + - "XjAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwICBDAWBgNVHSAEDzANMAsGCWCGSAFlAw" + - "EwATARBgNVHQ4ECgQI7j2LO1CcsE4wEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcN" + - "AQEFBQADgYEAfXIh0oYlM2pagAWzTuYqTl0NavtfqibPgolvhgIG/XmmjswHOg/JVCLb7O" + - "jIYtEG2MAD0xQXwu0mc9Deufed2embP/wc0qVG7rj7lxUq6p0aMQJNndBw4m9KlSnjdzyG" + - "lwE9pNd2BgEeD516J2k7dspCZHDw3qLer4i2JYoCo2Y="; - public static final String Intermediate_CRL_IC_06_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wNi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI7j2LO1CcsE4wDQYJKoZIhvcNAQEFBQADgYEAJej7" + - "23qVtwkcvCTPb6afTosYMnVppPXWbtvqn0N5mAFHQfE27x1YPOXOQHBrpQuTyiUdUmPXiH" + - "xMKbuR5o2lfdQgew9hbYVk6GegSu+DBC1JKv2YSTgzgRAlJfyByDZ7mbJwZWHVHys08oGk" + - "adG6zstavg5EkEeRuAp47T+7cZc="; - public static final String End_Certificate_IC_06_02_crt = - "MIIChjCCAe+gAwIBAgIBQDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wNi4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDYuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMkIzl9+NRTZf/xaA8noiHRt65Zo6Zp57YvCKUe+" + - "YfoC8koMq12MBgrc0IyIfJoqEDEMfD1WbitZdGZMQZ7D9BP2Bk09NXLEAAuj+waFhYk0bW" + - "vHBH90O7HpMGmxwHmzOjDV3JHYsU8hq77/5gRFDNRkSCJe2A1Maj8Gcqi6tYf5AgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIYDfThEjNL28wEwYDVR0jBAwwCoAI7j2LO1CcsE4wDQYJKoZIhvcNAQEFBQADgYEAJiHT" + - "CjLGZK5Lyw+7ICDHs3eS1OGJH/wfsLcBP5sLER41qJfrXGTl2XdKvBMIpriUmJYzjkjof4" + - "bvS/VPDNlhI9AJadicW8LM4L3qpy7/YV4Dd/C/BJphJ6cZcT+hjaRKeC7gQVjMeC/npu/p" + - "jLgIgzf7HC4WYnaS3h9oYl0cMJk="; - public static final String[] TEST_32_DATA = new String[] { - Intermediate_Certificate_IC_06_02_crt, - Intermediate_CRL_IC_06_02_crl, - End_Certificate_IC_06_02_crt - }; - - /* - * test33 - * - */ - - public static final String Intermediate_Certificate_IC_06_03_crt = - "MIICkjCCAfugAwIBAgIBQTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLUlDLjA2LjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCuUtIYFbVjg8VLLUqIEQ6r7hjTaqYVs8DJnJPHUWPA" + - "JW9HEIV+d6hj/so76Bff4KJRX7MgoXbvq4ivmn8656N7YSGk9GPuJ25SXK7RJyoqzG/x2R" + - "AVUCx/wG99VXVDZhd5ZAVBG2JCkHImsWAei6/Tz8UgXmmLBM8rZNJ/hNtTBwIDAQABo2Aw" + - "XjAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSAFlAw" + - "EwATARBgNVHQ4ECgQIpwUlwG1W+sMwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcN" + - "AQEFBQADgYEAqJhUfgar10fl5qG+oH34s/JS3ku0dRm4cTQvqUNOWA9ALnBhSkmOpoMMzH" + - "sE9FXXcZ072a8/ecpviP04X5mt5QSLreh3hPVvgWv1LiZ9YkS4Z2kcr+3Gx7zj4gQgT5vG" + - "QPpbIBAtBRH5xNHIYQsk6kOe2+t7b0Q82Wnj8UoznmQ="; - public static final String Intermediate_CRL_IC_06_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1JQy4wNi4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIpwUlwG1W+sMwDQYJKoZIhvcNAQEFBQADgYEAKCp7" + - "ViY1cajXpbjCIqe8yo/98SQRIxoTNgp7EUaaV17FeHZ59nJhRtsF1XnLP4cK0lPBkKFhHK" + - "2XyDEWx2hK3X7Z3lSAtn12WFJHOP5T5i0DmYfMJYAFbuPD0JQEWCM3aYsgbXKbbFH1BURh" + - "L/uy3arVBP4FaJB8gH678K4J1p4="; - public static final String End_Certificate_IC_06_03_crt = - "MIIChjCCAe+gAwIBAgIBQjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1JQy4wNi4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtSUMuMDYuMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALZw+GpvdleGlmdqZ/zEO2DUGhwgrsselBUNnEzR" + - "bcuzr5O1WwiG6aLjrPxIXeL1wLS1/u9AD9p3CQU0XFhi+bEI9+LLnt2y3707O+AQxy1PnQ" + - "6qmYE4jMwqDGHn8WVanN2joFT3isLH5wJD0Jh74eoG0tqCHUyOiXaZNo78qgB3AgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIJOeyCnvfJtAwEwYDVR0jBAwwCoAIpwUlwG1W+sMwDQYJKoZIhvcNAQEFBQADgYEAJbz1" + - "RipbW6uu7B+f2Ol1iq4AVOUuET2S9vi9ojReyAIka3q1XUceZCm5Et0KqpOoOLiu8IRuNB" + - "bvKwRcZ4hcVEXv5bRMqaPEK2B0VrRAV/Llj5A+RGn6yc1ZdkJeBRhoSsaHn5whfICaiJX6" + - "j3lMpo/CiMRViL+gZLU3SdKqvdY="; - public static final String[] TEST_33_DATA = new String[] { - Intermediate_Certificate_IC_06_03_crt, - Intermediate_CRL_IC_06_03_crl, - End_Certificate_IC_06_03_crt - }; - - /* - * test34 - * - */ - - public static final String Intermediate_Certificate_PP_01_01_crt = - "MIIClTCCAf6gAwIBAgIBQzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDRkBhJJVgOXHjydAHAnokd/XfEiW+bnWd2ZPJrMBmP" + - "7TlvVpxOGqLd6lGdbelbSyAzut1i8lyYn9NSDR0PcyehCSS+MsKS2uNKsTEuH3mlMK/7C5" + - "B1qggKqE8f7opyl9+U+Qyi1WQj01gY6XYXaCxksCB0Oqx2737d7QWMvl15dQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIO1U69B4DBHQwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAcHWV4Q4z7C+IC4bWgIf1+BzkszCN+LSb4JquR7GgICESbwF2JzR+xL" + - "7yoKvB/NBcCqtMY4Hi1DHACbIGJwRe68vVHzz4CmYEK50UUCbAtiAiy9Od6wwrTyFyacBd" + - "CBjiO6mkFEp6jOsoIgXRfxK4kDNcMkGUUwMbSR/wZKFuImc="; - public static final String Intermediate_CRL_PP_01_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIO1U69B4DBHQwDQYJKoZIhvcNAQEFBQADgYEAHtbX" + - "MUofQlCnbJhgLQw96jsBRu0Kdx/Rk4LWxEbZQOWNaD7aukASjEv63d1qZIDgpefuUNTz5s" + - "3eascdtI6iyWFtBO3r6tihtkkSbxocN2Rz7OlR4rW9VwuUirxP0145nMd5CEL03/CNABP5" + - "zUo1bNgswHW3z/RaH6h0j0yTkbo="; - public static final String End_Certificate_PP_01_01_crt = - "MIIChjCCAe+gAwIBAgIBRDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDEuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALQaTS1wvv551g3BP9JYBMM+KXXLzxtOwPlO5NR4" + - "LwuJJB2WuO4vmbn8AG35in/0JqwjZeroLQvbCPxZseXsyA0+7cMO0qcjRJ5l5WdFsahT6g" + - "z1YW8pYYY5i2eDUkIRsM7roHMiNjt3zpkuUGX0xZQfAxhuWnRIvlGg5J4r7UOdAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIeyLSANVaTpQwEwYDVR0jBAwwCoAIO1U69B4DBHQwDQYJKoZIhvcNAQEFBQADgYEAvZ4a" + - "SQMNl+Q++D9yVaGr+37XJyxs4yow5e5YM9LXn1qBASQ+GNfqPWoe2cPCPYKj32yulxyFEu" + - "RHrbhpEQe+nrKWJgO9W1bmfwgQDin29ne/JCQPlznhd3EPFvCkmPLnTyJmSLR6B2VxvndM" + - "GO8JEbj3KCf51uf3VnC/Qj11mX8="; - public static final String[] TEST_34_DATA = new String[] { - Intermediate_Certificate_PP_01_01_crt, - Intermediate_CRL_PP_01_01_crl, - End_Certificate_PP_01_01_crt - }; - - /* - * test35 - * - */ - - public static final String Intermediate_Certificate_PP_01_02_crt = - "MIICfTCCAeagAwIBAgIBRTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCkQQXRO+dnU2v7EbaqQNmfPD8v0s5Wa50hl9M1Gfr5" + - "5nuVUZs/RI//1VksTNrW10MVh11nsxpA/XRPntEIbHiH1OoECd4dnZBiA/2xEueM02fTjj" + - "fb/t7g+pr9dSU/TzCVZDVWFBcPn4VNz7BBqIrTAOXaJkyBZ8hh7vyiE1Y2VQIDAQABo0sw" + - "STAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjARBgNVHQ4ECgQIoTKVlZ8YCR" + - "AwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcNAQEFBQADgYEADhtnd6ifr6kyfC5D" + - "UWuAXLtoccMj8Jaur/1YT1DgnH1XbBsEeZwm9Jkzr1a3cXPIHgaHYgXvBeGUtZ3XhbCSGp" + - "8U6clJz3lm3qKPKkb5rdDrpdTaPnEJJjS3C4ZK1L7UZtQga2Enlelm5vIkhjsF3Sexe1kY" + - "mzqiLZZ8yLxJ/Tg="; - public static final String Intermediate_CRL_PP_01_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIoTKVlZ8YCRAwDQYJKoZIhvcNAQEFBQADgYEAn94u" + - "sT8ZYNzfHIdnx0+fV0jglL0Kn1duz+ehKHow+RGqH+J9opMYuXVD+rVQnLdZl5LbFBcv+5" + - "TSP9WR9QtyoXar4/jmY2FFdBjfgO9w7p7OHD4WxblJmfPVOvrzFm/slZE39Oe5Qn4KlS03" + - "9tttEFTKDH3qREQbT6g4k4ExxYM="; - public static final String End_Certificate_PP_01_02_crt = - "MIICbjCCAdegAwIBAgIBRjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDEuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBANBwkwTWdZ977UAx6CCpXc9T4MX9T3/Tt6LbtY9I" + - "eXxI9W15eXm/aqrKiXhULB+oF9/qNeUi2fAtrURZ7hgHbTaswr8CZ3Uwc6Rbkyj2GGiM6Z" + - "8sKFztYZfFyGBiNEwfTT0yaUUQ6etIFqPuL/6qLvqXmvNPxFb9gjTH/azs/MdNAgMBAAGj" + - "OjA4MA4GA1UdDwEB/wQEAwIF4DARBgNVHQ4ECgQIW1/BRCbe3c0wEwYDVR0jBAwwCoAIoT" + - "KVlZ8YCRAwDQYJKoZIhvcNAQEFBQADgYEAPJg24q7wCU8CVlxFLchoe7txhkzApkVMIJ9G" + - "+QTnraHDn0CZS6undCsJw8mrTNBQPHFn2Ixa5lrPfJvwW4Med1bcJKbwR4TveL1WeYYq6+" + - "9k1kS/7KmqyKAKC/s504jAc7qgMd4b08oLxbGVfFVjWG/ZMbO770FrsyRHHs2rTOU="; - public static final String[] TEST_35_DATA = new String[] { - Intermediate_Certificate_PP_01_02_crt, - Intermediate_CRL_PP_01_02_crl, - End_Certificate_PP_01_02_crt - }; - - /* - * test36 - * - */ - - public static final String Intermediate_Certificate_1_PP_01_03_crt = - "MIIClTCCAf6gAwIBAgIBRzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDL/XgMvoeszcAzZqMYnv1At5u83Gb/CEX3fv6O1jL4" + - "W3XbdvBNIZpuTwQhTH4Iofk9rIuQdkR7xOmbk4AqZINuas3Y1CPdzss7teraK0CNralNl1" + - "jPYK+ClDBHt32Iw3bAl7RqWX73hl3YH6/7cvG4XCo1HqeeFFHUGa7HXGXq9QIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwAjARBgNVHQ4ECgQITMu5Qbn1Cm4wEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAuCnzXbHg87PIYYRbCCiXKDKA3MOcEKuxpNaSbtm12DQWpnvzmaK5nB" + - "D/Ebko97CS7u9Tpwa7TmTyi39bYzY0dmVaotCDzfSTpzw6qHZl/w8riS+cKr0mimnjW1cq" + - "kGPyHf0zBBqh0liGbd7EOLIBln0ASrn8V+G4Tj0Q6aQVcko="; - public static final String Intermediate_Certificate_2_PP_01_03_crt = - "MIIClTCCAf6gAwIBAgIBSDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjAxLjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCu1Fq+gBJsBf5EjKKtNIxgdtgPMObby7tKH7fTJxYE" + - "5LPyPi/IiWQ5Mi/8BCG3zmQhu9ZdBbpal350qCGVTbaMlnpi98D4WwXSw7e8oHIJIK689p" + - "Q6Z5cf8hgwPnwDpYLeEaqxwhd4bu0x1lG1fUISA0ZZIQaEeNSJfdh15IkAswIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQILRhQwULcyPYwEwYDVR0jBAwwCoAITMu5Qbn1Cm4wDQYJKoZI" + - "hvcNAQEFBQADgYEAlEVOqXcdeTU7wT0l+/BJhlG5iaAcanAsOaJFZsXPjLMSjhldQe11/z" + - "BsrrqjcpdctcmBarKO4MnwqVU9DN2RZ/v5Gps6OcPxj3T8wlrCGe4l6s9d1FncBMJ0RAUe" + - "QEn2JLkQW5JWRBQ00+RXJYFuIM6Ger2MipWj1oOciv9MMoc="; - public static final String Intermediate_CRL_1_PP_01_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAITMu5Qbn1Cm4wDQYJKoZIhvcNAQEFBQADgYEAycux" + - "rzvy2IiYfFkTw7QgGuBhxIQPbSIbfudqyUumuviHJkIMZpPwYj2wltjyiRaozrDAWq8mlc" + - "PsFYNr2lUYN5Cj4BhNQCNZlyBw7LLdzRgza55zVjmYkHWedyZm3kPWe7Y0w8xc/XIvi3iC" + - "qlwV+X85cgHNJarx3GEYdb7Yos4="; - public static final String Intermediate_CRL_2_PP_01_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wMS4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAILRhQwULcyPYwDQYJKoZIhvcNAQEFBQADgYEAbcjU" + - "+8l6pSik8PcuIzWndAg/w8uRfAgR5W9hPSXZChlx7uM+48wK98DGEXuTkJcbeclZia+Mpi" + - "J5u3qG1zhoL1aHr+RqyJrjiWKC4/rDBuiUk/ftU54mrYn0qev3aSjf/GLtpcC8kC3gpqD+" + - "20bvxLjBG3Vc9ZrxDvzfj8cD9K4="; - public static final String End_Certificate_PP_01_03_crt = - "MIIChjCCAe+gAwIBAgIBSTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wMS4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDEuMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMO0l0+X6jfT8cY4DumtseTryyIJ7h+nraogXmYo" + - "uhFGvMUWEAZVGD4x9QTTVEL/UCqNfzpI//Pp/uZpDudSgOX0ZdAbykObqCAEO85msK+eie" + - "8baS1cW1XGjCuWDqNZko3Uo3c5lLPlRMbZ3hjvA1zmYh3prYnOh032GZAArVcVAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIMh2aWvtm0mgwEwYDVR0jBAwwCoAILRhQwULcyPYwDQYJKoZIhvcNAQEFBQADgYEAigVE" + - "FlCgbgKLR9FWIiwnz1bZ0MKsfhytllCI+jGx0Q3o3CxCGXs9PvL6BPDdMOxNIT/oU2uG64" + - "EhZEjcZCnUknGx9OkkSSVq44P/pGuUx1g4Kx4i8gsJ/UPrPpYv/3heuMcKWCr92l33cxPT" + - "IU+kmAtqy0MBvBKL4p635+MSIVA="; - public static final String[] TEST_36_DATA = new String[] { - Intermediate_Certificate_1_PP_01_03_crt, - Intermediate_Certificate_2_PP_01_03_crt, - Intermediate_CRL_1_PP_01_03_crl, - Intermediate_CRL_2_PP_01_03_crl, - End_Certificate_PP_01_03_crt - }; - - /* - * test37 - * - */ - - public static final String Intermediate_Certificate_1_PP_01_04_crt = - "MIIClTCCAf6gAwIBAgIBSjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC9gxMP8j4L+ISffY9wkislQ/V5sO9LzZOncYK93lZf" + - "HXJG1MPSQzFPNzDLSc2zsilA03v6q+zr4NRrRWwWGmB34NGM4aqkoxox/7ngTn0MIq5gZ2" + - "eOx0FbjA9W9DHEceVDS6kgs9lFcN2W+muCG2/fGqQUED9Fzl9JSM/tE8XAKwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIgdUt9H4i6kwwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAxPe0vM0BvormJLF5HxkyFcTtoombfDGANoLoyj+PTWRD6z1/AcAx5K" + - "rn/0J1sZo13M2ezaZUABbbpNH9X0OS225IJF4mXNpfkYhsz/+jNPGjRpN2p0K+DhMSawUw" + - "QfGv2x6f31k6WCdy/769i1mwKP6Rpph2nkRyYW8MwO0N5HU="; - public static final String Intermediate_Certificate_2_PP_01_04_crt = - "MIIClTCCAf6gAwIBAgIBSzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wNDAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjAxLjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC7YCtN67S/ItOzaSGqTvfEE483HoQGiQZ0ob3+0beK" + - "kmbSGADBQVBKe/sLJEKddyV2Gl8S4x+cKaKBWUI8lMZViJwWqVnyAFd8ZiAB/BpXaKKgP5" + - "pFsg10Yo/EtsxGlLSTLurst0azNnFv7ca5Hb8te3T91eaI6y59IjbsRgilSQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIGazrt+QRNCkwEwYDVR0jBAwwCoAIgdUt9H4i6kwwDQYJKoZI" + - "hvcNAQEFBQADgYEAUIz/MSc6K5eaIAg8skaAgm6rSPvcU/711b9G0qsIs6YqvEz4zhGi5X" + - "nalYYXfaSQzomuRuABNvuR1Ydaw/B9OdPMro0DhX8VpY6NzCL5Qj60/I4is5a+Hzgk82ck" + - "eAC3okPHbVMd7R9kdFsWNE3Capnv7rriqXO3vwFw8b9vXD4="; - public static final String Intermediate_CRL_1_PP_01_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIgdUt9H4i6kwwDQYJKoZIhvcNAQEFBQADgYEAkR24" + - "ebKfvEhDA0C7sawukQbv/q8mjSS3CrhA/oqeb8bML1IlW8rjHSXuRU/n3oeyAZuxLCAQMU" + - "TPG6Vq4dOu8XC1RY74xIm8ps4mE0xB8/nI5kadHUSDPtUZhNzc8tv+z7fUGRaVGL7CBEpq" + - "ICyQKYytCwxyf4xu2Ip71Uy2tuo="; - public static final String Intermediate_CRL_2_PP_01_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wMS4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIGazrt+QRNCkwDQYJKoZIhvcNAQEFBQADgYEAjpUo" + - "XSj0HX7Wm4w1FiRBBazInGOhSQX9VP2GcGb5lfr3GKt75Y+C+C9qd5X25DVkA4M1gPBK+u" + - "XjSMQoHAmFJychQG23rcGcuDJlzRMyfvPCF9dOGLFdmkuHSo5hQUyYsxnXV8cWLIkR1AUz" + - "PtUbTJL9g98R/OJFsCBiPi+By6w="; - public static final String End_Certificate_PP_01_04_crt = - "MIIChjCCAe+gAwIBAgIBTDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wMS4wNDAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDEuMDQwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOtf65MaydWM3bmMT8tAGCX8gZkx1JlgQyBlJT67" + - "2APIkfmKRFK/dBtSwwCVGHZG4JYBrrwMpzUPrkGKYI6ZVIvvPnPfadZns9i5SM5LZFS+a5" + - "JfbRnSJd8dXhZsKHxqkxIWwG6+VgnRKXE/Uc4m8TePQJZEOra5ezna5yhvqUwPAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwAjARBgNVHQ4ECg" + - "QI4iNoMjKiXMkwEwYDVR0jBAwwCoAIGazrt+QRNCkwDQYJKoZIhvcNAQEFBQADgYEAmOjp" + - "2EupE1AmgjGfiGK1fk9kf39yQXK1EDsyO6KLdWL/bmWeYi/G7ZE57/+yVVADJuHI8xVIDZ" + - "LAC0u5p35OLgbcmmA5bs52KWJJfa0nbgGpVaUSMg9SkEGS997OsgExWMvYhdFIKXlq4Rwc" + - "ca89Hg1GlXdrpfD2OCDNBvcWB5Y="; - public static final String[] TEST_37_DATA = new String[] { - Intermediate_Certificate_1_PP_01_04_crt, - Intermediate_Certificate_2_PP_01_04_crt, - Intermediate_CRL_1_PP_01_04_crl, - Intermediate_CRL_2_PP_01_04_crl, - End_Certificate_PP_01_04_crt - }; - - /* - * test38 - * - */ - - public static final String Intermediate_Certificate_1_PP_01_05_crt = - "MIIClTCCAf6gAwIBAgIBTTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjA1MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDFzEEzV/yUEORIOufyqpZzKpYz5aPyBbcDf8AMMCM5" + - "tEz7j39cf1f227cbrTcAaUfYFwkrb07RU4bTS2X+U2Ak7Q5OROz5rrZBbsfwF3yHhwHxCg" + - "KLjbwz7D+OJdNfv7x2HRckwfMUkmP4cEuJIIPwj1ieBbsnUi9dkWZePwl80QIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIjsCjmszYCHMwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAWMUBdOdHMB/SV5kPUk+zut9g/1v/GyxyB60mq9jGqjrIsk4a9JRqa5" + - "MWju+6kVfSLelAOCR24EQsXnZM/5Qqg3Wb/SFJXWDcBnfWQWgh8UmJfmPhD7jViG5QVIxn" + - "iALNCYtz373L+IDECLMO6S3wcTPsHdYv14jl6BKtabwIpE4="; - public static final String Intermediate_Certificate_2_PP_01_05_crt = - "MIIClTCCAf6gAwIBAgIBTjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wNTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjAxLjA1MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCZzdj+ixWCuxJGMjcoHUwSNqI9Wt9gYwXUTl+dWg/E" + - "lg2SPJP7lrBOibAhSmaTorhunUSEf2adhdxhuGrd5Ucp6G0oZAa6ZDWaID4rKYWsI7d5kv" + - "mrUhDEEdzk2s4PCoPiQm4dKwRg2rIvA5Dv+W1ldqSVSG376zVrQ5xdjDUX5QIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwAjARBgNVHQ4ECgQIUASviIKBmJgwEwYDVR0jBAwwCoAIjsCjmszYCHMwDQYJKoZI" + - "hvcNAQEFBQADgYEAa3c+0Drcq7iWP7K+gE6Mz/0ATQoiG87irXWfWBUGWtYnsh6K+1THMl" + - "ibmZjYhsztK1P5rm6qL6HAyw0PhrRE9imqZ16cgiMomh65BWQImOeiXx9YWIPvjXWsE6iV" + - "E31XShr9b9OZBA2+Zpydc3ID/SQzy9PiTAfL5yJiW/JZvFw="; - public static final String Intermediate_CRL_1_PP_01_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIjsCjmszYCHMwDQYJKoZIhvcNAQEFBQADgYEAZIzN" + - "pXT89MplQgcXcA/K7YKlf62QCbw3rE+bUQiumJMlNGiVdaNJ8T66ObyoOWE+s+KN/Oetlu" + - "HglQ7r6RG68gHYtZZiO6kmxq+wor65dFGQyRggpD+D47yioEgR12wUUksL/8oBW1pfGW2B" + - "dR4sNWjzV5k5EWbLYu7wxj2/ubo="; - public static final String Intermediate_CRL_2_PP_01_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wMS4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIUASviIKBmJgwDQYJKoZIhvcNAQEFBQADgYEAlZ06" + - "h2L/89GvCtU1K1VtbHPMN/LAUYJrWFID1Eo+Cf/5wKEGBr8hxRtvshTK436zqVQRQN/XTq" + - "7u0SLxvIixNRErlmUlGByi5vumN2OA77SxOyqYLCnBXTd5tWbFGz/udjaNk1MxOK0MQxPV" + - "9R+HHUUVojRnAIQvlcqx/sMzU5o="; - public static final String End_Certificate_PP_01_05_crt = - "MIIChjCCAe+gAwIBAgIBTzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wMS4wNTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDEuMDUwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALyBn2GKvoKNHcu3AEJRCbWOyUpCc/onvRoQgWRr" + - "wE7vMI7vjqnoR8mXdWDW5u9DFu9V5pb/yHBWn1zpgFGNnLrqn8irwR9i6Q+qlu4lXL5WSr" + - "DqBqEKxrOBDPgkVz8Ldjt/Hy57qEukBarvpAwTc4XEJPAmxNrboMeGCEn2UShbAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIaV3Cd/83r08wEwYDVR0jBAwwCoAIUASviIKBmJgwDQYJKoZIhvcNAQEFBQADgYEAVJXz" + - "gooT1qd6rdehnLxJMf1HZ6JuqpyoQjzWF1jA3SkJmBDMXvAkMmIcQ7r5CZHaVF0iMQl5JW" + - "fxPtM9Bws6jZhVL0TkwJHmbnSvbzUkJYeXPCP7ags4bu5I32co1nFVF6wf3aQDZeLFj/TU" + - "1GCQ4rh80T5oknuazD4xXAYx9sE="; - public static final String[] TEST_38_DATA = new String[] { - Intermediate_Certificate_1_PP_01_05_crt, - Intermediate_Certificate_2_PP_01_05_crt, - Intermediate_CRL_1_PP_01_05_crl, - Intermediate_CRL_2_PP_01_05_crl, - End_Certificate_PP_01_05_crt - }; - - /* - * test39 - * - */ - - public static final String Intermediate_Certificate_1_PP_01_06_crt = - "MIICvjCCAiegAwIBAgIBUDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjA2MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCjeJAwaZ0cw6O76hu15XadwJiTsIJcXZxGAETq8H9p" + - "VJs7kJh57oLpO/lG8zG89QS9g1ozxaaGDWsSyXsDzv1eqDVZg3ISQu6XcKdDu8EwgQDY3S" + - "EGkJ2AidFue3l0kEwR9+rtsuVKd/P+ULF1hWcoyLB/sQD5z8GvIiDKyRBiFwIDAQABo4GL" + - "MIGIMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMD0GA1UdIAQ2MDQwCwYJYI" + - "ZIAWUDATABMAsGCWCGSAFlAwEwAjALBglghkgBZQMBMAMwCwYJYIZIAWUDATAEMBEGA1Ud" + - "DgQKBAh9i6tKUsPTgTATBgNVHSMEDDAKgAirmuv5wudUjzANBgkqhkiG9w0BAQUFAAOBgQ" + - "B/Gxsb5lxSTN21CrjBp2aE+U1oTP2MpIFWUD1q8KWhZZF1iCQ7orcDVITqJPdPxDu1YwKk" + - "zOegc4YBSJzHZqF/W4Kw4wisMfnWLTsUAeP/Ucz4vXk5rsf7IRssFG6PLxVmtRZizoxl9a" + - "DO9abTM/jV8Mgi1IB6LdWgmtosBGBzbQ=="; - public static final String Intermediate_Certificate_2_PP_01_06_crt = - "MIICrzCCAhigAwIBAgIBUTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wNjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjAxLjA2MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC8DbqYUf437toWlRkOQA5PloqYQjWYpiR67yGSjQHp" + - "j/HlduTYFS4qfUbLCjH4qsNUH8yQDvogImQw5M1IQOsUAqO6mYFxjqUWccuOaHT6XfUaOs" + - "DDHr/tQUvhz3LJryaILiPlNcQF8QiYpujM1utVRyFpmUrMAlOvWUB93c/xUQIDAQABo30w" + - "ezAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAwBgNVHSAEKTAnMAsGCWCGSA" + - "FlAwEwATALBglghkgBZQMBMAIwCwYJYIZIAWUDATADMBEGA1UdDgQKBAgQxGVMTJml1TAT" + - "BgNVHSMEDDAKgAh9i6tKUsPTgTANBgkqhkiG9w0BAQUFAAOBgQALJtPqY5uROJ+2QYTekn" + - "fSUc0gC7j3/cngIvxGT385xDLTrd6TjYSi+12+vU7RNd3MIZoz1o7RpWQV6C751WtOFuZi" + - "iXeQ758aLqfhjYSVW/NHkO8vjrAMUzUbgjqb03k7q5JgtT6udB+9ySmou2/RxYW5p/IT17" + - "euMVGmQb/RFg=="; - public static final String Intermediate_Certificate_3_PP_01_06_crt = - "MIICojCCAgugAwIBAgIBUjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wMS4wNjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjAxLjA2MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCsQqIx0ayxpIE8NduclvK1ubbNkXyvr0RDqnGOoyTj" + - "yMtnfnwRbclkFCNBdalZYofuTWP0reqvqGqsBj+RS3uazvDBqVmn0J0AGRiLILummgEFRJ" + - "ow8IB1hduDYJpDMrHRpfXpbG2H3fzN1XeX/B0hUZgdQ86GyK2qrmyIcyqZXwIDAQABo3Aw" + - "bjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAjBgNVHSAEHDAaMAsGCWCGSA" + - "FlAwEwATALBglghkgBZQMBMAIwEQYDVR0OBAoECNKJMmEWCA+jMBMGA1UdIwQMMAqACBDE" + - "ZUxMmaXVMA0GCSqGSIb3DQEBBQUAA4GBAKv9F3+Y4N8RX4bRZ4fFTKri2rrB4BsVrBFpOr" + - "SLzKnuyO1O5gg45d70pSHUAVBn3pz0f/6WwWLECq9tB7/Fphi0TyqeFmkRnysygZGlvLgs" + - "L19bpIgVPkjFFziMGuzdAFIGy8vnV19yJ2euMygEHr20yiGBUaHHnKyuOGbDg4i7"; - public static final String Intermediate_CRL_1_PP_01_06_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wNhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIfYurSlLD04EwDQYJKoZIhvcNAQEFBQADgYEARL4u" + - "DZvfcQDYanTfwU/hWAJDdDO7m7oQZLy3o0PTqXkk2Jd2v3+M2U8UN2PcuqZXT1lwS/piiW" + - "Sc1x1YndD0qUtV4bOZ9SESPhCeOc1lQTk5mMf/zqFxQqYv8rfDB5O3QY4bjS7QQzSsvmal" + - "TGCnoHmUJ4skmZJrQAzYnXyD9G4="; - public static final String Intermediate_CRL_2_PP_01_06_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wMS4wNhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIEMRlTEyZpdUwDQYJKoZIhvcNAQEFBQADgYEAcEyr" + - "sgLhVq0L6N5fww/U6TW4lqaVAEtjqxluWRyZnL3AJLEHfwh1lllCG5dNM5fahGDOW/53fV" + - "+gW5l92bsi2D/lAkDfNUdQdi5ZpQG9y2zhTArUlx9z1+KXklCi2Gg1X22gi+cYbK2hfzk6" + - "kNGP1v42bjrkF/ECczpy3e41rEg="; - public static final String Intermediate_CRL_3_PP_01_06_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wMS4wNhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI0okyYRYID6MwDQYJKoZIhvcNAQEFBQADgYEAp3uQ" + - "Tn2HC65TFmSjzvjuStIJwJcVahNcTWiGdtfTalZrMtuC9vUgQq0K1QIa7QNC9C3hQlzb5e" + - "bO7JhJDs+5GZnnsqHN3pvdKEoueRfWBjUGpPnSGFD61ysf9aDFY2j9Amf3zcBFsXZs4+DM" + - "dIENndbjkwqCV4zRTajAqCsIy20="; - public static final String End_Certificate_PP_01_06_crt = - "MIIClTCCAf6gAwIBAgIBUzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wMS4wNjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjAxLjA2MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC+IxiNJMOQG2gx1xd9ELNuzs9LrVJVRLvgP0lpWrx2" + - "2HTEXPDB6YmrEg/YgyptmQ5Z4K6CEgJz3EdDOarCSGcL7DmcSEwEw46MV3piS5DrHwQ4GH" + - "a2/ENSh3lF+6dliBwbQR2necmQ5g8ekqkWNb65pLl6RCNGkntJpdu8w5GWbwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIMf/eRyakKwgwEwYDVR0jBAwwCoAI0okyYRYID6MwDQYJKoZI" + - "hvcNAQEFBQADgYEADgpHRDgyPuK4dc+m2p0IELHUAK3qsdTZzBXsaA0rkkk1aRjI6DQ2qg" + - "b4crRU3spQgYwBC7KQYd/hp8Lk17iX6fdV/9wol0DxTGhamOJA0uRl768awRArf4cEUElF" + - "uWPN8D3wJEfL6BWgReUJWg8V9HEtdvXZZgzFN/CgHRkQ2RM="; - public static final String[] TEST_39_DATA = new String[] { - Intermediate_Certificate_1_PP_01_06_crt, - Intermediate_Certificate_2_PP_01_06_crt, - Intermediate_Certificate_3_PP_01_06_crt, - Intermediate_CRL_1_PP_01_06_crl, - Intermediate_CRL_2_PP_01_06_crl, - Intermediate_CRL_3_PP_01_06_crl, - End_Certificate_PP_01_06_crt - }; - - /* - * test40 - * - */ - - public static final String Intermediate_Certificate_1_PP_01_07_crt = - "MIICrzCCAhigAwIBAgIBVDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjA3MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDs3Z/FfgJOyKp+Ds8xiQBM053cWylYbD+g+zuWDz3d" + - "nD0eF77TLPITL7hwI058Pn3tXHlveuKMFqbvzWUgFXaBoHmmRohIj1eqfJQhlmKLjlSYyC" + - "N4xhLVi7vg71ZjFdRk1k8ME1HDfpb2WXqXh9LyRYY8b/aqL+NHe1PUDbT6FQIDAQABo30w" + - "ezAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAwBgNVHSAEKTAnMAsGCWCGSA" + - "FlAwEwATALBglghkgBZQMBMAIwCwYJYIZIAWUDATADMBEGA1UdDgQKBAgvehPxsTfSBDAT" + - "BgNVHSMEDDAKgAirmuv5wudUjzANBgkqhkiG9w0BAQUFAAOBgQBpdMBEONGcpFitMN1ihf" + - "W441E4HVTQwtF+h56aagVFndUF1gQsVEdDNmvvN/jdlzXotcfdEj1lOahmcwWbPOlNx3PB" + - "LUPAcaNM9SCrXWi1gKJK3gXC2OAxj0mT5XhfPlAdfhZXTBZLqMqebmk6kVwa+VyPPZFHGy" + - "BW0fV2ClJ69Q=="; - public static final String Intermediate_Certificate_2_PP_01_07_crt = - "MIICojCCAgugAwIBAgIBVTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wNzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjAxLjA3MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCrO/98w96Bg5YTTmtdc9sL8AOABGcYx5J8E1Y7/GhU" + - "2sInc/j0dtBbE0Tj4KFIKpVLD0m2mTyHVCUA0/QGiS1Tq6DzmZW/V36Clya3CoX9rDTJyU" + - "cKHpgntV19fFAK58aksyKCdP9jjLpbSspzOlIc+mVW+hkjgw3NcuY6fAOQvQIDAQABo3Aw" + - "bjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAjBgNVHSAEHDAaMAsGCWCGSA" + - "FlAwEwATALBglghkgBZQMBMAIwEQYDVR0OBAoECEmeATXRkM5EMBMGA1UdIwQMMAqACC96" + - "E/GxN9IEMA0GCSqGSIb3DQEBBQUAA4GBAG/Qv60jyImedUXtCYl0QpQ1Ne2ZLxvUHRLms8" + - "B1nXC/Rze7zfz5cwiyQn+6XN2rhuYFdTMDEFZDIjeeCLNllfan4GUAdRGtoJnfoLOGLlQf" + - "RW1ONc80cxd1NTxHqxOtqpWdoJQEn8070WLqQPACEs88XYKBZ00sF9ZdSg5vhHUu"; - public static final String Intermediate_Certificate_3_PP_01_07_crt = - "MIIClTCCAf6gAwIBAgIBVjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wMS4wNzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjAxLjA3MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC+5b7o4iWl80ntDMKGcnquLQDTGlf6Gy/8y34Vw08/" + - "8ij+nuHMiKpo6UCF0OpDcnkJ2ovvMsY5dAb5ErhH64UbnMlKbghnGv0sVidtipoC8u7ey1" + - "YUIzDCdmbNvTfho6IXKzH8ev//K+FJd3qBuKHl9u2Kk5+igsyb+bPSid7d/QIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIUDKu7h5EQ70wEwYDVR0jBAwwCoAISZ4BNdGQzkQwDQYJKoZI" + - "hvcNAQEFBQADgYEAnKhR3OvdgtVtmio7ikCvjxlSoKVbUleazxONOxHUAKdXEv0/mSOTwp" + - "hPPIoE2xAqPOOHvXPmzmJpPADjrfhU6afJ7ThDRFTMk4ZLOkT1SvRlymK7uWhj5bhUgi6S" + - "UQ2LUmrY2hIN4cTrrzZvDw2Q/6UIuqpmySXEOHDL5T5MXEo="; - public static final String Intermediate_CRL_1_PP_01_07_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wNxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIL3oT8bE30gQwDQYJKoZIhvcNAQEFBQADgYEA4gZR" + - "71wRXNdxWe7kaQPAw44UUw+cN1bDBU0RV7nwYAFDYxDIaDGOfjhUVTMBq4rb51S7uqIqYS" + - "F6j7BdLXl9WVRJobfkRH0t0cBnuSeQRz3ckrZrCuvyxb3PEL3pbf0UH1i/BfoG+EHJAY7R" + - "OVOL/dyoXeX6ehH6ImGhucDixS0="; - public static final String Intermediate_CRL_2_PP_01_07_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wMS4wNxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAISZ4BNdGQzkQwDQYJKoZIhvcNAQEFBQADgYEAfzKw" + - "NHrl10PJDHa3olBYXYzXi94zxDsEQSIb+W4pPXUfDZijPqL1NzapLqc/uL1Sl28GmLDrbm" + - "nCrlMn1Kt/gI6XndOnSyC9Sg6WDxAI3HTHxlG5MHLBn9Lb36CHobnwep1BMo8zl2clh0Kz" + - "PIxQSGXM1BDpHkwF5eoFAolDih4="; - public static final String Intermediate_CRL_3_PP_01_07_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wMS4wNxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIUDKu7h5EQ70wDQYJKoZIhvcNAQEFBQADgYEAj7+M" + - "EeIe1GmJpbRUFqbNrDvT5tHjKQMNdbe5Y8F920U5t0ig1Up60kc7hs7LH57i6R/quPOpym" + - "a9Eo9Bql+P2Bg9FELih5/a4B021TZBmmdSI5fwQZ6Q5PjgG58Zl2cJitNYvGi7tVUBojA5" + - "CSN7KBMyipia9ivxm9a/llJPrQY="; - public static final String End_Certificate_PP_01_07_crt = - "MIIClTCCAf6gAwIBAgIBVzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wMS4wNzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjAxLjA3MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC/RmUcYHxgQRHCUh5cMug/J2o8DzYbT+2pIehJkNCr" + - "zfqemV3qshLdMct5GV73oEkG5b6n7tj3/hI1TLh/A3LQpKROAGZybdo9fk4Pa0+6V6ql/U" + - "NnSpcAKct/f3IvchGo9nBGdi9aE+j+xKhMM6E8xj1+Jc7Z0xz7zE4+qRbeZQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwAjARBgNVHQ4ECgQI/y572lfRyH4wEwYDVR0jBAwwCoAIUDKu7h5EQ70wDQYJKoZI" + - "hvcNAQEFBQADgYEANl9zdMKbaq14OP45PeK9D4ftOSuliW2di1qAX38FQoWPYLLoaDU0Q1" + - "9I54PDY/UYRR9jKDl1WPhV6cD+65eadtiOZVr/h1CaW/HxTloouzN4z1zCXMC7AxZKo+EI" + - "XLN8f4w7hKLFYgf6gP9+iVi+T2gKfH5Ch2zjRhlmGFRgsBQ="; - public static final String[] TEST_40_DATA = new String[] { - Intermediate_Certificate_1_PP_01_07_crt, - Intermediate_Certificate_2_PP_01_07_crt, - Intermediate_Certificate_3_PP_01_07_crt, - Intermediate_CRL_1_PP_01_07_crl, - Intermediate_CRL_2_PP_01_07_crl, - Intermediate_CRL_3_PP_01_07_crl, - End_Certificate_PP_01_07_crt - }; - - /* - * test41 - * - */ - - public static final String Intermediate_Certificate_1_PP_01_08_crt = - "MIICojCCAgugAwIBAgIBWDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjA4MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDDe20HLq7R8b0fWTsEiNV3Z5IbQseZ8QCW+1cb6yM+" + - "ArKLJDnXx8zmTHSHQCpw3G7xhGsxA1btm0cSC5P/1bw/kFWsSLRe2NFF6oKU+7c+cgIUMB" + - "kzyXk+kpWAQRb7hcb50iKdKFtO8gMNGMAxlHRI05/1tThyAs9suI4TrxTS9QIDAQABo3Aw" + - "bjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAjBgNVHSAEHDAaMAsGCWCGSA" + - "FlAwEwATALBglghkgBZQMBMAIwEQYDVR0OBAoECFxr9vgF31fKMBMGA1UdIwQMMAqACKua" + - "6/nC51SPMA0GCSqGSIb3DQEBBQUAA4GBABaX7TYfmSyVmzGCVbTFweUuPilo4wzy7z/w0x" + - "y4uSaM/YMtixUdDPpTHOJNYDdeV85v+w9oezdL2ZYAaGn7tldC6k8ouq/6hOGGST+ziHJS" + - "gTOD8UVBQPRPvWEwgmDIprnzrVRz8rG6uqslXNiBDnO9BMGpRo4dy8YpOmV6BPCD"; - public static final String Intermediate_Certificate_2_PP_01_08_crt = - "MIIClTCCAf6gAwIBAgIBWTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wODAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjAxLjA4MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC8nLZcMLHYKxVqbhwJiqQbAYhf7S6ck2O9AhNor935" + - "Bfm7/8qVZbBAotQy1PoCjSW0UYdknDolWvi8aAtO0f9XVrAv6BZVVW9j3osIGN/XUThaN+" + - "9dZ83kGpyjeoitpGK4wbFNDteuBFYp+8gFNupnX7JQwUK3aGwBUucbe7puRQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIL0xyFYBk4OcwEwYDVR0jBAwwCoAIXGv2+AXfV8owDQYJKoZI" + - "hvcNAQEFBQADgYEAPk+Lys0Ueoyhp544EH9Hqy9+gY+l/+N99v7KvBlZWKuhkwZDE+qAYT" + - "P/SOPsWe8ADZE2iQ4pOlpK8jSqtJSdK69RgGL9omLnR04L9c/zKLArBE+VmoV7mohcQp8x" + - "aB4q/g3QnAqwfFYDjIWW3H6gRAeQ5MOtKdz/4042fJxc5L8="; - public static final String Intermediate_Certificate_3_PP_01_08_crt = - "MIIClTCCAf6gAwIBAgIBWjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wMS4wODAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjAxLjA4MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCvy6bNOyVaP8JTwiySFa3Sj+rdSqzkalK5gA7DLk4q" + - "AyvnAK64HgbCsb8dpnSi94WBDsocrQ4C1Ltoahc/AZyRVLA/REsAh1r3/0FALZgYiIxvSF" + - "m3ihKb3P9URBbotzhl1ahRZPSrcxKwNXEmxB0gjixGW7GZTARq3Il5ressRwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwAjARBgNVHQ4ECgQIwFtfZBe/KqUwEwYDVR0jBAwwCoAIL0xyFYBk4OcwDQYJKoZI" + - "hvcNAQEFBQADgYEAeZhpIDEYyV/LkOtUf1TryemJExQ1jdfirJ3AUtoFIoWz1p9aqnV6Po" + - "GAMozjtdyotfSA2O8c065DwD+CvUXPmdD+2vWpX/2hJPj+x++UvvntAokD2UE9HCeEvBHK" + - "rr59hvKKd6GChyhAjLris202eTLIiMEoyZy9X/Wt1nXF8/g="; - public static final String Intermediate_CRL_1_PP_01_08_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wOBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIXGv2+AXfV8owDQYJKoZIhvcNAQEFBQADgYEAhkwT" + - "E/EGAe32J883qVrh1wG5xQzO/GGfp/zuDYGL2k1zZ2zq7MajKfzBoXXQ3WPh5dTK1sy5o5" + - "boPHG0pge0B4/2JvuDVS539+9HAPansUNsrMXzOblg1acjdKtuk4oS8PIYkM/lbA6yJl6F" + - "QMbdIthWqa2gjaWKll3R8fVUjxI="; - public static final String Intermediate_CRL_2_PP_01_08_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wMS4wOBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIL0xyFYBk4OcwDQYJKoZIhvcNAQEFBQADgYEAN6BQ" + - "sEQT5YCvs9vlUSdG4gjTgNkyQTCdmSIcufpK4MG/AoW/Fn5zJXxiMyHmvT/dkk/UOf82/s" + - "41YI/Inz4qRmGF4IL7jo+l7V+OI1n+Vf4ClgZU6ocb9d1dFoBkJu3xI9dcWK6ExpzaBUXw" + - "rPJilV4M5luGbszdDCs9cLjmiRA="; - public static final String Intermediate_CRL_3_PP_01_08_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wMS4wOBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIwFtfZBe/KqUwDQYJKoZIhvcNAQEFBQADgYEAkmDx" + - "t+r59llppKmm9mSTof9/BX2rNyG9LfIH7wweoDi9be2vYOLy0NU1kJ8f3/muEw2v7hWDri" + - "k9ROLDFnb/S8MYVT0l4rymRhpshPF1uMTOZmfJUCfTX9jIaShztSScqcGSP0a3EUfDD14R" + - "1yMu2pdlMM35llE0lV3uf/eUNr0="; - public static final String End_Certificate_PP_01_08_crt = - "MIIClTCCAf6gAwIBAgIBWzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wMS4wODAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjAxLjA4MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDTWNp6Oz39wwU8AFDzYVs3UfVvXg+t6j/qFavnvllI" + - "NO6aU1o4Hnk1wfmTPZPErc00/MfizMSumTYYRl21hEZWhjNO5uQIHrF9V/4OToo2iOfsPd" + - "gxwpSokwxcl7CJyadwUxhRDYCLhSORXoCK1CPQZjwb+uQz799O5ozb0WVNYQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwAjARBgNVHQ4ECgQIO1TNJtWwaiIwEwYDVR0jBAwwCoAIwFtfZBe/KqUwDQYJKoZI" + - "hvcNAQEFBQADgYEANmP9hyFnYvi8gdtRe8ERoEG90NwoyPTsB8sXd40f+Sm1QxKqMPzKPL" + - "7bOtY12JGwZ55a6HFVgpw4PnU+0iOcCMHS5OQQLtyirxX2HfioiXEmcmRJT6FvLHrGIHGv" + - "KNcfc3rUiksdOb6+j2k8x4IwQ6pBEHQwY8U4Y4DgqALlqM0="; - public static final String[] TEST_41_DATA = new String[] { - Intermediate_Certificate_1_PP_01_08_crt, - Intermediate_Certificate_2_PP_01_08_crt, - Intermediate_Certificate_3_PP_01_08_crt, - Intermediate_CRL_1_PP_01_08_crl, - Intermediate_CRL_2_PP_01_08_crl, - Intermediate_CRL_3_PP_01_08_crl, - End_Certificate_PP_01_08_crt - }; - - /* - * test42 - * - */ - - public static final String Intermediate_Certificate_1_PP_01_09_crt = - "MIICrzCCAhigAwIBAgIBXDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjAxLjA5MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDJqSSqGjgI3JUJfA/XkloAOg2QtZeAGp2nCq1Oiply" + - "MTjJpMpEOSRYrEIgKMGnBPq33seP7X/obCT2jgexmbFT2TmPirM+h1aqbGQ7QAqsx80BdE" + - "ofdcfiNosLbbzli9qFrbarO7fJfBhzraBFGDJj3N8nLi2YtP9IieFYJ/MhKwIDAQABo30w" + - "ezAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAwBgNVHSAEKTAnMAsGCWCGSA" + - "FlAwEwATALBglghkgBZQMBMAIwCwYJYIZIAWUDATADMBEGA1UdDgQKBAiVRMrZuHQ7VjAT" + - "BgNVHSMEDDAKgAirmuv5wudUjzANBgkqhkiG9w0BAQUFAAOBgQCetZy9JMzUVveSPE2fQY" + - "4fRVChyvIc9nCE4wbzhnRl3zduBGmAwTFr7dRWSFTnEq1c2b6B5nJtCzmt4Ovapf69sIlM" + - "s3iV16eBB1WTNCY8YlAsnmZ7q/AR0t0vX+hh6QV6zN5xqulOM4Y8csZEx3RWJzV/LjE5w7" + - "mKvofBEUoqQA=="; - public static final String Intermediate_Certificate_2_PP_01_09_crt = - "MIICojCCAgugAwIBAgIBXTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wMS4wOTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjAxLjA5MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDWUTlTieoi7aLGUYOAgqUC2J/6JarOWfv4vobpwjAA" + - "DjvQGqg/GCZP7FgD/72Z4YefZKJEFZTDnYfmy2qh6iBYxcvLsJ+PJGzPCObNSmyq8gpeXy" + - "KKEeCZtEev1tSywTT6E5Dhee4dX0QHE4ydZEliMMXGRW/8ffT6x54CPwVylQIDAQABo3Aw" + - "bjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAjBgNVHSAEHDAaMAsGCWCGSA" + - "FlAwEwATALBglghkgBZQMBMAIwEQYDVR0OBAoECAMhmGN8+qXoMBMGA1UdIwQMMAqACJVE" + - "ytm4dDtWMA0GCSqGSIb3DQEBBQUAA4GBALNjokGrTnWsPn5KrlO+g3R8tAGM90JQDjfrap" + - "xWM+nN+dUVVdGU6w2pAOAq2UhfySiP42qiFChnPK9oOqPF2Or7/kcmXZzBfZkE/FnJGNUA" + - "gs9je1nZvTPQYsF094OqE7QdJi2k3seA1tqejA1kihMHpwQNmIp8bFpqn4dPO6ys"; - public static final String Intermediate_Certificate_3_PP_01_09_crt = - "MIIClTCCAf6gAwIBAgIBXjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wMS4wOTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjAxLjA5MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDHUpHhF4ANNLOywnvpqyDgzLMtatW3ZxgLBBRYk6TE" + - "jMgTVKmRasVRTA9uatGG4b2f70YWs9cOd4ylQDqPEDdKNZ47bqZdX6RAU3j1dO9LBwWDbp" + - "NvZ3zuDBRDoCZClIcBESDYweaZ9nUgKl/WxTeCnMwqkfSJGYBBcHIonRPnGwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwAjARBgNVHQ4ECgQIyppef22OmjEwEwYDVR0jBAwwCoAIAyGYY3z6pegwDQYJKoZI" + - "hvcNAQEFBQADgYEAOySUCY+PZxomhWgTRSKRodOIe/QSfCMSC+0iw24a2TuJzFLjN9pSm9" + - "0C2PqWbfwD1uDjrteO1NK+1yhtIDySiptR9GmR/fhL7NJ+z7M4fEJBjjeeI9/aEIuHuBFT" + - "TVHfwsJxnZtjujtOdl56B825LsKW8Otumd2A43N9wIgSyBg="; - public static final String Intermediate_Certificate_4_PP_01_09_crt = - "MIIClTCCAf6gAwIBAgIBXzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wMS4wOTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjAxLjA5MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDR8/c35YqAswoRMgQswlTbKB9oYEzrFSC0G4dt8ydP" + - "O4PyQs+J8wUVrRVMiVDTLO9rUnzR1T3iA0dqM+SvWMIA8pMWKyNV58f73ZPJIejhxMmOZa" + - "sSLHceMmmMRy1zyk38i3ZJP3YhvxffTjWyTZ9k2xSDX+6KNnkiKkJSKpl6nwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIpcWcVIIu63kwEwYDVR0jBAwwCoAIyppef22OmjEwDQYJKoZI" + - "hvcNAQEFBQADgYEAckgV11ND/D1vfPEMUbDGUvtmsziHiSuEoDLJqSAhOmcX+evKWOfoVo" + - "f7og+0ajuul7yuB+7YX1AakOw+33k++Rsgg4o+ImZq3+VScpgnIQ037OOhgH3umwFRC0r3" + - "NpWqhmQuz+mHnKiK3X+IDsQOFkhnpNs06CQSZzmrzbYlQU0="; - public static final String Intermediate_CRL_1_PP_01_09_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wMS4wORcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIlUTK2bh0O1YwDQYJKoZIhvcNAQEFBQADgYEAkEc6" + - "qHGOWZXYTQ5fsWyJgEtuJyl8uJ+gMcikcMut5SIJTTtOz+q3wclYDevT8z1MM25kNdgwyg" + - "b1bwHNAG8I72eIDtGfLrChFwU3qpvVMTG9gPYJb05Q8On56nsBu/PnnzJervzxjViaeOuv" + - "kjwwfmWqGkyiK433WxzgPqE48eA="; - public static final String Intermediate_CRL_2_PP_01_09_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wMS4wORcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIAyGYY3z6pegwDQYJKoZIhvcNAQEFBQADgYEAV9Md" + - "8PaNoIlT7WIwnelqrbwsR66vAaT8w3gu8XDYXu+MOYThfyERUvtH6AUrHWfiRvWEzKljHH" + - "3BQB0Zsa9Zz3U5cLzJcqtqDc1lH53aIA8MflrfMVrYSF684s28FikcukmA5Fw3+7S3TJ18" + - "Hq7plHwTCidVD6yG35hsPwcjTrE="; - public static final String Intermediate_CRL_3_PP_01_09_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wMS4wORcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIyppef22OmjEwDQYJKoZIhvcNAQEFBQADgYEAjBaP" + - "V/TFQtDLxQFIBCbfqhlgpOfvJBatjNuvB0TuD2rsGS1eaLNfTfyVKlOLpxoKwKYMu36kIO" + - "l/+KEPDq+ofy7uDZ6GLK3KZ/WiJyriqBQjFCvlhNTW1cjA7Ejk2lOM/A46mrUS9xC+aITh" + - "d+/UYGt6O/e256cOwQCUaF2z328="; - public static final String Intermediate_CRL_4_PP_01_09_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QUC4wMS4wORcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIpcWcVIIu63kwDQYJKoZIhvcNAQEFBQADgYEApZ1l" + - "w5SJoU8zeKwX5jpVWiFFFomDgKsNlkkX5mF88l0B6MiYbGqJIowJRfeIlxvPOf20imN7Z8" + - "l38DRXFacDQP4y5kxM420dp+ljQL5q9RsrC1+OS7I7TGgGwPoZTO4mHVk8nx9MyT+kW1OU" + - "x9qRYWN0CLmP22kutYBndny222Y="; - public static final String End_Certificate_PP_01_09_crt = - "MIIChjCCAe+gAwIBAgIBYDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBNC1QUC4wMS4wOTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDEuMDkwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALiOjwwwUk1HNwf2rdzPL2okKTgL+lMdzhC7cbq3" + - "6A409EY7iipPCcsDsheo9EaTNOHV9xjWDqOhqjA38h4hGNkRUVOlTW2r8SoHISn3gDXfrh" + - "aHbU3owscAmt1nuA7rzo7L1eBPsisIIxAY16uAmVN5RdiAAaP8VUdshcNI4/1jAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIGZIY3nffEXowEwYDVR0jBAwwCoAIpcWcVIIu63kwDQYJKoZIhvcNAQEFBQADgYEA0Svm" + - "aqjaeQx/lnF223xlCTsU7XzOxbHetRWfeCTw0QrWQaTrKjWTS/TNyzLhGuPBFg+NTTvWML" + - "gzteo/WWdF8+d2rOis9FVRCe/Euok6ZCL/xgzaE86ZSQg0jj6458TpuC2cszSaifRSlhL5" + - "ogy4ADWgJxdVcBrgADo6QZXkXXw="; - public static final String[] TEST_42_DATA = new String[] { - Intermediate_Certificate_1_PP_01_09_crt, - Intermediate_Certificate_2_PP_01_09_crt, - Intermediate_Certificate_3_PP_01_09_crt, - Intermediate_Certificate_4_PP_01_09_crt, - Intermediate_CRL_1_PP_01_09_crl, - Intermediate_CRL_2_PP_01_09_crl, - Intermediate_CRL_3_PP_01_09_crl, - Intermediate_CRL_4_PP_01_09_crl, - End_Certificate_PP_01_09_crt - }; - - /* - * test43 - * - */ - - public static final String Intermediate_Certificate_1_PP_06_01_crt = - "MIICozCCAgygAwIBAgIBYTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjA2LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC4mu1oBHB9BeorCFJIuSw5tszmmYBD4bjTklsAfjrz" + - "OknQsYxEoHfifpdgivh1fMUk+mK5YWUz0G8/edquKbJhPBTTWp8opsGzTATsTLSEzkKbVM" + - "DQ84ttxrhJWlrVRlouZTnD5HoLUvujY4EdydmKsjj6UBt/tGL5EKodymcEtwIDAQABo3Ew" + - "bzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATAMBgNVHSQEBTADgAEKMBEGA1UdDgQKBAiGRi8YRte8PzATBgNVHSMEDDAKgAir" + - "muv5wudUjzANBgkqhkiG9w0BAQUFAAOBgQDHOaIki9TogVJn54FRPl+7FyzBJ2DnR4RTM/" + - "q1K3COWRdtvmGqtBBtAccxWziQJ5TnAQn1XA0cFPoCgymGPRcUz+0+C+3VhJ/m9LggVP3/" + - "pjJEG0fsmJtUYPyphUlXeUzf4qSj34SlJws3DIHTR8ozAR75HZmlMRnxyZBLl+jAng=="; - public static final String Intermediate_Certificate_2_PP_06_01_crt = - "MIIClTCCAf6gAwIBAgIBYjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wNi4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjA2LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC2rptuREzhGfEJ3U8ILPBq+z0s+aafMvBRHpqkipDq" + - "bC7v9zpwg1K18F4MYiATpPAEfdEeprKs0mWfdusF93BoMBVm1y0zRgDRUNdyB5GFO8g8+2" + - "yNEO6L37c1PwrMLnvJakaqwbbnwlcMcKtLHoX19fyveQQg5DNj8WcKZj397wIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIJPt6qKdFeYEwEwYDVR0jBAwwCoAIhkYvGEbXvD8wDQYJKoZI" + - "hvcNAQEFBQADgYEAkFJGNze9/6YX7Rv8FR9obFGACIJ7Om4YQQRW9WM9pEDgKls7g9b9El" + - "dJxLKOlWoRoYZIrbEam19traE2O3dxqRevPoYvfAqkR089BkxH/cFYyfqw64IpjDG84dsY" + - "XieajI/Ov/HjgF0VQKF3+Y1ZiDjb2OHNgMkqs9VmUHaE+94="; - public static final String Intermediate_Certificate_3_PP_06_01_crt = - "MIIClTCCAf6gAwIBAgIBYzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wNi4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjA2LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCzxfyi52gw/5tt6/9aNAXdY3wZYH1GifzGoN4cg8Mt" + - "++5xmTdrc2A9/5biaTUVC0x/Ml6mm940NA9mM/EoEu4SdnP2crNCIFHWNlYz3cJtYJ68rE" + - "rEU+S0gnYaYRiwNGhVpAjV+FPDr0Ghgp5rYQ61evAhmRuNAFwYocUw80G6JQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIZ9yMlboxCIEwEwYDVR0jBAwwCoAIJPt6qKdFeYEwDQYJKoZI" + - "hvcNAQEFBQADgYEATNnRMQmvTxRcSMUL4pa5bejuX2Ixy/OfZIAlJWt9AfLW2tHmdAaGpD" + - "GhTHKfyQQ+HrIMQ+lXau8Yu6nzWXAY8pKpKD1Hbd355VE4dYZ7aPvcAulZHeV0F2EFn09x" + - "qQ1frHDRoCOc11B5qV5hnwgDE/ByZh1+OWUcR4tBQKyEF4g="; - public static final String Intermediate_Certificate_4_PP_06_01_crt = - "MIIClTCCAf6gAwIBAgIBZDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wNi4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjA2LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDB66hLZx1WGcCqmOxHK/rotXOpccJQOB2L3kpWP1M2" + - "ZiWufUguLw45XShdqu31OgmGw0/w9ugwy96aRL+Tiluj4xjIAxJCav5cXF8Dt2Ex7hjIHm" + - "XV0rHbJUiduHEh3fQphgtzlR4QxG6i/i4SbcsoJzsws8x3qOqRPaWDtyWs0QIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIyZsLNvyyIZEwEwYDVR0jBAwwCoAIZ9yMlboxCIEwDQYJKoZI" + - "hvcNAQEFBQADgYEAc7G4BAUsQeqNp/Kv8TKJckfxWygz54PrkBICNw/eGuGamVJMRkYCP3" + - "yJ8NW4jY/rfxzKKyjVB09XuNBLDwYdR5Z5UHSg6Ijes3j8tehZ+9DwEQrR+WQf/adHIsxn" + - "/347MHrSQF7CJzE9tAu6AOu53lKxLeH6C/5YI611or2Ql1I="; - public static final String Intermediate_CRL_1_PP_06_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wNi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIhkYvGEbXvD8wDQYJKoZIhvcNAQEFBQADgYEAC7ev" + - "Pqe0veUX+zF51d/NiG6VwgEwOP1HlzD/saDn/FYXStTQDwoIyFjmZ9z0yLGIaVI1O9BWVD" + - "CTU3bCU1dBg61Blo3rI3TlNqmGrYRUSJ857QM9c/G+/+V0XJ/HgId39Pufd9Tob150XNMs" + - "9h0PvqjhYjG1bARMRa8JB4KTBU4="; - public static final String Intermediate_CRL_2_PP_06_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wNi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIJPt6qKdFeYEwDQYJKoZIhvcNAQEFBQADgYEAiUbi" + - "qQ3X/hTgjhpQGDZi/7EnZcqSgiAFMreV30/mav2NtXDITE9DqZzCS9x1vHBp4BBsQwYVvp" + - "XvLVSgns4pFwR+0Whc+tPo2j9ScePq3sICsqleWTN1DvuoP9rBe8w7pDN4guA59Kbeku75" + - "5CMA5YjiTUomK4UaqI3htwkBlWo="; - public static final String Intermediate_CRL_3_PP_06_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wNi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIZ9yMlboxCIEwDQYJKoZIhvcNAQEFBQADgYEANowv" + - "f/scWT6FFT393XEpWcTnA18hBT5Nkddw6mHjKBq7ndtBQkydMO8Wym1IeQ2qYbAqu3ifNZ" + - "SKF3PfgJjYPBKImzJdHTKfcclMC5H8Y9JDN0voeyONr9NiXcoj+p24YNYjb+PFI6avRYo7" + - "Xyrqvwnvng/IY9zLtc7SYYUIODk="; - public static final String Intermediate_CRL_4_PP_06_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QUC4wNi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIyZsLNvyyIZEwDQYJKoZIhvcNAQEFBQADgYEAsnA9" + - "ERwsi2mK540oPL45mLdOjGnet7+HhNk14q0hvALTYGB1vEjijc+Yvf6mHJGRbiG207BpJ1" + - "DWeWBY8TLe4YJXlSrWwx1jD46rCt7gdqXAdLpMo+i35yfQ19ZqeWcRLkspmczoUJLJaJza" + - "eLRrnjv62GLJ09KVKpZBGhV3SUM="; - public static final String End_Certificate_PP_06_01_crt = - "MIICbjCCAdegAwIBAgIBZTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBNC1QUC4wNi4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDYuMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKrLB7XA0PKY0qtSC5lMBvvIvbyjBM8XmANrN9Wx" + - "66QxEuloRAz0D5uAu7TnJBv6qNuIPGFl74yusKCSkjEkBMdVpBCfDvpG1/Tz3sALSlxmnz" + - "xbK2ytOncbYuYrzvXttx6wkhLrBLlnfuwpZwGZOr/Pt6WwQJWjXxgTNJ6dcgXbAgMBAAGj" + - "OjA4MA4GA1UdDwEB/wQEAwIF4DARBgNVHQ4ECgQIv0gg7LxDM+swEwYDVR0jBAwwCoAIyZ" + - "sLNvyyIZEwDQYJKoZIhvcNAQEFBQADgYEAgzlxBGGOBvHw20eOzSswMqrHopNMcvwuEO+Z" + - "Mr0h8U2/HIiRqKWQaxMyM8A0oULGJny3B/0WtkfVQ2EIibZGiKIjC1RPAB3QmL0vgSyUmF" + - "s/LZbzugpJW6jvfov7N4O+u0J5rYniRxa4bgrXa89TY9kwDMbr6/z4oiI8bq3gEsw="; - public static final String[] TEST_43_DATA = new String[] { - Intermediate_Certificate_1_PP_06_01_crt, - Intermediate_Certificate_2_PP_06_01_crt, - Intermediate_Certificate_3_PP_06_01_crt, - Intermediate_Certificate_4_PP_06_01_crt, - Intermediate_CRL_1_PP_06_01_crl, - Intermediate_CRL_2_PP_06_01_crl, - Intermediate_CRL_3_PP_06_01_crl, - Intermediate_CRL_4_PP_06_01_crl, - End_Certificate_PP_06_01_crt - }; - - /* - * test44 - * - */ - - public static final String Intermediate_Certificate_1_PP_06_02_crt = - "MIICozCCAgygAwIBAgIBZjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjA2LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDjg5+XWZwW1gLAOldsRshbCXmUCmt1Vs+oZsvyH+6d" + - "2PwKs8ydrz+oD0/D8V7cRXucj7q7cJSLhEY1wJoTTgrWeRg1hQioAXzPW3ZkaZuzhpi+cC" + - "qeZzN5nPvqK18GWvpffNbUUVfOuaHzzHmhmhgQyZaNG7JHwpWM10UMzMawOwIDAQABo3Ew" + - "bzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATAMBgNVHSQEBTADgAEFMBEGA1UdDgQKBAh5am+tkndt5zATBgNVHSMEDDAKgAir" + - "muv5wudUjzANBgkqhkiG9w0BAQUFAAOBgQAF0h1iaxxZUp43AjP5gSvbW6JfFRW/ugH9SU" + - "n3e1B29LMH3F/ML0joVhPx5CIVpX4nfaYzdeje9+E2/bHMBGSCFeHz9S/KoBLLiI0GNhzh" + - "I6MytvPMPRx7hkuROouQ69TnslJiGCcoo+MD0fA2YwO1bCtyLdeVHYhJZWQ2Sg8PHQ=="; - public static final String Intermediate_Certificate_2_PP_06_02_crt = - "MIIClTCCAf6gAwIBAgIBZzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wNi4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjA2LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDF4KSKxo8HvQ59E77LcuLpZ7ujNDjb30KB+EbIuRmy" + - "khXAkhq2Rp2Iqd3OhC0AXmhSF+enJq3h0dqyxNWP08SIuK5ia3OIeatl1UgEyukuAnrLuI" + - "A7PFUQAGZmDG4OuHv28zza4n/SwfCaKfi8qatIwpwF/29ycB8wYBrHThQD0wIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIKFZV4vjfOOQwEwYDVR0jBAwwCoAIeWpvrZJ3becwDQYJKoZI" + - "hvcNAQEFBQADgYEAuj8P5ga8Xv9eFjk4AdRMx/Fj/doRAOLZfs+OnrduRXPLe7CFKDxhFx" + - "xYOma8In08cgXVVnRR+2nZ54h5qjCYpskGNx+yZRY8+HW3XXE3KpS7QgTnc/1XshUy9VGm" + - "2qX0k661f2d3KnSKiKVKtM/y/j/nNyxPugDz1Yy50NtzQOE="; - public static final String Intermediate_Certificate_3_PP_06_02_crt = - "MIIClTCCAf6gAwIBAgIBaDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wNi4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjA2LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCitrzXkbO4hAQpBRQE880MFBPq84umX9pyKbV3iMqK" + - "Z7HBYwZOvEwGQxG+TX1PIj0Jz27oyvoqpLeMkbn9L3K0BuS0AZKlWIOGPPHWpYTDoQCCs9" + - "Mba1evVT/1CMxESsv2kgf49YHMs/6TtxQX0qj5TQzXrkM6CMBc5zyPBDWORQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIxLES0WIVZQYwEwYDVR0jBAwwCoAIKFZV4vjfOOQwDQYJKoZI" + - "hvcNAQEFBQADgYEAdQeDAOFys//2xUFwBilhqr32/jh4gT/ijxRjG0msKTYXmWcCQv9Tms" + - "smtIMtiwwnByhjTdQAtOmEyDm/CFW0/NBnxlRvqZKt+PRtscpExVy7xnnm2MBITTa+9xkC" + - "A361jSDPnRPEOZoKdMRRzNnW4f59m0huibeFNRYJ7y8BnHs="; - public static final String Intermediate_Certificate_4_PP_06_02_crt = - "MIIClTCCAf6gAwIBAgIBaTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wNi4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjA2LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCg0yQG7oewLD2eFfPuj2DPBgT47iEri2IVeS/r5hUD" + - "nZhxzT2/+UsQfiS+ufdC2Xq+QAcXFcAifPbvRs9xo2q0uLz26mwSq1TH8ilHLKatKwJ/Yf" + - "hcRAfEWDwhLJGRhZ7YrKu8xczZgyxwaeu5m38lEaLIRyaVfVSrw8WhN4z4ewIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQI/dKmuI1u6I0wEwYDVR0jBAwwCoAIxLES0WIVZQYwDQYJKoZI" + - "hvcNAQEFBQADgYEAOEcMpdSAVKUzQ1A7LJnWOh5Tul6yXw6qMsdZNGOZ3vYBXH3vHnSHvp" + - "MqJQ1JIX/4XSiKF8En5dVI/ooNabgyORpPnLGDvrshvO/09iaDlQXxWRsoGAFhcIe7Ibp+" + - "3g6hnBO5U+0pbInioKVYf/1VyZSUK1QQMutshMIye/8gyZw="; - public static final String Intermediate_CRL_1_PP_06_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wNi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIeWpvrZJ3becwDQYJKoZIhvcNAQEFBQADgYEAEJ28" + - "g5iyw3ZOqs5ly7O2X0YWtgKK3BnPztxygCUWO1xVy/QbMM5ybAU/UPbJC2pUnkOZMX+h30" + - "RYp/kV9w2o15V1hxj2M0tR8fQ0WXudwi20pZO56uHb+WSaETOmPVoNH5efeXsTvtbHQR5w" + - "95L2vNeEzJEy1l7S/sasUUoQvqY="; - public static final String Intermediate_CRL_2_PP_06_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wNi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIKFZV4vjfOOQwDQYJKoZIhvcNAQEFBQADgYEApLIK" + - "X/YJYhSfn7yLTAlKjnhpH1QDlFeaE6/+uj6j7ZgpK6HBjHOvfwbrjurl+L3ZTLrY1FCL4/" + - "SUgXrJxbAyMANlg4Z8u6o73F9cur2gi3sgv5d6FjJ8VwuKYWY2dwZNeXwlWE/W0h01Vd9H" + - "QVuctFxzQaJQdQBadw/XqzvLlyw="; - public static final String Intermediate_CRL_3_PP_06_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wNi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIxLES0WIVZQYwDQYJKoZIhvcNAQEFBQADgYEAE5J9" + - "wJKAb3veF4GhHeoIgy6JvMsrjv7d7dhT+ZIKq+wPNk1909X/Zo1GXxJSjMaMgkLlXa0QN6" + - "LtSJxbyMRCKSJfqTKOezFXirZ7MEQ04FT0z6Hp0m+E2Q7dGs52ZOV3YZBhQUlH+aQ8WNu2" + - "6clf4VqBiUYgGhkE95PhN5AAnOU="; - public static final String Intermediate_CRL_4_PP_06_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QUC4wNi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI/dKmuI1u6I0wDQYJKoZIhvcNAQEFBQADgYEAKgk1" + - "HJ7OW203z9H7jNGxoLCN9bGDKOFcWlWuruzXWOAn+AomjSZpqZkZU1qyKrFaKM320sfn8C" + - "ZJPnVWaVMLBLNddDRWUjJrUHtNdnnZEuYPYlRVb0MmwaxHHR0ZBUIaniqoLuvtQIB9N++T" + - "bu4cjx33mN6MX0oWr4Bbq7ovPnE="; - public static final String End_Certificate_PP_06_02_crt = - "MIICbjCCAdegAwIBAgIBajANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBNC1QUC4wNi4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDYuMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBANAr4hFku3Y6jI+vD6JTRFc7ZLL9tIxT7Mq+QcDd" + - "rRHgSEXhPL3MM//3ZFXca3w4rXOUVQyANQncywNM3uwl7T9jC0MD2kJ9PsNGQL2bQcSajX" + - "jrxT403PVFsa6ZrLMU0hwomSO4nJBLCJj3i1rlX9esYbRNCqzep2OMWgAWRUsrAgMBAAGj" + - "OjA4MA4GA1UdDwEB/wQEAwIF4DARBgNVHQ4ECgQIMBvQP4Q8w2UwEwYDVR0jBAwwCoAI/d" + - "KmuI1u6I0wDQYJKoZIhvcNAQEFBQADgYEAnmNf+3jJp4mo4YDznASTMnrBBdXuskhnRXSQ" + - "Gj5dNq6PxEXM+CmBhaNlnFYcr7UCtcD8XwampfyO52tvAZW5kWQKsxyowVtsxtwkAtj6/f" + - "trIeulIM0B1xjyXJshmVST5u6gZ3OegsAyuqyAbo9B1IvkNFOldt624aEG43jq7ho="; - public static final String[] TEST_44_DATA = new String[] { - Intermediate_Certificate_1_PP_06_02_crt, - Intermediate_Certificate_2_PP_06_02_crt, - Intermediate_Certificate_3_PP_06_02_crt, - Intermediate_Certificate_4_PP_06_02_crt, - Intermediate_CRL_1_PP_06_02_crl, - Intermediate_CRL_2_PP_06_02_crl, - Intermediate_CRL_3_PP_06_02_crl, - Intermediate_CRL_4_PP_06_02_crl, - End_Certificate_PP_06_02_crt - }; - - /* - * test45 - * - */ - - public static final String Intermediate_Certificate_1_PP_06_03_crt = - "MIICozCCAgygAwIBAgIBazANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjA2LjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCrUMqMxZ4sSrH6sKv2y6nYKagLvUHaforCnf4z/5O1" + - "PeldaW4ANtNPA8SkVBES/zoKgvrLJUmqRi4b+BGhCVqLU77PvWyiPOS40tpJfw7m9pPK53" + - "aeaLC9M6rarjdOvF8MkdtytCMU/Ef1NsuJULwEP+XB90k4lHr9EzbgKhXvoQIDAQABo3Ew" + - "bzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATAMBgNVHSQEBTADgAEEMBEGA1UdDgQKBAhF0iXZmlIKsTATBgNVHSMEDDAKgAir" + - "muv5wudUjzANBgkqhkiG9w0BAQUFAAOBgQCmab7noekyx5TzxAqWoQiC9S/aZJtvLkuH1p" + - "KiZnclMpRvIL1CVOukkzLTZXY0EcCHnXuVGjw+9vmiQWGGw8t6TGCXo/CtCo934HGBxOfQ" + - "MVysEjst7L7TDQsqxk4j9O8cU/TFWsghW9Ihu7SVIn8RJmknKMB2xkIhcDe8S8dmxw=="; - public static final String Intermediate_Certificate_2_PP_06_03_crt = - "MIIClTCCAf6gAwIBAgIBbDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wNi4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjA2LjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCmT7wL9WwWBr1oY9bHIq4IrJOkbOARK3zOeyZSbBBB" + - "zxcky5kjC9pamMpyZjga+q0CGd2rq9eUjQ2FXZsBSgf/X9B0/g9trNMebYgGnYmHHX2JK+" + - "doyAX+h3afDbZzZ696S0Hw7yRx00+teQe/Gx4h4qKPwbJIW5Bep9SBysikJQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQInXHgY/+onu4wEwYDVR0jBAwwCoAIRdIl2ZpSCrEwDQYJKoZI" + - "hvcNAQEFBQADgYEAhlboR5gzYWluWIaFM5R1Ko0/rprrv5BHONRiXjLfAPkzZmd7FLDE2j" + - "BlU7s7IenICeST4c7HG5zqBigK1814GG75nq5htCGUnM6pn8/gvc58+ckKeWgbJxC5I/0u" + - "olCCs8ORbWIEGWmghGg1USxeI1RQwXGgE8XwtabVibJOVBk="; - public static final String Intermediate_Certificate_3_PP_06_03_crt = - "MIIClTCCAf6gAwIBAgIBbTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wNi4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjA2LjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDEouRlqTFQiJQSwc+yhjpvA0dUIbRrNwLF+EPfUWq0" + - "FV1UV0a5lb5BGPW4RGUEbFwsgGCHsfLiY7WmUpC1e6332PZPnrnoJbf28paeiZ8KqcAKZE" + - "pGPWKCmFBwBW23q1w/v/CxcXJoBx5OC1yxG3fGH7CZSzc+4Z/+PxLk9yoASwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIc24GzUM6/LswEwYDVR0jBAwwCoAInXHgY/+onu4wDQYJKoZI" + - "hvcNAQEFBQADgYEANLxcLvJqjyu94HN+X6tTxGcN1s43kQh8yRGotW2ptuA2jmGlAhI8QQ" + - "sXHO0o0bFLBC/Uv0L0YlEJhK1w0ct7Awwn4UYgqupxug2f84yamcvFa1es3osIMJoi0GPz" + - "1WDBM711efRtbzvK6t/4fJ01nG2BlMeEbctVqrehuAip4p4="; - public static final String Intermediate_Certificate_4_PP_06_03_crt = - "MIIClTCCAf6gAwIBAgIBbjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wNi4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjA2LjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDNuzSN3BiT84M3Dy6KeTQkMqWNuYGTENWPP8WvQ0Ot" + - "ggue/lemC+IqYBtIEYtk3A30eKKnF28WIbPlB3oSykrPVV5dMhYGF9ysOtp4wyETHtzdv0" + - "7HyqlMHOCPiFplbwjUSo0uEIRVgS3luBJi9onTpcn97/i0S7VsM2nooooaowIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIDjpr8w0dRq0wEwYDVR0jBAwwCoAIc24GzUM6/LswDQYJKoZI" + - "hvcNAQEFBQADgYEArE6qUMnjXiB5eKiAFc9Elw1dYsQArtnDQAfFGtShDulxYKq9+pxory" + - "4kTMUZZCJc7awEC11tdJp7xJGcpjCJl4I2wBcHiCcVcnwQijqM719PqoQKydXB9MSrXqmU" + - "2CyakSzBpb82VooVNx0IZ3h0nXQSE3V0qSXXCaImJcOIGMo="; - public static final String Intermediate_CRL_1_PP_06_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wNi4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIRdIl2ZpSCrEwDQYJKoZIhvcNAQEFBQADgYEAQrHK" + - "VV2MJPJLNdPoEuqFXRTEclSmYhUWC5lthK0JnKUbCUj2cMAku2UdN5sRgVG0475dXV2nvn" + - "huxy+IQVt5OJ+PNZ9MYZlC2CfYsBiW9DEYMA603XhVvX/bxx80MwxNby18oyo/V9ycSyJw" + - "XzUmzYRUtohHk39r3eUSAt5H7zM="; - public static final String Intermediate_CRL_2_PP_06_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wNi4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAInXHgY/+onu4wDQYJKoZIhvcNAQEFBQADgYEADOEh" + - "jV8V8y17mFstkVwigOAKURbi7sD24RkLd1QG0Bn21JiwpkGY8Z4vetQps+VX586xKzz6v6" + - "Sj+TJk3jfHCiEAk6a7PLxRcVCCi6y70mzEBCwn6fS5NDfxzxYYLgq+dlUiVwqXsHksEvUz" + - "2Z5dpuLhbUGxHiqazNE9iq9pEEE="; - public static final String Intermediate_CRL_3_PP_06_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wNi4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIc24GzUM6/LswDQYJKoZIhvcNAQEFBQADgYEAK/zi" + - "r7ASgtWA0xGQVrqhHsXH9bdaj+FceW6ivoXo3z6xCFLvzu2uenEu5g849+YI0KMomHsDAY" + - "tX8qO3XEaLGchbhIfywgRVDlSF8ytMKhJTS05R/vZSZAl+eoT3mC92Grihsd3wublyNZ7a" + - "d925Py/oFp3J+geUkKJQK+RVu4M="; - public static final String Intermediate_CRL_4_PP_06_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QUC4wNi4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIDjpr8w0dRq0wDQYJKoZIhvcNAQEFBQADgYEAcBag" + - "81RFYMBAf8aRP5VXPcfu0OxgJvVE25ZHGLCkLD4TPKAXMjZMHWrf34+5FW7aigDO1YhGA+" + - "2zVtVj8k71DichiCCGXQvH50AqFgeNXNQwn9WcpQ8rRkfmyhlccfeM+MzHI1giRw/RjvCN" + - "0dfJL9g3c7peW+VCKn85REZ1ne4="; - public static final String End_Certificate_PP_06_03_crt = - "MIICbjCCAdegAwIBAgIBbzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBNC1QUC4wNi4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDYuMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKBSOacrUg5H5yuISkqmJuQcK2ao+Ib0FmIKCuek" + - "8mm2HEiux+K5/yIAYsQnz9eDKzKWaS73exPniKOXABHaL6dxsptbdBqWB6II2kIl0BFz9P" + - "82qjz6DMwpUhj5Pwfy5q0Bz8grTe31ZYP19y8AHgcWna+eiY4fNVXVkIEJOJ6tAgMBAAGj" + - "OjA4MA4GA1UdDwEB/wQEAwIF4DARBgNVHQ4ECgQIaZQ3Q55so58wEwYDVR0jBAwwCoAIDj" + - "pr8w0dRq0wDQYJKoZIhvcNAQEFBQADgYEAnNYKc2pSFZ9PtR4gQyVI3j+gQ97tcWu6Alxm" + - "4T48fSb2KtFGuozJyCv0aYjtuZ9ava9r4v04lyFPoAjWYbALHC9F+vz7JLNr4VstuMdy5O" + - "ax+PvJjKGACSXD7QjXJ48qvm+v8OnMbkzf8+rY3LoTJ2KhXo9Ey4+UmU/YuZ0PXuY="; - public static final String[] TEST_45_DATA = new String[] { - Intermediate_Certificate_1_PP_06_03_crt, - Intermediate_Certificate_2_PP_06_03_crt, - Intermediate_Certificate_3_PP_06_03_crt, - Intermediate_Certificate_4_PP_06_03_crt, - Intermediate_CRL_1_PP_06_03_crl, - Intermediate_CRL_2_PP_06_03_crl, - Intermediate_CRL_3_PP_06_03_crl, - Intermediate_CRL_4_PP_06_03_crl, - End_Certificate_PP_06_03_crt - }; - - /* - * test46 - * - */ - - public static final String Intermediate_Certificate_1_PP_06_04_crt = - "MIICozCCAgygAwIBAgIBcDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjA2LjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDFoR/YTJlGYenu2IRsTiT6jwIA7yOnFbM9JXcqYIP5" + - "jSgtn/wVztPHgVWP+582foXJ+oEcThQVZ+RBXYt6VU5o7eVCsGJjqMd0DbRzTO+poelVoY" + - "1UEJMrKG0xSEex0T6XLQ+jPU9o5tlXoLYsXvpvbIrCJ0o8kuk4MWTzenDKJwIDAQABo3Ew" + - "bzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATAMBgNVHSQEBTADgAEAMBEGA1UdDgQKBAgVwXynYDSYEDATBgNVHSMEDDAKgAir" + - "muv5wudUjzANBgkqhkiG9w0BAQUFAAOBgQC6MnYM9cY3CNb7/KKZvoaSwF/Se5iZYnbdPn" + - "WCnKydnN1AhlDN3kEw0gjTmZo/MkvPqku2aPzg5EiZ0eyeJaR6a4aiICU9z/Hiet19mBF6" + - "BtAUdt0fJ7aL5WPAc4BKXUbONd6vkQNv8uLcBmsqZ4wXDj7ZVBMGKcuDq7uClb0xYw=="; - public static final String Intermediate_Certificate_2_PP_06_04_crt = - "MIIClTCCAf6gAwIBAgIBcTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wNi4wNDAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjA2LjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDHqX/4IZpOCsHWgdJ6mICN94nXz/KqsXPNymadVdZA" + - "nVU0fHdMcxehAvsBKju5d791Psly1Xyyda8KQ0BKPgGed6jNKb89JzuEtPBov0VMzskqwR" + - "irjaDCwYKtibiDe+T/kEN9Sq5pbexHcaTbAIeQrAIoSUmGdQ/Up6PYplb0jwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQISKcQDqdBecUwEwYDVR0jBAwwCoAIFcF8p2A0mBAwDQYJKoZI" + - "hvcNAQEFBQADgYEAkAQaOoZYAZOCk881Ro+SIclAj2lp+arAkWPP/gwN4/0lpH62eWqlmY" + - "okWRBjk6+iwCgRxQ56uUjJhE08p5juZ5V32ie3RW+S1ZBPtL/T/+Tqp9HNQQ3GjW1yc/yI" + - "sWQxrd7QKzTER37HBiOr5WjEjn+dzuWlJtClcQetqMLtMgM="; - public static final String Intermediate_Certificate_3_PP_06_04_crt = - "MIIClTCCAf6gAwIBAgIBcjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wNi4wNDAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjA2LjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC2tnVj8KHGCm8XBPvDYWZMp3yOKQxuORze6a764qIC" + - "hkdO7hQbgJ9YiuAF/y62W17FnbhKPX6ninaZG0N77bznKvivSC3+T1jIVhw+kpxRh9MRya" + - "L2p+zHJEyO/9JaKWzJZiVi4kebW+hwNgSZc7FSYsAbW7lr4ujDei/yn/AJEwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIaAEiWf4JpfQwEwYDVR0jBAwwCoAISKcQDqdBecUwDQYJKoZI" + - "hvcNAQEFBQADgYEAHNsZDCWtOqt741IJNA9OwpymTA4ES1BRJquEvGj5+4RH2pxi67bYd1" + - "kWTPF1qFC2R1sugSNhbU0wOBMdKUJtKWNacPsK0HbD7CPqt4THOcMXFO36b/2gqHqy9rc/" + - "slWuIwbtT/tEC+Mk67GEATWNPifoPT7TjWHM3RhsDnagZXw="; - public static final String Intermediate_Certificate_4_PP_06_04_crt = - "MIIClTCCAf6gAwIBAgIBczANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wNi4wNDAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjA2LjA0MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDgdk/smDJ5yZYJDH4SG7pIDCzGNZeLO9RI3ybOx4/B" + - "M3YQu3DDFSOv8kq6PgL8ThC8Dk6t1jSbT8QVzaGgx0KMV3p6pIMdaVNkOjVjUb+L0nXVfr" + - "XYpFLON6tZLgh8oIbiz4KznKmsxo6VdYwyUeHmkpGcL5y+8qLspCNdRJnDGwIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIgSY376EamQowEwYDVR0jBAwwCoAIaAEiWf4JpfQwDQYJKoZI" + - "hvcNAQEFBQADgYEAEztvmGSVnDGGeNlIoR+wfRM8ndJogvUxLBZm4N96mDZ9Y+Nr99Dqvw" + - "+mMI3BU0miA5kDO9aFrKIgow3cpruoedhnBUsxTfhrNaFEwp+ORUb3tWn7sSxLfnTim4Vq" + - "y6j/EfUK2CS4ZAy7J5BADWSqDezPnrb5UaY1JFKMuLyGRac="; - public static final String Intermediate_CRL_1_PP_06_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wNi4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIFcF8p2A0mBAwDQYJKoZIhvcNAQEFBQADgYEAPlIW" + - "SxwW2LE8qxeD+M+HypNwai7j9XxUA2MhBbGVnsrhH+DKX5VeyP/nyZn2hBoGWhs05IpG2P" + - "S0odnyhbgGSXSj+IOfkZkVT0BmuEJmqv75R15LBzeyONks+eSEhoOIGAaIN4WgJ5mzjSrI" + - "ddDu3c4s6QO/OFVrNF1F6e4laSU="; - public static final String Intermediate_CRL_2_PP_06_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wNi4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAISKcQDqdBecUwDQYJKoZIhvcNAQEFBQADgYEAE5wt" + - "y3+jVnr8de/Yi0LV70v3JDHimwG2pQcuDRhR1NLPr4oC+2uxMqwxVzdHITDb3yI2ZT9pVh" + - "PV3UvX85avMdA0/JyaMWSKNpbSah1eNfMwMBY2vzh1Q7f5n+7HYYM+I2kz7HARPvwsLP9d" + - "j4mY7Kq7uiOFdnQzJ6LWjm8qEMs="; - public static final String Intermediate_CRL_3_PP_06_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wNi4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIaAEiWf4JpfQwDQYJKoZIhvcNAQEFBQADgYEAOm2f" + - "m3IdcDnIS915tEZzDmIbTFPBkIn0wjUreZKb9uNxE2a8Jixq+UP2uiyYWiWmXnRdVB1Gsb" + - "ofc5f8ctNgSPVTSYB0U5apIauXjV0y7WMUrLNrDFa5m9lxLRhF9kvXVL8zPhVfMpujnXre" + - "A8WS4UjDMuveyQL6yASGoZvB+Ps="; - public static final String Intermediate_CRL_4_PP_06_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QUC4wNi4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIgSY376EamQowDQYJKoZIhvcNAQEFBQADgYEAznK9" + - "ekskl4uWU+2Xqp3Pj14wvXuzfPAqFlHR0jl5By7T82JRiRa6LGX6T953vcwwJBsYG1hMqH" + - "pgbnUGB8APQ6YNXN+7ZkudaG6fMVX6bCr8zT+nVSj7PHIK2VFsC1Jpm5SoQMHH6DFit/oH" + - "tm4tdV8+nupMBQn1ZtxQHgUUF14="; - public static final String End_Certificate_PP_06_04_crt = - "MIIChjCCAe+gAwIBAgIBdDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBNC1QUC4wNi4wNDAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDYuMDQwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOCVJmtrW8Z2WGGRNjEgyp2NJn1xaIVDwlxL4C0n" + - "UAPpo1WM/rarQTYejT2Yo8H39TdRfiAlggF0Qsce0W//atey8WewGsFlUem6a4OFwg1X2h" + - "CN/COL0eC4a6lwkdOKmqgxSyWNWeKxXRTM8+EYQIem78uY7A8XuzVUmOpzYWoLAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QION6UOZ2Eky4wEwYDVR0jBAwwCoAIgSY376EamQowDQYJKoZIhvcNAQEFBQADgYEAXota" + - "1N1UrMxj2a/vdII92Wi8uEetcHo9vmiJVYxwPFkp+qo1q93Ww8Qnfp7xzaZwLgVoUOAF8U" + - "TRUVnzqoSwmRrfyEMfrgej3eiBjcU+zS9mNlx9mUUSLmlY+xMeejyVDCntRn6YJWWLesVq" + - "eFOjyNux97/XnGT3T1w0J+wShu4="; - public static final String[] TEST_46_DATA = new String[] { - Intermediate_Certificate_1_PP_06_04_crt, - Intermediate_Certificate_2_PP_06_04_crt, - Intermediate_Certificate_3_PP_06_04_crt, - Intermediate_Certificate_4_PP_06_04_crt, - Intermediate_CRL_1_PP_06_04_crl, - Intermediate_CRL_2_PP_06_04_crl, - Intermediate_CRL_3_PP_06_04_crl, - Intermediate_CRL_4_PP_06_04_crl, - End_Certificate_PP_06_04_crt - }; - - /* - * test47 - * - */ - - public static final String Intermediate_Certificate_1_PP_06_05_crt = - "MIICozCCAgygAwIBAgIBdTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjA2LjA1MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDMIUtQ/CgudxHAwAAn8jUsdAY8u7WDslOC4nNbWn5C" + - "tILgZ2hGIZhEnhzP+VCV8ke8zLo1DX0hCRYAgzk5XTGAimExHFv/yDdhpJWEnqMRljkCHx" + - "Hg3XE1439qutBdmWvGUlRF0hQrd9Q/Ubr+PjEzP3a0EUmXo7LYuQKMcFsC4wIDAQABo3Ew" + - "bzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATAMBgNVHSQEBTADgAEHMBEGA1UdDgQKBAgha8GqGbO1nDATBgNVHSMEDDAKgAir" + - "muv5wudUjzANBgkqhkiG9w0BAQUFAAOBgQAEG5C3P1A/MYpNJ0qvi26v04GGUWDQWRW1q9" + - "1392XpAxDdv7kODf1FUMpfBpcUblagxrX7Npthv6/6W8poBTjvJuq5BfnnOMQrCwnsNfRy" + - "Y7b1mAZIvcOBhWe+bFVqRLUqZ+JseWkw0YgZIGtX41Znwl0VcFQKJ4lNkuaBgXXdGw=="; - public static final String Intermediate_Certificate_2_PP_06_05_crt = - "MIICozCCAgygAwIBAgIBdjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wNi4wNTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EyLVBQLjA2LjA1MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQC36j0YkXZZSw3qQaxD0g2BfrKYperkGjVAfLwOtOxB" + - "0A3Ufx2ECl/MqNOvi/QWlTkKwnrqw0aEnD25iS1DFM4jMZBmdfJg80oa+y6TJoZcIb+3bv" + - "SK5o3ArCFWkhTHHggIIY3H9dQOgAeYQF57Vb0iu59GPfnYJO8y8ZpxGIYcjQIDAQABo3Ew" + - "bzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATAMBgNVHSQEBTADgAECMBEGA1UdDgQKBAhUpoGZzfV7EjATBgNVHSMEDDAKgAgh" + - "a8GqGbO1nDANBgkqhkiG9w0BAQUFAAOBgQAjrFHzC1FLvssJTfV5YsGfw7Luj4EqLDQd6b" + - "MgtBSwPnXqMTUAZpDETyeYvcgM+L2tasB26MSy6IttSKsaJpHPCP+BIs0jji5xosuCX6Cs" + - "wI2gE/LjF85rjZnldrlDShw01DlcmWlWwudit/ieO71Xc8i0F4EhSaTUJX12po5Xkg=="; - public static final String Intermediate_Certificate_3_PP_06_05_crt = - "MIICozCCAgygAwIBAgIBdzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMi1QUC4wNi4wNTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0EzLVBQLjA2LjA1MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDFWhChPQNFYQpLBmVmXSGF2py1wcfhZgZurv0E5AgE" + - "BZwBo2bxSeC36lBQyR3OABGI4nQoEegSQWwuS2Pk3+emG2MZ8R5QINAkMlAKTp5Gj7KTlm" + - "3VVJRx7/VduoFx8sZPjkpvF1bSL+KOH4UZny1xqqTj4bJ+oGu58INeSNVa+wIDAQABo3Ew" + - "bzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATAMBgNVHSQEBTADgAEEMBEGA1UdDgQKBAjN4PvsHY9+YzATBgNVHSMEDDAKgAhU" + - "poGZzfV7EjANBgkqhkiG9w0BAQUFAAOBgQA8KmWbAQOnM59zry9TNtLbA2P5y8R/sO771S" + - "yQYcu6undt9t7UEiOepDp/z3CGsITm9RdtXAobZ5ZqhW+3Ll+UnML1itiCytOPbfC7iiUO" + - "S5jviQnpgJncZD2Lp65yNAB7lMmMleFO15Bsk8VNmzMDMsFtzo508Bs6T33ZW69/vg=="; - public static final String Intermediate_Certificate_4_PP_06_05_crt = - "MIIClTCCAf6gAwIBAgIBeDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMy1QUC4wNi4wNTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0E0LVBQLjA2LjA1MIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDxx57R4j64xdbjpTl7reLby/T2ym4rESC90aBkC2/E" + - "/YUSjsuGG9GiHEVgoGzoQGQNQV0v9ZMIvuoI6q7Fd6VZhIVGE0MGzTFNA9QEEDGPc10ZxC" + - "Gyh9mZYp77PMuhQ12Iv3aDW9KNTr09+HyhK7d3Se7toXLwjE5pKt+A4ZvBFQIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIwmq0fugIX0kwEwYDVR0jBAwwCoAIzeD77B2PfmMwDQYJKoZI" + - "hvcNAQEFBQADgYEAbAbRorTyh6zfAmdg0lfeZyCyW9k4NWfhUs46iSOl6lkZH8c1eoAF5/" + - "q0pOF+CtI3F9VMhfUXChEbVj7QENctU7kDiFe8300OWD5h1VUi+WTK4CG7B36/BjkrVOuG" + - "Os76P9l1WaC+/WRZdcqgFMfPjpn3R179dImBDwZiCMMbVqc="; - public static final String Intermediate_CRL_1_PP_06_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wNi4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIIWvBqhmztZwwDQYJKoZIhvcNAQEFBQADgYEADX3u" + - "wxpN+p8N2HqmhFw8w9LCeoR3Xa/uaqgqh4i/VkDuAC4Bi7VbIO6rcxDO2uAdZgNhb/hnRq" + - "cvKLcy0vrovCa2EPHcFo7dJl7si2q09EeuHT4+lZt/Ek/VOkwHhvh2o6yEvKOGXCnF9hZr" + - "8YbOIknboEz+tRfxoJArRBwpJkE="; - public static final String Intermediate_CRL_2_PP_06_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QUC4wNi4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIVKaBmc31exIwDQYJKoZIhvcNAQEFBQADgYEAQz7u" + - "dfU4yAHFLH5BgeZkYh0l2lZ95af+E/67MSCjQSF7RWWWTffbDMc4HmiRlZLvQdltyGCKmi" + - "kuzcPP8vyYOBQmoIKQ6c2LItBjXVavLdpe91yCOhCWXVVlnMFq5ztrvBEpfO0GVUOnPWfG" + - "1Ugit3SEd4DbhYFTBYHbbOKRWsU="; - public static final String Intermediate_CRL_3_PP_06_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QUC4wNi4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIzeD77B2PfmMwDQYJKoZIhvcNAQEFBQADgYEAkiW6" + - "h9a8v+IITd+p0jxukj2FYfmED59ZXAlYhQdQAGlPE71rOXn6ZPURYoGf7qlmBwQffpksOb" + - "Byb+PX+CBTUNXzhgTzD7ifM9xOhCEKVKai9acQfvokU56OHwfq5AnkRykLZ7IdvdYCP57k" + - "ynrNNV35dsMZXg23/PpreumlOkE="; - public static final String Intermediate_CRL_4_PP_06_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QUC4wNi4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIwmq0fugIX0kwDQYJKoZIhvcNAQEFBQADgYEAnTbS" + - "MBWyoPaslaLpAMmJ+D6kmmKAdRYurA0okU/QP+0W+YNPV4DducAQUDy8Cg3RkpRK2ze0ad" + - "l6TUW8g83hj9TXSBp+XZuVvzerMCjOeBqhskZN4Ly8101ZZmMmdYdSc3PEhqkme6iZzjwB" + - "ZooAN2dIYjuBj1c1/t5qH80CMAI="; - public static final String End_Certificate_PP_06_05_crt = - "MIICbjCCAdegAwIBAgIBeTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBNC1QUC4wNi4wNTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDYuMDUwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALyVMklPv3uwTPzLG70sXIwKSEt65yiU71ibHyhH" + - "wJ/6dXy3HK2UETkRBK7UVSOYq005EbO9s/3oR3zt7QTFifvRTsIjl1L4TCLC2a8ApBr3BH" + - "xmBWcJDf427Pk1fm5qDdEmZnpyIlpKaKIiBcdtwZfjr0lROL8RNcvgtJPdu/ndAgMBAAGj" + - "OjA4MA4GA1UdDwEB/wQEAwIF4DARBgNVHQ4ECgQISjAUfyAwSA0wEwYDVR0jBAwwCoAIwm" + - "q0fugIX0kwDQYJKoZIhvcNAQEFBQADgYEAC6Af3cJUh/IQgWdbC2Vmk96sYjDlAsbA2keY" + - "J0bgBcNaIVoJ/W0B3rSawqSU+Vv64p7kcuAl6cbvIXPB++19V23jj6HUs1JxtPJZ9IWkS/" + - "FRakv6lD7+j1OdzJvDR8AMZWmPFHJdQnJwQ+I1YOU/O/ShawOnGCmihpIULUINFhk="; - public static final String[] TEST_47_DATA = new String[] { - Intermediate_Certificate_1_PP_06_05_crt, - Intermediate_Certificate_2_PP_06_05_crt, - Intermediate_Certificate_3_PP_06_05_crt, - Intermediate_Certificate_4_PP_06_05_crt, - Intermediate_CRL_1_PP_06_05_crl, - Intermediate_CRL_2_PP_06_05_crl, - Intermediate_CRL_3_PP_06_05_crl, - Intermediate_CRL_4_PP_06_05_crl, - End_Certificate_PP_06_05_crt - }; - - /* - * test48 - * - */ - - public static final String Intermediate_Certificate_PP_08_01_crt = - "MIIClTCCAf6gAwIBAgIBejANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjA4LjAxMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCp2vHVX08nyKe+S8NPkNJOZ9Xng22TbYXhUHtXw9yv" + - "ZmPkRhwDrZfBLXZcdZFixidkky3kCzv8Q3aPyPByM2ozH+AHJzEMbwifhyvUbANcS+Jts3" + - "lsZHarN7VyiXO+8J2OtYqX9qzmrAOHGleB2cJopEcmAMdrzgt1JIo98SUs4wIDAQABo2Mw" + - "YTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAWBgNVHSAEDzANMAsGCWCGSA" + - "FlAwEwATARBgNVHQ4ECgQIoRYqHNcbLacwEwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZI" + - "hvcNAQEFBQADgYEAXchRFC94Pl25d3Kl4wBcueQLyWPRuH9zS0ZPLAqKLcWVdcg3fYMuJ5" + - "SypMMpxLaVjN7xq0KjML1gLiPQPk18iA2TOAUMblvjUl1uFzDdD6SqQidEZh2h3wxFtbLP" + - "U7qBBki7i1+Xn072Bpn2paw/vlh4K+ut0tFQ2BAhqVnQGJ8="; - public static final String Intermediate_CRL_PP_08_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wOC4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIoRYqHNcbLacwDQYJKoZIhvcNAQEFBQADgYEARyX9" + - "2+LoXD2fIAACBMPDgds6m3Equ+Aawlr0kuppPO4ydCU4kiEgtVGK+kY5GzP6fUpAKjC8mh" + - "BrozojhAbkJekDoN0BIJ42Iab70VmdWXRQhPsUDhQwEt+9eSgy+HfiFfpcL1VJx8uY4XMh" + - "VB3hmapIe99P/T2QkZ+Pl8j0MgY="; - public static final String End_Certificate_PP_08_01_crt = - "MIIChjCCAe+gAwIBAgIBezANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wOC4wMTAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDguMDEwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYtrtpgxNl+9jF3TN1B9bSEGQci+cQOKpFsmrtF" + - "AyiGBxKONgGSgSFFuFIhyBKZF5ROaKX1P8lsQkrpnuybUi+Z9ADdyoaLUDD/z/kp5sebAZ" + - "ujmF8HVlqHYj5Ls2smS9EdSN1zgPTXIOTeZd/lv1iFppRZv6cBqlaoapQJsb1JAgMBAAGj" + - "UjBQMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSAEDzANMAsGCWCGSAFlAwEwATARBgNVHQ4ECg" + - "QIZjcOdw0ZTCYwEwYDVR0jBAwwCoAIoRYqHNcbLacwDQYJKoZIhvcNAQEFBQADgYEAarsn" + - "13/g0vOKxy0okOp2JXEsPdsP7aWnCfR8N4+7gFD6dVnkgCIyc5Kbs7MbhB9gtIxYhHOV9W" + - "MaW9QAcBH+eXciFDfQBfaMBkL34ssE/TsZ92r/bhBwKRcH54f96G0QWUnoNMt4U/1j2mKn" + - "faFirltqEPUu9mv4FiQ0pNT9yH0="; - public static final String[] TEST_48_DATA = new String[] { - Intermediate_Certificate_PP_08_01_crt, - Intermediate_CRL_PP_08_01_crl, - End_Certificate_PP_08_01_crt - }; - - /* - * test49 - * - */ - - public static final String Intermediate_Certificate_PP_08_02_crt = - "MIICojCCAgugAwIBAgIBfDANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjA4LjAyMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQCmAgNA68ABUEppM9Oo3guiGvguvtrWQzsQIJfMBrE4" + - "/Scwc4SPK4PiJD+kVwtXinXpVclBMQge10uZ48lSJTihfZscJw3RSHt70H4CpPQm44QS7P" + - "7fQqpcZKZvMWmY6A8jju3Phbuq2WgJCIxxVw886GNIAXW8C4ZFmXCjwiGGHwIDAQABo3Aw" + - "bjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAjBgNVHSAEHDAaMAsGCWCGSA" + - "FlAwEwATALBglghkgBZQMBMAIwEQYDVR0OBAoECOhZ4RAlqGGcMBMGA1UdIwQMMAqACKua" + - "6/nC51SPMA0GCSqGSIb3DQEBBQUAA4GBAGEVSOcNaUu50f6AgGBtz1MDdRiHe08W/nzCNn" + - "0K1/UqrIXVJ7IYgbOLkL3cdHy4PdngCyEblzl5Cwp9chh2zL0PTUbV1uJIBW32ks1HuAVQ" + - "FTZqx0iuopY5AqRCJVDJt4HB5PKObwnmLPNWicI4Juap13j/Tcnw1EP7E7n6OejC"; - public static final String Intermediate_CRL_PP_08_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wOC4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI6FnhECWoYZwwDQYJKoZIhvcNAQEFBQADgYEACLHw" + - "iDARFoF4GauIHnoZlfj6nlOHAFfNSXq06Vvl713bsoAiOSV+2goZjRG62uxhampE+gCdXx" + - "1nwhKQ5R5jOGGOxgLtBFNZwKmD0KiDOSvfIVJ0kYCcaB4mSm0a/7pcCPrrE5ofvkmTW6Wx" + - "k/YIuBZdDoqZC91v4tnu0fSch9Q="; - public static final String End_Certificate_PP_08_02_crt = - "MIICkzCCAfygAwIBAgIBfTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wOC4wMjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDguMDIwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOJsz8ys71e8UB+VDTBAocVQvADiqh0LjdML3pET" + - "B6VvikiHgbB1PJufxDses+v0WD74ChZEa/octNcMFqMgBlhVBEfvbyGTjiN97LzdZ7SPyd" + - "DsDulqwBG9sACryUGHqwHYnUbjOqsThOXFB8Sg/CGGawpZAosm2AuH2gqNvNuJAgMBAAGj" + - "XzBdMA4GA1UdDwEB/wQEAwIF4DAjBgNVHSAEHDAaMAsGCWCGSAFlAwEwATALBglghkgBZQ" + - "MBMAIwEQYDVR0OBAoECOiMLE2l5u16MBMGA1UdIwQMMAqACOhZ4RAlqGGcMA0GCSqGSIb3" + - "DQEBBQUAA4GBAFf4BCbNtduwn5InkfdtFbQOqhPLAn/5eIhxhVhUu7TekWT7ktdaVQFzGF" + - "G2h1+gXgFP+YKjJy7kGzEVQjlWtuC0l74EwybNHnYAoDg4itKe+0OSNNXdyOmn+i0tE0nx" + - "sWN19VvhLGFC8p38gd0oDr1ziYdg0z2Mx4IlMDxl7QhT"; - public static final String[] TEST_49_DATA = new String[] { - Intermediate_Certificate_PP_08_02_crt, - Intermediate_CRL_PP_08_02_crl, - End_Certificate_PP_08_02_crt - }; - - /* - * test50 - * - */ - - public static final String Intermediate_Certificate_PP_08_03_crt = - "MIICkDCCAfmgAwIBAgIBfjANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb0QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDFRydXN0IEFuY2hvcjAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMF4xCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvZDEQMA4GA1UECxMHVGVzdGluZzEVMBMGA1UEAxMMQ0ExLVBQLjA4LjAzMIGfMA0GCS" + - "qGSIb3DQEBAQUAA4GNADCBiQKBgQDKZDgBum5Ud5i8HWlCKInJ1x9goZ7TQJ+LdfA9iGU1" + - "47xJL5eFcERWy4dr5wM5GNRW/DHXlnA/qsRVE29EuRh6qAVgcPGAfmJxz7s5yhmErfmiQ3" + - "0rh6+pma/EhcjntXqwIqnk1qt6mEk7x9UKO3ksFCVsDEA67/dvownjcZB59wIDAQABo14w" + - "XDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjARBgNVHSAECjAIMAYGBFUdIA" + - "AwEQYDVR0OBAoECGtTrZIwYYHbMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqGSIb3DQEB" + - "BQUAA4GBAM3t13xJJraRiJDAwZFxhTNR570wMdSRiF3yWSRtOjEv8NTVFj/T1oJJ8h9Gqh" + - "hMpTTHU7uGCyVB9S1HCelmS+1zteKr0B+WVzBl9yuhvku3farz6zgIVK3v5hQ6xC4H4Lac" + - "NDhTTKBkRfDf9KskFoxJ/AGxPdZtIEC92DFSblQB"; - public static final String Intermediate_CRL_PP_08_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wOC4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIa1OtkjBhgdswDQYJKoZIhvcNAQEFBQADgYEAcUHo" + - "D00X/pd3D5KGa5C6dY18RsnUovkjUkegGTpbhQfmYZIdBatj7Kv75FeUJ9UpqCUjxHgdiE" + - "EVy60NLVGP2VRuJ1m8vfDz8hu5PaiVjneQoRw2M9ieBnz3PjSETDdBGJLWHyCBZbp/W2+0" + - "iqcZK7Fm9O5EL4PUO6QIwuH76q0="; - public static final String End_Certificate_PP_08_03_crt = - "MIICgTCCAeqgAwIBAgIBfzANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1" + - "UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3Rpbmcx" + - "FTATBgNVBAMTDENBMS1QUC4wOC4wMzAeFw05ODAxMDExMjAxMDBaFw00ODAxMDExMjAxMD" + - "BaMGAxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9VLlMuIEdvdmVybm1lbnQxDDAKBgNVBAsT" + - "A0RvRDEQMA4GA1UECxMHVGVzdGluZzEXMBUGA1UEAxMOVXNlcjEtUFAuMDguMDMwgZ8wDQ" + - "YJKoZIhvcNAQEBBQADgY0AMIGJAoGBALsXEPrCg91CObTl5OrHIB5GshIDXgqBmjzxfWPK" + - "ih4STWeBe2eIFO9pONXcM5lstEu2XLBPP6QBMUMWOrphJejrJ3eDQHs404bBnt95O/x17i" + - "665CZtg1jUqoO1kOBOComx2AJGZ46RdBExbfd0tTtdHWtRhMsnQchI+WtEyotdAgMBAAGj" + - "TTBLMA4GA1UdDwEB/wQEAwIF4DARBgNVHSAECjAIMAYGBFUdIAAwEQYDVR0OBAoECEWZkJ" + - "TYQ3z5MBMGA1UdIwQMMAqACGtTrZIwYYHbMA0GCSqGSIb3DQEBBQUAA4GBAHki/TrpHiKW" + - "gvERhguQ/uOqHHZNXsog+fgGVFFMOWwJ9bq4aHKd1fDZpyZF4vBxW7llbhuSt+ob2TNlkR" + - "wkqzfGL+3xOTKNRgzDwJcil8akC1N5uBftrQk+eL7rM1PezWRM7fIbpmv5ZieIVswtTPF5" + - "1Rl3G+JXUBy9E95espls"; - public static final String[] TEST_50_DATA = new String[] { - Intermediate_Certificate_PP_08_03_crt, - Intermediate_CRL_PP_08_03_crl, - End_Certificate_PP_08_03_crt - }; - - /* - * test51 - * - */ - - public static final String Intermediate_Certificate_PP_08_04_crt = - "MIICljCCAf+gAwIBAgICAIAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QUC4wOC4wNDCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsrM3A06j1zDz6VuZh+O2UrAPcKtwSA6KxTShUpgr" + - "t9UB5iIAEvxcDTwDlubEv/cJjDcFj9N57otzW4ppnuT2ztE4ROmkNb0xL6u00deS1yGjXB" + - "wy1G9g8bYDdAXOJlv0tjHOBqXlyKoMny82BOBL2vsCstiqxl14Q3/wBD1w29MCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAMwEQYDVR0OBAoECJiAkexK6/c7MBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAL4xwcpXZQPTTPYIQ8CMoVla/5P1x6BPmPqSkvh1D/o4ds9Ll9kHBz" + - "//X1ZM8SzYcEO+1r75JUzoHsvDw9yYAk2oclLsCORAPqD8Owhv3jv0QQtYSmf0Sxt5FLx0" + - "MRP9keY/DURRf9KitO4glOawtRtYMq2BeeJk1xusY0KqEnQr"; - public static final String Intermediate_CRL_PP_08_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wOC4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAImICR7Err9zswDQYJKoZIhvcNAQEFBQADgYEAcN3a" + - "jIEcXsQatb0fvVcFnO7d7lzNtgbqL3MtaqJ/PjkRJ/rO7JAXQRwdajUZF4ECHylZKE2HUG" + - "Dk+vidV98T8mNmb0TEuuLV+J1G0q8ezMXRJtDt/2m3y1VBireXlEMd1DdgpsDdCQ4va+XJ" + - "qv0TvVhfxWry+LrVb6Bf5ItexXg="; - public static final String End_Certificate_PP_08_04_crt = - "MIIChzCCAfCgAwIBAgICAIEwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUFAuMDguMDQwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVBQLjA4LjA0MIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPJWa/cB7WW7tkGxFhcwxqE+BycXe3Ru2qGbun" + - "NPQZ/j44UT2C6rl1wZwugCY0sR6mXR/P/NR7czZvg4Tt6lwcNtc8PeafFMUeu0u0Kg9uWn" + - "fzQQKeIgRVcEzGTGMPGWXS0ed6X/1+Dj8A+T/tqXKUtM3Jpe0pCmm9CIrYCXLPRQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAQwEQYDVR0OBA" + - "oECKm9IOyOM1h+MBMGA1UdIwQMMAqACJiAkexK6/c7MA0GCSqGSIb3DQEBBQUAA4GBAEXy" + - "dlTkkZaYK6sUJCiPeCPxfj5cdo/G4RGBImMJbTeDyVTvXSH9G2yWUMqBGnYLrwdJJeXjF3" + - "89miJgnJ+1r/r3r2/NeAUuJDsOHRMFh0KXFmgubyw/kGsZBe3279hDnND8ZjfQBmKQD17f" + - "PycWTTAC5p6GM8tGERiDSnMc5rmm"; - public static final String[] TEST_51_DATA = new String[] { - Intermediate_Certificate_PP_08_04_crt, - Intermediate_CRL_PP_08_04_crl, - End_Certificate_PP_08_04_crt - }; - - /* - * test52 - * - */ - - public static final String Intermediate_Certificate_PP_08_05_crt = - "MIICljCCAf+gAwIBAgICAIIwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QUC4wOC4wNTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwH2d+D0pH8y4QJAPpE0s2oWucV1jlE4pBMGNNPJ5" + - "FIRmyRCt90IpzmK/EuqT6iSZYd9hIB9wa180ByN67PK1z4loLFMUL2RmbWeAFlGy5eEFOy" + - "4d479qfy6JCOzt0TKhYzhukLUqGLa4DDTzvnnUx0o86aLvGq0K5s6DRlNyc08CAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAMwEQYDVR0OBAoECDSeuxr4EVgaMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAKoGi6qlODB8Lc86PtGXfBhW769jB8xzgmENE59sqNBEvYa/oK9Xxm" + - "1JX1OGEQMq/mqwZXg6hSczpexCIO4tUH8QKTU68yvqcZoZCDV8FLM8aEUPtUoPIpluhAtN" + - "scGfb3uXoV9fg7q1Pi5YlKMnNrDIq1tH1CAGKMDRrjW63Q8C"; - public static final String Intermediate_CRL_PP_08_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wOC4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAINJ67GvgRWBowDQYJKoZIhvcNAQEFBQADgYEAv5Hs" + - "nYPZO1fGC/Z2lIbbUKjIv0+BrR9HbG+b76wXeJTVxfXMlZe0cpOR/KD29DyxI3G4IedHRy" + - "zL8iCDWYbA86arJzl5GZJ1MC2A586vNn/6wiiT6nP3iMj2z/nyvan8L30KNBm9IDXQExOu" + - "PNE/wOWYBxxCjg551fpXfJKqDIo="; - public static final String End_Certificate_PP_08_05_crt = - "MIIChzCCAfCgAwIBAgICAIMwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUFAuMDguMDUwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVBQLjA4LjA1MIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4BZFTwOqI+71v8CdiYbe7x0qYveN524h6+iLh" + - "oEqvzuVKVqvQgVSaSLPcMhoCGDv3nqyP57Znl/3I09vLU6F4HKLtjO9E0PZu8EXOKLjeWP" + - "XmJQkdHfODj/TrrWSsrdorl7s7gdWEUFlbiWvUVUtkqLNbGLJZ5Q1xZvBRLS7loQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAMwEQYDVR0OBA" + - "oECBDaTXbN11BBMBMGA1UdIwQMMAqACDSeuxr4EVgaMA0GCSqGSIb3DQEBBQUAA4GBAGVa" + - "QNtd4LgoVZQ+Uy1lSr6sog4fsGaoQJCZcvrMJwGpMF0FJsGtOb0R2mfwHi1YXqPF5qZY2I" + - "7cVbwVtRQzbXunk1z12k0iIesMtYUncxb/SBstC7VNS8HNZm9ese+YM6Ac8mGT+IUZsPcP" + - "gI9fQ1L/2u+/3L4fweca1R45xm5M"; - public static final String[] TEST_52_DATA = new String[] { - Intermediate_Certificate_PP_08_05_crt, - Intermediate_CRL_PP_08_05_crl, - End_Certificate_PP_08_05_crt - }; - - /* - * test53 - * - */ - - public static final String Intermediate_Certificate_PP_08_06_crt = - "MIICsDCCAhmgAwIBAgICAIQwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QUC4wOC4wNjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAlSIH/+6DEL1P9tkgbsI2PcW0w9dmqMTLP3jKYPsr" + - "sSWI5bcv55sk6RItVr3hGgkaskZoHeamUBAiGPksVyrqmRwSCJzQDLnLdMnjjudvPjp1ZZ" + - "9UCufTtMPFvnEuVBx5e8A13AQ4OyHqaJgWRVoRJd6vwTa5jzfYCCMJZHHKpcUCAwEAAaN9" + - "MHswDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwMAYDVR0gBCkwJzALBglghk" + - "gBZQMBMAEwCwYJYIZIAWUDATACMAsGCWCGSAFlAwEwAzARBgNVHQ4ECgQI8837JGF7vMAw" + - "EwYDVR0jBAwwCoAIq5rr+cLnVI8wDQYJKoZIhvcNAQEFBQADgYEAKmgbxzWI6V2twYDp65" + - "Gu8zn883CnI08s2FEVupvrKduxYmg+ZDkTBE3ZJFxcOuxJf58MRfDWy8C4jJhLnT3JSSSg" + - "sY3n93jzc0s2h5y2wd1bUTDLqhqWCshisDG/88rpv938O8luiUEwltolzKTa+ScA6nXSQt" + - "LT4I6O3vbTx2g="; - public static final String Intermediate_CRL_PP_08_06_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QUC4wOC4wNhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI8837JGF7vMAwDQYJKoZIhvcNAQEFBQADgYEAHua+" + - "lC3wP4G6796jjr6wuu7xEQqY1azsLVsGtL7YL8fm42rl7hgU40SuFIc7Kc+A7oEEkKgvmu" + - "SLMIv7q5O8J26fQOuduGWQAncPYB8w7sNWjCZbdjVbjp1XIApcAL3djCbLZ8/NYsCoOuwx" + - "hRQKX1hIn+rNDi1DMD4H99QdDGE="; - public static final String End_Certificate_PP_08_06_crt = - "MIICoTCCAgqgAwIBAgICAIUwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUFAuMDguMDYwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVBQLjA4LjA2MIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDnaYU/lu+u+LmLQwyACSsRyxQEEvgriE7ApmHj" + - "sNBcd3lovFQMfw9MyOOMsInOgQZU8p/invnhx11/pwi77ViQQ780unhHt5H/tteaYwcsDR" + - "cUxR/8jK0DBnbVWvm8S/NGb8BxfbRmDHBTWGZ70hDSCJypWRfHQj0I/SAqAW/VuwIDAQAB" + - "o2wwajAOBgNVHQ8BAf8EBAMCBeAwMAYDVR0gBCkwJzALBglghkgBZQMBMAEwCwYJYIZIAW" + - "UDATACMAsGCWCGSAFlAwEwAzARBgNVHQ4ECgQIhh/KikcKA7EwEwYDVR0jBAwwCoAI8837" + - "JGF7vMAwDQYJKoZIhvcNAQEFBQADgYEAbHK3lkqbGy61lu9d22uO2H3hzwvjmlccZo8pro" + - "ord45d2nRIxw2ag4dS1YRFrefVdxZtKeR9+5o+tQtvmTcDOer4u6NZ/sVVElTb1d6axtL0" + - "i4cmqv6bGWYECEwtwmPGqAavp9pPZjNRbkBGy9qhVNTXfDQYpA8yzXWO/xUrwNU="; - public static final String[] TEST_53_DATA = new String[] { - Intermediate_Certificate_PP_08_06_crt, - Intermediate_CRL_PP_08_06_crl, - End_Certificate_PP_08_06_crt - }; - - /* - * test54 - * - */ - - public static final String Intermediate_Certificate_1_PL_01_01_crt = - "MIICmTCCAgKgAwIBAgICAIYwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxDV2d7qXbpCvOzBimskBLsgexpEYaHv0s7gOaqhC" + - "4A3K8sxdjyW6QdGZhKX8tCMqnlPp9CNbpY4tQQ5oTSk5pj6HwAsTfGcDwXJnjKWx1FJ7rD" + - "meZZ8c2K7a8voBl6FoPGn8CMhO0WmM9Eyb/vDUPdCZzScb+z/BxTcV1BPFdq0CAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECBpj0+Gcq32oMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBAB/9veHrkLeu8jkwXggJtwqPTmkrIBcX+pz85BTSETYeLOzF46" + - "onk+qt+IHptlrm3D7ny2Y5M0dQQ6tPzhGZxCEg9RoDibZGtsx+qeAh1ZjeEpEcQyp/idWY" + - "asH+EIuEIOZA9c1ySxI/3v3ZfzaSGS8jsgSDkLB4JumrE9ZkLNd1"; - public static final String Intermediate_Certificate_2_PL_01_01_crt = - "MIICljCCAf+gAwIBAgICAIcwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3B3UKG3tEL6FQz6dL6iqSvzgGsm1Fg5uzK8npkEq" + - "g2caUM7huYFfXeur1mu6iKiROcGX8ZYxrPi9Orh39YVrSu2EUWvqQui4QScf4dIlzAOunv" + - "0gAa/lIVTHgZhIomKND6/tZLU251dJiFhoV6bXx2tor83vWFVPx2oVd5LL5S0CAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECJmK3jFTIl6lMBMGA1UdIwQMMAqACBpj0+Gcq32oMA0GCSqG" + - "SIb3DQEBBQUAA4GBADkYLTg4RncTpAFmpUy7WGOMvoFV15nDoi91OMxhxVkbGSE0DJFxi3" + - "hPKcfUNvzy0bEUUTaqOXdbIkoLTG77NTckJxurSRyam0jA0+6SUYZ6F9fVotwMul2EiVl9" + - "XP5oCt7LkgqVgMASuwfzMnQozB6Oi/YP2OdSPXLipI6rl2dx"; - public static final String Intermediate_CRL_1_PL_01_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIGmPT4ZyrfagwDQYJKoZIhvcNAQEFBQADgYEAd8YZ" + - "8jibr8yjcGYSDicJuyUvHBZntTVQ1sP5XVmtCZcYcQCVjbC0auYTEP5snXbGPW5qeEaaXB" + - "MhekMr776hP4Kl3g4AjguFl3XQGcURlgNd8LsTpMMdNWC7XwooOF2FzFjD1ru0BSEWabzW" + - "NNaVeuMMbu2N0lc6NDJvRC8LkhA="; - public static final String Intermediate_CRL_2_PL_01_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QTC4wMS4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAImYreMVMiXqUwDQYJKoZIhvcNAQEFBQADgYEAZFec" + - "GtjOfp8pT0n1dMF/x9n8y5tM+G3LLnZvDJspLc/sqP3E3B/sHBiis81caEkQQAOTBU5goJ" + - "0KOFAUOfEq+IX5uvNhuPuinx0OsSak+2Annvi12zodMQKPNm1uMVt2bMHHHZVEVTqcv36g" + - "xgdbp0YKTmuvSy6s8NtGFpkNmnU="; - public static final String End_Certificate_PL_01_01_crt = - "MIIChzCCAfCgAwIBAgICAIgwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUEwuMDEuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVBMLjAxLjAxMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCAUPp5j4V5XTA44Ra1EWkp9HgS4w3uXJ7/Vhi" + - "K5bARFrDOOxjV8nmr5hoUYr4jwdi2Rl+60TQK/F08gdcGxdyc9p/yiU5HyAP6i+4iqmvaW" + - "9b2egNyZ5tOmpl/Q9FSFWa9d/PYBKM5Sj/r73RtA+/chc4uq3uyLekSRQGh1MieQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECAiL3A4CkaFyMBMGA1UdIwQMMAqACJmK3jFTIl6lMA0GCSqGSIb3DQEBBQUAA4GBAJtH" + - "mNNvCt/0uFbHdvUvCuBeZ9cggfpTyUS4X8zgcLDPFbw6VvX65umOZpceZI6hwcre+LZahi" + - "gUEPvXppncEObkeVTcYdOTSDoxh5tZyee1P4sbD9H+suGWeewqUDvFs2ymHtxlkpOttitR" + - "xQc2U6VlCuZ4XU8SwucyhW0z51e4"; - public static final String[] TEST_54_DATA = new String[] { - Intermediate_Certificate_1_PL_01_01_crt, - Intermediate_Certificate_2_PL_01_01_crt, - Intermediate_CRL_1_PL_01_01_crl, - Intermediate_CRL_2_PL_01_01_crl, - End_Certificate_PL_01_01_crt - }; - - /* - * test55 - * - */ - - public static final String Intermediate_Certificate_1_PL_01_02_crt = - "MIICmTCCAgKgAwIBAgICAIkwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wMjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA4QmGXEeVKCn1aQx27r+EBuQqfi8fP7gyV5JLkaSu" + - "DOUrqXg8dQxHsBNCf3XilGIvjNFZjVUPdS8FNqC+if9D164VyGQlv/JUor/GlvwVfyotUO" + - "U1PqSzFrAALYTmfm/ZqhMvGYloStSDxlzjDmyKadskzOxZZDNSe5s8dvUpYn0CAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECGk7qDbbBgRbMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBAD+eI+jg4jmeC3pJRGEF/hbPPYvL6aocjqqbZyNKN5FWItccQo" + - "PWg/GK1GpusDZadesZBDo6fLIUJzL+OumrIYJLB3HxQsmyOXB1gRg1hcva71RWFJYzx01U" + - "eB8lCbk8Zu24HzLzqjfVuwKOFFELWDEq7bd6Re/aKSHtNnDbsgSE"; - public static final String Intermediate_Certificate_2_PL_01_02_crt = - "MIICljCCAf+gAwIBAgICAIowDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDIwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4wMjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAl/HiHoos7eHaDIFhMmvIPk63UT33Z+0iiCIuKLW7" + - "tgkT8ia1Yg++np1pC3oqYVeKkXqMcjgonPGQhcek12vLt3/+2PYyYirOTVZaiO9pKQ5An8" + - "ZMWXIJmCEAMHabPO1RnetvRv5JZFxZY9jIUnD2fUADzzUh/eHN6Pur0DDrI6sCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECPk0C10KQLZuMBMGA1UdIwQMMAqACGk7qDbbBgRbMA0GCSqG" + - "SIb3DQEBBQUAA4GBAMJ4+BZQxpxWhNbo8bpGkbbcKT3kfKYrHjHsZADC+/gAJSVL854b1W" + - "VKsGr1YcCX10V1Gcqb6Jgziy+AzRLhcJngszcz0A7LxrMH+FIyWEPgZnOyQCa8B/9bnsh9" + - "bC1gEmXGOVtWboIFOEdGghEbm/ENnQyj+HbIk3jhF3QYbXhw"; - public static final String Intermediate_CRL_1_PL_01_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIaTuoNtsGBFswDQYJKoZIhvcNAQEFBQADgYEAZEt+" + - "FjRuXgnOZg70geqS4hVsF1VWWawlAVGmjPsbRH7rADXPUE2bYL54wLdwt/6QYwHqy2KwCf" + - "d4OkWkwn9xwGS4j+XBCw9Y4nbWI+wrsZ9W7vgbeIaVUUUZu6hoin1GxrGDcfbM+bhYzQAA" + - "gNmKIWdlJ4tKD2KNgg0KmZPoj/k="; - public static final String Intermediate_CRL_2_PL_01_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QTC4wMS4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI+TQLXQpAtm4wDQYJKoZIhvcNAQEFBQADgYEAXwZO" + - "wr9mrO6yUOoopNjcIcDssCUksYco1PFgWx9O/hGq9ktdoGoGcECGhdkHTLe2ab3WFl9jzW" + - "1/lkysD9Jl3VjbnbRB3dPQlrSfiv7cYBLnfKvyF/CxQg/wCtWo46GJJQgOx/WHzi9aF08m" + - "tQuJEtl7RgoByUSvLtmvKjQWEnc="; - public static final String End_Certificate_PL_01_02_crt = - "MIICljCCAf+gAwIBAgICAIswDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUEwuMDEuMDIwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMy1QTC4wMS4wMjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0/rXOZwUebRaHcPPFeKTB2OWIzIAgavqb5HerPAe" + - "c3sJCdNOSLc0OX0dFblso97WR8uueF9I7QeGg3ayQjzDVqm5Tu77ZaCuyb6UU8+fY2eqwD" + - "5lCVuLfJr9U2JD5b2TcdvAD9RqfhefclVjDj9rObLjvzLg3AefO3drsfBtAIMCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAeYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECDBWCFTOp3evMBMGA1UdIwQMMAqACPk0C10KQLZuMA0GCSqG" + - "SIb3DQEBBQUAA4GBAI/JpU3gHo8Izsbjlx6bkQo/e/hD634N5lSMtVHIGnoVLu99dvroRu" + - "2DO8Fhnv6VZpMvYoAc5oEgUqx9hw3bfS/XN9GXaeMssjwN/qM6lzCsvMG7DA9sf59xjf4Y" + - "2+u4KTye4PdpmWaseDDJ1wAihTHEaofnQdaoUffxQgw5UcAf"; - public static final String[] TEST_55_DATA = new String[] { - Intermediate_Certificate_1_PL_01_02_crt, - Intermediate_Certificate_2_PL_01_02_crt, - Intermediate_CRL_1_PL_01_02_crl, - Intermediate_CRL_2_PL_01_02_crl, - End_Certificate_PL_01_02_crt - }; - - /* - * test56 - * - */ - - public static final String Intermediate_Certificate_PL_01_03_crt = - "MIICmTCCAgKgAwIBAgICAIwwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wMzCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA60y6V2WkNCB34dcGfu+Jo3YHQZXzgp76+HgnyFmP" + - "DLj9DjZHqifD3gW8Zk7L+yK4PfLDSHjbrXM9GY1ser6XwhaJQDPUBBYW5X3XTOmDWmV63J" + - "YeRF5r7cfF2h3eEZ460GRLK5tt0Zr8V+hA9oOvwqynrIhDYC/tCzE28ciqA+sCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECPE2FCetVerZMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBABUOUWwyfyrRIw7dRIVfLlWyp5R1I+Kmq5e8st0AEMVpPAmLoy" + - "0s+46Xf+THXZy5em1P3bSVTSUhTs+XD6tbFFUcTrX0mQJlshR7yD/A0siMDUNzzt9LJQvP" + - "dwNjQSA2keOrV9q/2CAGce4daL4Wz54jfh33YVqJ8sHT4E8CxQb7"; - public static final String Intermediate_CRL_PL_01_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI8TYUJ61V6tkwDQYJKoZIhvcNAQEFBQADgYEA6FnB" + - "LXWt4B/3oP0PXERYh7ZV39yu/tm9DHBQGcGDF8JIspU7F+mH/+37U/lT6BQxpKOpgOgGeP" + - "nTQeQzN9sRsXxFO22SkHbdPCao84qvv485epgzqFcVsCRBwBBLcnNLMg891q0EYsTW9vSw" + - "Dx7V4CawyYAYGz1MqYuY6SSs6Q0="; - public static final String End_Certificate_PL_01_03_crt = - "MIIChzCCAfCgAwIBAgICAI0wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDMwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVBMLjAxLjAzMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwt6B9gpDz/x/vnowXf1MdkAPeaCWZ3pYikgxE" + - "ZLrMuulFaI1UDnAzgSuSvoHE80VKGKjSkrzIX9OFfeilW5rNZAXoZrjtkaJd1Q8l5AtjFn" + - "0tlLytDzIMYo5Tiq/n3IiTdbEzGYzEOCcSyVaQdB7K1WgYI/z/UAaWV/GbqCX1zQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECMQHLiufEm0IMBMGA1UdIwQMMAqACPE2FCetVerZMA0GCSqGSIb3DQEBBQUAA4GBAD5/" + - "vGn/rpoHvny/mfh6n2zVNNQLTEBiddfAdCWpeBFcwxS5lpxfm4dAWgHhprZTMirF9yS+wO" + - "wWQ4G9/wiqfAtoaNN1qkHMlUMOAPsOSff6ClgP+1uzKVqQa9NTd5HAeMdYfYjMa/fcF/37" + - "plCs5ZsJjb9lhEjNd/tq4/aALQmt"; - public static final String[] TEST_56_DATA = new String[] { - Intermediate_Certificate_PL_01_03_crt, - Intermediate_CRL_PL_01_03_crl, - End_Certificate_PL_01_03_crt - }; - - /* - * test57 - * - */ - - public static final String Intermediate_Certificate_PL_01_04_crt = - "MIICmTCCAgKgAwIBAgICAI4wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wNDCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA06yd2NQEAgpv0kQQEOzhHHU4YqHgtvJgkdLYxb2W" + - "Zordrm4b/43UDnLmsI0790V76y9Aa+Y8SIMBBRBJgnlppFJrFsPaOMO98M3/mXkQotVbY1" + - "59P/AjWMxpzP9h8Bs8KuoPqnl5jN0UZAF4kRoNXHzyS445VBp4DtWz/jcCPm8CAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECHxLORDZ1KKNMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBACHmDOaoC0Hr2cmfuQvdyGDF7/RlvTUJ7cvGypCa724SwAZGZk" + - "Tf5GwxgjVcLHY5RlX2kDm9vjneDzP88U3587qA2ZRwxhheK0RGp1kudNQ5y2gAGKZ7YSc0" + - "SENMDxUAa6HUkn9Rfo4rf5ULuGNJZXQZ3DtP+lZSwzkUeCVjKhyQ"; - public static final String Intermediate_CRL_PL_01_04_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wNBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIfEs5ENnUoo0wDQYJKoZIhvcNAQEFBQADgYEAb8lX" + - "19SlVNRkc9SKNpRLZQom67djZfMSIPIDkBALfMepdevbquzgO7AufTuiDn5Zqe6J6odTv6" + - "RrQReo64XB4+Lx2pXOe8bZEbzZk0HvzLl9DjN7zxyNglNK+Hd2xS4yT4ps4fBdvXvWAXEx" + - "6DfvWHbGFDoH2auomCKJtCVXxCI="; - public static final String End_Certificate_PL_01_04_crt = - "MIICljCCAf+gAwIBAgICAI8wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDQwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4wNDCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA14bXc39XiWvb4r1jzbADzrpfbg2Y9sGBkefSQHsM" + - "QZ1SRLR7uexWD7MuDYh4ZYBL+WPhaJJr3a1jnAIp54h68m8mwS13DgrxBF2/hrVKEm9IRG" + - "s13hoM4Mjjogn/Lvc1xLvB5lctHjZrNRZjyrt+PqDDmqZqgCOmcD61PhrfAoECAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAeYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECB9hXgJfzBvTMBMGA1UdIwQMMAqACHxLORDZ1KKNMA0GCSqG" + - "SIb3DQEBBQUAA4GBAB0HgiURRd/REVfc5DenIPhMu8riVcwVgTUwatsCWragUhXpCtvJmf" + - "z4vGo1rKYai2dltVX6am+NDvN5tROcM0bvC8lOCc/iPfI5eWTy9SJ2nxvs1+q809Rj0rno" + - "zS77TIE8rD7Q8ZUd3qNUiBwdjBoc9misgyN7zUulg4Ueebvv"; - public static final String[] TEST_57_DATA = new String[] { - Intermediate_Certificate_PL_01_04_crt, - Intermediate_CRL_PL_01_04_crl, - End_Certificate_PL_01_04_crt - }; - - /* - * test58 - * - */ - - public static final String Intermediate_Certificate_1_PL_01_05_crt = - "MIICmTCCAgKgAwIBAgICAJAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wNTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA/rVBEGZ4jibDhREeRGV3jPnv05esRL8/En1Bu35y" + - "QrAHi32+kBu42vwwDbeuiTZd/B90bn5srJZoW83rxXxNnpxqbnjN3GgIcRiUVyaVRTp9/U" + - "IT8B9h09b9yT8gpQ5qR0+JDcOHCfJwpogAsyJJa6AM5p/q3TeF39ugfVOWt/cCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBBjAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECJ7/mkuLuEIGMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBADC0A2KMMSSmGI9p85WG7XZVMBX/xdDYOHO0e3ORTRFS3kj9rK" + - "a0yUjc1X+p22AA8kUyOLpYIulfDjPrLKN2E/hWSf3+XWMiC7JfX01F+BBl/avEZoymaZB4" + - "dkH1Hym4IMJoSaEOgf5HFKBnFEA6aUcr+oDYGUP+Sc1dmJMjBW72"; - public static final String Intermediate_Certificate_2_PL_01_05_crt = - "MIICmTCCAgKgAwIBAgICAJEwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDUwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4wNTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEArir4GaS6r0Tv9PMbaOXYdPKADNpVbJe79G5t/F6x" + - "7Tz1rwUR+m10E+Jq9RsV+fU/nUzzjJXHbPLZnfodUVVmrXgzvQ8+B2N4jJtdNLG66j2PZG" + - "+P8GQzVK9drDh54VHXdvxAYCXs7GaIprWmCQsxZOKjhFU3YDiRRK8qJGpBG/cCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECMmrFr30fUzZMBMGA1UdIwQMMAqACJ7/mkuLuEIGMA0G" + - "CSqGSIb3DQEBBQUAA4GBAI4qJF6STCi+elUbpZIP7YmcaQsS0PE4G3+LJoMg1LT3rSeobK" + - "Aj/yUetmA7y0B5i0svKjRChLOpfClNPVPCx/+mc75+LG+dh1eVG/qk2UH/lrqLN0XLl8tA" + - "IwZeoPaegBQAIp9oEjhDN1fWtKIkOe6A6wYdH2VPvsqC8g02VcwD"; - public static final String Intermediate_Certificate_3_PL_01_05_crt = - "MIICmTCCAgKgAwIBAgICAJIwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUEwuMDEuMDUwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMy1QTC4wMS4wNTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtRC2/PDG3kx8LpzfWC0yJph5h3LXZJZW0W2voss1" + - "HYPP1/MBoQY067dfbALilVRh9asCNL4F45uu0lT24qS9vjW8SzBOLA18GsVYRmWO7EP+Cd" + - "9f3mgPIMJ5n+UjW+yhBwh0Z2pzVElkX9CxECrs1Mt2ulyuwWA1lR8nRMaTUeMCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECAlV3mzXYPyuMBMGA1UdIwQMMAqACMmrFr30fUzZMA0G" + - "CSqGSIb3DQEBBQUAA4GBAG28iHdlA+nTs/b9pi+m9eMy7niELjIWL9fMgn1r4iXQ0TsPYi" + - "tgpoip+BB4G/jz7MPx/N4nwyAPV+C9wN8cAHALf/ka2MxAORYFVFI+5PDgXzm78ILqj91f" + - "vOFN4jemizTES4/dHxfmdctnsTRpU9ALQgfJLhxEQISOPwuemKB0"; - public static final String Intermediate_CRL_1_PL_01_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAInv+aS4u4QgYwDQYJKoZIhvcNAQEFBQADgYEA5i45" + - "gETFAw6l9Awex9IAVIqYTA1dnbDyrUYDRdzd0x6OxSPODvNfQCwqwlTJXrHidCPO8jRhMS" + - "Zcdn/MTlIeHa6OERFcjOiwOpeTgtchvpTdDchs5ve8Ik+myue+cfgpEVKOE+ZQ2T2tcyz/" + - "+DbeMptECfJ0lVfCKIY7ZOzBPaQ="; - public static final String Intermediate_CRL_2_PL_01_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QTC4wMS4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIyasWvfR9TNkwDQYJKoZIhvcNAQEFBQADgYEAdsNe" + - "ugM8sd8bmIDkYXce2WmS5Zx6QUQ0yT6Ij4OR5/F4CG4Vl+k3JkNPuAiNSs2Z9HeML+F/W8" + - "3yEPe/mdLV4nLw4B/b1/8DmgZN4r1ojaWuHAg+KrA3Zz3Rc/hwQfvBy49mf4NGtY4ArbeB" + - "DYKz5sVlrwR+gOCR5jm4IC7WEDs="; - public static final String Intermediate_CRL_3_PL_01_05_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QTC4wMS4wNRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAICVXebNdg/K4wDQYJKoZIhvcNAQEFBQADgYEAqYex" + - "FaIykZo17O2URpofe8x04L/VsfA9jV28zUgNFruAGld/kUh4rYvgwrdbNZ8NmEFDp9J9aL" + - "93af3bzoNvWCik2VrQLd5nccCFiC04B+LUH9Y2p+7vV2ojrtBks5SMW0q4HaNyPSQu8Fst" + - "4mYVf+QIYZC3iVAF4rsKnaxwzIU="; - public static final String End_Certificate_PL_01_05_crt = - "MIIChzCCAfCgAwIBAgICAJMwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTMtUEwuMDEuMDUwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVBMLjAxLjA1MIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCXJjzKGcLyONTyOa6sQHvIKZIAh0pWdteUiXf" + - "b7yjCn6Z52SCHxB9GZERHwR7fbJpoE3oDcYUY+8pH65bIVm1p3zr5deo4v85DEZQ50cU9a" + - "WEUAO/5X57P7pYb9/47abu0cdsLIWeE+O94HpZS8vz8mxRQKLj27gPY1KzzTbrZQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECG8ILlM9oqZwMBMGA1UdIwQMMAqACAlV3mzXYPyuMA0GCSqGSIb3DQEBBQUAA4GBAF6S" + - "x3aunfgnDmo42aPOzDh536WSkTTbX9bmUNyg3IQHl/3xhVqjS76bMqreYhx5nh4VNx/Z3N" + - "LD0W75XmASCk0wtW9S1MoxzJMFIozRruaE3oykrbyMMOt0Br5CV12ofUd0WybDkXfNAIze" + - "IRgps3nORHWjV1GwXe8uNoUn6/z7"; - public static final String[] TEST_58_DATA = new String[] { - Intermediate_Certificate_1_PL_01_05_crt, - Intermediate_Certificate_2_PL_01_05_crt, - Intermediate_Certificate_3_PL_01_05_crt, - Intermediate_CRL_1_PL_01_05_crl, - Intermediate_CRL_2_PL_01_05_crl, - Intermediate_CRL_3_PL_01_05_crl, - End_Certificate_PL_01_05_crt - }; - - /* - * test59 - * - */ - - public static final String Intermediate_Certificate_1_PL_01_06_crt = - "MIICmTCCAgKgAwIBAgICAJQwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wNjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAweCAiEGMLycmodjrUMIWEEFshkvhX2r90wGl+/pU" + - "Ia9NSdT23zYzE4Uo8Is1ywyV+YfvgR22j/RXF6j8OK+XZ8jlgfjVTAhjCnTWY9LDR7qAyk" + - "8zuuITxJrYpiPoxqZs9BXLfGkDbye5VpVJXvQdbJNxgKO0hkBBDfe+T9+qw6ECAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBBjAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECG1DiuoAwV6aMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBAMFvtFiMDMP6n3CrqQLSzhpK5Qu0uxa56ARXIKSIqi0OUZAu9v" + - "sCXxMvaG/R5bElwi7ybYZ5KUSN+PnDmlUxWWL5Ib5RZdXgj7L83oyLTQmbDMvka6rSWHgw" + - "Jq8qHVslhh+l+YNOb4fzs8x9ctCrs/BgjX8wkORpQbigU0BUJ9sX"; - public static final String Intermediate_Certificate_2_PL_01_06_crt = - "MIICmTCCAgKgAwIBAgICAJUwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDYwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4wNjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwf6Nf0+r7JvE6BO4MbDbS1T1SCzn78haBAmqGZLS" + - "Ac4xQTydvmzr9PwiWlU0xjFfKItqRMt7rfzTTPfvvnwxsAfQNPtxKzi30yCNq/VotMA7j5" + - "iQYaVe2OWVHu13agbXLEZ0pL/ZkmQ3Gvo6UhF4dRmCnjFbd5cMTxQVHUrwgyECAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECE3tS4AYmwZDMBMGA1UdIwQMMAqACG1DiuoAwV6aMA0G" + - "CSqGSIb3DQEBBQUAA4GBADcBTKbhx8PCunjRVJkcLBCcVGHs9HfkChDafwBO51fe5uhHE2" + - "QBpW3J8ZsevuFQiEZvuy2RVFktE6ZoKD8wxwBFhs+OIxe2mergQPy6jHuxoSUiPzr3CVXZ" + - "UsNxe7j3IcJLqbJ15UqGFH5yph7Sa4Ym6x747miF6W9knNkjcx3K"; - public static final String Intermediate_Certificate_3_PL_01_06_crt = - "MIICmTCCAgKgAwIBAgICAJYwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUEwuMDEuMDYwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMy1QTC4wMS4wNjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwq2YlDLHX4KktKnzLCYjnk079IDgXENrkRBuZHTB" + - "IQyZoiBH4ZWHreZKs3LvznP8uSd8eEL8keNw4PwZ6aT1LF/Jr/UlrFQNnpLzQVXwGGAuzh" + - "tFJYRlOfI5cCZYAcpjnyUV4GW+MuwBdoqDycMjmqIv/8A8vupjahffcmBAassCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECB+qYFJjEkJ5MBMGA1UdIwQMMAqACE3tS4AYmwZDMA0G" + - "CSqGSIb3DQEBBQUAA4GBADiXredACtRQTV2TKgu5SDdPlczj7cZZUARJiJKiRfjmxHCc1q" + - "m/Oh7sHkqRvlHqjoX8qp4iSchoZWdOAE5O/q4Ef6rViejDFVyN2ZmlhP6KIiRxznrvYfF1" + - "n08K7CHgHWvDaumm4pNmWeF03nuasHrY0W9h1uk5poVuzaWDpx3A"; - public static final String Intermediate_CRL_1_PL_01_06_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wNhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIbUOK6gDBXpowDQYJKoZIhvcNAQEFBQADgYEAiHM1" + - "xFuYt6tDscqzwj0mLHPHULnR44/vNyPUg0KnV03Dd4XbFHz0FtwDKgVTBZ8x7ybp83ubJH" + - "tE/p8nPW5kN25WQOlYkZoAcMpEXjTzlo9evU0W3nyzJjmlT8YEI7vnmWFz/ahzy6WFwPue" + - "h862EKh2zVO4hoqZYEuDQI33fOc="; - public static final String Intermediate_CRL_2_PL_01_06_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QTC4wMS4wNhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAITe1LgBibBkMwDQYJKoZIhvcNAQEFBQADgYEAuDSF" + - "W1KOc4x41HGvdRaw/NtipD2y6zSh3mtRoo7Q6J2BvJvunymZNEziozBOiUgT8zMgbdbm4a" + - "PEwlHRaoJP8+yxJIlKaHa9Hc7Yz4SOwSrLicf7EnBSct3Mze0b48UYqbn1q+lf/zKaUGrP" + - "M6oqtE8Fam06T+WUfutU53zTtSs="; - public static final String Intermediate_CRL_3_PL_01_06_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QTC4wMS4wNhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIH6pgUmMSQnkwDQYJKoZIhvcNAQEFBQADgYEAcPfO" + - "+Rj2KmO1CxjuKLEiOUAIq5YmR4U06IcCBGMxlrdHVXHM3vepBKUlMDaT4UGcleABMPX9Iz" + - "/31ofyXlZ/fQJOoTZt0CI7SOPQE5ZkUsR3BDuUqf1+sWwBYyBHkrC95JhJkM4LfGS5K19p" + - "fp0j0bguzNCXSBRTfjSZhy80tcs="; - public static final String End_Certificate_PL_01_06_crt = - "MIICljCCAf+gAwIBAgICAJcwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTMtUEwuMDEuMDYwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBNC1QTC4wMS4wNjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3asAqJcjXngEuyM/W3+TAE+Qr4JtNUdwBtmrpGlo" + - "fAvJdmXHARyiN/Zn6Si8bGI8Wz8J4Y+Ll7zLdaMU4MCZo6hwZiaQwkh9a+ZecCpLpjs4mz" + - "MSf5zHSwTYiXKMazlmnGEITVyKLmAiLSyGeeJvOJVqVo/NZXRGVlmnPxZFfgsCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAeYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECLZuS770NcDsMBMGA1UdIwQMMAqACB+qYFJjEkJ5MA0GCSqG" + - "SIb3DQEBBQUAA4GBAGM18aR2i8vSywsWhcLrRN1Xckl/HiBPNphobfKoER4NG29cFjUPQX" + - "zukjQcJl2clAXNCVtcsKCoYRP3YUyAB6At+yskuuJXtES7FIzM3rt/UpDS5ktVC3gh+jgE" + - "pPhMILYIXFzYY1hifkpagfO+mkcr7RqHU3tHAr6LCWjqrB9g"; - public static final String[] TEST_59_DATA = new String[] { - Intermediate_Certificate_1_PL_01_06_crt, - Intermediate_Certificate_2_PL_01_06_crt, - Intermediate_Certificate_3_PL_01_06_crt, - Intermediate_CRL_1_PL_01_06_crl, - Intermediate_CRL_2_PL_01_06_crl, - Intermediate_CRL_3_PL_01_06_crl, - End_Certificate_PL_01_06_crt - }; - - /* - * test60 - * - */ - - public static final String Intermediate_Certificate_1_PL_01_07_crt = - "MIICmTCCAgKgAwIBAgICAJgwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wNzCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5HkS45NLuqq9ZwF79+pTGtQnGWO7DFdetYeQTbeD" + - "sisjZMsK0sCCR5xAKYQsJSS4v/8LQUdxlQR30LMV0SQUKFMJyFsMiSsO8subb6sVINWn8A" + - "tL4zcQK0WiASUZOEkybAFJtP31PahzI5wfD1cikE1M4BlDij5WeaIjt/RTHKUCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBBjAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECLSUEn5d8YywMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBANLO+kEiswkGzEh4ZcF5LtfnPZlnG4gTPSNugeWJc+Xedqmttp" + - "jZ35fr1hiRe2Q1UcyTd4ThkPknawwZednbsZVPqw8u1mo7kuAeL9KrCk199vL4bV8Ag/kj" + - "HJ8TAy40UDB6hMm7l4j8mEKwV03THVrz1Vvz59CQXj+iseH6yUNO"; - public static final String Intermediate_Certificate_2_PL_01_07_crt = - "MIICmTCCAgKgAwIBAgICAJkwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDcwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4wNzCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAu78gmT5HwmBHEe+K8fLLgGaPpcv13ZjrgL4twTBS" + - "OkZn5LL9GcfkPuA5WIAZkVYfCWSDPqcAGoOWUIDADfBfdcyLteUH+xI01rHKiLDVexMvU9" + - "vqCmcBKhxK3S6wraW5YhOO0bx4oPrZXVIjyG8fh4e5WTEykzvUWJ8ZbzSJ9JsCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECCT+fDEaN7GaMBMGA1UdIwQMMAqACLSUEn5d8YywMA0G" + - "CSqGSIb3DQEBBQUAA4GBANpKr98PiXAdcXlbgSgif0213H+tg3WwUNKZTw8MpqPyrN2/DZ" + - "HBi6e2KWXLTxttV9AZBRvcKwsveS6oc31eulMe8nHxRNRfadvF6dL3Tsig6HAQkartcJMI" + - "yfW4V3EhXbCdziQkre7XcR9WK5bpQoX04HWeew6YTxjG/cL9MIJR"; - public static final String Intermediate_Certificate_3_PL_01_07_crt = - "MIICmTCCAgKgAwIBAgICAJowDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUEwuMDEuMDcwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMy1QTC4wMS4wNzCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr7YezMXvnkSuNCdXch2HRAEVuCqfzpVRCj6laJI9" + - "Q+NxgXwzaOwnImvwER3Hblh1l0MAt5/I/9hhqCN+918ueME50MkoM1wPbcmrRIlwWLGSVZ" + - "yBKeyPHrLbdPqVIexUlQk7PasLm/Qx4SvRGVe9IMLrEzPV3MFJtrJoWaMobQkCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECKw8JlHMvVfuMBMGA1UdIwQMMAqACCT+fDEaN7GaMA0G" + - "CSqGSIb3DQEBBQUAA4GBAA5JEDEDyqfZzTGzOoMV+8RVke+a4qgOo7rnOEdletgGFEwz8A" + - "tiMHBxR+UMxuHS82Hz3+F8XlyYIwlrG9wWVcB/tOyzgVyA28Yux9Q/meU7T6dco/AnmOdr" + - "2XL6Xm5iLnARG+PkUPHOsxuweyB/sSUSA8ZJPowNRWTik57ul/bO"; - public static final String Intermediate_Certificate_4_PL_01_07_crt = - "MIICljCCAf+gAwIBAgICAJswDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTMtUEwuMDEuMDcwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBNC1QTC4wMS4wNzCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA7mNS8dGz0gkXDbBRzP2ypdNMahJbM3cSMHO0hYpn" + - "uRsiXGUhIB0K4WVbnz6tr7Hch3yltK4H1Y12Lf8cXEETR2sE9lCY2A3r8/VM5OUbou5Y8k" + - "wIf03VhP7cGKonaFtlj/WD77fidDePVp1Nk28gV0T2F/l4pM5TEJrq5C9PSUcCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECJBEcZsMRq6CMBMGA1UdIwQMMAqACKw8JlHMvVfuMA0GCSqG" + - "SIb3DQEBBQUAA4GBACfbHKpuRJnZ5UU0sih8RuywhUo6Getwl/p6fsi87wYI61pvYru+hm" + - "4R4eAMZvg7MrAarS3Iu3zKBU1HKeq1i+hpwTIXrngR8eL2fU/X6GPzdte3+3tjhah38bqF" + - "zDon+N6ap4MKWRk033SsFYo1K88Mena2tGuFForJlV9DOF1l"; - public static final String Intermediate_CRL_1_PL_01_07_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wNxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAItJQSfl3xjLAwDQYJKoZIhvcNAQEFBQADgYEAJtaE" + - "I1+PCNL1/bgEVKWUIwvh58ugnWhxzbFW6hNJwNEz9/yt+FLZfNrT/Ezort4VVQFLQg7+Gj" + - "KrkIujqfRJG4LXrXAV8ZsvSPuwyQ+hM1GdHGDPhj9x6DkjFusxJYUEs5BzlX7ovpnaIPSW" + - "RPsatheSzu48pMOCmyTKE3MpuZg="; - public static final String Intermediate_CRL_2_PL_01_07_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QTC4wMS4wNxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIJP58MRo3sZowDQYJKoZIhvcNAQEFBQADgYEALiV+" + - "BFpXhgTjiMZBYLVuc/fqhHcXeXOGOmJZoKUnIXjETH3rzkkt5k4tMN00ycZVgpRwn3ZyQs" + - "cFLcW8taau1J7iQOmGY/7qIT0eFx2OlgNmxqirmwx4OM5VSH5mEpnp9NOr1rfut1GDRzw0" + - "tZ+nhD/PGDXYPu+QPX6jii0vdHo="; - public static final String Intermediate_CRL_3_PL_01_07_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QTC4wMS4wNxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIrDwmUcy9V+4wDQYJKoZIhvcNAQEFBQADgYEASY47" + - "p94jEh9FZ1TrPS82nWC3Z6ZKdaD9pUbaJpRnAId59QdBaD2Cxq+SfM3HTlz8grCAPKwulv" + - "jDDhXhp4H/m63Q/pJbyl3bbMxnphMOoDwB9wwKIUQPM5wagMovF/UYtC8MoC++m2kuZ1eb" + - "fR/OIJuQr+k/kD5Axhw/xolKPdE="; - public static final String Intermediate_CRL_4_PL_01_07_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QTC4wMS4wNxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIkERxmwxGroIwDQYJKoZIhvcNAQEFBQADgYEAMhIQ" + - "lE+BdCO6NBz+YgcH+tjP0n4OCdQ+7uxUxUYmPtPbsLwbDDEEZUjykgwiA6P47Cqh5fXB6G" + - "tfInh1cmQi3y2IEHK+bRSx321qczOh34Yx2hw5vp+JFttbQAEl/BHixklrFBrXjN0UsWGC" + - "ibXcZy0YjerWTp/yceoABz9p94U="; - public static final String End_Certificate_PL_01_07_crt = - "MIIChzCCAfCgAwIBAgICAJwwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTQtUEwuMDEuMDcwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVBMLjAxLjA3MIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCdH60mBM1eInACvOB83zLrtiebq9B5UBlAAVS8" + - "9ucDwGx1HOJwhwk2AmvhN7pYuDc+BFzuNtgHojqZSDpRMA3rVsGlgOkZ3sOQzvxB73w+/X" + - "XmCYpwcEGLpK4egl8r1aOYm0Zm4OxqWhNu9+Do7nrJczDLi8k/qh8/+Rfdtvt4kwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECEmVurZ+7UXFMBMGA1UdIwQMMAqACJBEcZsMRq6CMA0GCSqGSIb3DQEBBQUAA4GBAANe" + - "AbvpAHwBu9+FlI4DOb65Z+h5f2Ok59FVbVqAj3zkMRkawppngK3CMY/1BQlGXOlHvE+CGz" + - "x/7DsiV0O3rxOUjutt00PNxCyIM2pcOZeGUaAu5DJWn0SRwzTMJa4M5K+7wh/4sSPWyxKi" + - "ueDq2VXvIgAfEVC8Lv44sxcOduSZ"; - public static final String[] TEST_60_DATA = new String[] { - Intermediate_Certificate_1_PL_01_07_crt, - Intermediate_Certificate_2_PL_01_07_crt, - Intermediate_Certificate_3_PL_01_07_crt, - Intermediate_Certificate_4_PL_01_07_crt, - Intermediate_CRL_1_PL_01_07_crl, - Intermediate_CRL_2_PL_01_07_crl, - Intermediate_CRL_3_PL_01_07_crl, - Intermediate_CRL_4_PL_01_07_crl, - End_Certificate_PL_01_07_crt - }; - - /* - * test61 - * - */ - - public static final String Intermediate_Certificate_1_PL_01_08_crt = - "MIICmTCCAgKgAwIBAgICAJ0wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wODCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsr+i9HxgO6LnOa6xOHfe9BeLVTo4iZd8rp6UTc02" + - "C0MmsSjvIgn3UiayU7aoHcTH8tAXSV5bn0CIH4B46qLym//oE69hUFImy6d1kKgNoaUKWB" + - "HztKVtswSSPjIUf7pbyp0wasYMN6fIKYyLpLXUxzA2DrD0kP2Y8ElQJKl2HocCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBBjAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECPMW3WMPtaowMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBAH2N6S9ggfmRJkzhs82uOPXaHF62YEg1pbNxaCyJJbSt2iIIyy" + - "NPSlE1OufPPH3pO7p5xcYi90LCI//0tlUL8y7aULFNygbshFY3B8MSgCz3KPA3UKdtIZYe" + - "7lqP9/ob5wmkjtLpx6oZ4/38jxqe37pH1IwVjaUnoeElSo3EkCI5"; - public static final String Intermediate_Certificate_2_PL_01_08_crt = - "MIICmTCCAgKgAwIBAgICAJ4wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDgwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4wODCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqZZolrig33i1rEwdP1pin8a5PgzSk7fT+qhrJRCg" + - "UTOW5WyPtakrLTUipDcR07t8tIe0NsjRoph7+fAwbjWBfbJdydndHHGx5BqWg8Xi4zFhFd" + - "6Mc5O6KO7Yqxs8lmthv/RAdL4Eiir9d9hqskKOtQKbLWz+Bz3+9NwfLGzwzPcCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECFjxM3RkbbhNMBMGA1UdIwQMMAqACPMW3WMPtaowMA0G" + - "CSqGSIb3DQEBBQUAA4GBAJOJKBubTS/kLnfXN5YbQfggxbO2c7DTxx2LhrnPiyVDEow+Xf" + - "lMv4YK5olH6UUm02D8cv6Wxg4NeTtBBnwKQG/GV4Ssgc/rrpEzM7jFRQcUzPu0jfya2fX8" + - "ZNBnSDjovlN6vmZHtiksjh66h3a0aVusEuOQXD29ogMR8qAGYQaZ"; - public static final String Intermediate_Certificate_3_PL_01_08_crt = - "MIICmTCCAgKgAwIBAgICAJ8wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUEwuMDEuMDgwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMy1QTC4wMS4wODCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAogLtEcWxzzkkIYe+KrwKhaQjjGQqy2KDsW00U5lx" + - "+XJoT8eKd5pxFdCa0SPn/jkNILVeh07mIHec1WF8SOeveVT4Ewd3nG/6ZGoVVq6l0j+3RM" + - "jpJbp26BPR69nFn6rmFUMoSNq0VG8Zl+UBqnjq83G3umJCJMMRekUTULSFEGUCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECGAFYeJIhrRzMBMGA1UdIwQMMAqACFjxM3RkbbhNMA0G" + - "CSqGSIb3DQEBBQUAA4GBABHamiW7sPLQ83nXt3LZemcAp4QaDB8X94EuJGBwshEcKLoOHb" + - "/3cZkPRbOiRQUh/YdpfyApndGFSi0DtwM2Z7yup+MzdrR0wzQoNS95A51nHE7XdCuVFemc" + - "LTJ5rdd2BLK3OB5lQagVLzAY9Bs1vaeXKT2Cy+gSUkTIekWcsH3K"; - public static final String Intermediate_Certificate_4_PL_01_08_crt = - "MIICljCCAf+gAwIBAgICAKAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTMtUEwuMDEuMDgwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBNC1QTC4wMS4wODCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxVjjKlLlZzeZhamPO2NDnRtWM1oWZ3/kdwdBRn50" + - "o1NRXb60Ir2HjniK1dRdbijAvR5uItLe9tmj4nusBiaPUGM0HNlEdQWSzble8rvUsP0apw" + - "uJusV7zLvzwwbgLbMYT+8lMhxWXM34xszP+dgjWASQOVao1Uqs/MLLibOuueUCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECFMFrvh2hQ18MBMGA1UdIwQMMAqACGAFYeJIhrRzMA0GCSqG" + - "SIb3DQEBBQUAA4GBAFsCOJ4DzuMOKti5PvF71ZKOtcTHSv123ZNdPIbK6OatT9YhVuUOYB" + - "AjMavggywrb+QOXOFfJMctQlS3y/JE9YyoNNt/4UTdx1jQ3I2ablonmzjt8eN5GJ9jUXth" + - "fHjxnmGUeWlAvwMjEdzdigkyuWCi9LJfjyHtTjSf9n7w2rU+"; - public static final String Intermediate_CRL_1_PL_01_08_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wOBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI8xbdYw+1qjAwDQYJKoZIhvcNAQEFBQADgYEAG2Aq" + - "R1oelnrTgh56m6Mm+Lsm0Sf+Ot1W7LzZmMDwoZgmGLcTduVktx+XrtiDDWsf58hmneT1q0" + - "5wl4yNH8y/VCAA3SM/gOq4ddOEiS8GbuEYo5P/julH/U3g6M0vfPUZ5y+7V0s35jIbTkjX" + - "76n3Rhf88nvTscYvMdqrYyUhAmg="; - public static final String Intermediate_CRL_2_PL_01_08_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QTC4wMS4wOBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIWPEzdGRtuE0wDQYJKoZIhvcNAQEFBQADgYEAX/+I" + - "DkAx7PLTi2x6aYbLacPRaUSjMne84MDaEkYiA64Vo3eL6FbKe14z2mBsM2W7x8xDnxjZ0N" + - "RbhcFZ2E6A1ct6HMunuKxjoROIsdWhrYMqJfKKMTWMviz1UjtupsGUWS0dVQCquAr6DJmr" + - "W88P8wgiVH2VZsc+edDmCGDunrI="; - public static final String Intermediate_CRL_3_PL_01_08_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QTC4wMS4wOBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIYAVh4kiGtHMwDQYJKoZIhvcNAQEFBQADgYEASw1+" + - "6rGDKgpUtXcCziQCjy8mHFD2zV6x/Ppxm2Gj0U+5eFnIbMPmr4TUYwfSOROUycsiJX/Wa8" + - "HEuqWJhIdcsHMA7TYf0iSXK597Bljjg4F/1Rgz0wqLjgMuA59eFbKjJ6zP1E6Sv2Ck0Ea9" + - "HJsv5zFA1ljVnNWoQwoHsuLk/wk="; - public static final String Intermediate_CRL_4_PL_01_08_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QTC4wMS4wOBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIUwWu+HaFDXwwDQYJKoZIhvcNAQEFBQADgYEAHHKd" + - "U1SccTsK99BUDrvF930ejNRAvHQM9xv80wcUAy18x+TLwBH8vDTmP210/C5Zk9pQs+rLDd" + - "doQQbWJrQkznyB1OSK0T41KZ9L0UE+YmFGJjz0PEzYHV0Kc57j5uc7Fsi8Xu20Y8JeTaJs" + - "FUXVsvnCuoSxYmwY1futFWHJG7Q="; - public static final String End_Certificate_PL_01_08_crt = - "MIICljCCAf+gAwIBAgICAKEwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTQtUEwuMDEuMDgwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBNS1QTC4wMS4wODCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwgNkhQrcqmjhkES6DNAW3uQLKILcFlrFvOlWfDPo" + - "ngXzCKeed85npqL+Enxo4sLarEiywuDLrDgPf0gKnZXQWBmzWViZhvTsiAemH7iNsNS68s" + - "hhb0vnLzlPpDUJDv7KVKW8VbM7nvplKptlEE6g5kmj3iEmM4l2u8Z/pmQoTsMCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAeYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECLfApJ09y/ZNMBMGA1UdIwQMMAqACFMFrvh2hQ18MA0GCSqG" + - "SIb3DQEBBQUAA4GBAG2ANLc/ib9ayz0B0L6/XQf/xuwETEq8kb5vWml/PbcFD1b/uwRHI8" + - "vTvM559nZgtzkhS5ZAvNBTh1CB9Ox/nugHc4srbH6/Wcd94pMQx/sfCB/C6zZ5Tbm7Y4jp" + - "hkjnxwGUYTvgNzxmaAPLyCfqY7KwhCSzns2M+yuncEKqlzuT"; - public static final String[] TEST_61_DATA = new String[] { - Intermediate_Certificate_1_PL_01_08_crt, - Intermediate_Certificate_2_PL_01_08_crt, - Intermediate_Certificate_3_PL_01_08_crt, - Intermediate_Certificate_4_PL_01_08_crt, - Intermediate_CRL_1_PL_01_08_crl, - Intermediate_CRL_2_PL_01_08_crl, - Intermediate_CRL_3_PL_01_08_crl, - Intermediate_CRL_4_PL_01_08_crl, - End_Certificate_PL_01_08_crt - }; - - /* - * test62 - * - */ - - public static final String Intermediate_Certificate_1_PL_01_09_crt = - "MIICmTCCAgKgAwIBAgICAKIwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4wOTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA4slldx8rhfz5l2i0rwib2McrCyQkadTjJRoEGQCV" + - "xT0dmw7GhDa6wJg2ozXLLk5y7ZCwlmBOTEoNbigHvcKSnJT8R/S+F4KqBz5d5dbRMNEKYz" + - "jdbD7Sm7id+eyfq1s5cpmta2lBJ5gTaC9YPSOY2mucGcJ1muYzdOc6h+PCCNMCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBBjAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECO7tq4dJC8OgMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBAHbth0HjAygIoWVrz59ZBPntOn5nzgUGpH60aSDOS6i9ZOKSoC" + - "7wCOEt6IpKO7M7SNznxaX2uhFTYotneyq3qENvqZVXKhE6wQRsdK4kG10cxSB5AXPHJRgk" + - "W9+p+Nb0iYVKwHdDCW8KHYIroGhSkKxuflwxhK6DcwQuA7y5q7r7"; - public static final String Intermediate_Certificate_2_PL_01_09_crt = - "MIICmTCCAgKgAwIBAgICAKMwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMDkwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4wOTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA70v7BFxmToZHF5M29JK6N0Ha6n729cv1U912mH9O" + - "NTz9tafa+jv4W7njScv21CJbNlUO5rlAFcTlXY0U9vbqHEufhtwRQqi7+pkfa+Ig8bwl26" + - "4U8L5rgmSvZJpEiiKfkmF2Rz9+zPPhHjk58ZcKoAcyhOdZ60KqmaaU/TVtEq8CAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECKOwR13+P/BlMBMGA1UdIwQMMAqACO7tq4dJC8OgMA0G" + - "CSqGSIb3DQEBBQUAA4GBAN71oLHr0+uf6zCOC5L7oeCOGMUwvZyROu8eTztZrPYGjaamSm" + - "Z0ZmUPOJP3g5nO6tHf34Tb9CTkwPdPicEaXuxflkSbJBV3mUFQ1BUDlyYTuaL8uT2N61dg" + - "xt5RgYTIGsW3/2XrRvXsH91gSiEkccoUyjKnQcX3oZmEeITb6H8m"; - public static final String Intermediate_Certificate_3_PL_01_09_crt = - "MIICmTCCAgKgAwIBAgICAKQwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUEwuMDEuMDkwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMy1QTC4wMS4wOTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwMLmDs63ai7i4xC/1ufMFWeigJAlbKWMti/PeEKi" + - "7LBfNJDRaO+1kde6QIo1vhkhKtokNu9ue3Rfo1+xGuZVohjRbHnmamEm5G3jihegPQgGCR" + - "fDZoJDI9HMbwBa0RWw1Nes5igIVjdSHQKO/XTul1yyF2Dt03K2qeLwes+2FyECAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECPEAjG80q0FoMBMGA1UdIwQMMAqACKOwR13+P/BlMA0G" + - "CSqGSIb3DQEBBQUAA4GBAN9eiZXma2n0XgzdvYrlV/IEqBIhpcZ7gycjDumVBVITZJD2sJ" + - "bkBi+N8dg7uovgxGxWGsyxqgAboLhMgbpbFzGh+HyIhQu/CeAx93PWYc5rP2l2Y8d7KJvk" + - "p1GZEcG/nTakpjxTQ5MQYFsOHVsnDDOyaZYvqPuMrwGYsfoUa1wq"; - public static final String Intermediate_Certificate_4_PL_01_09_crt = - "MIICljCCAf+gAwIBAgICAKUwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTMtUEwuMDEuMDkwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBNC1QTC4wMS4wOTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAo4L9QEqzq2VXzkZI3cvUWR5v6vreKKQPfJPfEwNH" + - "nMS0cgDjC4Fnw9ySI7Eb4A/OJGLIyg84mzTl6JX3kGoYr9/bJ8jOD7pN6CljXuHpwwmd7L" + - "6Nf5Hy0ltjAIr5s67e33OWdPi4gApS4FN6nPSDkZotY73d1xqJYQQZWuNEsGUCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECLfU7BuxzXeCMBMGA1UdIwQMMAqACPEAjG80q0FoMA0GCSqG" + - "SIb3DQEBBQUAA4GBABmQZOvwRpVsTD8uazfQpLJUZkuTap4OOPHie5xJsvOhGend2k+LiP" + - "7btGoFrqmkyVV/+dNA8+45SRsnoOtgctiF2ubeqIvd7xf/J5C9Cmo+T89Mt7WEBEuDmEZm" + - "JPXvOvyh6lRcYVSBnvVW5ZSstNAQKa/8xuyN0OrE1hJWbucn"; - public static final String Intermediate_CRL_1_PL_01_09_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4wORcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI7u2rh0kLw6AwDQYJKoZIhvcNAQEFBQADgYEAbXc1" + - "QgR2TAvOPqJmRFFrDQkPVIVyEEDTwZy5aNnoAKK+AmJ5FZkBtbPJ8qt9UeYRh8lbX8+EIk" + - "tyrAKw/1Kc3h7RDqAQ/p8t8kFwVQh2l4KTIukV8hYcj5sMKlt5f49ZwzWPyoOaLDomiUfI" + - "OY/jaDMw293AjQXxGCDtnaTvh0o="; - public static final String Intermediate_CRL_2_PL_01_09_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QTC4wMS4wORcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIo7BHXf4/8GUwDQYJKoZIhvcNAQEFBQADgYEAq6en" + - "XtvIdh/DifGzWn11hqJIZxLQDGJZPoMmwSOLyB6OzsPrIg1xkOWZYEOELTR8+qP6emmx+D" + - "CaEbUDLj60rso0gRQCBwTgHgjeMRpv8fGnV8MJgMv5BdzsGAGQbLSSY9FxtqeCPfZ6olHC" + - "iUIopdZJZP8ZvGKQ6QGaMnLpJ78="; - public static final String Intermediate_CRL_3_PL_01_09_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QTC4wMS4wORcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAI8QCMbzSrQWgwDQYJKoZIhvcNAQEFBQADgYEAraCx" + - "ruxopFbKvxOx/CIF4niG27ABB2ZwU6n4NBGYHo1Y9NjuytjjMZvQjMHyoayqpnF5TA1vXL" + - "jXjI3VgQcK7A4ah/0FNLFGtczyY8kXXrpbmdg8+xdNJEG3/e5rDW5VSf7OY1XqU85ySUJQ" + - "ZR5uiy8LxlDdaIT4WT7X5ezs3wk="; - public static final String Intermediate_CRL_4_PL_01_09_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QTC4wMS4wORcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIt9TsG7HNd4IwDQYJKoZIhvcNAQEFBQADgYEATtjA" + - "BdSZYnIbv1bCL+aSiioJg9S9yWGD1mjsA/CDzvkzSffeSpvqaSy+Zwwf+NDMMG6Cs+SgU+" + - "sxQdJALAbb4sYGEyXj/Exh9BYHvgoVahH4NWuhm6LIN8RTcMDAtGoGYFNGXGuT8XRBUJZ/" + - "tH9re3gpWaE1rjWeB/2ZBR5ONcM="; - public static final String End_Certificate_PL_01_09_crt = - "MIIChzCCAfCgAwIBAgICAKYwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTQtUEwuMDEuMDkwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVBMLjAxLjA5MIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+g1Puqjn+/Of35mqVVUricIV5x+bpZRCAgBDh" + - "VYcmZFXLB/XnRd/mYTu0RR4ISEerC1km5tjGeCN2k3NGdZwz/wEh9kEL8WikSqpxUSUD/N" + - "vQbliz4f3YECLcpNXKzkCvszeB5ZGHa0sLYDg3r62wy+1y2rtcrHzFEoMFgnnruwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECANGcL2klYf7MBMGA1UdIwQMMAqACLfU7BuxzXeCMA0GCSqGSIb3DQEBBQUAA4GBAHm+" + - "/vQ7VxDry3VqiqKnNoOhAHTTIUphNWF4jddRqVc32IsjVaeTbcGwCIRflRm/lUplRvXXxb" + - "JEbW9mP3nfTCREUdm49hjmo/szsPjgosFoEmuEKXThC81/y2vQkb4/jqRoOHEknU++38EU" + - "Juv6Y6psZNa37x8Yn3i7S+b3TM2q"; - public static final String[] TEST_62_DATA = new String[] { - Intermediate_Certificate_1_PL_01_09_crt, - Intermediate_Certificate_2_PL_01_09_crt, - Intermediate_Certificate_3_PL_01_09_crt, - Intermediate_Certificate_4_PL_01_09_crt, - Intermediate_CRL_1_PL_01_09_crl, - Intermediate_CRL_2_PL_01_09_crl, - Intermediate_CRL_3_PL_01_09_crl, - Intermediate_CRL_4_PL_01_09_crl, - End_Certificate_PL_01_09_crt - }; - - /* - * test63 - * - */ - - public static final String Intermediate_Certificate_1_PL_01_10_crt = - "MIICmTCCAgKgAwIBAgICAKcwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1QTC4wMS4xMDCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr4LmuvhSms70CnuAHIHwz45csKvBPVtcDjA1tWNb" + - "NIvvNHBzyt6G8U4CTVKmsFAZOzrWJem3b/ZywM1WlDarGJAAa/SRIYZ/jQwaOIoPW4OUfK" + - "ZQI6MO7uAPcIQ4ugtPth10viVqZYLZn/6O26Q905YsFltuPFl64KrJVJJBlLECAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBBjAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECGRn9ckrcsEdMBMGA1UdIwQMMAqACKua6/nC51SPMA0G" + - "CSqGSIb3DQEBBQUAA4GBANK+1qalm7Nl+PJHT9nQLVJ3ruQNAoMlH9fN52Q9BZCr30iWCd" + - "+GhQIPRjxZ4GWojMnqbWzYQsxIR2PLdFc6SwjQrq+i2ES/LePDtaLQddS44/+GP/+qDpM9" + - "Mqp3/Nbe1MfOKRBT57qgrxa8eUVieysoKeYX6yQpa8bab3qDwOTH"; - public static final String Intermediate_Certificate_2_PL_01_10_crt = - "MIICmTCCAgKgAwIBAgICAKgwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUEwuMDEuMTAwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1QTC4wMS4xMDCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAx5tMLJ3LRxi9jAzCSNkj8zyrSO0cImNGf6ZCIzEU" + - "V8LrmXjgiZboPTh9LWQ3msWDLpzaxVxDLBXG3eMO8ys46TfJKciyeoiB8wfuNGMKAccm8u" + - "43XjWs1KAdNikWEZupYPgdmA92oRlVcHshG9PqP4+xA6sydpu3V18Nyfa0n3MCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECDE3dDXkS7TxMBMGA1UdIwQMMAqACGRn9ckrcsEdMA0G" + - "CSqGSIb3DQEBBQUAA4GBAE+8cyOUQ7y4atc4BlZNZvGNRZ63dbGDCM2AItTEAf4ETM9v7j" + - "biUWTirJyoWsGxm2eIUk1V+EKxcuO3FotFUe7lS6thmVd6OYOSW+02RXMNklmptzK9I3AK" + - "DZNh82ugLNyrrd06BSiED+0MoGVVI4gi3wdFtRiai+MgQVeWIB4i"; - public static final String Intermediate_Certificate_3_PL_01_10_crt = - "MIICmTCCAgKgAwIBAgICAKkwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUEwuMDEuMTAwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMy1QTC4wMS4xMDCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsmSUL/UZBYMdqU0PecjCd+9U+1Ld3mKkH303Fido" + - "K6k5S4ZObxVHKhYDJyp3CcVT2+nENjzIfQQQaA11UK7Uf/jmVs0IC8e2scWzq0W2BeOLef" + - "jVgNgXGsXyfLi9T4KJPPyGsKlIU2R2xKxgHmAOt/tw6OYX/OaEfM1jiQza5lkCAwEAAaNm" + - "MGQwEgYDVR0TAQH/BAgwBgEB/wIBATAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBg" + - "lghkgBZQMBMAEwEQYDVR0OBAoECHYI07i4owpIMBMGA1UdIwQMMAqACDE3dDXkS7TxMA0G" + - "CSqGSIb3DQEBBQUAA4GBAK23Kx99Y9HtFBVnHWW/NfvNro7I5Wx/ZCko6ulHm84FPAjhnL" + - "tvc4jmfAZd0wYPKQKWwUKUDWNEwIU1qkxyJYACckue35GLzj8aLY/z+h037vGonFmNutMM" + - "rcRdiV7gVD17dYLVTt0RgxsDVDtut+twqHgIaKtKyJnl9dSgFFv1"; - public static final String Intermediate_Certificate_4_PL_01_10_crt = - "MIICljCCAf+gAwIBAgICAKowDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTMtUEwuMDEuMTAwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBNC1QTC4wMS4xMDCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEArgBnLCnqI6Sa7gXkZOvIKH4EL5i3CoG6eGG2R8aA" + - "kjBs78IKGYj9gY7rRajAKSpf19zvfcW8+2gBDDj5AoCy6uDnBICmqdu+hkdokVi8dJHiTU" + - "9LdS2TeuvFv47eiXoEBjMEAquCuSyHvW3lNrA+ESTnK3s7V4lBoO+o5mZD6dsCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECLTgYziQC9zmMBMGA1UdIwQMMAqACHYI07i4owpIMA0GCSqG" + - "SIb3DQEBBQUAA4GBAEx8wgBjBglU98rocddKAEKXkt4MNzrpUMq75C9HtnuOtFgM2oY/OC" + - "x67aZSTEph9ag6Hc+MyxWB5rzGD9j0y7OLsasE9AX8vjplUq50wq1xAFkGi1GnqRK/Oe7D" + - "S6R66+UFHW/3KAeNe96aaJuMcx0TRbfkGbW1ASSi/ixMd9Gi"; - public static final String Intermediate_CRL_1_PL_01_10_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1QTC4wMS4xMBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIZGf1yStywR0wDQYJKoZIhvcNAQEFBQADgYEAjkY5" + - "nXjLst8CMz0fyEM7Ft2d9TOOJXV4TMAfSAP9QCnit8qzrdVdJ6TJIsJNZYBz9Ryr5K/iSw" + - "KbYk0g6y/pskcMoHG3vJwNAxBbkf+fV7Eyve+90Z6oWDXHKLGCQQpdZ0a0wAqYeiScok8+" + - "YHypEVLfbjWARR9fsci2Ps3tdvA="; - public static final String Intermediate_CRL_2_PL_01_10_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1QTC4wMS4xMBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIMTd0NeRLtPEwDQYJKoZIhvcNAQEFBQADgYEAdpTU" + - "xcywBjX2rD8Gu6zkDqlDmZfRXHDPtnf2RB4bHDx77kDEib6nH6DGoJdx8WnRTZsTjly3MG" + - "62LfVmjp/bJyKHUQqBDrilv21EWsaI9JOr673Nk5iTZa/645GdgyLzSmxvcVDN40BAH0py" + - "/2gvBQTPNzp2W1IR2mebuLdHwTI="; - public static final String Intermediate_CRL_3_PL_01_10_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMy1QTC4wMS4xMBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIdgjTuLijCkgwDQYJKoZIhvcNAQEFBQADgYEATVf2" + - "cEEGphsIe0AsqNJ5rENLe8DeDAV8R4XCKdeP5qmHmLMm9Z4pX8bIfU7bCoXiNIwGvIU6ag" + - "FmHPNHEj70cQFVqCX/ZESc02hit+Os9g7pcl7s9QgwVUCMZdCiF/+pSEp3eCL5tFoKmAZe" + - "nxkL0KOSuKmBzuqRtZufbhDvmbw="; - public static final String Intermediate_CRL_4_PL_01_10_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBNC1QTC4wMS4xMBcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAItOBjOJAL3OYwDQYJKoZIhvcNAQEFBQADgYEAbG2B" + - "BhvRQ1pY/8VFeiCRFD8mBzq5iW5hWv2P7Zdp9zEbQo0fI4Kbis3OGemEttCxvAc/UPfogr" + - "UudImf3s8sLV9BS59xQUGQlxZ5XBNlripY8EjHNWrwgy7/x4hzlZ9yYBbqoNOqnHLy/gbM" + - "XZWoCbIK0co70lh1soOQ6eqLDKM="; - public static final String End_Certificate_PL_01_10_crt = - "MIICljCCAf+gAwIBAgICAKswDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTQtUEwuMDEuMTAwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBNS1QTC4wMS4xMDCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3bx0qx8s4Zse6Ri6NqkLEKUPLIOhTFj/9Dh7sxvE" + - "HpemBlTjbp2in08WTxEb9n8iAIWuGs3Vqm82ttBQmayjIaWD5oE/BE0oV/e91NAv/aRLsl" + - "f7VtOb6vi8Ef6muOAjI2dUaUD6QONkqkJhnZ353uR3LZnsAEAW+InePGFNEGkCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAeYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECIokB8m8Vi4QMBMGA1UdIwQMMAqACLTgYziQC9zmMA0GCSqG" + - "SIb3DQEBBQUAA4GBAKBGQwZQLQFXb+/kjP5xAtq+1rRtrblytjpv3ujJrKH1v2VB2+9boB" + - "0YYYGJTy2Wuj0ZBEMeTzMO8Hol4Mq9pnYv5DCmfnZN3FuDidgnRsCjM3ZL7NcXXG9YwlKF" + - "G2SXj0YfkSwN9gnyN11W8i+F/OSjlm+TDKHB3ePMcY8EnnXy"; - public static final String[] TEST_63_DATA = new String[] { - Intermediate_Certificate_1_PL_01_10_crt, - Intermediate_Certificate_2_PL_01_10_crt, - Intermediate_Certificate_3_PL_01_10_crt, - Intermediate_Certificate_4_PL_01_10_crt, - Intermediate_CRL_1_PL_01_10_crl, - Intermediate_CRL_2_PL_01_10_crl, - Intermediate_CRL_3_PL_01_10_crl, - Intermediate_CRL_4_PL_01_10_crl, - End_Certificate_PL_01_10_crt - }; - - /* - * test64 - * - */ - - public static final String Intermediate_Certificate_RL_02_01_crt = - "MIICljCCAf+gAwIBAgICAKwwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wMi4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3AN+Y3Hl/9V0nKXHQotb/cA2VfZc5vrRu+ZjwKgK" + - "6KasGegAorKSTybYX/fTbnaPwykDPfSscAnzAW5WdF9+wTLmvYc+6pkcx1ryKkGmofFMXi" + - "bZ5LUO/oK0iuNjBKfLdWoi+hpciKyPb9Bs8SO/svKSNqTEbn9ts3q6tpbngoECAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECGXQ07qiAqv2MBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBADKtN3OOaRdte0X4xLC6nTGaK/u7IEKQ0DjduDHwJR5w27zefrx48Z" + - "dlq8t5lAfQJqWmfk7iCIW1QJPLcZOouWDP2S9Cb0YooGQRIEkMjpBn3Xufx0XUphtCDs3W" + - "9LAMVXqfuce1tpZ6Dvrh6/H2X8rJMU29Czsz949bh6tcsHJi"; - public static final String Intermediate_CRL_RL_02_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wMi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIZdDTuqICq/YwDQYJKoZIhvcNAQEFBQADgYEAxrDH" + - "zKno1mkJqPTub0c9To6jC3CGTilV1E12oD0kFjkXqL40+W251qQ2wMC+G7ZrzBIc5dRuJ9" + - "3feHZ7cc03/s3TziXDvSyfNOYpHzkPwT48HuSgBYgJ3uswwk+tDiA64NzbOJqssxxhFRok" + - "9OpwC8eQkzgpA3a6816v2I3XL9s="; - public static final String End_Certificate_RL_02_01_crt = - "MIIChzCCAfCgAwIBAgICAK0wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDIuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjAyLjAxMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCykRGcIKuxia47yRmJT8XpNNi2LTTbUUTteIBp" + - "DZBfz2ExeWLruO9Rn1/oB/EP+4apx4r9rQ2tGsvr/7qQYeQK8W7eJzZgvxFadY57IMfUNq" + - "1nEnj0ZvuWrOSf+K9v6FWX5Y2uyZS5Uvb1VVQv0Ev890+yXTtthPTjepk3JkkouwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECFIkVrx7NRAdMBMGA1UdIwQMMAqACGXQ07qiAqv2MA0GCSqGSIb3DQEBBQUAA4GBAI+B" + - "T6bFZruoeFHXsYVjkQ42jSdYB9JuQkG7JLKte5gGlhyR+jMlJBzxBgNIfvlmYSnbRFPbE8" + - "eqsGm90hJJoUuVMkm0i03H13uddlS494O6HhTGpaKcYwp3hbLhVcaY3wFTqTCuZk1T7Oxq" + - "ggTrCDYvNH+/ZpQuy6nB/FH3SAHS"; - public static final String[] TEST_64_DATA = new String[] { - Intermediate_Certificate_RL_02_01_crt, - Intermediate_CRL_RL_02_01_crl, - End_Certificate_RL_02_01_crt - }; - - /* - * test65 - * - */ - - public static final String Intermediate_Certificate_1_RL_03_01_crt = - "MIICljCCAf+gAwIBAgICAK4wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wMy4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsZG8wsV3Kuo+jtnKxLYGBuAqQwUh6Cs7ioDTNUFI" + - "UDDJ0lOP1HVTMBA7DEcyTCGvnQ02dEVVuCddBTQvG5RvW7G7cCEW37cS56/3yPsU1bD/cp" + - "3C1pPJpoun04va91Sxtgcmx7jnz69QPVrucu6aI1sZyeOlvzb8K7DceaAfR98CAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECMNzJ3SpyOLxMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBABo7oKmQilgji3w1tGz1cMrWxZxqGJqOAKcHywli+oxFo2oxSfEuFS" + - "tN2aEd2Ja5HU5a0ySztvByXF1TTNurGez7ARxmcS2kpoQtQXTloywza4A5N7iQwk0yyo/E" + - "J4lrXUfVRwZHr7FwA7qMODtFb0+Zivv9JLaq19GhnRhzZyWp"; - public static final String Intermediate_Certificate_2_RL_03_01_crt = - "MIICljCCAf+gAwIBAgICAK8wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1STC4wMy4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt7yNq1QZsV3p7OR8rgPuY7x7Bvs+nPhcLR7zFOgR" + - "+plQUwpWQ2PhuzReVV4jNasKtNK9MIWoeV+eV3pEiso5obb9+Byvha1F6gkYNZMPs9Iv86" + - "cJSMtownNJVGVAL9FEpof1QKLp7kfn08EjkoGmGy85xy9uFytd2S8n5TlrBqcCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECAVwoCPFqMtqMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAL9GufFieduzBJaMtsXtKHMf64O/KAGLSh1YDXS+a7Ku+EFw+WteKU" + - "Ob6+c1m7VH9P711eATQoACotCdKusPECqeYDEmT9keqA4f7cP4VcvGwhvSVQJsPuB3LL3S" + - "LIILE4zhT+O9G+5v+mkG/pEDirRYk6ZkdM91bsUuzsX40uyn"; - public static final String Intermediate_CRL_RL_03_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1STC4wMy4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIBXCgI8Woy2owDQYJKoZIhvcNAQEFBQADgYEAkwyA" + - "I1rrz6tOmEpBHDzuJfqY2nbXCIXFN6dVuaKNZWHJ4ZNIc4/t29Wa5GgXYrVXyXRcXP/u5k" + - "NEhOX2/NwCm6vL8+tclYP5qPLrh/Dk4v3nvcTFLKCvclAbf4Il0zfMQx+RRnO5PPqPDu5i" + - "1tHHwOtA8Q+oO71lZEwPE+pX1Sc="; - public static final String End_Certificate_RL_03_01_crt = - "MIIChzCCAfCgAwIBAgICALAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDMuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjAzLjAxMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPGLfi8/T5p63cbGE98mqO5VzkeI1r2/2TLgvY" + - "RpL1h8i+CVYKoX37yYwNXf+HkHhj1OXJSNrm7853ctmDf2h1fv3f1+qJLg4VRVzlEgErNq" + - "74OR7XLXV77kGOmhip2g5BF5VKeqAdj0pCo1E5ZFHpRPFq/0DDmSda6GKJ6Dl8hwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECOHM3uWxFmcrMBMGA1UdIwQMMAqACMNzJ3SpyOLxMA0GCSqGSIb3DQEBBQUAA4GBAFBu" + - "doX0TZK/yoUcrSkP8AtFiv5c7QvyEtigFZTT+lbW/g4RX/oJGNZCu78yAxCczl+Z6ft+0V" + - "wInwahjyyAgw4QXxtw3b9CfqvT7HH7hcQ6r9ZA/NA9XpzNtxKfmXjzCZWdfmLJrd8KCnU/" + - "utKRAObRBKiaTGa178SEWvtkoIXd"; - public static final String[] TEST_65_DATA = new String[] { - Intermediate_Certificate_1_RL_03_01_crt, - Intermediate_Certificate_2_RL_03_01_crt, - Intermediate_CRL_RL_03_01_crl, - End_Certificate_RL_03_01_crt - }; - - /* - * test66 - * - */ - - public static final String Intermediate_Certificate_RL_03_02_crt = - "MIICljCCAf+gAwIBAgICALEwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wMy4wMjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvoTuc2LYBOhziBe02f6F8l9MwX74O1lknBcJjGvq" + - "JcirQx/6hQgBQT4hz4RRXNy7DSBr3swEw4eDNSeyd6kvG0h9oI3+SVmVyPPVi5eKDL1roI" + - "OBzmfx1+Nn/CnwOf8VroKDutBBQ0gJ24IEjwp6er/8hEAVN/yIjIi/MTFeoRkCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECKtCUOlmMPu6MBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAI9x8O/JgJuZV/s4OBUy3AvcW9QP3HWWBQSdxUdjSosT2schjn7wrR" + - "gttL7vWjT1djsbATAHa5C3inG+VjGIq/NqWaPoHAucRNMs4oZX2ACZFuBLOb/qhywsKh5+" + - "bjv4QgtqkUedzEratY6yQiJSiMSJVJSMzHosTVMX7oOp+cll"; - public static final String Intermediate_CRL_RL_03_02_crl = - "MIIBcDCB2gIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wMi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWjAjMCECAg" + - "CyFw05OTAxMDExMjAwMDBaMAwwCgYDVR0VBAMKAQGgIzAhMAoGA1UdFAQDAgEBMBMGA1Ud" + - "IwQMMAqACKtCUOlmMPu6MA0GCSqGSIb3DQEBBQUAA4GBAAEZ0Hg6sKiVXIeK6zbQrKtMMz" + - "Vz2K68+SqN1LAjlNW6u+HSTlAvhRIFO1Hv5Zj7qbO226rLxas/X2XWXpMlm84NHN8T4dZU" + - "4Yo5rhhpCHckRxNYn3AFcfcV4ra1rrTtdx8e7e7/m0Ghog9Ny52ZuQThasL9caF0JxUx6d" + - "zbBHPm"; - public static final String End_Certificate_RL_03_02_crt = - "MIIChzCCAfCgAwIBAgICALIwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDMuMDIwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjAzLjAyMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNb6HGPRDulLMCCyCq6w2X8rHPtm1gN68JXFkX" + - "j/BZsHhu29Z9hXj76hO//7O775EPVMSLyRy8t15yzYpXfZRHFaGB5bs8U2R5ClvsD2FR0H" + - "t0JVfU6Ggn1lhO+jOiguJtXVRjofsfvHuiOe75ctaJ9lBpgwiV8tk4VRKz2e5xVwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECI3Gy0TgXMrwMBMGA1UdIwQMMAqACKtCUOlmMPu6MA0GCSqGSIb3DQEBBQUAA4GBAISQ" + - "Qh9+7D6nk3FL5YQOzyZ0BSHQYjpbIVykJ+Lr4jBPKyGgCqW6jqWNg7X4waB77J2z/OkavY" + - "A6qtpsk8r2wmG9thi8JyZZNhYMxAszHzFbBmSoxGRMvI0XarxgIu8Ky6V7jKVDLz12C3o9" + - "H0yd+nZXilCD+p9BTjjg5bGUogJS"; - public static final String[] TEST_66_DATA = new String[] { - Intermediate_Certificate_RL_03_02_crt, - Intermediate_CRL_RL_03_02_crl, - End_Certificate_RL_03_02_crt - }; - - /* - * test67 - * - */ - - public static final String Intermediate_Certificate_RL_03_03_crt = - "MIICljCCAf+gAwIBAgICALMwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wMy4wMzCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAu/o0uxgTrAvNDrMNuG2eTla+AmkLVCIXBbsIo0gs" + - "tLm29tLwfBh/8l5OC0y6Xeh5lx+NLdelsiZGRNaaWmWHj9Ji5V6rclr8sXRDUjxe12zLeh" + - "0G+a0TfpL380cx9RItqQyA1ZRiUNymmJHnm13hwrf7LPirR9BMrtyTT2EI3cMCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECHYt39LYdEn0MBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAIoSGa7MxnOuHoWM/BoJKsCeBmBHYCYDKmQ19JfsDHW8z8oAFiikFb" + - "Gtw1Qpc0GFfJgN0cppaXfe5lDS6BWL2dPorhu3URfXKu84ATLwGmNhqLDY7zh/zPvLtG2m" + - "izaMLC6ZwZL5KELpYpcP15EHPDquyP1xpV3fT17GjpG9IH8k"; - public static final String Intermediate_CRL_1_RL_03_03_crl = - "MIIBcDCB2gIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wMi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWjAjMCECAg" + - "C0Fw05OTAxMDExMjAwMDBaMAwwCgYDVR0VBAMKAQGgIzAhMAoGA1UdFAQDAgEBMBMGA1Ud" + - "IwQMMAqACHYt39LYdEn0MA0GCSqGSIb3DQEBBQUAA4GBAI3HsXanos/N6uO3QVUaBZzmCt" + - "w1HCHMrLVG614YlUQiEedQ/oEc7dwCeD1rUbGNVkFPIRvMkmUQo1klhKAlEUmrtW+aH+If" + - "6oqumifqxvaycWidacbgNLIAMQtlQmniPF6Pq0dv8sNeKq4CE0gjRHOPJ2zIqy3kJ3tZYB" + - "pTguwO"; - public static final String Intermediate_CRL_2_RL_03_03_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wMy4wMxcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIdi3f0th0SfQwDQYJKoZIhvcNAQEFBQADgYEAXZSZ" + - "ySsD7U6ETy9ZRmiKUCJMUV9CIhCY0mEihHjW0DhFTyV1Hr01yN5zUr/IFVuP/Xcx36IX4l" + - "dVv6/MgR1GeM/BUGZhm4z6YwfAosZ1N3zayIy/pP3fa1rVRl8cgCxc/8qxg9nH9p6yPpxM" + - "AOOu6TLYquk/dA7wJPEW7MPixXY="; - public static final String End_Certificate_RL_03_03_crt = - "MIIChzCCAfCgAwIBAgICALQwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDMuMDMwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjAzLjAzMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5LNxAB+lm514Hk2ykrFUb7fCX0ryIEMg0mgeT" + - "/z8Iw7xisht57koK4PTXY863aunfNNh+8oFTHZnoLB5dbkROj1nFRgcWPezzv1wNkZEpxn" + - "NINtTPBogW22NPznoZ/rSk9JRFe0sCOVazkW9tZbY2ARqyJsYU1ez5tQIkDS47kQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECMWddsi+qmxKMBMGA1UdIwQMMAqACHYt39LYdEn0MA0GCSqGSIb3DQEBBQUAA4GBAAv8" + - "nrJaqEycAyIKdPBYTUqaxjkv4SmonDDJG9OqvD78/o9hUKKteoMkNUp8eexTkWk0L72L4N" + - "/eXB30+m65E841V+Dy8L4bXh15n4qz4cyMt8Kvm7nbCqcgpiyBJmBxzfaXDLSthlmhcJ4X" + - "zDFnav1LEw5fZklt7cnMl4YvLD8d"; - public static final String[] TEST_67_DATA = new String[] { - Intermediate_Certificate_RL_03_03_crt, - Intermediate_CRL_1_RL_03_03_crl, - Intermediate_CRL_2_RL_03_03_crl, - End_Certificate_RL_03_03_crt - }; - - /* - * test68 - * - */ - - public static final String Intermediate_Certificate_1_RL_05_01_crt = - "MIICljCCAf+gAwIBAgICALUwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wNS4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA59vHTe5A9AcT237mW7HdSfh8Pu4P2wJNLT7RXczN" + - "7DD/P6mAkugSgPTXwwlE1oSB/hCxAtEPhwONYZFYlRClFJidHDdVApalB7UbosTghsUzAg" + - "Lqw7NL+w9i3Un2G7JM2oWwugozQn/1hzr2Cii2TIB6K0RWKoPBJvaWUURS/G8CAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECP55Cc4eBca8MBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBALX594y5uF4Rt7CoRHeKZ5h8QiG7mc+kQDMjaSU4KJwNVVL0mJatQG" + - "w90yFfhvprlgDt9UIAvpF6z5gysbrjHXJaEhVlXeg9D5mcxsL4THEc8f6oU1GjfT/SOD9l" + - "QrT/keX3D9lcFEaTOgi0HIZ7aFIJgoWjXF/9kNNMEAs8sJNI"; - public static final String Intermediate_Certificate_2_RL_05_01_crt = - "MIICljCCAf+gAwIBAgICALYwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDUuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1STC4wNS4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtl4hX6HlF0M+lSBTG8jHiB06hOy87LL81yAE2JQt" + - "/6F+LZjuOBTCIc2yO2bVM3XzUnjyYDBYGnBFp/7XpRoiADuPJSfmkzmezpyJc+hm96UR1g" + - "Bpo+pPKbRTWuM+FYy+vPtaDk5wKOrmyNx440PwbzxTN3JeWz17xeYE98bXMc0CAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECJOjtwEYV9VSMBMGA1UdIwQMMAqACP55Cc4eBca8MA0GCSqG" + - "SIb3DQEBBQUAA4GBAFbkOffoIjWSfxEuKszoK7Fj27Hf5jlV92xqXtBLURjNGi9jCLUIUd" + - "QLnONZLJYo70Z6XaGjpAK1EtZKVWsz11JDq5egE1zNES//9Tz8xDtJ7Lcq0mwneVFxmBuL" + - "gxkw4GKbBFKz10FoSP7VJWaeW080WwKnp96Me5GtZRe260N1"; - public static final String Intermediate_CRL_1_RL_05_01_crl = - "MIIBhTCB7wIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wNS4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWjA4MDYCAg" + - "C2Fw05OTAxMDExMjAwMDBaMCEwCgYDVR0VBAMKAQEwEwYJYIZIAWUCAQwCAQH/BAMCAQCg" + - "IzAhMAoGA1UdFAQDAgEBMBMGA1UdIwQMMAqACP55Cc4eBca8MA0GCSqGSIb3DQEBBQUAA4" + - "GBAIdOaBfpAEKWLrSvepVjk3UTfEfsSP6y+kFMl33YXy18xUvVpLarGu6YjQIpXiL+ulkP" + - "eF8TAc9AarUjvDf0kcslIOt3NhdMxR4/F614Ds/rPEXs4c7n4kCkvAlFg/19iIFeCaynx3" + - "X0s/v1SwzgAUHi3P+OwAGDApDTyKbnmzvt"; - public static final String Intermediate_CRL_2_RL_05_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1STC4wNS4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIk6O3ARhX1VIwDQYJKoZIhvcNAQEFBQADgYEAfOOd" + - "JiLUCFSurAafQEBfxE9KVrgFC+W9m64cmERicO1QL9aDVIDGJAIY1pdvWVdhLBIKwSugwB" + - "ZH3ToptY+VizvFN1gkKGL2OuvDsXPHn1+QgmqvxYFPmvwDcwuxZ/3zD1VeHgEIKo9ugRnW" + - "F8G2Ph6SWUxJCjJQpB7WIbydowI="; - public static final String End_Certificate_RL_05_01_crt = - "MIIChzCCAfCgAwIBAgICALcwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUkwuMDUuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA1LjAxMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9NWkW/mia20c5gM3DpcTsBWTNC/d/Cob+OVrS" + - "lYytMjK4htO3MavavMZNTLAYFCXWhZ+Uo/uiAF0ddE4HaFI418eKJMSSbQyed0TG5Udw/t" + - "3dhYeLzLEmVc0r00q5v+CLINsCNQAKaPV71UvoHrE092zZjmtacuAetBS1Q2ufpwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECGNPOXdCLpZ3MBMGA1UdIwQMMAqACJOjtwEYV9VSMA0GCSqGSIb3DQEBBQUAA4GBALTo" + - "hfBEPdzZ6A9QNStakOhmhHYox70xOPuWqzSbIugZv4chKXNQGiUAoOGImTw1mcun/uPNtd" + - "0bT+O+a9yX5gzW55CSmR/teHkTkND1mJhOMuYOmaCaBHnqgIIe1iEhMZQgag70+/tSmmQm" + - "UpWGpxeK2c02tBK6gEmnqk75bKRT"; - public static final String[] TEST_68_DATA = new String[] { - Intermediate_Certificate_1_RL_05_01_crt, - Intermediate_Certificate_2_RL_05_01_crt, - Intermediate_CRL_1_RL_05_01_crl, - Intermediate_CRL_2_RL_05_01_crl, - End_Certificate_RL_05_01_crt - }; - - /* - * test69 - * - */ - - public static final String Intermediate_Certificate_RL_05_02_crt = - "MIICljCCAf+gAwIBAgICALgwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wNS4wMjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAouNcO1wHvKHPR15L7Fohr/QbTkPWGr9QYp2MXEDy" + - "BRGHt63Ob+yNvsP/C74GJA+PzvcRELSnJxmBVbdRN5y/u4S6Zt4yTTcrvp4vl//luoGLOX" + - "NHhCXbrGavyoP/iKpbfP7fy948AN34i95HuZENoGPjG5stX0uk12P087S2tPcCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECFi86MGPmMsXMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAFVZVMZEsaVuL0qX5Ls94+x8gBklxPfxgfG5LeBR2/YcqW+7BhsVA1" + - "GQhjBtwqCU9SOL16oTrqgw2+YeWBjaYuNYVlxfdifd0pQydpE1iDQWxmoKLzSDmtWgRYhz" + - "v0TB6j8q+0x5Q0OOrHX0jdIiBnHrLmReCK8dY1x6fb6I0tTH"; - public static final String Intermediate_CRL_RL_05_02_crl = - "MIIBhTCB7wIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wNS4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWjA4MDYCAg" + - "C5Fw05OTAxMDExMjAwMDBaMCEwCgYDVR0VBAMKAQEwEwYJYIZIAWUCAQwCAQH/BAMCAQCg" + - "IzAhMAoGA1UdFAQDAgEBMBMGA1UdIwQMMAqACFi86MGPmMsXMA0GCSqGSIb3DQEBBQUAA4" + - "GBAFMN6PWjz2bA1RRySYNXde2rKiYkZYghbtT4ig2yDJBKOiPnjdx+jriFJxGYpt7BvcNx" + - "cDfijmDZ1clzprIvz0lFO6IwsQiWtLxOz4Doj6K2AD+7IxuGLceaXmubvi4e6VVC3xXGsu" + - "OYsNgFzsdUXIazi74+eOcj4dqrHAepbhXT"; - public static final String End_Certificate_RL_05_02_crt = - "MIIChzCCAfCgAwIBAgICALkwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDUuMDIwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA1LjAyMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCuWE1aFx3Zjk6gM0Wy6ijcUegbiGvhjBgqIGwv" + - "YissT0v3KGAKoh5wGeKC+rePQNbZ91j4XDLvUNUdNw8HVNdNG/igIwsuaJ9teKSbqrAw9X" + - "aD2YjJz/I6X6WXFd/eQ+g9lY3eidOXJkglYSwWMxUV62RUZbGyqjR1so+XpmYxCQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECLLbuNyVkkK9MBMGA1UdIwQMMAqACFi86MGPmMsXMA0GCSqGSIb3DQEBBQUAA4GBACKt" + - "GgxIRXYHZGZgwYHjNzquM1pUJTbxxm3qYA4U6r44oAo1UzQTDpHOalflreGFvG05l1BCnQ" + - "olQ8rcXU25v/CDfyww7cl8l7IxjYz7PNht7R97vjfMVqqButbn+BmU6D5kR9YXDCDPzaQ5" + - "DrKNk+3tIjJNj6YhxhqC2tPG9RIN"; - public static final String[] TEST_69_DATA = new String[] { - Intermediate_Certificate_RL_05_02_crt, - Intermediate_CRL_RL_05_02_crl, - End_Certificate_RL_05_02_crt - }; - - /* - * test70 - * - */ - - public static final String Intermediate_Certificate_1_RL_06_01_crt = - "MIICljCCAf+gAwIBAgICALowDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wNi4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAmhxr4ckU5C3E57odZjgcxl46ZF2QVy+K86YoLOGT" + - "mq34NSHTFxP93mrNqMYdFKFedUTNI68HkecFVvVKoXsDNBnhyyCTQ3xXhBcMUXFByB+55k" + - "W5LeQ8l1G2ugsyZ7Z+P8uylrpeGJt4RjOTilhcI2mnfZ7S+arFGe4KYgnsaFUCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECOS4X3XqhyJYMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBALCPtNwXGxVSUNGErkBHSYCHyqlA55jKQQvZ4P0PznWEQ/gBJx34hq" + - "LxiBO2G+iDomzHszeM77TXkQBpNxCUw26Jxv2HuvyBXuSprgjw5F1tvLqwsBAnD5vsb0uD" + - "NrkKIzJSIBFQ1SRhuCObaXnamfPJHBmkP25t4QqEvoXMtVHB"; - public static final String Intermediate_Certificate_2_RL_06_01_crt = - "MIICljCCAf+gAwIBAgICALswDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDYuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMi1STC4wNi4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2IKrW6HDZJVFw3e4cC7v/jPGXAexI4B88707NhAc" + - "qxSVfGTPJBdfWo5pkptZKN5/L5n6+rixLItHnei/uwBCHvhwzeEIGo1yVCgz6R2MoNB966" + - "Q5CHWfT43BUjp0rZLJkK4hVKNyXB78NVv2Fly+XWBDEnzQvgVPWbGOvzE3zh0CAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECK/1z9Xbu2jGMBMGA1UdIwQMMAqACOS4X3XqhyJYMA0GCSqG" + - "SIb3DQEBBQUAA4GBAAa/MVC+8ozm9py40a4o/kHbkkmFNQr4s9yi3KXXuVxsNvquFMXm4a" + - "gC8GPoNjvV+RPRmU8wOM6I2/PPl2JEQRb7NDM8LkY/m/Au4GHVeln6FKlldiRm0A+YIr19" + - "ip2RHOldikAjUUYv7JT3SP34sjtq2e8bsXfWEPG5BA/wxtm7"; - public static final String Intermediate_CRL_1_RL_06_01_crl = - "MIIBhTCB7wIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wNi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWjAjMCECAg" + - "C7Fw05OTAxMDExMjAwMDBaMAwwCgYDVR0VBAMKAQGgODA2MAoGA1UdFAQDAgEBMBMGCWCG" + - "SAFlAgEMAgEB/wQDAgEAMBMGA1UdIwQMMAqACOS4X3XqhyJYMA0GCSqGSIb3DQEBBQUAA4" + - "GBAJSexboWDaqLVY6iiWt8ZX5GwuNwDBN1R2TgM95H7JqjMgoWML887dKk24p4eKACFMWI" + - "Ji9nwsqdZ/h1FtPhYpSoJ8l8vo4imMKr+tTnMngDNpMMZPQyRY1AK1jSrLhEtUdjiEtrTY" + - "rG56RNt4YyUtNxxfkEymvwJxmO/4YcAz/l"; - public static final String Intermediate_CRL_2_RL_06_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMi1STC4wNi4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIr/XP1du7aMYwDQYJKoZIhvcNAQEFBQADgYEAImRg" + - "n9A7px9exOJL4Se9jsSHzZ3sAd3y16LdAb+HLtYLl1swNB4KPE+OebtzEoYiSzVVwezdlm" + - "5WseZjfbd0q01srZI4FeACZe99iBSpKymdKxw2gRvfYZ8ZMwFpK2mQq9cmygFn53iOwP7j" + - "3KE+lllielu7sYyEnkliF9wsaG0="; - public static final String End_Certificate_RL_06_01_crt = - "MIIChzCCAfCgAwIBAgICALwwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTItUkwuMDYuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA2LjAxMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZVBNzD7LZW6mC2GSbVPjpcJ7sWISYsL2eHqXb" + - "/PuxtbOneOjYqx0GeL9pxDGSSNl2NrlG0G1HTU2MaEOVA6h96W9e5ADV/pzGPMr97z+3BV" + - "unxLX+ciM3T7rUQm/LueQTEC2Ww19T6QOg2i8rEadYT0OoW6OcvyuomemspxgClQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECK5pHDrhL7xjMBMGA1UdIwQMMAqACK/1z9Xbu2jGMA0GCSqGSIb3DQEBBQUAA4GBAF3J" + - "Kskjs4jp+BBoei9YWYtmOupn9w3oGyhknNh2jz7api5Gtgk2SyKfYFvN6EhWZJEab0hPFe" + - "WuYwO7zNCLGHw0cFXT/R48ogd6JkH6xDwj4afZDkWVTu8oaVD4h1rTYS6WPRzizAozOzhi" + - "tmIo+MV/lCG8+jdVtFgeKycI8aX7"; - public static final String[] TEST_70_DATA = new String[] { - Intermediate_Certificate_1_RL_06_01_crt, - Intermediate_Certificate_2_RL_06_01_crt, - Intermediate_CRL_1_RL_06_01_crl, - Intermediate_CRL_2_RL_06_01_crl, - End_Certificate_RL_06_01_crt - }; - - /* - * test71 - * - */ - - public static final String Intermediate_Certificate_RL_06_02_crt = - "MIICljCCAf+gAwIBAgICAL0wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wNi4wMjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxMlJ0vbkMRGzuEDTDGuPmwDzU1xn3dFDZ1Tx6ONP" + - "fwNN5gk6r9kYl5TZ8f5TbkQSnOzyhDSqX8dGumCSgukETXtYBU2+KiIAtliu5NJRbXe3La" + - "vn102HxaHDLGsR0FFLiFM9GVhOOXryJoXoGZqUwvqbWyaQQEzrV4RWmuOv7xMCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECFNaMo88Vb5MMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAJsjJG4/U1OWCJPB1u7UD3TPKRgOR9hT5l3LzFw5s0CEGt2Beg25LP" + - "GEGcr0sEdosVQI5m5CuPolpmlQv0FkZv5M1W+uXX+F/6edtMDEquDpdR97ihQSLZjFFqjE" + - "ytuaD4gqtL/BKBbz3e93mOmR9Wi+kWlXOYl0j8wpU9ePSjDV"; - public static final String Intermediate_CRL_RL_06_02_crl = - "MIIBhTCB7wIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wNi4wMhcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWjAjMCECAg" + - "C+Fw05OTAxMDExMjAwMDBaMAwwCgYDVR0VBAMKAQGgODA2MAoGA1UdFAQDAgEBMBMGCWCG" + - "SAFlAgEMAgEB/wQDAgEAMBMGA1UdIwQMMAqACFNaMo88Vb5MMA0GCSqGSIb3DQEBBQUAA4" + - "GBAAKNj5xmtE7wzO1p5igiAmCDV6KuYsiPAQPHPEBlmo85vzvWv2hpEtmk4nDhehogl0QX" + - "rhvRRqR+cPE5vBLB8mAStW+ZR6FXQPnmU5qGHqCQ4Wh6TWZesd7oyftoS7bJD5Xdf5ErA9" + - "qijWoz8FgxZHVnAFmjA0rUINkdQ5JfE5oj"; - public static final String End_Certificate_RL_06_02_crt = - "MIIChzCCAfCgAwIBAgICAL4wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDYuMDIwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA2LjAyMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD3UzwrnwKRlP00Pn49iI35S0wLn7c1I3rsmzdm" + - "YFicetxHNeOKXLg1CN1bqkbAJ+N39fKjrkusqb2T+R3zhAV5LeLT4fzbHYdU7f4r6xgW2/" + - "b2WLv+QVR+ldTsVxgPp/ZUgYi4/vAow4Q/6IT+zWtlawMBob/nLjVl+jQ9N4coFwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECPhq75noL+9WMBMGA1UdIwQMMAqACFNaMo88Vb5MMA0GCSqGSIb3DQEBBQUAA4GBAIU2" + - "5bLX/NyDC8dKUxRwVn8oc3YPQjK0zXGdUr15Ib+cLdRyFVCuAyxVdpTf/csuga6tDhGuTL" + - "B18mTE/fAjhUOiKiOLD6m4P77Nj67l2NTi86RimsI/Z6r5+bU31ahrls/7kr788+f4oEIY" + - "TyOJecojsJUOG3qzK9J50iszclxg"; - public static final String[] TEST_71_DATA = new String[] { - Intermediate_Certificate_RL_06_02_crt, - Intermediate_CRL_RL_06_02_crl, - End_Certificate_RL_06_02_crt - }; - - /* - * test72 - * - */ - - public static final String Intermediate_Certificate_RL_07_01_crt = - "MIICljCCAf+gAwIBAgICAL8wDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wNy4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxjHxSRwJjEkLG9Al5uSQ22QI8N/hJ8hhkhh9qlaJ" + - "mHusM8sWpAp2vnuumlThTA2zZbptXZ8Krb7i/Kpym4wo3ZkEThwi/ijsM5QCunQJmESRGD" + - "yPZJjfhWjoC+lCjbmzsOGLMETpgSEMy+EyoXkRCnKmXcmCMS8HjLrqdnwiWBUCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECHPEkeIs8GuwMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBABCmgEnb8dfnG9lWQKT5BmQm459WqRQAiqdfqf9w0qRMuVrdfLMwqx" + - "oq4uh10A3d+auHohgT2fT9RzNaWnRoNaH9K6qLQsdCUZdqjbEGdyiIFzvWP9MkV9nhDlo2" + - "GgiU68HfnpKO/WA9EaRHyEzwT9o4SA7hAbz+3L12hB2WLSOg"; - public static final String Intermediate_CRL_RL_07_01_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wNy4wMRcNOTgwMTAxMDYwMTAwWhcNOTgwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIc8SR4izwa7AwDQYJKoZIhvcNAQEFBQADgYEAOyZr" + - "f1tRnuzoq7dgQo+eOYhb5JyRyrNaSwNnRy82wOP+/G3NH8V3NGonDFOOcd9SoLTbeW4o71" + - "vdOrKZgom5H2MZK5M4wTdfPAfXB1wBxOMzW5jXzsRtaha4l6EPI+GVL0eXN+aW3k/pscdA" + - "ToI+OxTmRRnCYS6yW3qL9RoTIXQ="; - public static final String End_Certificate_RL_07_01_crt = - "MIIChzCCAfCgAwIBAgICAMAwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDcuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA3LjAxMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrm/Zem9Tt2UJFUKdAhTNwvhLo03uOax74ZgbV" + - "YNTCpKeEWkV5d5d7DRC4mCTX1yjIlg6K4l7T+sRGI4XAcDRgYLuoyG1X958XCXSdIPTdbK" + - "Hxs/tFv4mrCwi1kU+zjyzDoqgjT6kUxgM39rfcvDMH6qSzHQKgTFp7Tj/DHiELqwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECGFR8c6rRbhcMBMGA1UdIwQMMAqACHPEkeIs8GuwMA0GCSqGSIb3DQEBBQUAA4GBAANZ" + - "TVR288mKpDDzm9XZMZ9+K1kPZ+eQYX+vUul11luVw27AIJGR8Fb4PIGl4+ALvqU3NQP/6v" + - "d+zvS7IfiR6q7aLS3w111BUCgDhTJAp3oSo12qfcp+2DB1M9QfjrM9nKgmh5bBJigdJwJM" + - "W8HHKStUMLdxg+qkZJgZpnyowCFM"; - public static final String[] TEST_72_DATA = new String[] { - Intermediate_Certificate_RL_07_01_crt, - Intermediate_CRL_RL_07_01_crl, - End_Certificate_RL_07_01_crt - }; - - /* - * test73 - * - */ - - public static final String Intermediate_Certificate_RL_07_02_crt = - "MIICljCCAf+gAwIBAgICAMEwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNNTAwMTAxMDYwMDMwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wNy4wMjCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0CvEneaAPtxZOTqlh/TXBM6V0bQgKbO58yEyURcO" + - "Zi7jzYsmNtN9Tsr0wAlD41/ZONsW4MMzZ13UCc0aGa+eE8XRULBe5cgaGxJKwVnEqz3W8z" + - "v1MjOk7Anb8TkxMSlWlptC6V3eRA85p5Id9gXbIrP3E3NuSfyx6246oLjNnbECAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECIb5Ia6wKcHtMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAAYEHQY+Z4qv4bYLmd+sz4aNGwZF7FT6ZIQ43OSeb+t+ibL7rZ0X0y" + - "4SCTMs1mAB44IA6RFurmeCFk0ladRCn3A1xaVI1HlHen13ovzDA9ogL4CWbYXvCUv/znQY" + - "yVSQCTKwT8iVam8xS1MsNCe408iVjhRfR6u9Hi31M+Pf+AUe"; - public static final String Intermediate_CRL_RL_07_02_crl = - "MIIBSzCBtQIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wNy4wMhcNNTAwMTAxMDYwMTAwWhcNNTAwMTAxMTIwMTAwWqAjMCEwCg" + - "YDVR0UBAMCAQEwEwYDVR0jBAwwCoAIhvkhrrApwe0wDQYJKoZIhvcNAQEFBQADgYEALVUq" + - "3Wq/Opvp9ifmQ4VXz4dgLNR+5Nz3muJ4RZt5R5b4R3RYllhgXNYw2EbEVCFjnfm97z73Ke" + - "wzVV+fo/u5GbqJHN2cAVEHarOpasLxySktNA1Cwq5OTzUF0dYISqYbyBvVcaOQBvU/Lwj7" + - "MQJJVVq96iDKnAJYBX03EHKbBeg="; - public static final String End_Certificate_RL_07_02_crt = - "MIIChzCCAfCgAwIBAgICAMIwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDcuMDIwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA3LjAyMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD6YgsbjW9IL7/SBORKssFUZBUxmluOpxJK/7d7" + - "JA2pxbg7L96xHFPWN36CYDJzTscNpbGrD3G2MPkg4GqoTo0rU28NYVzj4SwqYoSLIbXB+r" + - "SVgWcxNgbJ+4x9bK3YccNLR1PWEFxz1NckhCLBmb5pI4E34MCxQ6PvFO02I19FwQIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECIutV9ItCIbZMBMGA1UdIwQMMAqACIb5Ia6wKcHtMA0GCSqGSIb3DQEBBQUAA4GBALQE" + - "cBr31h3jKUHcuf3yztr9NWUkGMDM0NCXHOpQl7JbV3P5BjvaiRYWlUrN7+92G8EaUFORto" + - "zp8GG+d/MvFooVQOvpOzyhautYWyqq3AWpZLppnxNk1mRAdjUAvJaONtv37eLsma0bhtLM" + - "j62sQQ6CdoKbMtIEGuJgpwWqHYwY"; - public static final String[] TEST_73_DATA = new String[] { - Intermediate_Certificate_RL_07_02_crt, - Intermediate_CRL_RL_07_02_crl, - End_Certificate_RL_07_02_crt - }; - - /* - * test74 - * - */ - - public static final String Intermediate_Certificate_RL_07_03_crt = - "MIICljCCAf+gAwIBAgICAMMwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wNy4wMzCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEA8QzGjV0NVTNrOgkeqTkQFCOvl7M0qmjmYJjuw4R3" + - "YfQIXDN0m9HR2JKp5WKTSUedmWviGS7NbGSzLR7+6OkLwSoxN9PkA/fMko7O0KWBfduhvn" + - "jymlDMb2GPb1hBjScbq8fVJHwzqUm+BtEO2MXwXKYY2hZr+OEyEGhSEThp90MCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECFwl2XphEZRSMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAAb5GERgYVGuOb62gVZAAnhuk5K7CCkWZucOv6iI7pAgI6S7pvool/" + - "dXHC0tzgQ+/MkuWcr+22k/ya7f+iSfiYokjnQkgoYFYk3PkjyOXA3mzs5qhF0nOP6Gvmz4" + - "asONA+qZSqa4pjxF9Kn8L64f9yeyEXnckmbzdmbjAFCveQIP"; - public static final String Intermediate_CRL_RL_07_03_crl = - "MIIBTTCBtwIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wNy4wMxcNOTkwMTAxMDYwMTAwWhgPMjA1MDAxMDExMjAxMDBaoCMwIT" + - "AKBgNVHRQEAwIBATATBgNVHSMEDDAKgAhcJdl6YRGUUjANBgkqhkiG9w0BAQUFAAOBgQAz" + - "DMl8P16hylNkUEw4z9//PJFObNPZCYdmzBfp0K3tNRrOAouUVegyX0gDHi8O+bmmJNgcnC" + - "tMRXx+D4qP7bx5fDS2MVQhSsncf6u4UZ8pxbRc0JmwR5oGZLPQabrctgmEmg8ZKGApKtsf" + - "pGyvvTwaAzM+GaWXD68bBEN3VfVdeQ=="; - public static final String End_Certificate_RL_07_03_crt = - "MIIChzCCAfCgAwIBAgICAMQwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDcuMDMwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA3LjAzMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDU6mec24uBaVip7fFWHas+o/lpZBOfj/IPHXQ9" + - "QaRZwmJZBB81AX3BJ60DD12o/+RXdHl7B2Eh9kYv/QEXOKmyhJFSPa0Lv7MQ/hCIcL4m1U" + - "FDGtJ3SUixZMqVBP0xjwXoNS88zzaCBL+co2TxhBrYMzeNQOX1eEkXMT4pvULmAwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECBBgFdYLuvk9MBMGA1UdIwQMMAqACFwl2XphEZRSMA0GCSqGSIb3DQEBBQUAA4GBAAof" + - "dPOGa4ZxRPcLw6zWM/NLzF3XYDqXAsZBsC75r0GRrogqEYn07tVUDNaQczDtjRLBRNmxWE" + - "+qCkJwc+wOBJqOFUxcuhK9oag6OE94+UIHdh3Td9i2ELZXj9RSNchnjyFohj5gk1dJSO41" + - "86Ls3mCT9JcssR0dSxxkF0ENfZCG"; - public static final String[] TEST_74_DATA = new String[] { - Intermediate_Certificate_RL_07_03_crt, - Intermediate_CRL_RL_07_03_crl, - End_Certificate_RL_07_03_crt - }; - - /* - * test75 - * - */ - - public static final String Intermediate_Certificate_RL_08_01_crt = - "MIICljCCAf+gAwIBAgICAMUwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wOC4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAs2YRTEl3C1TmmneJ6K110nSACn+KXxSOTGAGN5xv" + - "XW751StpE2iEQIbRVPQdMzmcQX0bcg/WpdrewPQld9NRjFj7it+9YNQh7vMKhZwoAPoDmv" + - "TnTdTEuV0c1FLVDVhiaAD9KMBa4fBLRfTKVzgzAr+oNqLhm3YBd2JWRHg+fA8CAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECB4we8+hIrkKMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBABTQI82uCMwQ4bgUWr9lawSI5DyWg3KY13F45rAlmKyckgne9SHbCH" + - "+Lvm3XkkIqKmeHfJ3QTf7bpz6eErn3CxRrGm5JWblcYbVT+smjboJ9A0BXifqINYLy3qGc" + - "AnNRkPq8OUREj2sU1qWKagUIgA/Vk2WyZhcUiApJPHI4fwv9"; - public static final String Intermediate_CRL_RL_08_01_crl = - "MIIBWjCBxAIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wOC4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqAyMDAwCg" + - "YDVR0UBAMCAQEwDQYDVR0bAQH/BAMCAQEwEwYDVR0jBAwwCoAIHjB7z6EiuQowDQYJKoZI" + - "hvcNAQEFBQADgYEAkjF0oERt5XW2i70gyspkEYIHyGCHnqngky5yuwQSRrlW7t0vGdKV7W" + - "50evTeSVV41uhi1MBcccpx1MdRcB5vsatFSSKcKx4NF3PuHXxXCm2HkfXQy4K5zftE3jOZ" + - "5s+yTHiw3s/QSErtHRca+TQcEZwamI+p402TEa6e82l6xHI="; - public static final String End_Certificate_RL_08_01_crt = - "MIIChzCCAfCgAwIBAgICAMYwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDguMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA4LjAxMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfEMqWMqk3Rre5m4ILtQIz45JImvU379Al/S6t" + - "2y/TzimJc4nhIKQp80VaZA/gwu/DcvMgJPM+FFz5U5rRkDaYASsc34tZUESF5LC6ZbtGqf" + - "J96IKdajvkGLsHyI7dseuwaQ0FlOwcmKMSR898MGNNbKxaQNLEXsIFypRDsN6JhwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECMT22ARjB1ABMBMGA1UdIwQMMAqACB4we8+hIrkKMA0GCSqGSIb3DQEBBQUAA4GBAIaP" + - "EqI7oHl/+h3MszG4VB1Va9NTN0kaysTyjQSVBi9jhOlPkzuXc2wI1bymBhatHEn6OrgP13" + - "vsOiH2BiyudYcYjKpwI4FUiyKLIc0CXzM0VYFoMzb91QtsK1EnvAPDKNYVVFXrL7ABVIK4" + - "hU6HfMMUbnpKWBxT5274iHScX8tL"; - public static final String[] TEST_75_DATA = new String[] { - Intermediate_Certificate_RL_08_01_crt, - Intermediate_CRL_RL_08_01_crl, - End_Certificate_RL_08_01_crt - }; - - /* - * test76 - * - */ - - public static final String Intermediate_Certificate_RL_09_01_crt = - "MIICljCCAf+gAwIBAgICAMcwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9EMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxUcnVzdCBBbmNob3IwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNVBAMTDENBMS1STC4wOS4wMTCBnzANBg" + - "kqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsvkvLv5fMFYvohaXO8a7GgU4rDHe9iL7LP1VeNUg" + - "GIdJGqPEnuggQ/guhrBHafGh1NtmlEbmPJ4WQ99dBbPHHeO8sfCgkmWC0SqPODoI+t3qJE" + - "kf2z9dWoAij15RXPliywZz+S6bTtcEQAREyBQ6M8/HJ83wRXp/uCpdPOSxVPkCAwEAAaNj" + - "MGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwFgYDVR0gBA8wDTALBglghk" + - "gBZQMBMAEwEQYDVR0OBAoECISY4bvGMEBTMBMGA1UdIwQMMAqACKua6/nC51SPMA0GCSqG" + - "SIb3DQEBBQUAA4GBAAd7g+dWso4V/Vr+QIoNLueCBAYWdOF+Yz3VeomcsDAs2V8E+xcZaq" + - "jo2LrMygYCeMxVfXx/ZdhLPOaZ+ahNAbk+nWRwj35JdTNAAbMMWFdZUgR6N+uzx1v7i86p" + - "AWUpRJ9IYPgUoQ5pmjdf3Ru1nrLfRt4yp+kNHWp6IL/+MwcM"; - public static final String Intermediate_CRL_RL_09_01_crl = - "MIIBXDCBxgIBATANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS" + - "5TLiBHb3Zlcm5tZW50MQwwCgYDVQQLEwNEb2QxEDAOBgNVBAsTB1Rlc3RpbmcxFTATBgNV" + - "BAMTDENBMS1STC4wOS4wMRcNOTkwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMTAwWqA0MDIwCg" + - "YDVR0UBAMCAQEwDwYDVR0cAQH/BAUwA4IB/zATBgNVHSMEDDAKgAiEmOG7xjBAUzANBgkq" + - "hkiG9w0BAQUFAAOBgQAKTXYgqlP+upFIwOSpdaVKDT8aqFzY9nSIsxHg5Wdl43U7p44LvQ" + - "lW8XKhw74oQl1ExU5s7mDaEqB0JIozGzmoNyKsErgWKNW+lpKSxR5+1EHOB6Oo2KijpTsv" + - "GFrHFCnF09f9JaTaMRIXOljx3rMO1UZsftKy/L9z3aUz8hQRnQ=="; - public static final String End_Certificate_RL_09_01_crt = - "MIIChzCCAfCgAwIBAgICAMgwDQYJKoZIhvcNAQEFBQAwXjELMAkGA1UEBhMCVVMxGDAWBg" + - "NVBAoTD1UuUy4gR292ZXJubWVudDEMMAoGA1UECxMDRG9kMRAwDgYDVQQLEwdUZXN0aW5n" + - "MRUwEwYDVQQDEwxDQTEtUkwuMDkuMDEwHhcNOTgwMTAxMTIwMTAwWhcNNDgwMTAxMTIwMT" + - "AwWjBgMQswCQYDVQQGEwJVUzEYMBYGA1UEChMPVS5TLiBHb3Zlcm5tZW50MQwwCgYDVQQL" + - "EwNEb0QxEDAOBgNVBAsTB1Rlc3RpbmcxFzAVBgNVBAMTDlVzZXIxLVJMLjA5LjAxMIGfMA" + - "0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDpz09VCXzAhH4/ifMk0RAzaBqJCXaHHqAdO/TW" + - "6uvOVtl+fGvWXhXmSSCUfzg5xBqdUXrqcyxOME3vdgF1uOFZ4q2K6+Zuxmm+GCOCIpe+Gl" + - "Jzqz4WKXG0iaXXQOYa56itNc/6Z6D/aAjNJavI19w0lmb9l6U2WBfn3LywxHp4dwIDAQAB" + - "o1IwUDAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0gBA8wDTALBglghkgBZQMBMAEwEQYDVR0OBA" + - "oECOri1JgnJfLjMBMGA1UdIwQMMAqACISY4bvGMEBTMA0GCSqGSIb3DQEBBQUAA4GBADmV" + - "Ee0xy25Z0HtmWwprKPjJDr/p7TgzbmNC58pUPkgtxnJFP4yrzNB9FQBWSfnjZpzQkLSU7i" + - "7O6cf5HkqjQqoPErDnJLWgGzjbF80v2IIyZk7rEpAAM4MwjIk7hFvJK8QkTht9F4N1zj2X" + - "0TQkmlbo9Z4SFj/3fsbl9h2GdKuU"; - public static final String[] TEST_76_DATA = new String[] { - Intermediate_Certificate_RL_09_01_crt, - Intermediate_CRL_RL_09_01_crl, - End_Certificate_RL_09_01_crt - }; - -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/NamedCurveTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/NamedCurveTest.java deleted file mode 100644 index aeb0871d..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/NamedCurveTest.java +++ /dev/null @@ -1,341 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.asn1.nist.NISTNamedCurves; -import org.bouncycastle.asn1.sec.SECNamedCurves; -import org.bouncycastle.asn1.teletrust.TeleTrusTNamedCurves; -import org.bouncycastle.asn1.x9.X962NamedCurves; -import org.bouncycastle.asn1.cryptopro.ECGOST3410NamedCurves; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECNamedCurveSpec; -import org.bouncycastle.util.test.SimpleTest; - -import javax.crypto.KeyAgreement; -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.interfaces.ECPrivateKey; -import java.security.interfaces.ECPublicKey; -import java.security.spec.ECGenParameterSpec; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Set; -import java.util.HashSet; - -public class NamedCurveTest - extends SimpleTest -{ - private static Hashtable CURVE_NAMES = new Hashtable(); - private static Hashtable CURVE_ALIASES = new Hashtable(); - - static - { - CURVE_NAMES.put("prime192v1", "prime192v1"); // X9.62 - CURVE_NAMES.put("sect571r1", "sect571r1"); // sec - CURVE_NAMES.put("secp224r1", "secp224r1"); - CURVE_NAMES.put("B-409", SECNamedCurves.getName(NISTNamedCurves.getOID("B-409"))); // nist - CURVE_NAMES.put("P-521", SECNamedCurves.getName(NISTNamedCurves.getOID("P-521"))); - CURVE_NAMES.put("brainpoolp160r1", "brainpoolp160r1"); // TeleTrusT - - CURVE_ALIASES.put("secp192r1", "prime192v1"); - CURVE_ALIASES.put("secp256r1", "prime256v1"); - } - - public void testCurve( - String name) - throws Exception - { - ECGenParameterSpec ecSpec = new ECGenParameterSpec(name); - - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDH", "BC"); - - g.initialize(ecSpec, new SecureRandom()); - - // - // a side - // - KeyPair aKeyPair = g.generateKeyPair(); - - KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDHC", "BC"); - - aKeyAgree.init(aKeyPair.getPrivate()); - - // - // b side - // - KeyPair bKeyPair = g.generateKeyPair(); - - KeyAgreement bKeyAgree = KeyAgreement.getInstance("ECDHC", "BC"); - - bKeyAgree.init(bKeyPair.getPrivate()); - - // - // agreement - // - aKeyAgree.doPhase(bKeyPair.getPublic(), true); - bKeyAgree.doPhase(aKeyPair.getPublic(), true); - - BigInteger k1 = new BigInteger(aKeyAgree.generateSecret()); - BigInteger k2 = new BigInteger(bKeyAgree.generateSecret()); - - if (!k1.equals(k2)) - { - fail("2-way test failed"); - } - - // - // public key encoding test - // - byte[] pubEnc = aKeyPair.getPublic().getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance("ECDH", "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - ECPublicKey pubKey = (ECPublicKey)keyFac.generatePublic(pubX509); - - if (!pubKey.getW().equals(((ECPublicKey)aKeyPair.getPublic()).getW())) - { - fail("public key encoding (Q test) failed"); - } - - if (!(pubKey.getParams() instanceof ECNamedCurveSpec)) - { - fail("public key encoding not named curve"); - } - - // - // private key encoding test - // - byte[] privEnc = aKeyPair.getPrivate().getEncoded(); - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - ECPrivateKey privKey = (ECPrivateKey)keyFac.generatePrivate(privPKCS8); - - if (!privKey.getS().equals(((ECPrivateKey)aKeyPair.getPrivate()).getS())) - { - fail("private key encoding (S test) failed"); - } - - if (!(privKey.getParams() instanceof ECNamedCurveSpec)) - { - fail("private key encoding not named curve"); - } - - ECNamedCurveSpec privSpec = (ECNamedCurveSpec)privKey.getParams(); - if (!(privSpec.getName().equals(name) || privSpec.getName().equals(CURVE_NAMES.get(name)))) - { - fail("private key encoding wrong named curve. Expected: " + CURVE_NAMES.get(name) + " got " + privSpec.getName()); - } - } - - public void testECDSA( - String name) - throws Exception - { - ECGenParameterSpec ecSpec = new ECGenParameterSpec(name); - - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - g.initialize(ecSpec, new SecureRandom()); - - Signature sgr = Signature.getInstance("ECDSA", "BC"); - KeyPair pair = g.generateKeyPair(); - PrivateKey sKey = pair.getPrivate(); - PublicKey vKey = pair.getPublic(); - - sgr.initSign(sKey); - - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail(name + " verification failed"); - } - - // - // public key encoding test - // - byte[] pubEnc = vKey.getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance("ECDH", "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - ECPublicKey pubKey = (ECPublicKey)keyFac.generatePublic(pubX509); - - if (!pubKey.getW().equals(((ECPublicKey)vKey).getW())) - { - fail("public key encoding (Q test) failed"); - } - - if (!(pubKey.getParams() instanceof ECNamedCurveSpec)) - { - fail("public key encoding not named curve"); - } - - // - // private key encoding test - // - byte[] privEnc = sKey.getEncoded(); - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - ECPrivateKey privKey = (ECPrivateKey)keyFac.generatePrivate(privPKCS8); - - if (!privKey.getS().equals(((ECPrivateKey)sKey).getS())) - { - fail("private key encoding (S test) failed"); - } - - if (!(privKey.getParams() instanceof ECNamedCurveSpec)) - { - fail("private key encoding not named curve"); - } - - ECNamedCurveSpec privSpec = (ECNamedCurveSpec)privKey.getParams(); - if (!privSpec.getName().equalsIgnoreCase(name) - && !privSpec.getName().equalsIgnoreCase((String)CURVE_ALIASES.get(name))) - { - fail("private key encoding wrong named curve. Expected: " + name + " got " + privSpec.getName()); - } - } - - public void testECGOST( - String name) - throws Exception - { - ECGenParameterSpec ecSpec = new ECGenParameterSpec(name); - - KeyPairGenerator g = KeyPairGenerator.getInstance("ECGOST3410", "BC"); - - g.initialize(ecSpec, new SecureRandom()); - - Signature sgr = Signature.getInstance("ECGOST3410", "BC"); - KeyPair pair = g.generateKeyPair(); - PrivateKey sKey = pair.getPrivate(); - PublicKey vKey = pair.getPublic(); - - sgr.initSign(sKey); - - byte[] message = new byte[] { (byte)'a', (byte)'b', (byte)'c' }; - - sgr.update(message); - - byte[] sigBytes = sgr.sign(); - - sgr.initVerify(vKey); - - sgr.update(message); - - if (!sgr.verify(sigBytes)) - { - fail(name + " verification failed"); - } - - // - // public key encoding test - // - byte[] pubEnc = vKey.getEncoded(); - KeyFactory keyFac = KeyFactory.getInstance("ECGOST3410", "BC"); - X509EncodedKeySpec pubX509 = new X509EncodedKeySpec(pubEnc); - ECPublicKey pubKey = (ECPublicKey)keyFac.generatePublic(pubX509); - - if (!pubKey.getW().equals(((ECPublicKey)vKey).getW())) - { - fail("public key encoding (Q test) failed"); - } - - if (!(pubKey.getParams() instanceof ECNamedCurveSpec)) - { - fail("public key encoding not named curve"); - } - - // - // private key encoding test - // - byte[] privEnc = sKey.getEncoded(); - PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc); - ECPrivateKey privKey = (ECPrivateKey)keyFac.generatePrivate(privPKCS8); - - if (!privKey.getS().equals(((ECPrivateKey)sKey).getS())) - { - fail("GOST private key encoding (S test) failed"); - } - - if (!(privKey.getParams() instanceof ECNamedCurveSpec)) - { - fail("GOST private key encoding not named curve"); - } - - ECNamedCurveSpec privSpec = (ECNamedCurveSpec)privKey.getParams(); - if (!privSpec.getName().equalsIgnoreCase(name) - && !privSpec.getName().equalsIgnoreCase((String)CURVE_ALIASES.get(name))) - { - fail("GOST private key encoding wrong named curve. Expected: " + name + " got " + privSpec.getName()); - } - } - - public String getName() - { - return "NamedCurve"; - } - - public void performTest() - throws Exception - { - testCurve("prime192v1"); // X9.62 - testCurve("sect571r1"); // sec - testCurve("secp224r1"); - testCurve("B-409"); // nist - testCurve("P-521"); - testCurve("brainpoolp160r1"); // TeleTrusT - - for (Enumeration en = X962NamedCurves.getNames(); en.hasMoreElements();) - { - testECDSA((String)en.nextElement()); - } - - // these curves can't be used under JDK 1.5 - Set problemCurves = new HashSet(); - - problemCurves.add("secp256k1"); - problemCurves.add("secp160k1"); - problemCurves.add("secp224k1"); - problemCurves.add("secp192k1"); - - for (Enumeration en = SECNamedCurves.getNames(); en.hasMoreElements();) - { - String curveName = (String)en.nextElement(); - - if (!problemCurves.contains(curveName)) - { - testECDSA(curveName); - } - } - - for (Enumeration en = TeleTrusTNamedCurves.getNames(); en.hasMoreElements();) - { - testECDSA((String)en.nextElement()); - } - - for (Enumeration en = ECGOST3410NamedCurves.getNames(); en.hasMoreElements();) - { - testECGOST((String)en.nextElement()); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new NamedCurveTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/NetscapeCertRequestTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/NetscapeCertRequestTest.java deleted file mode 100644 index d670f54b..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/NetscapeCertRequestTest.java +++ /dev/null @@ -1,130 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.Security; - -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.ASN1Sequence; -import org.bouncycastle.asn1.DEROutputStream; -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.asn1.x509.AlgorithmIdentifier; -import org.bouncycastle.jce.netscape.NetscapeCertRequest; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTestResult; -import org.bouncycastle.util.test.Test; -import org.bouncycastle.util.test.TestResult; - -/** - */ -public class NetscapeCertRequestTest - implements Test -{ - /* from NS 4.75 */ - static final String test1 = - "MIIBRzCBsTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAmwdh+LJXQ8AtXczo"+ - "4EIGfXjpmDwsoIRpPaXEx1CBHhpon/Dpo/o5Vw2WoWNICXj5lmqhftIpCPO9qKxx"+ - "85x6k/fuyTPH8P02hkmscAYsgqOgb/1yRCNXFryuFOATqxw1tsuye5Q3lTU9JCLU"+ - "UilQ6BV8n3fm2egtPPUaJEuCvcsCAwEAARYNZml4ZWQtZm9yLW5vdzANBgkqhkiG"+ - "9w0BAQQFAAOBgQAImbJD6xHbJtXl6kOTbCFoMnDk7U0o6pHy9l56DYVsiluXegiY"+ - "6twB4o7OWsrqTb+gVvzK65FfP+NBVVzxY8UzcjbqC51yvO/9wnpUsIBqD/Gvi1gE"+ - "qvw7RHwVEhdzsvLwlL22G8CfDxHnWLww39j8uRJsmoNiKJly3BcsZkLd9g=="; - - public String getName() - { - return "NetscapeCertRequest"; - } - - public TestResult perform() - { - try - { - String challenge = "fixed-for-now"; - - byte data [] = Base64.decode (test1); - - ASN1InputStream in = new ASN1InputStream (new ByteArrayInputStream(data)); - ASN1Sequence spkac = (ASN1Sequence)in.readObject (); - // System.out.println("SPKAC: \n"+DERDump.dumpAsString (spkac)); - - - NetscapeCertRequest nscr = new NetscapeCertRequest (spkac); - - if (!nscr.verify (challenge)) - { - return new SimpleTestResult(false, getName() + ": 1 - not verified"); - } - - //now try to generate one - KeyPairGenerator kpg = - KeyPairGenerator.getInstance (nscr.getKeyAlgorithm().getObjectId ().getId(), "BC"); - - kpg.initialize (1024); - - KeyPair kp = kpg.genKeyPair(); - - nscr.setPublicKey (kp.getPublic()); - nscr.sign (kp.getPrivate()); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - DEROutputStream deros = new DEROutputStream (baos); - deros.writeObject (nscr); - deros.close(); - - - ASN1InputStream in2 = - new ASN1InputStream (new ByteArrayInputStream(baos.toByteArray())); - ASN1Sequence spkac2 = (ASN1Sequence)in2.readObject (); - - // System.out.println("SPKAC2: \n"+DERDump.dumpAsString (spkac2)); - - NetscapeCertRequest nscr2 = new NetscapeCertRequest (spkac2); - - if (!nscr2.verify (challenge)) - { - return new SimpleTestResult(false, getName() + ": 2 - not verified"); - } - - //lets build it from scratch - - - challenge = "try it"; - - NetscapeCertRequest nscr3 = - new NetscapeCertRequest (challenge, - new AlgorithmIdentifier(PKCSObjectIdentifiers.sha1WithRSAEncryption, null), - kp.getPublic()); - - nscr3.sign (kp.getPrivate()); - - // System.out.println("SPKAC3: \n"+DERDump.dumpAsString (nscr3)); - - if (nscr3.verify (challenge)) - { - return new SimpleTestResult(true, getName() + ": Okay"); - } - else - { - return new SimpleTestResult(false, getName() + ": 3 - not verified"); - } - } - catch (Exception e) - { - return new SimpleTestResult(false, getName() + ": exception - " + e.toString()); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - Test test = new NetscapeCertRequestTest(); - TestResult result = test.perform(); - - System.out.println(result.toString()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/NoekeonTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/NoekeonTest.java deleted file mode 100644 index c1c7b668..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/NoekeonTest.java +++ /dev/null @@ -1,152 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.spec.SecretKeySpec; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.security.Key; -import java.security.Security; - -/** - * basic test class for SEED - */ -public class NoekeonTest - extends BaseBlockCipherTest -{ - static String[] cipherTests = - { - "128", - "b1656851699e29fa24b70148503d2dfc", - "2a78421b87c7d0924f26113f1d1349b2", - "e2f687e07b75660ffc372233bc47532c" - }; - - public NoekeonTest() - { - super("Noekeon"); - } - - public void test( - int strength, - byte[] keyBytes, - byte[] input, - byte[] output) - throws Exception - { - Key key; - Cipher in, out; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - key = new SecretKeySpec(keyBytes, "Noekeon"); - - in = Cipher.getInstance("Noekeon/ECB/NoPadding", "BC"); - out = Cipher.getInstance("Noekeon/ECB/NoPadding", "BC"); - - try - { - out.init(Cipher.ENCRYPT_MODE, key); - } - catch (Exception e) - { - fail("Noekeon failed initialisation - " + e.toString(), e); - } - - try - { - in.init(Cipher.DECRYPT_MODE, key); - } - catch (Exception e) - { - fail("Noekeoen failed initialisation - " + e.toString(), e); - } - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - try - { - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - } - catch (IOException e) - { - fail("Noekeon failed encryption - " + e.toString(), e); - } - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!areEqual(bytes, output)) - { - fail("Noekeon failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - try - { - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - } - catch (Exception e) - { - fail("Noekeon failed encryption - " + e.toString(), e); - } - - if (!areEqual(bytes, input)) - { - fail("Noekeon failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - } - - public void performTest() - throws Exception - { - for (int i = 0; i != cipherTests.length; i += 4) - { - test(Integer.parseInt(cipherTests[i]), - Hex.decode(cipherTests[i + 1]), - Hex.decode(cipherTests[i + 2]), - Hex.decode(cipherTests[i + 3])); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new NoekeonTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/OCBTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/OCBTest.java deleted file mode 100644 index c693ce8e..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/OCBTest.java +++ /dev/null @@ -1,104 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Key; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class OCBTest - extends SimpleTest -{ - public String getName() - { - return "OCB"; - } - - public void performTest() - throws Exception - { - checkRegistrations(); - } - - private void checkRegistrations() - throws Exception - { - String[] ciphers = new String[] { "AES", "NOEKEON", "Twofish", "CAST6", "SEED", "Serpent", "RC6", "CAMELLIA" }; - String[] cipherText = new String[] - { - "BEA5E8798DBE7110031C144DA0B2612213CC8B747807121A4CBB3E4BD6B456AF", - "a2545b927e0f2e6db2998e20b17d5fc0564dcab63b748327e2ef4eaed88cb059", - "1cfafe72f7181cae331610c116345e51fc356b379aca04da2a53337c5428d8e4", - "5b9b738b2ac7000b33b89dd4eec18dd853f4f7c1d9e17b565405f17a0a8c8b63", - "fcdbcee69d02c69858ed4569f78b81920b3027cdb7f1f154634aa5ace9e6ba29", - "4f7154cb34558940e85db7d3e96ac6c9cb0d9c1b00b18e82e15d1be83deef9df", - "23f3e450c4c7199563a0ed601a5c60d75eb88db2a0d090ae5e84d98438a146aa", - "ac13ce9db4af148e910a813fc728e5785e23b1bf1d04a961a3f95f356b9417ab" - }; - - for (int i = 0; i < ciphers.length; i++) - { - ocbTest(ciphers[i], cipherText[i]); - } - } - - private void ocbTest(String cipher, String cText) - throws Exception - { - byte[] K = Hex.decode( - "000102030405060708090A0B0C0D0E0F"); - byte[] P = Hex.decode( - "000102030405060708090A0B0C0D0E0F"); - byte[] N = Hex.decode("000102030405060708090A0B"); - String T = "4CBB3E4BD6B456AF"; - byte[] C = Hex.decode(cText); - - Key key; - Cipher in, out; - - key = new SecretKeySpec(K, cipher); - - in = Cipher.getInstance(cipher + "/OCB/NoPadding", "BC"); - out = Cipher.getInstance(cipher + "/OCB/NoPadding", "BC"); - - in.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] enc = in.doFinal(P); - if (!areEqual(enc, C)) - { - fail("ciphertext doesn't match in OCB got " + new String(Hex.encode(enc))); - } - - out.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(N)); - - byte[] dec = out.doFinal(C); - if (!areEqual(dec, P)) - { - fail("plaintext doesn't match in OCB"); - } - - try - { - in = Cipher.getInstance(cipher + "/OCB/PKCS5Padding", "BC"); - - fail("bad padding missed in OCB"); - } - catch (NoSuchPaddingException e) - { - // expected - } - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new OCBTest()); - } -}
\ No newline at end of file diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java deleted file mode 100644 index d5781f4c..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/PBETest.java +++ /dev/null @@ -1,672 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.AlgorithmParameters; -import java.security.SecureRandom; -import java.security.Security; -import java.security.spec.InvalidParameterSpecException; -import java.security.spec.KeySpec; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.Mac; -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.PBEParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.asn1.bc.BCObjectIdentifiers; -import org.bouncycastle.crypto.Digest; -import org.bouncycastle.crypto.PBEParametersGenerator; -import org.bouncycastle.crypto.digests.SHA1Digest; -import org.bouncycastle.crypto.digests.SHA256Digest; -import org.bouncycastle.crypto.generators.OpenSSLPBEParametersGenerator; -import org.bouncycastle.crypto.generators.PKCS12ParametersGenerator; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.params.ParametersWithIV; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * test out the various PBE modes, making sure the JCE implementations - * are compatible woth the light weight ones. - */ -public class PBETest - extends SimpleTest -{ - private class OpenSSLTest - extends SimpleTest - { - char[] password; - String baseAlgorithm; - String algorithm; - int keySize; - int ivSize; - - OpenSSLTest( - String baseAlgorithm, - String algorithm, - int keySize, - int ivSize) - { - this.password = algorithm.toCharArray(); - this.baseAlgorithm = baseAlgorithm; - this.algorithm = algorithm; - this.keySize = keySize; - this.ivSize = ivSize; - } - - public String getName() - { - return "OpenSSLPBE"; - } - - public void performTest() - throws Exception - { - byte[] salt = new byte[16]; - int iCount = 100; - - for (int i = 0; i != salt.length; i++) - { - salt[i] = (byte)i; - } - - OpenSSLPBEParametersGenerator pGen = new OpenSSLPBEParametersGenerator(); - - pGen.init( - PBEParametersGenerator.PKCS5PasswordToBytes(password), - salt, - iCount); - - ParametersWithIV params = (ParametersWithIV)pGen.generateDerivedParameters(keySize, ivSize); - - SecretKeySpec encKey = new SecretKeySpec(((KeyParameter)params.getParameters()).getKey(), baseAlgorithm); - - Cipher c; - - if (baseAlgorithm.equals("RC4")) - { - c = Cipher.getInstance(baseAlgorithm, "BC"); - - c.init(Cipher.ENCRYPT_MODE, encKey); - } - else - { - c = Cipher.getInstance(baseAlgorithm + "/CBC/PKCS7Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, encKey, new IvParameterSpec(params.getIV())); - } - - byte[] enc = c.doFinal(salt); - - c = Cipher.getInstance(algorithm, "BC"); - - PBEKeySpec keySpec = new PBEKeySpec(password, salt, iCount); - SecretKeyFactory fact = SecretKeyFactory.getInstance(algorithm, "BC"); - - c.init(Cipher.DECRYPT_MODE, fact.generateSecret(keySpec)); - - byte[] dec = c.doFinal(enc); - - if (!Arrays.areEqual(salt, dec)) - { - fail("" + algorithm + "failed encryption/decryption test"); - } - } - } - - private class PKCS12Test - extends SimpleTest - { - char[] password; - String baseAlgorithm; - String algorithm; - Digest digest; - int keySize; - int ivSize; - - PKCS12Test( - String baseAlgorithm, - String algorithm, - Digest digest, - int keySize, - int ivSize) - { - this.password = algorithm.toCharArray(); - this.baseAlgorithm = baseAlgorithm; - this.algorithm = algorithm; - this.digest = digest; - this.keySize = keySize; - this.ivSize = ivSize; - } - - public String getName() - { - return "PKCS12PBE"; - } - - public void performTest() - throws Exception - { - byte[] salt = new byte[digest.getDigestSize()]; - int iCount = 100; - - digest.doFinal(salt, 0); - - PKCS12ParametersGenerator pGen = new PKCS12ParametersGenerator(digest); - - pGen.init( - PBEParametersGenerator.PKCS12PasswordToBytes(password), - salt, - iCount); - - ParametersWithIV params = (ParametersWithIV)pGen.generateDerivedParameters(keySize, ivSize); - - SecretKeySpec encKey = new SecretKeySpec(((KeyParameter)params.getParameters()).getKey(), baseAlgorithm); - - Cipher c; - - if (baseAlgorithm.equals("RC4")) - { - c = Cipher.getInstance(baseAlgorithm, "BC"); - - c.init(Cipher.ENCRYPT_MODE, encKey); - } - else - { - c = Cipher.getInstance(baseAlgorithm + "/CBC/PKCS7Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, encKey, new IvParameterSpec(params.getIV())); - } - - byte[] enc = c.doFinal(salt); - - c = Cipher.getInstance(algorithm, "BC"); - - PBEKeySpec keySpec = new PBEKeySpec(password, salt, iCount); - SecretKeyFactory fact = SecretKeyFactory.getInstance(algorithm, "BC"); - - c.init(Cipher.DECRYPT_MODE, fact.generateSecret(keySpec)); - - byte[] dec = c.doFinal(enc); - - if (!Arrays.areEqual(salt, dec)) - { - fail("" + algorithm + "failed encryption/decryption test"); - } - - // - // get the parameters - // - AlgorithmParameters param = checkParameters(c, salt, iCount); - - // - // try using parameters - // - c = Cipher.getInstance(algorithm, "BC"); - - keySpec = new PBEKeySpec(password); - - c.init(Cipher.DECRYPT_MODE, fact.generateSecret(keySpec), param); - - checkParameters(c, salt, iCount); - - dec = c.doFinal(enc); - - if (!Arrays.areEqual(salt, dec)) - { - fail("" + algorithm + "failed encryption/decryption test"); - } - - // - // try using PBESpec - // - c = Cipher.getInstance(algorithm, "BC"); - - keySpec = new PBEKeySpec(password); - - c.init(Cipher.DECRYPT_MODE, fact.generateSecret(keySpec), param.getParameterSpec(PBEParameterSpec.class)); - - checkParameters(c, salt, iCount); - - dec = c.doFinal(enc); - - if (!Arrays.areEqual(salt, dec)) - { - fail("" + algorithm + "failed encryption/decryption test"); - } - } - - private AlgorithmParameters checkParameters(Cipher c, byte[] salt, int iCount) - throws InvalidParameterSpecException - { - AlgorithmParameters param = c.getParameters(); - PBEParameterSpec spec = (PBEParameterSpec)param.getParameterSpec(PBEParameterSpec.class); - - if (!Arrays.areEqual(salt, spec.getSalt())) - { - fail("" + algorithm + "failed salt test"); - } - - if (iCount != spec.getIterationCount()) - { - fail("" + algorithm + "failed count test"); - } - return param; - } - } - - private PKCS12Test[] pkcs12Tests = { - new PKCS12Test("DESede", "PBEWITHSHAAND3-KEYTRIPLEDES-CBC", new SHA1Digest(), 192, 64), - new PKCS12Test("DESede", "PBEWITHSHAAND2-KEYTRIPLEDES-CBC", new SHA1Digest(), 128, 64), - new PKCS12Test("RC4", "PBEWITHSHAAND128BITRC4", new SHA1Digest(), 128, 0), - new PKCS12Test("RC4", "PBEWITHSHAAND40BITRC4", new SHA1Digest(), 40, 0), - new PKCS12Test("RC2", "PBEWITHSHAAND128BITRC2-CBC", new SHA1Digest(), 128, 64), - new PKCS12Test("RC2", "PBEWITHSHAAND40BITRC2-CBC", new SHA1Digest(), 40, 64), - new PKCS12Test("AES", "PBEWithSHA1And128BitAES-CBC-BC", new SHA1Digest(), 128, 128), - new PKCS12Test("AES", "PBEWithSHA1And192BitAES-CBC-BC", new SHA1Digest(), 192, 128), - new PKCS12Test("AES", "PBEWithSHA1And256BitAES-CBC-BC", new SHA1Digest(), 256, 128), - new PKCS12Test("AES", "PBEWithSHA256And128BitAES-CBC-BC", new SHA256Digest(), 128, 128), - new PKCS12Test("AES", "PBEWithSHA256And192BitAES-CBC-BC", new SHA256Digest(), 192, 128), - new PKCS12Test("AES", "PBEWithSHA256And256BitAES-CBC-BC", new SHA256Digest(), 256, 128), - new PKCS12Test("Twofish","PBEWithSHAAndTwofish-CBC", new SHA1Digest(), 256, 128), - new PKCS12Test("IDEA", "PBEWithSHAAndIDEA-CBC", new SHA1Digest(), 128, 64), - new PKCS12Test("AES", BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes128_cbc.getId(), new SHA1Digest(), 128, 128), - new PKCS12Test("AES", BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes192_cbc.getId(), new SHA1Digest(), 192, 128), - new PKCS12Test("AES", BCObjectIdentifiers.bc_pbe_sha1_pkcs12_aes256_cbc.getId(), new SHA1Digest(), 256, 128), - new PKCS12Test("AES", BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes128_cbc.getId(), new SHA256Digest(), 128, 128), - new PKCS12Test("AES", BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes192_cbc.getId(), new SHA256Digest(), 192, 128), - new PKCS12Test("AES", BCObjectIdentifiers.bc_pbe_sha256_pkcs12_aes256_cbc.getId(), new SHA256Digest(), 256, 128), - }; - - private OpenSSLTest openSSLTests[] = { - new OpenSSLTest("AES", "PBEWITHMD5AND128BITAES-CBC-OPENSSL", 128, 128), - new OpenSSLTest("AES", "PBEWITHMD5AND192BITAES-CBC-OPENSSL", 192, 128), - new OpenSSLTest("AES", "PBEWITHMD5AND256BITAES-CBC-OPENSSL", 256, 128) - }; - - static byte[] message = Hex.decode("4869205468657265"); - - private byte[] hMac1 = Hex.decode("bcc42174ccb04f425d9a5c8c4a95d6fd7c372911"); - private byte[] hMac2 = Hex.decode("cb1d8bdb6aca9e3fa8980d6eb41ab28a7eb2cfd6"); - private byte[] hMac3 = Hex.decode("514aa173a302c770689269aac08eb8698e5879ac"); - - private Cipher makePBECipherUsingParam( - String algorithm, - int mode, - char[] password, - byte[] salt, - int iterationCount) - throws Exception - { - PBEKeySpec pbeSpec = new PBEKeySpec(password); - SecretKeyFactory keyFact = SecretKeyFactory.getInstance(algorithm, "BC"); - PBEParameterSpec defParams = new PBEParameterSpec(salt, iterationCount); - - Cipher cipher = Cipher.getInstance(algorithm, "BC"); - - cipher.init(mode, keyFact.generateSecret(pbeSpec), defParams); - - return cipher; - } - - private Cipher makePBECipherWithoutParam( - String algorithm, - int mode, - char[] password, - byte[] salt, - int iterationCount) - throws Exception - { - PBEKeySpec pbeSpec = new PBEKeySpec(password, salt, iterationCount); - SecretKeyFactory keyFact = SecretKeyFactory.getInstance(algorithm, "BC"); - - Cipher cipher = Cipher.getInstance(algorithm, "BC"); - - cipher.init(mode, keyFact.generateSecret(pbeSpec)); - - return cipher; - } - - public void testPBEHMac( - String hmacName, - byte[] output) - { - SecretKey key; - byte[] out; - Mac mac; - - try - { - SecretKeyFactory fact = SecretKeyFactory.getInstance(hmacName, "BC"); - - key = fact.generateSecret(new PBEKeySpec("hello".toCharArray())); - - mac = Mac.getInstance(hmacName, "BC"); - } - catch (Exception e) - { - fail("Failed - exception " + e.toString(), e); - return; - } - - try - { - mac.init(key, new PBEParameterSpec(new byte[20], 100)); - } - catch (Exception e) - { - fail("Failed - exception " + e.toString(), e); - return; - } - - mac.reset(); - - mac.update(message, 0, message.length); - - out = mac.doFinal(); - - if (!Arrays.areEqual(out, output)) - { - fail("Failed - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(out))); - } - } - - public void testPBEonSecretKeyHmac( - String hmacName, - byte[] output) - { - SecretKey key; - byte[] out; - Mac mac; - - try - { - SecretKeyFactory fact = SecretKeyFactory.getInstance(hmacName, "BC"); - - key = fact.generateSecret(new PBEKeySpec("hello".toCharArray(), new byte[20], 100, 160)); - - mac = Mac.getInstance("HMAC-SHA1", "BC"); - } - catch (Exception e) - { - fail("Failed - exception " + e.toString(), e); - return; - } - - try - { - mac.init(key); - } - catch (Exception e) - { - fail("Failed - exception " + e.toString(), e); - return; - } - - mac.reset(); - - mac.update(message, 0, message.length); - - out = mac.doFinal(); - - if (!Arrays.areEqual(out, output)) - { - fail("Failed - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(out))); - } - } - - private void testCipherNameWithWrap(String name, String simpleName) - throws Exception - { - KeyGenerator kg = KeyGenerator.getInstance("AES"); - kg.init(new SecureRandom()); - SecretKey key = kg.generateKey(); - - byte[] salt = { - (byte)0xc7, (byte)0x73, (byte)0x21, (byte)0x8c, - (byte)0x7e, (byte)0xc8, (byte)0xee, (byte)0x99 - }; - char[] password = { 'p','a','s','s','w','o','r','d' }; - - PBEParameterSpec pbeParamSpec = new PBEParameterSpec(salt, 20); - PBEKeySpec pbeKeySpec = new PBEKeySpec(password); - SecretKeyFactory keyFac = - SecretKeyFactory.getInstance(name); - SecretKey pbeKey = keyFac.generateSecret(pbeKeySpec); - Cipher pbeEncryptCipher = Cipher.getInstance(name, "BC"); - - pbeEncryptCipher.init(Cipher.WRAP_MODE, pbeKey, pbeParamSpec); - - byte[] symKeyBytes = pbeEncryptCipher.wrap(key); - - Cipher simpleCipher = Cipher.getInstance(simpleName, "BC"); - - simpleCipher.init(Cipher.UNWRAP_MODE, pbeKey, pbeParamSpec); - - SecretKey unwrappedKey = (SecretKey)simpleCipher.unwrap(symKeyBytes, "AES", Cipher.SECRET_KEY); - - if (!Arrays.areEqual(unwrappedKey.getEncoded(), key.getEncoded())) - { - fail("key mismatch on unwrapping"); - } - } - - public void performTest() - throws Exception - { - byte[] input = Hex.decode("1234567890abcdefabcdef1234567890fedbca098765"); - - // - // DES - // - Cipher cEnc = Cipher.getInstance("DES/CBC/PKCS7Padding", "BC"); - - cEnc.init(Cipher.ENCRYPT_MODE, - new SecretKeySpec(Hex.decode("30e69252758e5346"), "DES"), - new IvParameterSpec(Hex.decode("7c1c1ab9c454a688"))); - - byte[] out = cEnc.doFinal(input); - - char[] password = { 'p', 'a', 's', 's', 'w', 'o', 'r', 'd' }; - - Cipher cDec = makePBECipherUsingParam( - "PBEWithSHA1AndDES", - Cipher.DECRYPT_MODE, - password, - Hex.decode("7d60435f02e9e0ae"), - 2048); - - byte[] in = cDec.doFinal(out); - - if (!Arrays.areEqual(input, in)) - { - fail("DES failed"); - } - - cDec = makePBECipherWithoutParam( - "PBEWithSHA1AndDES", - Cipher.DECRYPT_MODE, - password, - Hex.decode("7d60435f02e9e0ae"), - 2048); - - in = cDec.doFinal(out); - - if (!Arrays.areEqual(input, in)) - { - fail("DES failed without param"); - } - - // - // DESede - // - cEnc = Cipher.getInstance("DESede/CBC/PKCS7Padding", "BC"); - - cEnc.init(Cipher.ENCRYPT_MODE, - new SecretKeySpec(Hex.decode("732f2d33c801732b7206756cbd44f9c1c103ddd97c7cbe8e"), "DES"), - new IvParameterSpec(Hex.decode("b07bf522c8d608b8"))); - - out = cEnc.doFinal(input); - - cDec = makePBECipherUsingParam( - "PBEWithSHAAnd3-KeyTripleDES-CBC", - Cipher.DECRYPT_MODE, - password, - Hex.decode("7d60435f02e9e0ae"), - 2048); - - in = cDec.doFinal(out); - - if (!Arrays.areEqual(input, in)) - { - fail("DESede failed"); - } - - // - // 40Bit RC2 - // - cEnc = Cipher.getInstance("RC2/CBC/PKCS7Padding", "BC"); - - cEnc.init(Cipher.ENCRYPT_MODE, - new SecretKeySpec(Hex.decode("732f2d33c8"), "RC2"), - new IvParameterSpec(Hex.decode("b07bf522c8d608b8"))); - - out = cEnc.doFinal(input); - - cDec = makePBECipherUsingParam( - "PBEWithSHAAnd40BitRC2-CBC", - Cipher.DECRYPT_MODE, - password, - Hex.decode("7d60435f02e9e0ae"), - 2048); - - in = cDec.doFinal(out); - - if (!Arrays.areEqual(input, in)) - { - fail("RC2 failed"); - } - - // - // 128bit RC4 - // - cEnc = Cipher.getInstance("RC4", "BC"); - - cEnc.init(Cipher.ENCRYPT_MODE, - new SecretKeySpec(Hex.decode("732f2d33c801732b7206756cbd44f9c1"), "RC4")); - - out = cEnc.doFinal(input); - - cDec = makePBECipherUsingParam( - "PBEWithSHAAnd128BitRC4", - Cipher.DECRYPT_MODE, - password, - Hex.decode("7d60435f02e9e0ae"), - 2048); - - in = cDec.doFinal(out); - - if (!Arrays.areEqual(input, in)) - { - fail("RC4 failed"); - } - - cDec = makePBECipherWithoutParam( - "PBEWithSHAAnd128BitRC4", - Cipher.DECRYPT_MODE, - password, - Hex.decode("7d60435f02e9e0ae"), - 2048); - - in = cDec.doFinal(out); - - if (!Arrays.areEqual(input, in)) - { - fail("RC4 failed without param"); - } - - for (int i = 0; i != pkcs12Tests.length; i++) - { - pkcs12Tests[i].perform(); - } - - for (int i = 0; i != openSSLTests.length; i++) - { - openSSLTests[i].perform(); - } - - testPBEHMac("PBEWithHMacSHA1", hMac1); - testPBEHMac("PBEWithHMacRIPEMD160", hMac2); - - testPBEonSecretKeyHmac("PBKDF2WithHmacSHA1", hMac3); - - testCipherNameWithWrap("PBEWITHSHA256AND128BITAES-CBC-BC", "AES/CBC/PKCS5Padding"); - testCipherNameWithWrap("PBEWITHSHAAND40BITRC4", "RC4"); - testCipherNameWithWrap("PBEWITHSHAAND128BITRC4", "RC4"); - - checkPBE("PBKDF2WithHmacSHA1", true, "f14687fc31a66e2f7cc01d0a65f687961bd27e20", "6f6579193d6433a3e4600b243bb390674f04a615"); - } - - private void checkPBE(String baseAlg, boolean defIsUTF8, String utf8, String eightBit) - throws Exception - { - byte[] utf8K = Hex.decode(utf8); - byte[] ascK = Hex.decode(eightBit); - - SecretKeyFactory f = SecretKeyFactory.getInstance(baseAlg, "BC"); - KeySpec ks1 = new PBEKeySpec("\u0141\u0142".toCharArray(), new byte[20], 4096, 160); - if (!Arrays.areEqual((defIsUTF8) ? utf8K : ascK, f.generateSecret(ks1).getEncoded())) - { - fail(baseAlg + " wrong PBKDF2 k1 key generated, got : " + new String(Hex.encode(f.generateSecret(ks1).getEncoded()))); - } - - KeySpec ks2 = new PBEKeySpec("\u0041\u0042".toCharArray(), new byte[20], 4096, 160); - if (!Arrays.areEqual(ascK, f.generateSecret(ks2).getEncoded())) - { - fail(baseAlg + " wrong PBKDF2 k2 key generated"); - } - f = SecretKeyFactory.getInstance(baseAlg + "AndUTF8", "BC"); - ks1 = new PBEKeySpec("\u0141\u0142".toCharArray(), new byte[20], 4096, 160); - if (!Arrays.areEqual(utf8K, f.generateSecret(ks1).getEncoded())) - { - fail(baseAlg + " wrong PBKDF2 k1 utf8 key generated"); - } - - ks2 = new PBEKeySpec("\u0041\u0042".toCharArray(), new byte[20], 4096, 160); - if (!Arrays.areEqual(ascK, f.generateSecret(ks2).getEncoded())) - { - fail(baseAlg + " wrong PBKDF2 k2 utf8 key generated"); - } - f = SecretKeyFactory.getInstance(baseAlg + "And8BIT", "BC"); - ks1 = new PBEKeySpec("\u0141\u0142".toCharArray(), new byte[20], 4096, 160); - if (!Arrays.areEqual(ascK, f.generateSecret(ks1).getEncoded())) - { - fail(baseAlg + " wrong PBKDF2 k1 8bit key generated"); - } - - ks2 = new PBEKeySpec("\u0041\u0042".toCharArray(), new byte[20], 4096, 160); - if (!Arrays.areEqual(ascK, f.generateSecret(ks2).getEncoded())) - { - fail(baseAlg + " wrong PBKDF2 k2 8bit key generated"); - } - } - - public String getName() - { - return "PBETest"; - } - - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new PBETest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/PEMData.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/PEMData.java deleted file mode 100644 index e78d4c83..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/PEMData.java +++ /dev/null @@ -1,114 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -public class PEMData -{ - public static String CERTIFICATE_1 = - "-----BEGIN X509 CERTIFICATE-----\r" - + "MIIDXjCCAsegAwIBAgIBBzANBgkqhkiG9w0BAQQFADCBtzELMAkGA1UEBhMCQVUx\r" - + "ETAPBgNVBAgTCFZpY3RvcmlhMRgwFgYDVQQHEw9Tb3V0aCBNZWxib3VybmUxGjAY\r" - + "BgNVBAoTEUNvbm5lY3QgNCBQdHkgTHRkMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBB\r" - + "dXRob3JpdHkxFTATBgNVBAMTDENvbm5lY3QgNCBDQTEoMCYGCSqGSIb3DQEJARYZ\r" - + "d2VibWFzdGVyQGNvbm5lY3Q0LmNvbS5hdTAeFw0wMDA2MDIwNzU2MjFaFw0wMTA2\r" - + "MDIwNzU2MjFaMIG4MQswCQYDVQQGEwJBVTERMA8GA1UECBMIVmljdG9yaWExGDAW\r" - + "BgNVBAcTD1NvdXRoIE1lbGJvdXJuZTEaMBgGA1UEChMRQ29ubmVjdCA0IFB0eSBM\r" - + "dGQxFzAVBgNVBAsTDldlYnNlcnZlciBUZWFtMR0wGwYDVQQDExR3d3cyLmNvbm5l\r" - + "Y3Q0LmNvbS5hdTEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGNvbm5lY3Q0LmNv\r" - + "bS5hdTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArvDxclKAhyv7Q/Wmr2re\r" - + "Gw4XL9Cnh9e+6VgWy2AWNy/MVeXdlxzd7QAuc1eOWQkGQEiLPy5XQtTY+sBUJ3AO\r" - + "Rvd2fEVJIcjf29ey7bYua9J/vz5MG2KYo9/WCHIwqD9mmG9g0xLcfwq/s8ZJBswE\r" - + "7sb85VU+h94PTvsWOsWuKaECAwEAAaN3MHUwJAYDVR0RBB0wG4EZd2VibWFzdGVy\r" - + "QGNvbm5lY3Q0LmNvbS5hdTA6BglghkgBhvhCAQ0ELRYrbW9kX3NzbCBnZW5lcmF0\r" - + "ZWQgY3VzdG9tIHNlcnZlciBjZXJ0aWZpY2F0ZTARBglghkgBhvhCAQEEBAMCBkAw\r" - + "DQYJKoZIhvcNAQEEBQADgYEAotccfKpwSsIxM1Hae8DR7M/Rw8dg/RqOWx45HNVL\r" - + "iBS4/3N/TO195yeQKbfmzbAA2jbPVvIvGgTxPgO1MP4ZgvgRhasaa0qCJCkWvpM4\r" - + "yQf33vOiYQbpv4rTwzU8AmRlBG45WdjyNIigGV+oRc61aKCTnLq7zB8N3z1TF/bF\r" - + "5/8=\r" - + "-----END X509 CERTIFICATE-----\r"; - - public static String CERTIFICATE_2 = - "-----BEGIN CERTIFICATE-----\n" - + "MIIDXjCCAsegAwIBAgIBBzANBgkqhkiG9w0BAQQFADCBtzELMAkGA1UEBhMCQVUx\n" - + "ETAPBgNVBAgTCFZpY3RvcmlhMRgwFgYDVQQHEw9Tb3V0aCBNZWxib3VybmUxGjAY\n" - + "BgNVBAoTEUNvbm5lY3QgNCBQdHkgTHRkMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBB\n" - + "dXRob3JpdHkxFTATBgNVBAMTDENvbm5lY3QgNCBDQTEoMCYGCSqGSIb3DQEJARYZ\n" - + "d2VibWFzdGVyQGNvbm5lY3Q0LmNvbS5hdTAeFw0wMDA2MDIwNzU2MjFaFw0wMTA2\n" - + "MDIwNzU2MjFaMIG4MQswCQYDVQQGEwJBVTERMA8GA1UECBMIVmljdG9yaWExGDAW\n" - + "BgNVBAcTD1NvdXRoIE1lbGJvdXJuZTEaMBgGA1UEChMRQ29ubmVjdCA0IFB0eSBM\n" - + "dGQxFzAVBgNVBAsTDldlYnNlcnZlciBUZWFtMR0wGwYDVQQDExR3d3cyLmNvbm5l\n" - + "Y3Q0LmNvbS5hdTEoMCYGCSqGSIb3DQEJARYZd2VibWFzdGVyQGNvbm5lY3Q0LmNv\n" - + "bS5hdTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEArvDxclKAhyv7Q/Wmr2re\n" - + "Gw4XL9Cnh9e+6VgWy2AWNy/MVeXdlxzd7QAuc1eOWQkGQEiLPy5XQtTY+sBUJ3AO\n" - + "Rvd2fEVJIcjf29ey7bYua9J/vz5MG2KYo9/WCHIwqD9mmG9g0xLcfwq/s8ZJBswE\n" - + "7sb85VU+h94PTvsWOsWuKaECAwEAAaN3MHUwJAYDVR0RBB0wG4EZd2VibWFzdGVy\n" - + "QGNvbm5lY3Q0LmNvbS5hdTA6BglghkgBhvhCAQ0ELRYrbW9kX3NzbCBnZW5lcmF0\n" - + "ZWQgY3VzdG9tIHNlcnZlciBjZXJ0aWZpY2F0ZTARBglghkgBhvhCAQEEBAMCBkAw\n" - + "DQYJKoZIhvcNAQEEBQADgYEAotccfKpwSsIxM1Hae8DR7M/Rw8dg/RqOWx45HNVL\n" - + "iBS4/3N/TO195yeQKbfmzbAA2jbPVvIvGgTxPgO1MP4ZgvgRhasaa0qCJCkWvpM4\n" - + "yQf33vOiYQbpv4rTwzU8AmRlBG45WdjyNIigGV+oRc61aKCTnLq7zB8N3z1TF/bF\n" - + "5/8=\n" - + "-----END CERTIFICATE-----\n"; - - public static String CRL_1 = - "-----BEGIN X509 CRL-----\r\n" - + "MIICjTCCAfowDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMxIDAeBgNVBAoT\r\n" - + "F1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVy\r\n" - + "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5Fw05NTA1MDIwMjEyMjZaFw05NTA2MDEw\r\n" - + "MDAxNDlaMIIBaDAWAgUCQQAABBcNOTUwMjAxMTcyNDI2WjAWAgUCQQAACRcNOTUw\r\n" - + "MjEwMDIxNjM5WjAWAgUCQQAADxcNOTUwMjI0MDAxMjQ5WjAWAgUCQQAADBcNOTUw\r\n" - + "MjI1MDA0NjQ0WjAWAgUCQQAAGxcNOTUwMzEzMTg0MDQ5WjAWAgUCQQAAFhcNOTUw\r\n" - + "MzE1MTkxNjU0WjAWAgUCQQAAGhcNOTUwMzE1MTk0MDQxWjAWAgUCQQAAHxcNOTUw\r\n" - + "MzI0MTk0NDMzWjAWAgUCcgAABRcNOTUwMzI5MjAwNzExWjAWAgUCcgAAERcNOTUw\r\n" - + "MzMwMDIzNDI2WjAWAgUCQQAAIBcNOTUwNDA3MDExMzIxWjAWAgUCcgAAHhcNOTUw\r\n" - + "NDA4MDAwMjU5WjAWAgUCcgAAQRcNOTUwNDI4MTcxNzI0WjAWAgUCcgAAOBcNOTUw\r\n" - + "NDI4MTcyNzIxWjAWAgUCcgAATBcNOTUwNTAyMDIxMjI2WjANBgkqhkiG9w0BAQIF\r\n" - + "AAN+AHqOEJXSDejYy0UwxxrH/9+N2z5xu/if0J6qQmK92W0hW158wpJg+ovV3+wQ\r\n" - + "wvIEPRL2rocL0tKfAsVq1IawSJzSNgxG0lrcla3MrJBnZ4GaZDu4FutZh72MR3Gt\r\n" - + "JaAL3iTJHJD55kK2D/VoyY1djlsPuNh6AEgdVwFAyp0v\r\n" - + "-----END X509 CRL-----\r\n"; - - public static String CRL_2 = - "-----BEGIN CRL-----\r\n" - + "MIICjTCCAfowDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMxIDAeBgNVBAoT\r\n" - + "F1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2VydmVy\r\n" - + "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5Fw05NTA1MDIwMjEyMjZaFw05NTA2MDEw\r\n" - + "MDAxNDlaMIIBaDAWAgUCQQAABBcNOTUwMjAxMTcyNDI2WjAWAgUCQQAACRcNOTUw\r\n" - + "MjEwMDIxNjM5WjAWAgUCQQAADxcNOTUwMjI0MDAxMjQ5WjAWAgUCQQAADBcNOTUw\r\n" - + "MjI1MDA0NjQ0WjAWAgUCQQAAGxcNOTUwMzEzMTg0MDQ5WjAWAgUCQQAAFhcNOTUw\r\n" - + "MzE1MTkxNjU0WjAWAgUCQQAAGhcNOTUwMzE1MTk0MDQxWjAWAgUCQQAAHxcNOTUw\r\n" - + "MzI0MTk0NDMzWjAWAgUCcgAABRcNOTUwMzI5MjAwNzExWjAWAgUCcgAAERcNOTUw\r\n" - + "MzMwMDIzNDI2WjAWAgUCQQAAIBcNOTUwNDA3MDExMzIxWjAWAgUCcgAAHhcNOTUw\r\n" - + "NDA4MDAwMjU5WjAWAgUCcgAAQRcNOTUwNDI4MTcxNzI0WjAWAgUCcgAAOBcNOTUw\r\n" - + "NDI4MTcyNzIxWjAWAgUCcgAATBcNOTUwNTAyMDIxMjI2WjANBgkqhkiG9w0BAQIF\r\n" - + "AAN+AHqOEJXSDejYy0UwxxrH/9+N2z5xu/if0J6qQmK92W0hW158wpJg+ovV3+wQ\r\n" - + "wvIEPRL2rocL0tKfAsVq1IawSJzSNgxG0lrcla3MrJBnZ4GaZDu4FutZh72MR3Gt\r\n" - + "JaAL3iTJHJD55kK2D/VoyY1djlsPuNh6AEgdVwFAyp0v\r\n" - + "-----END CRL-----\r\n"; - - static String ATTRIBUTE_CERTIFICATE_1 = - "-----BEGIN X509 ATTRIBUTE CERTIFICATE-----\r\n" - + "MIIBuDCCASECAQEwZ6BlMGCkXjBcMQswCQYDVQQGEwJBVTEoMCYGA1UEChMfVGhl\r\n" - + "IExlZ2lvbiBvZiB0aGUgQm91bmN5IENhc3RsZTEjMCEGA1UECxMaQm91bmN5IFBy\r\n" - + "aW1hcnkgQ2VydGlmaWNhdGUCARSgYjBgpF4wXDELMAkGA1UEBhMCQVUxKDAmBgNV\r\n" - + "BAoTH1RoZSBMZWdpb24gb2YgdGhlIEJvdW5jeSBDYXN0bGUxIzAhBgNVBAsTGkJv\r\n" - + "dW5jeSBQcmltYXJ5IENlcnRpZmljYXRlMA0GCSqGSIb3DQEBBQUAAgEBMCIYDzIw\r\n" - + "MDUwNjEwMDI0MTMzWhgPMjAwNTA2MTAwMjQzMTNaMBkwFwYDVRhIMRAwDoEMREFV\r\n" - + "MTIzNDU2Nzg5MA0GCSqGSIb3DQEBBQUAA4GBALAYXT9zdxSR5zdPLAon1xIPehgI\r\n" - + "NZhjM7w0uu3OdzSV5sC31X1Kx9vi5RIWiM9VimRTwbQIod9POttD5QMXCwQb/fm7\r\n" - + "eiJqL2YBIXOeClB19VrQe8xQtMFbyuFpDiM7QdvIam9ShZZMEMGjv9QHI64M4b0G\r\n" - + "odUBlSsJwPPQjZSU\r\n" - + "-----END X509 ATTRIBUTE CERTIFICATE-----\r\n"; - - static String ATTRIBUTE_CERTIFICATE_2 = - "-----BEGIN ATTRIBUTE CERTIFICATE-----\r\n" - + "MIIBuDCCASECAQEwZ6BlMGCkXjBcMQswCQYDVQQGEwJBVTEoMCYGA1UEChMfVGhl\r\n" - + "IExlZ2lvbiBvZiB0aGUgQm91bmN5IENhc3RsZTEjMCEGA1UECxMaQm91bmN5IFBy\r\n" - + "aW1hcnkgQ2VydGlmaWNhdGUCARSgYjBgpF4wXDELMAkGA1UEBhMCQVUxKDAmBgNV\r\n" - + "BAoTH1RoZSBMZWdpb24gb2YgdGhlIEJvdW5jeSBDYXN0bGUxIzAhBgNVBAsTGkJv\r\n" - + "dW5jeSBQcmltYXJ5IENlcnRpZmljYXRlMA0GCSqGSIb3DQEBBQUAAgEBMCIYDzIw\r\n" - + "MDUwNjEwMDI0MTMzWhgPMjAwNTA2MTAwMjQzMTNaMBkwFwYDVRhIMRAwDoEMREFV\r\n" - + "MTIzNDU2Nzg5MA0GCSqGSIb3DQEBBQUAA4GBALAYXT9zdxSR5zdPLAon1xIPehgI\r\n" - + "NZhjM7w0uu3OdzSV5sC31X1Kx9vi5RIWiM9VimRTwbQIod9POttD5QMXCwQb/fm7\r\n" - + "eiJqL2YBIXOeClB19VrQe8xQtMFbyuFpDiM7QdvIam9ShZZMEMGjv9QHI64M4b0G\r\n" - + "odUBlSsJwPPQjZSU\r\n" - + "-----END ATTRIBUTE CERTIFICATE-----\r\n"; -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS10CertRequestTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS10CertRequestTest.java deleted file mode 100644 index 65ed2912..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS10CertRequestTest.java +++ /dev/null @@ -1,556 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.spec.RSAPrivateCrtKeySpec; -import java.security.spec.RSAPublicKeySpec; -import java.util.Hashtable; -import java.util.Vector; - -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.DEROctetString; -import org.bouncycastle.asn1.DERSet; -import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.Attribute; -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.asn1.x509.BasicConstraints; -import org.bouncycastle.asn1.x509.KeyUsage; -import org.bouncycastle.asn1.x509.SubjectKeyIdentifier; -import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; -import org.bouncycastle.asn1.x509.X509Extension; -import org.bouncycastle.asn1.x509.X509Extensions; -import org.bouncycastle.asn1.x509.X509Name; -import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; -import org.bouncycastle.crypto.Digest; -import org.bouncycastle.crypto.digests.SHA1Digest; -import org.bouncycastle.jce.ECGOST3410NamedCurveTable; -import org.bouncycastle.jce.ECNamedCurveTable; -import org.bouncycastle.jce.PKCS10CertificationRequest; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.interfaces.ECPointEncoder; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.spec.ECNamedCurveParameterSpec; -import org.bouncycastle.jce.spec.ECParameterSpec; -import org.bouncycastle.jce.spec.ECPrivateKeySpec; -import org.bouncycastle.jce.spec.ECPublicKeySpec; -import org.bouncycastle.math.ec.ECCurve; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - **/ -public class PKCS10CertRequestTest - extends SimpleTest -{ - private byte[] gost3410EC_A = Base64.decode( - "MIIBOzCB6wIBADB/MQ0wCwYDVQQDEwR0ZXN0MRUwEwYDVQQKEwxEZW1vcyBDbyBMdGQxHjAcBgNV" - +"BAsTFUNyeXB0b2dyYXBoeSBkaXZpc2lvbjEPMA0GA1UEBxMGTW9zY293MQswCQYDVQQGEwJydTEZ" - +"MBcGCSqGSIb3DQEJARYKc2RiQGRvbC5ydTBjMBwGBiqFAwICEzASBgcqhQMCAiMBBgcqhQMCAh4B" - +"A0MABEBYx0P2D7YuuZo5HgdIAUKAXcLBDZ+4LYFgbKjrfStVfH59lc40BQ2FZ7M703hLpXK8GiBQ" - +"GEYpKaAuQZnMIpByoAAwCAYGKoUDAgIDA0EAgXMcTrhdOY2Er2tHOSAgnMezqrYxocZTWhxmW5Rl" - +"JY6lbXH5rndCn4swFzXU+YhgAsJv1wQBaoZEWRl5WV4/nA=="); - - private byte[] gost3410EC_B = Base64.decode( - "MIIBPTCB7QIBADCBgDENMAsGA1UEAxMEdGVzdDEWMBQGA1UEChMNRGVtb3MgQ28gTHRkLjEeMBwG" - +"A1UECxMVQ3J5cHRvZ3JhcGh5IGRpdmlzaW9uMQ8wDQYDVQQHEwZNb3Njb3cxCzAJBgNVBAYTAnJ1" - +"MRkwFwYJKoZIhvcNAQkBFgpzZGJAZG9sLnJ1MGMwHAYGKoUDAgITMBIGByqFAwICIwIGByqFAwIC" - +"HgEDQwAEQI5SLoWT7dZVilbV9j5B/fyIDuDs6x4pjqNC2TtFYbpRHrk/Wc5g/mcHvD80tsm5o1C7" - +"7cizNzkvAVUM4VT4Dz6gADAIBgYqhQMCAgMDQQAoT5TwJ8o+bSrxckymyo3diwG7ZbSytX4sRiKy" - +"wXPWRS9LlBvPO2NqwpS2HUnxSU8rzfL9fJcybATf7Yt1OEVq"); - - private byte[] gost3410EC_C = Base64.decode( - "MIIBRDCB9AIBADCBhzEVMBMGA1UEAxMMdGVzdCByZXF1ZXN0MRUwEwYDVQQKEwxEZW1vcyBDbyBM" - +"dGQxHjAcBgNVBAsTFUNyeXB0b2dyYXBoeSBkaXZpc2lvbjEPMA0GA1UEBxMGTW9zY293MQswCQYD" - +"VQQGEwJydTEZMBcGCSqGSIb3DQEJARYKc2RiQGRvbC5ydTBjMBwGBiqFAwICEzASBgcqhQMCAiMD" - +"BgcqhQMCAh4BA0MABEBcmGh7OmR4iqqj+ycYo1S1fS7r5PhisSQU2Ezuz8wmmmR2zeTZkdMYCOBa" - +"UTMNms0msW3wuYDho7nTDNscHTB5oAAwCAYGKoUDAgIDA0EAVoOMbfyo1Un4Ss7WQrUjHJoiaYW8" - +"Ime5LeGGU2iW3ieAv6es/FdMrwTKkqn5dhd3aL/itFg5oQbhyfXw5yw/QQ=="); - - private byte[] gost3410EC_ExA = Base64.decode( - "MIIBOzCB6wIBADB/MQ0wCwYDVQQDEwR0ZXN0MRUwEwYDVQQKEwxEZW1vcyBDbyBMdGQxHjAcBgNV" - + "BAsTFUNyeXB0b2dyYXBoeSBkaXZpc2lvbjEPMA0GA1UEBxMGTW9zY293MQswCQYDVQQGEwJydTEZ" - + "MBcGCSqGSIb3DQEJARYKc2RiQGRvbC5ydTBjMBwGBiqFAwICEzASBgcqhQMCAiQABgcqhQMCAh4B" - + "A0MABEDkqNT/3f8NHj6EUiWnK4JbVZBh31bEpkwq9z3jf0u8ZndG56Vt+K1ZB6EpFxLT7hSIos0w" - + "weZ2YuTZ4w43OgodoAAwCAYGKoUDAgIDA0EASk/IUXWxoi6NtcUGVF23VRV1L3undB4sRZLp4Vho" - + "gQ7m3CMbZFfJ2cPu6QyarseXGYHmazoirH5lGjEo535c1g=="); - - private byte[] gost3410EC_ExB = Base64.decode( - "MIIBPTCB7QIBADCBgDENMAsGA1UEAxMEdGVzdDEWMBQGA1UEChMNRGVtb3MgQ28gTHRkLjEeMBwG" - + "A1UECxMVQ3J5cHRvZ3JhcGh5IGRpdmlzaW9uMQ8wDQYDVQQHEwZNb3Njb3cxCzAJBgNVBAYTAnJ1" - + "MRkwFwYJKoZIhvcNAQkBFgpzZGJAZG9sLnJ1MGMwHAYGKoUDAgITMBIGByqFAwICJAEGByqFAwIC" - + "HgEDQwAEQMBWYUKPy/1Kxad9ChAmgoSWSYOQxRnXo7KEGLU5RNSXA4qMUvArWzvhav+EYUfTbWLh" - + "09nELDyHt2XQcvgQHnSgADAIBgYqhQMCAgMDQQAdaNhgH/ElHp64mbMaEo1tPCg9Q22McxpH8rCz" - + "E0QBpF4H5mSSQVGI5OAXHToetnNuh7gHHSynyCupYDEHTbkZ"); - - public String getName() - { - return "PKCS10CertRequest"; - } - - private void generationTest(int keySize, String keyName, String sigName, String provider) - throws Exception - { - KeyPairGenerator kpg = KeyPairGenerator.getInstance(keyName, "BC"); - - kpg.initialize(keySize); - - KeyPair kp = kpg.genKeyPair(); - - Hashtable attrs = new Hashtable(); - - attrs.put(X509Principal.C, "AU"); - attrs.put(X509Principal.O, "The Legion of the Bouncy Castle"); - attrs.put(X509Principal.L, "Melbourne"); - attrs.put(X509Principal.ST, "Victoria"); - attrs.put(X509Principal.EmailAddress, "feedback-crypto@bouncycastle.org"); - - Vector order = new Vector(); - - order.addElement(X509Principal.C); - order.addElement(X509Principal.O); - order.addElement(X509Principal.L); - order.addElement(X509Principal.ST); - order.addElement(X509Principal.EmailAddress); - - X509Name subject = new X509Name(order, attrs); - - PKCS10CertificationRequest req1 = new PKCS10CertificationRequest( - sigName, - subject, - kp.getPublic(), - null, - kp.getPrivate(), provider); - - byte[] bytes = req1.getEncoded(); - - PKCS10CertificationRequest req2 = new PKCS10CertificationRequest(bytes); - - if (!req2.verify(provider)) - { - fail(sigName + ": Failed verify check."); - } - - if (!req2.getPublicKey(provider).equals(req1.getPublicKey(provider))) - { - fail(keyName + ": Failed public key check."); - } - } - - /* - * we generate a self signed certificate for the sake of testing - SHA224withECDSA - */ - private void createECRequest(String algorithm, ASN1ObjectIdentifier algOid, ASN1ObjectIdentifier curveOid) - throws Exception - { - ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec(curveOid.getId()); - KeyPairGenerator ecGen = KeyPairGenerator.getInstance("ECDSA", "BC"); - - ecGen.initialize(spec); - - // - // set up the keys - // - PrivateKey privKey; - PublicKey pubKey; - - KeyPair pair = ecGen.generateKeyPair(); - - privKey = pair.getPrivate(); - pubKey = pair.getPublic(); - - PKCS10CertificationRequest req = new PKCS10CertificationRequest( - algorithm, new X509Name("CN=XXX"), pubKey, null, privKey); - if (!req.verify()) - { - fail("Failed verify check EC."); - } - - req = new PKCS10CertificationRequest(req.getEncoded()); - if (!req.verify()) - { - fail("Failed verify check EC encoded."); - } - - // - // try with point compression turned off - // - ((ECPointEncoder)pubKey).setPointFormat("UNCOMPRESSED"); - - req = new PKCS10CertificationRequest( - algorithm, new X509Name("CN=XXX"), pubKey, null, privKey); - if (!req.verify()) - { - fail("Failed verify check EC uncompressed."); - } - - req = new PKCS10CertificationRequest(req.getEncoded()); - if (!req.verify()) - { - fail("Failed verify check EC uncompressed encoded."); - } - - if (!req.getSignatureAlgorithm().getObjectId().equals(algOid)) - { - fail("ECDSA oid incorrect."); - } - - if (req.getSignatureAlgorithm().getParameters() != null) - { - fail("ECDSA parameters incorrect."); - } - - Signature sig = Signature.getInstance(algorithm, "BC"); - - sig.initVerify(pubKey); - - sig.update(req.getCertificationRequestInfo().getEncoded()); - - if (!sig.verify(req.getSignature().getBytes())) - { - fail("signature not mapped correctly."); - } - } - - private void createECRequest(String algorithm, ASN1ObjectIdentifier algOid) - throws Exception - { - ECCurve.Fp curve = new ECCurve.Fp( - new BigInteger("6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151"), // q (or p) - new BigInteger("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC", 16), // a - new BigInteger("0051953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00", 16)); // b - - ECParameterSpec spec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("0200C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66")), // G - new BigInteger("01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409", 16)); // n - - ECPrivateKeySpec privKeySpec = new ECPrivateKeySpec( - new BigInteger("5769183828869504557786041598510887460263120754767955773309066354712783118202294874205844512909370791582896372147797293913785865682804434049019366394746072023"), // d - spec); - - ECPublicKeySpec pubKeySpec = new ECPublicKeySpec( - curve.decodePoint(Hex.decode("02006BFDD2C9278B63C92D6624F151C9D7A822CC75BD983B17D25D74C26740380022D3D8FAF304781E416175EADF4ED6E2B47142D2454A7AC7801DD803CF44A4D1F0AC")), // Q - spec); - - // - // set up the keys - // - PrivateKey privKey; - PublicKey pubKey; - - KeyFactory fact = KeyFactory.getInstance("ECDSA", "BC"); - - privKey = fact.generatePrivate(privKeySpec); - pubKey = fact.generatePublic(pubKeySpec); - - PKCS10CertificationRequest req = new PKCS10CertificationRequest( - algorithm, new X509Name("CN=XXX"), pubKey, null, privKey); - if (!req.verify()) - { - fail("Failed verify check EC."); - } - - req = new PKCS10CertificationRequest(req.getEncoded()); - if (!req.verify()) - { - fail("Failed verify check EC encoded."); - } - - // - // try with point compression turned off - // - ((ECPointEncoder)pubKey).setPointFormat("UNCOMPRESSED"); - - req = new PKCS10CertificationRequest( - algorithm, new X509Name("CN=XXX"), pubKey, null, privKey); - if (!req.verify()) - { - fail("Failed verify check EC uncompressed."); - } - - req = new PKCS10CertificationRequest(req.getEncoded()); - if (!req.verify()) - { - fail("Failed verify check EC uncompressed encoded."); - } - - if (!req.getSignatureAlgorithm().getObjectId().equals(algOid)) - { - fail("ECDSA oid incorrect."); - } - - if (req.getSignatureAlgorithm().getParameters() != null) - { - fail("ECDSA parameters incorrect."); - } - - Signature sig = Signature.getInstance(algorithm, "BC"); - - sig.initVerify(pubKey); - - sig.update(req.getCertificationRequestInfo().getEncoded()); - - if (!sig.verify(req.getSignature().getBytes())) - { - fail("signature not mapped correctly."); - } - } - - private void createECGOSTRequest() - throws Exception - { - String algorithm = "GOST3411withECGOST3410"; - KeyPairGenerator ecGostKpg = KeyPairGenerator.getInstance("ECGOST3410", "BC"); - - ecGostKpg.initialize(ECGOST3410NamedCurveTable.getParameterSpec("GostR3410-2001-CryptoPro-A"), new SecureRandom()); - - // - // set up the keys - // - KeyPair pair = ecGostKpg.generateKeyPair(); - PrivateKey privKey = pair.getPrivate(); - PublicKey pubKey = pair.getPublic(); - - PKCS10CertificationRequest req = new PKCS10CertificationRequest( - algorithm, new X509Name("CN=XXX"), pubKey, null, privKey); - if (!req.verify()) - { - fail("Failed verify check EC."); - } - - req = new PKCS10CertificationRequest(req.getEncoded()); - if (!req.verify()) - { - fail("Failed verify check EC encoded."); - } - - if (!req.getSignatureAlgorithm().getObjectId().equals(CryptoProObjectIdentifiers.gostR3411_94_with_gostR3410_2001)) - { - fail("ECGOST oid incorrect."); - } - - if (req.getSignatureAlgorithm().getParameters() != null) - { - fail("ECGOST parameters incorrect."); - } - - Signature sig = Signature.getInstance(algorithm, "BC"); - - sig.initVerify(pubKey); - - sig.update(req.getCertificationRequestInfo().getEncoded()); - - if (!sig.verify(req.getSignature().getBytes())) - { - fail("signature not mapped correctly."); - } - } - - private void createPSSTest(String algorithm) - throws Exception - { - RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec( - new BigInteger("a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991d8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1dfd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f105acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a2137",16), - new BigInteger("010001",16)); - - RSAPrivateCrtKeySpec privKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991d8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1dfd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f105acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a2137",16), - new BigInteger("010001",16), - new BigInteger("33a5042a90b27d4f5451ca9bbbd0b44771a101af884340aef9885f2a4bbe92e894a724ac3c568c8f97853ad07c0266c8c6a3ca0929f1e8f11231884429fc4d9ae55fee896a10ce707c3ed7e734e44727a39574501a532683109c2abacaba283c31b4bd2f53c3ee37e352cee34f9e503bd80c0622ad79c6dcee883547c6a3b325",16), - new BigInteger("e7e8942720a877517273a356053ea2a1bc0c94aa72d55c6e86296b2dfc967948c0a72cbccca7eacb35706e09a1df55a1535bd9b3cc34160b3b6dcd3eda8e6443",16), - new BigInteger("b69dca1cf7d4d7ec81e75b90fcca874abcde123fd2700180aa90479b6e48de8d67ed24f9f19d85ba275874f542cd20dc723e6963364a1f9425452b269a6799fd",16), - new BigInteger("28fa13938655be1f8a159cbaca5a72ea190c30089e19cd274a556f36c4f6e19f554b34c077790427bbdd8dd3ede2448328f385d81b30e8e43b2fffa027861979",16), - new BigInteger("1a8b38f398fa712049898d7fb79ee0a77668791299cdfa09efc0e507acb21ed74301ef5bfd48be455eaeb6e1678255827580a8e4e8e14151d1510a82a3f2e729",16), - new BigInteger("27156aba4126d24a81f3a528cbfb27f56886f840a9f6e86e17a44b94fe9319584b8e22fdde1e5a2e3bd8aa5ba8d8584194eb2190acf832b847f13a3d24a79f4d",16)); - - KeyFactory fact = KeyFactory.getInstance("RSA", "BC"); - - PrivateKey privKey = fact.generatePrivate(privKeySpec); - PublicKey pubKey = fact.generatePublic(pubKeySpec); - - PKCS10CertificationRequest req = new PKCS10CertificationRequest( - algorithm, new X509Name("CN=XXX"), pubKey, null, privKey); - if (!req.verify()) - { - fail("Failed verify check PSS."); - } - - req = new PKCS10CertificationRequest(req.getEncoded()); - if (!req.verify()) - { - fail("Failed verify check PSS encoded."); - } - - if (!req.getSignatureAlgorithm().getObjectId().equals(PKCSObjectIdentifiers.id_RSASSA_PSS)) - { - fail("PSS oid incorrect."); - } - - if (req.getSignatureAlgorithm().getParameters() == null) - { - fail("PSS parameters incorrect."); - } - - Signature sig = Signature.getInstance(algorithm, "BC"); - - sig.initVerify(pubKey); - - sig.update(req.getCertificationRequestInfo().getEncoded()); - - if (!sig.verify(req.getSignature().getBytes())) - { - fail("signature not mapped correctly."); - } - } - - // previous code found to cause a NullPointerException - private void nullPointerTest() - throws Exception - { - KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC"); - keyGen.initialize(1024, new SecureRandom()); - KeyPair pair = keyGen.generateKeyPair(); - - Vector oids = new Vector(); - Vector values = new Vector(); - oids.add(X509Extensions.BasicConstraints); - values.add(new X509Extension(true, new DEROctetString(new BasicConstraints(true)))); - oids.add(X509Extensions.KeyUsage); - values.add(new X509Extension(true, new DEROctetString( - new KeyUsage(KeyUsage.keyCertSign | KeyUsage.cRLSign)))); - SubjectKeyIdentifier subjectKeyIdentifier = new SubjectKeyIdentifier(getDigest(SubjectPublicKeyInfo.getInstance(pair.getPublic().getEncoded()))); - X509Extension ski = new X509Extension(false, new DEROctetString(subjectKeyIdentifier)); - oids.add(X509Extensions.SubjectKeyIdentifier); - values.add(ski); - - Attribute attribute = new Attribute(PKCSObjectIdentifiers.pkcs_9_at_extensionRequest, - new DERSet(new X509Extensions(oids, values))); - - PKCS10CertificationRequest p1 = new PKCS10CertificationRequest( - "SHA1WithRSA", new X509Principal("cn=csr"), - pair.getPublic(), new DERSet(attribute), pair.getPrivate(), "BC"); - PKCS10CertificationRequest p2 = new PKCS10CertificationRequest( - "SHA1WithRSA", new X509Principal("cn=csr"), - pair.getPublic(), new DERSet(attribute), pair.getPrivate(), "BC"); - - if (!p1.equals(p2)) - { - fail("cert request comparison failed"); - } - } - - public void performTest() - throws Exception - { - generationTest(512, "RSA", "SHA1withRSA", "BC"); - generationTest(512, "GOST3410", "GOST3411withGOST3410", "BC"); - - if (Security.getProvider("SunRsaSign") != null) - { - generationTest(512, "RSA", "SHA1withRSA", "SunRsaSign"); - } - - // elliptic curve GOST A parameter set - PKCS10CertificationRequest req = new PKCS10CertificationRequest(gost3410EC_A); - if (!req.verify()) - { - fail("Failed verify check gost3410EC_A."); - } - - // elliptic curve GOST B parameter set - req = new PKCS10CertificationRequest(gost3410EC_B); - if (!req.verify()) - { - fail("Failed verify check gost3410EC_B."); - } - - // elliptic curve GOST C parameter set - req = new PKCS10CertificationRequest(gost3410EC_C); - if (!req.verify()) - { - fail("Failed verify check gost3410EC_C."); - } - - // elliptic curve GOST ExA parameter set - req = new PKCS10CertificationRequest(gost3410EC_ExA); - if (!req.verify()) - { - fail("Failed verify check gost3410EC_ExA."); - } - - // elliptic curve GOST ExB parameter set - req = new PKCS10CertificationRequest(gost3410EC_ExB); - if (!req.verify()) - { - fail("Failed verify check gost3410EC_ExA."); - } - - // elliptic curve openSSL - KeyPairGenerator g = KeyPairGenerator.getInstance("ECDSA", "BC"); - - ECCurve curve = new ECCurve.Fp( - new BigInteger("883423532389192164791648750360308885314476597252960362792450860609699839"), // q - new BigInteger("7fffffffffffffffffffffff7fffffffffff8000000000007ffffffffffc", 16), // a - new BigInteger("6b016c3bdcf18941d0d654921475ca71a9db2fb27d1d37796185c2942c0a", 16)); // b - - ECParameterSpec ecSpec = new ECParameterSpec( - curve, - curve.decodePoint(Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G - new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307")); // n - - g.initialize(ecSpec, new SecureRandom()); - - KeyPair kp = g.generateKeyPair(); - - req = new PKCS10CertificationRequest( - "ECDSAWITHSHA1", new X509Name("CN=XXX"), kp.getPublic(), null, kp.getPrivate()); - if (!req.verify()) - { - fail("Failed verify check EC."); - } - - createECRequest("SHA1withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA1); - createECRequest("SHA224withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA224); - createECRequest("SHA256withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA256); - createECRequest("SHA384withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA384); - createECRequest("SHA512withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA512); - - createECRequest("SHA1withECDSA", X9ObjectIdentifiers.ecdsa_with_SHA1, new ASN1ObjectIdentifier("1.3.132.0.34")); - - createECGOSTRequest(); - - createPSSTest("SHA1withRSAandMGF1"); - createPSSTest("SHA224withRSAandMGF1"); - createPSSTest("SHA256withRSAandMGF1"); - createPSSTest("SHA384withRSAandMGF1"); - - nullPointerTest(); - } - - private static byte[] getDigest(SubjectPublicKeyInfo spki) - { - Digest digest = new SHA1Digest(); - byte[] resBuf = new byte[digest.getDigestSize()]; - - byte[] bytes = spki.getPublicKeyData().getBytes(); - digest.update(bytes, 0, bytes.length); - digest.doFinal(resBuf, 0); - return resBuf; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new PKCS10CertRequestTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS12StoreTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS12StoreTest.java deleted file mode 100644 index 0828440b..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKCS12StoreTest.java +++ /dev/null @@ -1,1199 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.math.BigInteger; -import java.security.Key; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.KeyStore; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.Security; -import java.security.Signature; -import java.security.cert.Certificate; -import java.security.cert.X509Certificate; -import java.security.interfaces.RSAPrivateKey; -import java.security.spec.RSAPrivateCrtKeySpec; -import java.security.spec.RSAPublicKeySpec; -import java.util.Date; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Vector; - -import org.bouncycastle.asn1.ASN1Encodable; -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.ASN1OctetString; -import org.bouncycastle.asn1.ASN1Sequence; -import org.bouncycastle.asn1.ASN1StreamParser; -import org.bouncycastle.asn1.DERBMPString; -import org.bouncycastle.asn1.DERSequenceParser; -import org.bouncycastle.asn1.pkcs.ContentInfo; -import org.bouncycastle.asn1.pkcs.EncryptedData; -import org.bouncycastle.asn1.pkcs.EncryptedPrivateKeyInfo; -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.Pfx; -import org.bouncycastle.asn1.pkcs.SafeBag; -import org.bouncycastle.jcajce.provider.config.PKCS12StoreParameter; -import org.bouncycastle.jce.PKCS12Util; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.jce.provider.JDKPKCS12StoreParameter; -import org.bouncycastle.jce.provider.X509CertificateObject; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.x509.X509V3CertificateGenerator; - -/** - * Exercise the various key stores, making sure we at least get back what we put in! - * <p> - * This tests both the PKCS12 key store. - */ -public class PKCS12StoreTest - extends SimpleTest -{ - static char[] passwd = { 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd' }; - - // - // pkcs-12 pfx-pdu - // - byte[] pkcs12 = Base64.decode( - "MIACAQMwgAYJKoZIhvcNAQcBoIAkgAQBMAQBgAQBMAQBgAQBBgQBCQQJKoZI" - + "hvcNAQcBBAGgBAGABAEkBAGABAEEBAEBBAEwBAEEBAEDBAOCAzQEAQQEAQEE" - + "ATAEAQQEAQMEA4IDMAQBBAQBAQQBBgQBBAQBAQQBCwQBBAQBCwQLKoZIhvcN" - + "AQwKAQIEAQQEAQEEAaAEAQQEAQMEA4ICpQQBBAQBAQQBMAQBBAQBAwQDggKh" - + "BAEEBAEBBAEwBAEEBAEBBAEbBAEEBAEBBAEGBAEEBAEBBAEKBAEEBAEKBAoq" - + "hkiG9w0BDAEDBAEEBAEPBA8wDQQIoagiwNZPJR4CAQEEAQQEAQEEAQQEAQQE" - + "AQMEA4ICgAQBBAQDggKABIICgEPG0XlhMFyrs4ZWDrvEzl51ICfXd6K2ql2l" - + "nnxhszUbigtSj6x49VEx4PfOB9fQFeidc5L5An+nKp646NBMIY0UwXGs8BLQ" - + "au59jtOs987+l7QYIvl6fdGUIuLPhVSnZZDyqD+HQjU/0/ccKFHRif4tlEQq" - + "aErvZbFeH0pg4ijf1HfgX6gBJGRKdO+msa4qKGnZdHCSLZehyyxvxAmURetg" - + "yhtEl7RmedTB+4TDs7atekqxkNlD9tfwDUX6sb0IH6qbEA6P/DlVMdaD54Cl" - + "QDxRzOfIIjklZhv5OMFWtPK0aYPcqyxzLpw1qRAyoTVXpidkj/hpIpgCVBP/" - + "k5s2+WdGbLgA/4/zSrF6feRCE5llzM2IGxiHVq4oPzzngl3R+Fi5VCPDMcuW" - + "NRuIOzJA+RNV2NPOE/P3knThDnwiImq+rfxmvZ1u6T06s20RmWK6cxp7fTEw" - + "lQ9BOsv+mmyV8dr6cYJq4IlRzHdFOyEUBDwfHThyribNKKobO50xh2f93xYj" - + "Rn5UMOQBJIe3b7OKZt5HOIMrJSZO02IZgvImi9yQWi96PnWa419D1cAsLWvM" - + "xiN0HqZMbDFfxVM2BZmsxiexLhkHWKwLqfQDzRjJfmVww8fnXpWZhFXKyut9" - + "gMGEyCNoba4RU3QI/wHKWYaK74qtJpsucuLWBH6UcsHsCry6VZkwRxWwC0lb" - + "/F3Bm5UKHax5n9JHJ2amQm9zW3WJ0S5stpPObfmg5ArhbPY+pVOsTqBRlop1" - + "bYJLD/X8Qbs468Bwzej0FhoEU59ZxFrbjLSBsMUYrVrwD83JE9kEazMLVchc" - + "uCB9WT1g0hxYb7VA0BhOrWhL8F5ZH72RMCYLPI0EAQQEAQEEATEEAQQEAQEE" - + "AXgEAQQEAQEEATAEAQQEAQEEAVEEAQQEAQEEAQYEAQQEAQEEAQkEAQQEAQkE" - + "CSqGSIb3DQEJFAQBBAQBAQQBMQQBBAQBAQQBRAQBBAQBAQQBHgQBBAQBAQQB" - + "QgQBBAQBQgRCAEQAYQB2AGkAZAAgAEcALgAgAEgAbwBvAGsAJwBzACAAVgBl" - + "AHIAaQBTAGkAZwBuACwAIABJAG4AYwAuACAASQBEBAEEBAEBBAEwBAEEBAEB" - + "BAEjBAEEBAEBBAEGBAEEBAEBBAEJBAEEBAEJBAkqhkiG9w0BCRUEAQQEAQEE" - + "ATEEAQQEAQEEARYEAQQEAQEEAQQEAQQEAQEEARQEAQQEARQEFKEcMJ798oZL" - + "FkH0OnpbUBnrTLgWBAIAAAQCAAAEAgAABAEwBAGABAEGBAEJBAkqhkiG9w0B" - + "BwYEAaAEAYAEATAEAYAEAQIEAQEEAQAEATAEAYAEAQYEAQkECSqGSIb3DQEH" - + "AQQBMAQBGwQBBgQBCgQKKoZIhvcNAQwBBgQPMA0ECEE7euvmxxwYAgEBBAGg" - + "BAGABAEEBAEIBAgQIWDGlBWxnwQBBAQBCAQI2WsMhavhSCcEAQQEAQgECPol" - + "uHJy9bm/BAEEBAEQBBCiRxtllKXkJS2anKD2q3FHBAEEBAEIBAjKy6BRFysf" - + "7gQBBAQDggMwBIIDMJWRGu2ZLZild3oz7UBdpBDUVMOA6eSoWiRIfVTo4++l" - + "RUBm8TpmmGrVkV32PEoLkoV+reqlyWCvqqSjRzi3epQiVwPQ6PV+ccLqxDhV" - + "pGWDRQ5UttDBC2+u4fUQVZi2Z1i1g2tsk6SzB3MKUCrjoWKvaDUUwXo5k9Vz" - + "qSLWCLTZCjs3RaY+jg3NbLZYtfMDdYovhCU2jMYV9adJ8MxxmJRz+zPWAJph" - + "LH8hhfkKG+wJOSszqk9BqGZUa/mnZyzeQSMTEFga1ZB/kt2e8SZFWrTZEBgJ" - + "oszsL5MObbwMDowNurnZsnS+Mf7xi01LeG0VT1fjd6rn9BzVwuMwhoqyoCNo" - + "ziUqSUyLEwnGTYYpvXLxzhNiYzW8546KdoEKDkEjhfYsc4XqSjm9NYy/BW/M" - + "qR+aL92j8hqnkrWkrWyvocUe3mWaiqt7/oOzNZiMTcV2dgjjh9HfnjSHjFGe" - + "CVhnEWzV7dQIVyc/qvNzOuND8X5IyJ28xb6a/i1vScwGuo/UDgPAaMjGw28f" - + "siOZBShzde0Kj82y8NilfYLHHeIGRW+N/grUFWhW25mAcBReXDd5JwOqM/eF" - + "y+4+zBzlO84ws88T1pkSifwtMldglN0APwr4hvUH0swfiqQOWtwyeM4t+bHd" - + "5buAlXOkSeF5rrLzZ2/Lx+JJmI2pJ/CQx3ej3bxPlx/BmarUGAxaI4le5go4" - + "KNfs4GV8U+dbEHQz+yDYL+ksYNs1eb+DjI2khbl28jhoeAFKBtu2gGOL5M9M" - + "CIP/JDOCHimu1YZRuOTAf6WISnG/0Ri3pYZsgQ0i4cXj+WfYwYVjhKX5AcDj" - + "UKnc4/Cxp+TbbgZqEKRcYVb2q0kOAxkeaNo3WCm+qvUYrwAmKp4nVB+/24rK" - + "khHiyYJQsETxtOEyvJkVxAS01djY4amuJ4jL0sYnXIhW3Ag93eavbzksGT7W" - + "Fg1ywpr1x1xpXWIIuVt1k4e+g9fy7Yx7rx0IK1qCSjNwU3QPWbaef1rp0Q/X" - + "P9IVXYkqo1g/T3SyXqrbZLO+sDjiG4IT3z3fJJqt81sRSVT0QN1ND8l93BG4" - + "QKzghYw8sZ4FwKPtLky1dDcVTgQBBAQBCAQIK/85VMKWDWYEAQQEAQgECGsO" - + "Q85CcFwPBAEEBAEIBAhaup6ot9XnQAQBBAQCgaAEgaCeCMadSm5fkLfhErYQ" - + "DgePZl/rrjP9FQ3VJZ13XrjTSjTRknAbXi0DEu2tvAbmCf0sdoVNuZIZ92W0" - + "iyaa2/A3RHA2RLPNQz5meTi1RE2N361yR0q181dC3ztkkJ8PLyd74nCtgPUX" - + "0JlsvLRrdSjPBpBQ14GiM8VjqeIY7EVFy3vte6IbPzodxaviuSc70iXM4Yko" - + "fQq6oaSjNBFRqkHrBAEEBAEIBAjlIvOf8SnfugQBBAQBCAQIutCF3Jovvl0E" - + "AQQEAQgECO7jxbucdp/3BAEEBAEIBAidxK3XDLj+BwQBBAQBCAQI3m/HMbd3" - + "TwwEAQQEA4ICOASCAjgtoCiMfTkjpCRuMhF5gNLRBiNv+xjg6GvZftR12qiJ" - + "dLeCERI5bvXbh9GD6U+DjTUfhEab/37TbiI7VOFzsI/R137sYy9Tbnu7qkSx" - + "u0bTvyXSSmio6sMRiWIcakmDbv+TDWR/xgtj7+7C6p+1jfUGXn/RjB3vlyjL" - + "Q9lFe5F84qkZjnADo66p9gor2a48fgGm/nkABIUeyzFWCiTp9v6FEzuBfeuP" - + "T9qoKSnCitaXRCru5qekF6L5LJHLNXLtIMSrbO0bS3hZK58FZAUVMaqawesJ" - + "e/sVfQip9x/aFQ6U3KlSpJkmZK4TAqp9jIfxBC8CclbuwmoXPMomiCH57ykr" - + "vkFHOGcxRcCxax5HySCwSyPDr8I4+6Kocty61i/1Xr4xJjb+3oyFStIpB24x" - + "+ALb0Mz6mUa1ls76o+iQv0VM2YFwnx+TC8KC1+O4cNOE/gKeh0ircenVX83h" - + "GNez8C5Ltg81g6p9HqZPc2pkwsneX2sJ4jMsjDhewV7TyyS3x3Uy3vTpZPek" - + "VdjYeVIcgAz8VLJOpsIjyHMB57AyT7Yj87hVVy//VODnE1T88tRXZb+D+fCg" - + "lj2weQ/bZtFzDX0ReiEQP6+yklGah59omeklIy9wctGV1o9GNZnGBSLvQ5NI" - + "61e9zmQTJD2iDjihvQA/6+edKswCjGRX6rMjRWXT5Jv436l75DVoUj09tgR9" - + "ytXSathCjQUL9MNXzUMtr7mgEUPETjM/kYBR7CNrsc+gWTWHYaSWuqKVBAEE" - + "BAEIBAh6slfZ6iqkqwQBBAQBCAQI9McJKl5a+UwEAQQEATgEOBelrmiYMay3" - + "q0OW2x2a8QQodYqdUs1TCUU4JhfFGFRy+g3yU1cP/9ZSI8gcI4skdPc31cFG" - + "grP7BAEEBAEIBAhzv/wSV+RBJQQBBAQBCAQI837ImVqqlr4EAQQEAQgECGeU" - + "gjULLnylBAEEBAEIBAjD3P4hlSBCvQQBBAQBCAQISP/qivIzf50EAQQEAQgE" - + "CKIDMX9PKxICBAEEBAOCBOgEggTocP5VVT1vWvpAV6koZupKN1btJ3C01dR6" - + "16g1zJ5FK5xL1PTdA0r6iAwVtgYdxQYnU8tht3bkNXdPJC1BdsC9oTkBg9Nr" - + "dqlF5cCzXWIezcR3ObjGLpXu49SAHvChH4emT5rytv81MYxZ7bGmlQfp8BNa" - + "0cMZz05A56LXw//WWDEzZcbKSk4tCsfMXBdGk/ngs7aILZ4FGM620PBPtD92" - + "pz2Ui/tUZqtQ0WKdLzwga1E/rl02a/x78/OdlVRNeaIYWJWLmLavX98w0PhY" - + "ha3Tbj/fqq+H3ua6Vv2Ff4VeXazkXpp4tTiqUxhc6aAGiRYckwZaP7OPSbos" - + "RKFlRLVofSGu1IVSKO+7faxV4IrVaAAzqRwLGkpJZLV7NkzkU1BwgvsAZAI4" - + "WClPDF228ygbhLwrSN2NK0s+5bKhTCNAR/LCUf3k7uip3ZSe18IwEkUMWiaZ" - + "ayktcTYn2ZjmfIfV7wIxHgWPkP1DeB+RMS7VZe9zEgJKOA16L+9SNBwJSSs9" - + "5Sb1+nmhquZmnAltsXMgwOrR12JLIgdfyyqGcNq997U0/KuHybqBVDVu0Fyr" - + "6O+q5oRmQZq6rju7h+Hb/ZUqRxRoTTSPjGD4Cu9vUqkoNVgwYOT+88FIMYun" - + "g9eChhio2kwPYwU/9BNGGzh+hAvAKcUpO016mGLImYin+FpQxodJXfpNCFpG" - + "4v4HhIwKh71OOfL6ocM/518dYwuU4Ds2/JrDhYYFsn+KprLftjrnTBnSsfYS" - + "t68b+Xr16qv9r6sseEkXbsaNbrGiZAhfHEVBOxQ4lchHrMp4zpduxG4crmpc" - + "+Jy4SadvS0uaJvADgI03DpsDYffUdriECUqAfOg/Hr7HHyr6Q9XMo1GfIarz" - + "eUHBgi1Ny0nDTWkdb7I3bIajG+Unr3KfK6dZz5Lb3g5NeclU5zintB1045Jr" - + "j9fvGGk0/2lG0n17QViBiOzGs2poTlhn7YxmiskwlkRKVafxPZNPxKILpN9s" - + "YaWGz93qER/pGMJarGJxu8sFi3+yt6FZ4pVPkvKE8JZMEPBBrmH41batS3sw" - + "sfnJ5CicAkwd8bluQpoc6qQd81HdNpS6u7djaRSDwPtYnZWu/8Hhj4DXisje" - + "FJBAjQdn2nK4MV7WKVwr+mNcVgOdc5IuOZbRLOfc3Sff6kYVuQFfcCGgAFpd" - + "nbprF/FnYXR/rghWE7fT1gfzSMNv+z5UjZ5Rtg1S/IQfUM/P7t0UqQ01/w58" - + "bTlMGihTxHiJ4Qf3o5GUzNmAyryLvID+nOFqxpr5es6kqSN4GPRHsmUIpB9t" - + "f9Nw952vhsXI9uVkhQap3JvmdAKJaIyDz6Qi7JBZvhxpghVIDh73BQTaAFP9" - + "5GUcPbYOYJzKaU5MeYEsorGoanSqPDeKDeZxjxJD4xFsqJCoutyssqIxnXUN" - + "Y3Uojbz26IJOhqIBLaUn6QVFX79buWYjJ5ZkDS7D8kq6DZeqZclt5711AO5U" - + "uz/eDSrx3d4iVHR+kSeopxFKsrK+KCH3CbBUMIFGX/GE9WPhDWCtjjNKEe8W" - + "PinQtxvv8MlqGXtv3v7ObJ2BmfIfLD0rh3EB5WuRNKL7Ssxaq14KZGEBvc7G" - + "Fx7jXLOW6ZV3SH+C3deJGlKM2kVhDdIVjjODvQzD8qw8a/ZKqDO5hGGKUTGD" - + "Psdd7O/k/Wfn+XdE+YuKIhcEAQQEAQgECJJCZNJdIshRBAEEBAEIBAiGGrlG" - + "HlKwrAQBBAQBCAQIkdvKinJYjJcEAQQEAUAEQBGiIgN/s1bvPQr+p1aQNh/X" - + "UQFmay6Vm5HIvPhoNrX86gmMjr6/sg28/WCRtSfyuYjwQkK91n7MwFLOBaU3" - + "RrsEAQQEAQgECLRqESFR50+zBAEEBAEIBAguqbAEWMTiPwQBBAQBGAQYKzUv" - + "EetQEAe3cXEGlSsY4a/MNTbzu1WbBAEEBAEIBAiVpOv1dOWZ1AQCAAAEAgAA" - + "BAIAAAQCAAAEAgAABAIAAAAAAAAAADA1MCEwCQYFKw4DAhoFAAQUvMkeVqe6" - + "D4UmMHGEQwcb8O7ZwhgEEGiX9DeqtRwQnVi+iY/6Re8AAA=="); - - byte[] certUTF = Base64.decode( - "MIIGVQIBAzCCBg8GCSqGSIb3DQEHAaCCBgAEggX8MIIF+DCCAsUGCSqGSIb3" - + "DQEHAaCCArYEggKyMIICrjCCAqoGCyqGSIb3DQEMCgEDoIIChTCCAoEGCiqG" - + "SIb3DQEJFgGgggJxBIICbTCCAmkwggHSoAMCAQICAQcwDQYJKoZIhvcNAQEF" - + "BQAwOTEPMA0GA1UEBxMGTGV1dmVuMRkwFwYDVQQKExBVdGltYWNvIFN1YiBD" - + "QSAyMQswCQYDVQQGEwJCRTAeFw05OTEyMzEyMzAwMDBaFw0xOTEyMzEyMzAw" - + "MDBaMFcxCzAJBgNVBAYTAkJFMQ8wDQYDVQQHEwZIYWFjaHQxEDAOBgNVBAoT" - + "B1V0aW1hY28xDDAKBgNVBAsMA1ImRDEXMBUGA1UEAxMOR2VlcnQgRGUgUHJp" - + "bnMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYGIyhTn/p0IA41ElLD" - + "fZ44PS88AAcDCiOd2DIMLck56ea+5nhI0JLyz1XgPHecc8SLFdl7vSIBA0eb" - + "tm/A7WIqIp0lcvgoyQ0qsak/dvzs+xw6r2xLCVogku4+/To6UebtfRsukXNI" - + "ckP5lWV/Ui4l+XvGdmENlEE9/BvOZIvLAgMBAAGjYzBhMBEGA1UdIwQKMAiA" - + "BlN1YkNBMjAQBgNVHQ4ECQQHVXNlcklEMjAOBgNVHQ8BAf8EBAMCBLAwGQYD" - + "VR0RBBIwEIEOVXNlcklEMkB1dGkuYmUwDwYDVR0TAQH/BAUwAwEBADANBgkq" - + "hkiG9w0BAQUFAAOBgQACS7iLLgMV4O5gFdriI7dqX55l7Qn6HiRNxlSH2kCX" - + "41X82gae4MHFc41qqsC4qm6KZWi1yvTN9XgSBCXTaw1SXGTK7SuNdoYh6ufC" - + "KuAwy5lsaetyARDksRiOIrNV9j+MRIjJMjPNg+S+ysIHTWZo2NTUuVuZ01D2" - + "jDtYPhcDFDESMBAGCSqGSIb3DQEJFTEDBAE3MIIDKwYJKoZIhvcNAQcGoIID" - + "HDCCAxgCAQAwggMRBgkqhkiG9w0BBwEwKAYKKoZIhvcNAQwBAzAaBBS5KxQC" - + "BMuZ1To+yed2j/TT45td6gICCACAggLYxQS+fu7W2sLQTkslI0EoNxLoH/WO" - + "L8NgiIgZ5temV3mgC2q0MxjVVq+SCvG89ZSTfptxOaSmYV772irFdzlrtotZ" - + "wmYk1axuFDYQ1gH0M6i9FWuhOnbk7qHclmOroXqrrbP6g3IsjwztH0+iwBCg" - + "39f63V0rr8DHiu7zZ2hBkU4/RHEsXLjaCBVNTUSssWhVLisLh2sqBJccPC2E" - + "1lw4c4WrshGQ+syLGG38ttFgXT1c+xYNpUKqJiJTLVouOH9kK3nH1hPRHKMN" - + "9CucBdUzibvkcRk1L53F3MfvjhCSNeWEmd9PKN+FtUtzRWQG3L84VGTM37Ws" - + "YcxaDwDFGcw3u1W8WFsCCkjpZecKN8P2Kp/ai/iugcXY77bYwAwpETDvQFvD" - + "nnL9oGi03HYdfeiXglC7x7dlojvnpkXDbE0nJiFwhe8Mxpx8GVlGHtP+siXg" - + "tklubg1eTCSoG9m1rsBJM717ZHXUGf32HNun2dn4vOWGocgBmokZ46KKMb9v" - + "reT39JTxi8Jlp+2cYb6Qr/oBzudR+D4iAiiVhhhEbJKPNHa61YyxF810fNI2" - + "GWlNIyN3KcI8XU6WJutm/0H3X8Y+iCSWrJ2exUktj8GiqNQ6Yx0YgEk9HI7W" - + "t9UVTIsPCgCqrV4SWCOPf6so1JqnpvlPvvNyNxSsAJ7DaJx1+oD2QQfhowk/" - + "bygkKnRo5Y15ThrTsIyQKsJHTIVy+6K5uFZnlT1DGV3DcNpuk3AY26hrAzWO" - + "TuWXsULZe7M6h6U2hTT/eplZ/mwHlXdF1VErIuusaCdkSI0doY4/Q223H40L" - + "BNU3pTezl41PLceSll00WGVr2MunlNeXKnXDJW06lnfs9BmnpV2+Lkfmf30W" - + "Pn4RKJQc+3D3SV4fCoQLIGrKiZLFfEdGJcMlySr+dJYcEtoZPuo6i/hb5xot" - + "le63h65ihNtXlEDrNpYSQqnfhjOzk5/+ZvYEcOtDObEwPTAhMAkGBSsOAwIa" - + "BQAEFMIeDI9l2Da24mtA1fbQIPc6+4dUBBQ8a4lD7j1CA1vRLhdEgPM+5hpD" - + "RgICCAA="); - - byte[] pkcs12noFriendly = Base64.decode( - "MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCBAAwgDCABgkqhkiG9w0BBwGggCSA" - + "BIICvjCCArowggK2BgsqhkiG9w0BDAoBAqCCAqUwggKhMBsGCiqGSIb3DQEM" - + "AQMwDQQIyJDupEHvySECAQEEggKAupvM7RuZL3G4qNeJM3afElt03TVfynRT" - + "xUxAZOfx+zekHJTlnEuHJ+a16cOV6dQUgYfyMw1xcq4E+l59rVeMX9V3Zr0K" - + "tsMN9VYB/9zn62Kw6LQnY0rMlWYf4bt9Ut5ysq0hE5t9FL+NZ5FbFdWBOKsj" - + "/3oC6eNXOkOFyrY2haPJtD1hVHUosrlC0ffecV0YxPDsReeyx0R4CiYZpAUy" - + "ZD7rkxL+mSX7zTsShRiga2Q/NEhC1KZpbhO/qbyOgvH0r7CRumSMvijzDgaV" - + "IGqtrIZ2E2k5kscjcuFTW0x3OZTLAW/UnAh4JXJzC6isbdiWuswbAEBHifUC" - + "rk2f+bDJKe2gkH67J2K0yDQ3YSSibpjDX/bVfbtfmOoggK9MKQwqEeE0nbYE" - + "jzInH2OK5jPtmwppjmVA7i3Uk25w2+z7b/suUbft9hPCNjxFvzdbyCcXK4Vv" - + "xAgEbVWnIkvOQNbyaQi+DEF/4P26GwgJgXuJpMBn0zzsSZSIDLNl8eJHoKp2" - + "ZXknTi0SZkLaYlBxZlNhFoyXLfvQd6TI2aR5aCVqg1aZMBXyOWfz5t0JTVX8" - + "HTIcdXKis91iEsLB7vjcxIOASTAjKARr5tRp6OvaVterAyDOn2awYQJLLic5" - + "pQfditRAlsLkTxlDdu0/QBMXSPptO8g3R+dS7ntvCjXgZZyxpOeKkssS2l5v" - + "/B2EsfKmYA9hU4aBdW1S9o/PcF1wpVqABd8664TGJ77tCAkbdHe0VJ3Bop2X" - + "lNxlWeEeD0v0QUZLqkJoMEwi5SUE6HAWjbqGhRuHyey9E+UsdCVnQ8AxXQzL" - + "2UKOmIrXc6R25GsLPCysXuXPRFBB2Tul0V3re3hPcAAAAAAAADCABgkqhkiG" - + "9w0BBwaggDCAAgEAMIAGCSqGSIb3DQEHATAbBgoqhkiG9w0BDAEGMA0ECDXn" - + "UZu6xckzAgEBoIAEggTYQMbzAoGnRVJMbCaJJUYgaARJ4zMfxt2e12H4pX/e" - + "vnZrR1eKAMck5c2vJoEasr0i2VUcAcK12AntVIEnBwuRBcA2WrZnC28WR+O7" - + "rLdu9ymG2V3zmk66aTizaB6rcHAzs2lD74n+/zJhZNaDMBfu9LzAdWb/u6Rb" - + "AThmbw764Zyv9802pET6xrB8ureffgyvQAdlcGHM+yxaOV3ZEtS0cp7i+pb/" - + "NTiET4jAFoO1tbBrWGJSRrMKvx4ZREppMhG3e/pYglfMFl+1ejbDsOvEUKSt" - + "H+MVrgDgAv4NsUtNmBu+BIIEAIOCjrBSK3brtV0NZOWsa6hZSSGBhflbEY8s" - + "U1bDsgZIW4ZaJJvSYEXLmiWSBOgq9VxojMfjowY+zj6ePJJMyI3E7AcFa+on" - + "zZjeKxkKypER+TtpBeraqUfgf01b6olH8L2i4+1yotCQ0PS+15qRYPK6D+d3" - + "S+R4veOA6wEsNRijVcB3oQsBCi0FVdf+6MVDvjNzBCZXj0heVi+x0EE106Sz" - + "B3HaDbB/KNHMPZvvs3J3z2lWLj5w7YZ9eVmrVJKsgG2HRKxtt2IQquRj4BkS" - + "upFnMTBVgWxXgwXycauC9bgYZurs+DbijqhHfWpUrttDfavsP8aX6+i3gabK" - + "DH4LQRL7xrTcKkcUHxOTcPHLgDPhi+RevkV+BX9tdajbk4tqw1d+0wOkf1pW" - + "aTG8fUp0lUpra7EJ0lGy8t/MB3NEk/5tLk9qA2nsKKdNoEdZWiEBE0fMrH1o" - + "tWJDew3VhspT+Lkor2dLN5ydjcr3wkb76OETPeMxS91onNj5mrAMUBt66vb6" - + "Gx4CL8FTRNZ/l8Kzngzdv9PmmKPTIXbhYbn3XRGg3od2tC/oVfsqYlGAMgFO" - + "STt+BZ1BR9Phyi4jsiy8R0seCEDRWYQLbwgwVj0V8Rx9VptqRoCnB4XhGJoJ" - + "TdAz/MT7KOSxIh2F2FymTJpyImcV6X4Kcj9iY0AZQ4zj712g4yMR6xKGzRu6" - + "oIBDkFW2bdA3Lb9ePpo5GFtNyA7IbggIko6VOeeOKxaq9nALS2gsZc1yaYtp" - + "aKL8kB+dVTCXiLgQniO6eMzgonsuwFnG+42XM1vhEpAvFzeJRC0CYzebEK9n" - + "nGXKCPoqPFuw3gcPMn57NCZJ8MjT/p0wANIEm6AsgqrdFKwTRVJ1ytB/X9Ri" - + "ysmjMBs9zbFKjU9jVDg1vGBNtb7YnYg9IrYHa3e4yTu2wUJKGP2XWHVgjDR7" - + "6RtzlO4ljw0kkSMMEDle2ZbGZ6lVXbFwV0wPNPmGA6+XGJRxcddTnrM6R/41" - + "zqksFLgoNL2BdofMXwv7SzxGyvFhHdRRdBZ5dKj2K9OfXakEcm/asZGu87u8" - + "y9m7Cckw8ilSNPMdvYiFRoThICx9NiwYl1IIKGcWlb9p6RAx6XNSkY6ZZ6pE" - + "Vla1E26rbd7is1ssSeqxLXXV9anuG5HDwMIt+CIbD8fZmNTcWMzZRiaFajvR" - + "gXdyTu/UhVdhiQPF+lrxp4odgF0cXrpcGaKvOtPq04F4ad3O5EkSGucI210Q" - + "pR/jQs07Yp5xDPzsXAb8naHb84FvK1iONAEjWbfhDxqtH7KGrBbW4KEzJrv3" - + "B8GLDp+wOAFjGEdGDPkOx3y2L2HuI1XiS9LwL+psCily/A96OiUyRU8yEz4A" - + "AAAAAAAAAAAEAwAAAAAAAAAAADAtMCEwCQYFKw4DAhoFAAQU1NQjgVRH6Vg3" - + "tTy3wnQisALy9aYECKiM2gZrLi+fAAA="); - - static char[] noFriendlyPassword = "sschette12".toCharArray(); - - byte[] pkcs12StorageIssue = Base64.decode( - "MIIO8QIBAzCCDrEGCSqGSIb3DQEHAaCCDqIEgg6eMIIOmjCCBBMGCSqGSIb3" - + "DQEHAaCCBAQEggQAMIID/DCCA/gGCyqGSIb3DQEMCgECoIICtjCCArIwHAYK" - + "KoZIhvcNAQwBAzAOBAgURJ+/5hA2pgICB9AEggKQYZ4POE8clgH9Bjd1XO8m" - + "sr6NiRBiA08CllHSOn2RzyAgHTa+cKaWrEVVJ9mCd9XveSUCoBF9E1C3jSl0" - + "XIqLNgYd6mWK9BpeMRImM/5crjy///K4ab9kymzkc5qc0pIpdCQCZ04YmtFP" - + "B80VCgyaoh2xoxqgjBCIgdSg5XdepdA5nXkG9EsQ1oVUyCykv20lKgKKRseG" - + "Jo23AX8YUYR7ANqP2gz9lvlX6RBczuoZ62ujopUexiQgt5SZx97sgo3o/b/C" - + "px17A2L4wLdeAYCMCsZhC2UeaqnZCHSsvnPZfRGiuSEGbV5gHLmXszLDaEdQ" - + "Bo873GTpKTTzBfRFzNCtYtZRqh2AUsInWZWQUcCeX6Ogwa0wTonkp18/tqsh" - + "Fj1fVpnsRmjJTTXFxkPtUw5GPJnDAM0t1xqV7kOjN76XnZrMyk2azQ1Mf3Hn" - + "sGpF+VRGH6JtxbM0Jm5zD9uHcmkSfNR3tP/+vHOB1mkIR9tD2cHvBg7pAlPD" - + "RfDVWynhS+UBNlQ0SEM/pgR7PytRSUoKc/hhe3N8VerF7VL3BwWfBLlZFYZH" - + "FvPQg4coxF7+We7nrSQfXvdVBP9Zf0PTdf3pbZelGCPVjOzbzY/o/cB23IwC" - + "ONxlY8SC1nJDXrPZ5sY51cg/qUqor056YqipRlI6I+FoTMmMDKPAiV1V5ibo" - + "DNQJkyv/CAbTX4+oFlxgddTwYcPZgd/GoGjiP9yBHHdRISatHwMcM06CzXJS" - + "s3MhzXWD4aNxvvSpXAngDLdlB7cm4ja2klmMzL7IuxzLXFQFFvYf7IF5I1pC" - + "YZOmTlJgp0efL9bHjuHFnh0S0lPtlGDOjJ/4YpWvSKDplcPiXhaFVjsUtclE" - + "oxCC5xppRm8QWS8xggEtMA0GCSsGAQQBgjcRAjEAMBMGCSqGSIb3DQEJFTEG" - + "BAQBAAAAMGkGCSsGAQQBgjcRATFcHloATQBpAGMAcgBvAHMAbwBmAHQAIABS" - + "AFMAQQAgAFMAQwBoAGEAbgBuAGUAbAAgAEMAcgB5AHAAdABvAGcAcgBhAHAA" - + "aABpAGMAIABQAHIAbwB2AGkAZABlAHIwgZsGCSqGSIb3DQEJFDGBjR6BigA3" - + "AGQAZQBmADUAYgA0ADMANgBjAGEAYgBkADAAMAAyAGQAZAAyADkAMAAzAGIA" - + "MQA2ADgANgBjADcAOQA0ADgAXwA0ADYAZgAyADYAZgBkADQALQA4ADEAMgBk" - + "AC0ANABlAGYAYgAtADgAMAA4ADgALQA0ADUAYQBiADkAMQA5ADEAMAA3AGMA" - + "YzCCCn8GCSqGSIb3DQEHBqCCCnAwggpsAgEAMIIKZQYJKoZIhvcNAQcBMBwG" - + "CiqGSIb3DQEMAQYwDgQIbr2xdnQ9inMCAgfQgIIKOHg9VKz+jlM+3abi3cp6" - + "/XMathxDSEJLrxJs6j5DAVX17S4sw1Q/1pptjdMdd8QtTfUB6JpfgJ5Kpn+h" - + "gZMf6M8wWue0U/RZN0D9w7o+2n+X3ItdEXu80eJVDOm7I2p8qiXtijbMbXRL" - + "Cup1lgfPM5uv2D63/hmWRXLeG8eySrJnKENngpM559V8TI2JcTUBy1ZP3kcH" - + "KbcJ/tVPnIIe4qguxfsTmDtAQviGvWUohbt+RGFmtqfgntK7o6b+S8uRSwEs" - + "fOU/pnVE9M1ugtNJZI/xeGJq6umZWXA/OrAcK7feWUwqRvfivDGQJEoggByd" - + "4/g92PhK1JGkwlCb1HdfhOOKKChowQ4zVvSOm+uBxARGhk2i5uW9I20I0vSJ" - + "px42O2VFVJweOchfp+wBtSHBKYP1ZXyXWMvOtULClosSeesbYMAwvyBfpYEz" - + "3rQt/1iZkqDmEisXk8X1aEKG1KSWaSPyb/+6glWikDm+YdQw3Khu7IZt1l/H" - + "qWGecccel+R9mT4YjRzHlahUYk4U+RNVasVpH1Kxz2j3CZqL+b3jQOwSAPd/" - + "hKI+S/pjIpBPfiC4WxORAzGZzY2j+a79B70h1DO1D9jGur3vJDbdmGBNgs6d" - + "nonE1B527SICcGeXY1MtnZCLOPvySih0AvOekbN9x2CJg+Hp9e7A3Fxni53/" - + "oMLr9wGRRDki72eXCXW98mU8VJofoWYS1/VBLXGf/f+tJ9J02PpzxleqPH9T" - + "4mE+YHnZId6cqjCXmwvMr2cMw2clDVfvkbAJRE3eZHzL7IWSO8+giXzzrTsl" - + "VbMuXVkT4oniTN7TSRsBCT3zVVmCy1QL2hPBD6KsVc+bvLgAHRov84FPrI3f" - + "kY/oJufT36VE34Eu+QjzULlvVsLE3lhjutOerVIGSP//FM4LE99hp214P0JF" - + "DgBK+3J+ihmFdW8hUXOt6BU8/MBeiroiJMWo1/f/XcduekG2ZsdGv+GNPzXI" - + "PyHRpCgAgmck1+qoUPXxHRJuNqv223OZ5MN14X7iLl5OZ+f8IWfxUnZeZ9gj" - + "HNeceElwZ+YOup1CAi3haD9jxRWhZG4NDfB4IYi4Bc/TAkXE3jCPkYEvIbj9" - + "ExaU1Ts0+lqOOcwRmBoYjVrz0xbtfR/OWlopyrDHbeL5iQcQCW/loYRapWCZ" - + "E4ekHknpX9yoAwT355vtTkl0VKXeSZHE8jREhN95aY9zCoLYwbTQDTw7qUR5" - + "UamabLew0oS0XALtuOrfX4OUOZZUstUsGBle/Pw1TE3Bhe1clhrikp0F+Xgb" - + "Xx90KqxZX/36RMnCMAD7/q+57rV7WXp2Y5tT0AUgyUMjy1F1X/b1olUfqO1u" - + "rlWIUTl2znmQ3D9uO3W4ytfgGd5DpKcl2w84MBAT9qGwKuQg/UYKbP4K/+4L" - + "Y1DWCy3utmohQ28IJtlIUkPL1G7lHX1tfq/VA+bRNTJIhMrNn06ZJpuEJHDs" - + "/ferdlMFt/d6MrwVivmPVYkb8mSbHSiI8jZOFE44sA974depsDyXafFaSsl0" - + "bVzqOAu0C/n9dIednU0xxxgDF/djdZ/QhbaDIg2VJf11wx0nw9n76B0+eeyu" - + "QLaapzxCpQNDVOAM9doBb5F1I5pXQHFQqzTNtLmqDC4x0g8IH7asyk5LCglT" - + "b1pwMqPJOL2vGWKRLhPzT+9OfSpCmYGKytf593hmGmwIgEO13hQrw31F5TYt" - + "btkbDr+Q5XilOKEczhEM+Ug7YHU7bxkckOAbxu0YeRp/57GdGLokeLJ0dRlQ" - + "+V2CfQvWJoVC6PS4PUQtjwgK2p/LU10QsEFwM/S621fGq9zGrv7+FPBATRDb" - + "k4E9D/WaRylnW11ZTrOlTchQkoHcOh0xztlFxU8jzuIuDrPQQWkoqdl6B+yf" - + "lykRNJKKxwzFiPl40nLC3nEdIzCEvR4r/9QHiWQxAVSc/wQX+an5vakUmSXS" - + "oLFjgVdY1jmvdsx2r5BQPuOR8ONGmw/muvVSMaHV85brA4uk0lxn00HD9/a0" - + "A1LCeFkabNLn9wJT8RaJeOSNmFFllLR70OHaoPSb3GyzHpvd1e6aeaimdyVH" - + "BQWJ6Ufx+HjbOGuOiN46WyE6Q27dnWxx8qF89dKB4T/J0mEXqueiUjAUnnnR" - + "Cs4zPaX53hmNBdrZGaLs+xNG8xy+iyBUJIWWfQAQjCjfHYlT9nygiUWIbVQq" - + "RHkGkAN62jsSNLgHvWVzQPNNsYq0U8TPhyyci/vc8MJytujjptcz8FPqUjg2" - + "TPv34ef9buErsm4vsdEv/8Z+9aDaNex+O3Lo3N0Aw7M5NcntFBHjFY/nBFNZ" - + "whH5YA4gQ8PLZ5qshlGvb0DFXHV/9zxnsdPkLwH47ERm5IlEAuoaWtZFxg27" - + "BjLfwU1Opk+ybDSb5WZVZrs7ljsU85p3Vaf3a//yoyr9ITYj15tTXxSPoct0" - + "fDUy1I6LjJH/+eZXKA1WSda9mDQlRocvJ0IIIlI4weJpTdm8aHIJ8OngCqOF" - + "TufcSLDM41+nxEK1LqXeAScVy74kVvvqngj6mIrbylrINZOHheEgTXrUWEc0" - + "uXS8l1YqY6K6Ru5km2jVyWi/ujrDGb6QGShC09oiDYUuUGy4gwJ3XLVX/dR3" - + "pmMExohTGiVefFP400wVZaxB9g1BQmjSEZxIaW1U1K6fk8Yni8yWB3/L/PuD" - + "0+OV+98i1sQGaPe35crIpEc7R2XJdngL0Ol1ZuvCIBfy5DQwGIawTtBnjPdi" - + "hy//QTt/isdu7C5pGaJDkZFMrfxMibr6c3xXr7wwR75sTzPNmS8mquEdLsmG" - + "h8gTUnB8/K6V11JtUExMqTimTbUw+j8PggpeBelG36breWJIz1O+dmCTGuLM" - + "x/sK/i8eiUeRvWjqYpq5DYt4URWg2WlcpcKiUxQp07/NMx0svDC+mlQGwMnJ" - + "8KOJMW1qr3TGEJ/VVKKVn6sXn/RxA+VPofYzhwZByRX87XmNdPeQKC2DHQsW" - + "6v83dua5gcnv0cv/smXt7Yr/c12i0fbIaQvj3qjtUCDucjARoBey3eCyG5H6" - + "5VHSsFnPZ2HCTum+jRSw/ENsu/77XU4BIM2fjAfswp7iIr2Xi4OZWKIj6o6q" - + "+fNgnOJjemDYHAFK+hWxClrG8b+9Eaf21o4zcHkhCfBlYv4d+xcZOIDsDPwI" - + "sf+4V+CfoBLALsa2K0pXlPplGom/a8h7CjlyaICbWpEDItqwu7NQwdMRCa7i" - + "yAyM1sVjXUdcZByS1bjOFSeBe7ygAvEl78vApLxqt8Cw11XSsOtmwssecUN/" - + "pb7iHE4OMyOgsYx9u7rZ2hMyl42n3c29IwDYMumiNqk9cwCBpQTJAQEv4VzO" - + "QE5xYDBY9SEozni+4f7B7e2Wj/LOGb3vfNVYGNpDczBFxvr2FXTQla0lNYD/" - + "aePuC++QW4KvwiGL1Zx4Jo0eoDKWYlYj0qiNlQbWfVw+raaaFnlrq+je0W6P" - + "+BrKZCncho145y+CFKRLZrN5yl/cDxwsePMVhAIMr1DzVhgBXzA3MB8wBwYF" - + "Kw4DAhoEFN4Cwj9AtArnRbOIAsRhaaoZlTNJBBTIVPqCrloqLns145CWXjb0" - + "g141BQ=="); - - static char[] storagePassword = "pass".toCharArray(); - - byte[] pkcs12nopass = Base64.decode( - "MIIMvgIBAzCCDIQGCSqGSIb3DQEHAaCCDHUEggxxMIIMbTCCCS8GCSqGSIb3" - + "DQEHBqCCCSAwggkcAgEAMIIJFQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYw" - + "DgQIfnlhuZRR6/YCAggAgIII6DYgeRwq5n9kzvohZ3JuK+fB+9jZ7Or6EGBA" - + "GDxtBfHmSNUBWJEV/I8wV1zrKKoW/CaoZfA61pyrVZRd/roaqBx/koTFoh/g" - + "woyyWTRV9gYTXSVqPQgCH+e2dISAa6UGO+/YOWOOwG2X3t8tS+3FduFQFLt5" - + "cvUP98zENdm57Aef5pKpBSZDLIAoTASfmqwszWABRh2p/wKOHcCQ9Aj2e2vs" - + "pls/ntIv81MqPuxHttwX8e+3dKWGFrJRztLpCD2aua8VkSsHFsPxEHkezX4O" - + "6/VCjMCRFGophTS4dgKKtQIhZ9i/ESlr6sGKgIpyG99ALFpNEhtTKe+T3boE" - + "sEkhGDquSpu4PGz2m0W5sej1DyFkKX4zIbeMDAb1y3O7aP0F+Llo9QSeGsOA" - + "aCwND3NUAKBMOHzwdyNQcuCGCqY8j5rrSt99A5FMs3UVW3XU6hRCx7JlzO05" - + "PNCkcPRSnKSNzBhIR5W0qj4PAZnQTfX+wbtUaDLIqsObX4Muh2l3gl+JmdpO" - + "53U7ILqN8PAPly1eT+fIrUmlMmFhvo6LbTB7B2K728wsA/5wROlud/mOQz4s" - + "quS288YsnVc9ExSZKodWa3Pqcdb/cgKNJYDxrR6/eBHOj+0RLK/1yTK9ghj7" - + "IPYHoEqQbw768WK92RjM+RFGlXASkQhR9y4weWj/388uAWMIbQ+R2Zi4nb31" - + "knjqRPFThysG1bsRL04/9PgysaasfS9KYOeAlLqp+Ar4gJrof5fytBuY+6wm" - + "/J8eEdNw7VPV1cz/4rhrd2sfJQwDEN/iZoy8rTwe7wozpwZI0lwH11BBbav+" - + "1AMfI79jjxhqOeo7uxE2NzUmSd05JYI7a94tcRzGQyGEKpGxYCRamzFW23qb" - + "vG5Hcqi7Tdd7eTxw4c60l/vQLSo38g6ST5yZrK3URLiAtpioPyjrq2jnVfie" - + "QLsiAHhpHF01+t+OcKv3UjwdEyBmQ34h9klwiG7iwBFXZaPXFCF2Np1TqFVG" - + "jjBzmB+hRddEiYwN+XGCKB2Cvgc5ZMQ8LG9jQmEKLmOjuumz1ciAVY2qtl1s" - + "HYSvfNsIAV/gGzHshOVF19JmGtcQt3pMtupoRh+sh8jY2/x5eIKrj2Jx6HPd" - + "p/6IPUr54j0xSd6j7gWuXMj/eKp/utMNuBzAhkydnhXYedvTDYIj7SyPPIHa" - + "qtam8rxTDWn2AOxp7OXTgPmo1GU2zW1OLL1D3MFlS+oaRMfhgNrhW+QP5ay6" - + "ge4QLijpnSM+p0CbFAOClwzgdJV56bBVV09sDqSBXnG9MeEv5nDaH3I+GpPA" - + "UgDkaI4zT61kaGgk0uNMf3czy2ycoQzTx0iHDTXSdSqvUC1yFza8UG4AYaKz" - + "14gtSL7StvZtK0Y8oI084BINI1LgrWyrOLj7vkds4WrKhXm21BtM1GbN/pFh" - + "XI41h+XoD8KnEPqJ36rAgBo1uHqTNJCC7YikDE/dEvq6MkOx+Nug1YZRHEyi" - + "3AHry5u1HJHtxT34HXBwRXvnstuFhvU6cjc1WY1dJhu1p82TGnx7OBo/QbcM" - + "8MRrWmWuU5eW4jWbriGNGYfvZy+tHnGwy0bIeqrsHOG6/JwvfmYYXe64sryH" - + "5Qo96SZtcTJZaNFwuBY+bFUuOWm8YrT1L7Gl2Muf3pEVtNHLeYARBo1jEAym" - + "Cb4jw0oodZqbPKdyyzUZu69fdTJiQkMUcKDfHJEGK0Li9SvtdqJLiiJs57Tb" - + "YfOvn+TIuC40ssJFtmtlGCVH/0vtKLWYeW1NYAMzgI/nlhQ7W6Aroh8sZnqv" - + "SwxeQmRJaVLxiV6YveTKuVlCbqNVLeEtKYAujgnJtPemGCPbwZpwlBw6V+Dz" - + "oXveOBcUqATztWJeNv7RbU0Mk7k057+DNxXBIU+eHRGquyHQSBXxBbA+OFuu" - + "4SPfEAyoYed0HEaoKN9lIsBW1xTROI30MZvaJXvPdLsa8izXGPLnTGmoI+fv" - + "tJ644HtBCCCr3Reu82ZsTSDMxspZ9aa4ro9Oza+R5eULXDhVXedbhJBYiPPo" - + "J37El5lRqOgu2SEilhhVQq3ZCugsinCaY9P/RtWG4CFnH1IcIT5+/mivB48I" - + "2XfH6Xq6ziJdj2/r86mhEnz9sKunNvYPBDGlOvI7xucEf9AiEQoTR1xyFDbW" - + "ljL4BsJqgsHN02LyUzLwqMstwv+/JH1wUuXSK40Kik/N7+jEFW2C+/N8tN7l" - + "RPKSLaTjxVuTfdv/BH1dkV4iGFgpQrdWkWgkb+VZP9xE2mLz715eIAg13x6+" - + "n97tc9Hh375xZJqwr3QyYTXWpsK/vx04RThv8p0qMdqKvf3jVQWwnCnoeBv2" - + "L4h/uisOLY18qka/Y48ttympG+6DpmzXTwD1LycoG2SOWckCMmJhZK40+zr3" - + "NVmWf6iJtbLGMxI/kzTqbTaOfXc2MroertyM1rILRSpgnJFxJfai5Enspr9b" - + "SCwlP718jG2lQsnYlw8CuxoZAiaNy4MmC5Y3qNl3hlcggcHeLodyGkSyRsBg" - + "cEiKSL7JNvqr0X/nUeW28zVxkmQsWlp3KmST8agf+r+sQvw52fXNLdYznGZV" - + "rJrwgNOoRj0Z70MwTns3s/tCqDEsy5Sv/5dZW2uQEe7/wvmsP2WLu73Rwplg" - + "1dwi/Uo9lO9dkEzmoIK5wMPCDINxL1K+0Y79q0tIAEMDgaIxmtRpEh8/TEsA" - + "UwyEErkDsQqgGviH+ePmawJ/yehYHTRfYUgdUflwApJxRx65pDeSYkiYboMU" - + "8WSAQY2nh/p9hLlS4zbz9dCK2tzVyRkJgqNy/c4IpiHEx2l1iipW9vENglqx" - + "dYP4uqD8e3OOLjDQKizWx2t1u7GRwoEVQ3d3QzzOvsRcv7h+6vNsmYqE6phe" - + "wKFZLctpSn21zkyut444ij4sSr1OG68dEXLY0t0mATfTmXXy5GJBsdK/lLfk" - + "YTIPYYeDMle9aEicDqaKqkZUuYPnVchGp8UFMJ3M0n48OMDdDvpzBLTxxZeW" - + "cK5v/m3OEo3jgxy9wXfZdz//J3zXXqvX8LpMy1K9X0uCBTz6ERlawviMQhg1" - + "1okD5zCCAzYGCSqGSIb3DQEHAaCCAycEggMjMIIDHzCCAxsGCyqGSIb3DQEM" - + "CgECoIICpjCCAqIwHAYKKoZIhvcNAQwBAzAOBAj3QoojTSbZqgICCAAEggKA" - + "YOSp5XGdnG1pdm9CfvlAaUSHRCOyNLndoUTqteTZjHTEM9bGwNXAx4/R5H2Q" - + "PnPm5HB/ynVSXX0uKdW6YlbqUyAdV3eqE4X3Nl+K7ZoXmgAFnMr0tveBhT1b" - + "7rTi0TN4twjJzBTkKcxT8XKjvpVizUxGo+Ss5Wk8FrWLHAiC5dZvgRemtGcM" - + "w5S09Pwj+qXpjUhX1pB5/63qWPrjVf+Bfmlz4bWcqogGk0i7eg+OdTeWMrW0" - + "KR9nD1+/uNEyc4FdGtdIPnM+ax0E+vcco0ExQpTXe0xoX4JW7O71d550Wp89" - + "hAVPNrJA5eUbSWNsuz+38gjUJ+4XaAEhcA7HZIp6ZyxtzSJUoh7oqpRktoxu" - + "3cSVqVxIqAEqlNn6j0vbKfW91Od5DI5L+BIxY4xqXS7fdwipj9r6qWA8t9QU" - + "C2r1A+xXpZ4jEh6inHW9qlfACBBrYf8pSDakSR6yTbaA07LExw0IXz5oiQYt" - + "s7yx231CZlOH88bBmruLOIZsJjeg/lf63zI7Gg4F85QG3RqEJnY2pinLUTP7" - + "R62VErFZPc2a85r2dbFH1mSQIj/rT1IKe32zIW8xoHC4VwrPkT3bcLFAu2TH" - + "5k5zSI/gZUKjPDxb2dwLM4pvsj3gJ9vcFZp6BCuLkZc5rd7CyD8HK9PrBLKd" - + "H3Yngy4A08W4U3XUtIux95WE+5O/UEmSF7fr2vT//DwZArGUpBPq4Bikb8cv" - + "0wpOwUv8r0DXveeaPsxdipXlt29Ayywcs6KIidLtCaCX6/0u/XtMsGNFS+ah" - + "OlumTGBFpbLnagvIf0GKNhbg2lTjflACnxIj8d+QWsnrIU1uC1JRRKCnhpi2" - + "veeWd1m8GUb3aTFiMCMGCSqGSIb3DQEJFTEWBBS9g+Xmq/8B462FWFfaLWd/" - + "rlFxOTA7BgkqhkiG9w0BCRQxLh4sAEMAZQByAHQAeQBmAGkAawBhAHQAIAB1" - + "AHoAeQB0AGsAbwB3AG4AaQBrAGEwMTAhMAkGBSsOAwIaBQAEFKJpUOIj0OtI" - + "j2CPp38YIFBEqvjsBAi8G+yhJe3A/wICCAA="); - - private byte[] gostPfx = Base64.decode( - "MIIHEgIBAzCCBssGCSqGSIb3DQEHAaCCBrwEgga4MIIGtDCCBYEGCSqGSIb3" - + "DQEHBqCCBXIwggVuAgEAMIIFZwYJKoZIhvcNAQcBMFUGCSqGSIb3DQEFDTBI" - + "MCcGCSqGSIb3DQEFDDAaBAi114+lRrpkXAICCAAwCgYGKoUDAgIKBQAwHQYG" - + "KoUDAgIVMBMECLEIQPMsz/ZZBgcqhQMCAh8BgIIFAbu13yJiW/BnSKYKbtv9" - + "tDJoTv6l9BVpCCI4tvpzJnMeLBJyVZU4JevcJNii+R1LilVuuB+xc8e7/P4G" - + "6TILWmnnispr9KPRAbYRfoCJOa59+TYJMur58wwDuYgMapQAFzsvpzyUWi62" - + "o3uQbbLKO9hQCeJW2L+K9cbg8k33MjXMLpnblKpqmZbHTmBJDFR3xGw7IEjD" - + "UNqruu7DlHY6jctiVJSii9UNEVetSo9AAzfROxRjROg38VsWxLyO9wEMBv/8" - + "H8ur+zOtmQPGqirNXmN+pa08OvZin9kh7CgswW03xIbfsdGGGLRAWtvCnEwJ" - + "mS2tEfH1SZcuVLpMomhq3FU/jsc12k+vq/jw4I2cmfDL41ieK72bwNj8xUXu" - + "JHeoFSPGX4z+nsJUrFbFG4VBuDs2Y0SCWLyYZvdjvJwYjfqtyi/RoFSZjGHF" - + "crstf9YNQ0vW0efCJ7pUBH44OrbnCx5ng2U5jFm1b3HBIKA2RX+Tlhv14MgT" - + "KSftPZ67eSmgdsyPuQAdMu6fEdBMpVKMNZNRV565690sqi+1jOmH94TUX8XU" - + "2pRQj6eGGLq6lgGnnDabcePUEPXW8zW2KYrDKYJ/1QZmVGldvlqnjZMNhIO+" - + "Afsqax/P8RBjMduGqdilGdRzbN8PdhVaN0Ys+WzFxiS9gtaA2yPzcQuedWDN" - + "T7sIrfIapgFYmmHRQ7ht4AKj+lmOyNadONYw+ww+8RzHB1d2Kk+iXeZCtvH0" - + "XFWJZtuoGKSt/gkI0E2vpDfMbLaczaRC7ityO0iJs25ozP4JhZRBVvOmpxc9" - + "YuIetbTnTf1TLJKXDgt1IwPZeugbofSeiNv117lx8VgtvMYFD4W+WQlB8HnO" - + "C8NOYjkMPElc6PCMB9gGm0cIu1fKLvY8ycLav93JJjdDuC0kgKLb2+8mC5+2" - + "DdMkcfgW6hy4c98xnJs8enCww3A4xkRbMU13zMq70liqmKHV2SSurg5hwUHM" - + "ZthT8p988ZBrnqW24lXfMBqTK4YtIBMeMnvKocYBXr96ig3GfahI1Aj2Bw2e" - + "bpZTVeayYUd+2xX8JJMdqna6Q61AL8/eUhJUETz5+fgQJtPjcKmdJfVHO6nB" - + "vOk1t/rjK17eiXLxHCyvfP+Tw8lSFOhcvr4eIeG8WfsWNRu2eKKosOU7uash" - + "QpnvQieqDeijuRxf+tbbJ5D86inwbJqdxra7wNuZXmiaB9gFDzNbNjhtL+6i" - + "gUyX/iQHKi9bNK+PH6pdH/gkwnG/juhdgqoNY6GRty/LUOPgXD+r5e/ST16R" - + "vnlwrlKp5FzRWBEkem+dhelj3rb+cxKEyvPe3TvIUFcmIlV1VCRQ1fBHtX18" - + "eC3a3GprH8c40z3S/kdyk7GlFQ27DRLka+iDN05b+MP5jlgvfqYBKxwLfeNu" - + "MpxWoCUvYWiQdMih86/l0H+0o5UB8SqRbpuvr6fY910JCk0hDaO1pgB3HlRz" - + "k1vb46pg25heXQm3JmO+ghxjOGliYBWjl8p7AfRS9cjS8ca+X02Mv9Viv7Ce" - + "3+Gz0MVwfK98viJ3CFxkaEBlM2LM0IeUQbkHG+YwYaTSfl4GYyrug4F0ZdrA" - + "KeY9/kIxa/OJxjcIMs2H+2mSpxmrb7ylmHZ2RB8ITiduRVtO091hn/J7N+eT" - + "h6BvLBKIFU+UFUdgjxoDNDk7ao++Mu9T3dQfceFBOYzW9vMQgX30yaPLSdan" - + "ZMAP0VtiNjCCASsGCSqGSIb3DQEHAaCCARwEggEYMIIBFDCCARAGCyqGSIb3" - + "DQEMCgECoIGyMIGvMFUGCSqGSIb3DQEFDTBIMCcGCSqGSIb3DQEFDDAaBAiQ" - + "Owewo16xzQICCAAwCgYGKoUDAgIKBQAwHQYGKoUDAgIVMBMECHSCNJJcQ2VI" - + "BgcqhQMCAh8BBFYCyRRpFtZgnsxeK7ZHT+aOyoVmzhtnLrqoBHgV4nJJW2/e" - + "UcJjc2Rlbzfd+3L/GWcRGF8Bgn+MjiaAqE64Rzaao9t2hc3myw1WrCfPnoEx" - + "VI7OPBM5FzFMMCMGCSqGSIb3DQEJFTEWBBTV7LvI27QWRmHD45X2WKXYs3ct" - + "AzAlBgkqhkiG9w0BCRQxGB4WAGMAcABfAGUAeABwAG8AcgB0AGUAZDA+MC4w" - + "CgYGKoUDAgIJBQAEIJbGZorQsNM63+xozwEI561cTFVCbyHAEEpkvF3eijT8" - + "BAgY5sDtkrVeBQICCAA="); - - /** - * we generate a self signed certificate for the sake of testing - RSA - */ - public Certificate createCert( - PublicKey pubKey, - PrivateKey privKey, - String issuerEmail, - String subjectEmail) - throws Exception - { - // - // distinguished name table. - // - Hashtable issuerAttrs = new Hashtable(); - - issuerAttrs.put(X509Principal.C, "AU"); - issuerAttrs.put(X509Principal.O, "The Legion of the Bouncy Castle"); - issuerAttrs.put(X509Principal.L, "Melbourne"); - issuerAttrs.put(X509Principal.ST, "Victoria"); - issuerAttrs.put(X509Principal.EmailAddress, issuerEmail); - - Hashtable subjectAttrs = new Hashtable(); - - subjectAttrs.put(X509Principal.C, "AU"); - subjectAttrs.put(X509Principal.O, "The Legion of the Bouncy Castle"); - subjectAttrs.put(X509Principal.L, "Melbourne"); - subjectAttrs.put(X509Principal.ST, "Victoria"); - subjectAttrs.put(X509Principal.EmailAddress, subjectEmail); - - Vector order = new Vector(); - order.add(X509Principal.C); - order.add(X509Principal.O); - order.add(X509Principal.L); - order.add(X509Principal.ST); - order.add(X509Principal.EmailAddress); - - // - // extensions - // - - // - // create the certificate - version 3 - // - X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(new X509Principal(order, issuerAttrs)); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 30))); - certGen.setSubjectDN(new X509Principal(order, subjectAttrs)); - certGen.setPublicKey(pubKey); - certGen.setSignatureAlgorithm("MD5WithRSAEncryption"); - - return certGen.generate(privKey); - } - - private void testGOSTStore() - throws Exception - { - byte[] data = Hex.decode("deadbeef"); - - KeyStore pkcs12 = KeyStore.getInstance("PKCS12", "BC"); - - pkcs12.load(new ByteArrayInputStream(gostPfx), "1".toCharArray()); - - PrivateKey pk = (PrivateKey)pkcs12.getKey("cp_exported", null); - Certificate[] pubCerts = pkcs12.getCertificateChain("cp_exported"); - - Signature sig = Signature.getInstance("ECGOST3410", "BC"); - - sig.initSign(pk); - - sig.update(data); - - byte[] signature = sig.sign(); - - sig = Signature.getInstance("ECGOST3410", "BC"); - - sig.initVerify(pubCerts[0].getPublicKey()); - - sig.update(data); - - if (!sig.verify(signature)) - { - fail("key test failed in GOST store"); - } - } - - public void testPKCS12Store() - throws Exception - { - BigInteger mod = new BigInteger("bb1be8074e4787a8d77967f1575ef72dd7582f9b3347724413c021beafad8f32dba5168e280cbf284df722283dad2fd4abc750e3d6487c2942064e2d8d80641aa5866d1f6f1f83eec26b9b46fecb3b1c9856a303148a5cc899c642fb16f3d9d72f52526c751dc81622c420c82e2cfda70fe8d13f16cc7d6a613a5b2a2b5894d1", 16); - KeyStore store = KeyStore.getInstance("PKCS12", "BC"); - ByteArrayInputStream stream = new ByteArrayInputStream(pkcs12); - - store.load(stream, passwd); - - Enumeration en = store.aliases(); - String pName = null; - - while (en.hasMoreElements()) - { - String n = (String)en.nextElement(); - if (store.isKeyEntry(n)) - { - pName = n; - } - else - { - // the store's we're using here are consistent so this test will pass - it's actually - // possible for this test to fail in other circumstances as PKCS#12 allows certificates - // to be stored multiple times under different aliases. - X509Certificate cert = (X509Certificate)store.getCertificate(n); - - if (!store.getCertificateAlias(cert).equals(n)) - { - fail("certificate alias check fails"); - } - } - } - - PrivateKey key = (PrivateKey)store.getKey(pName, null); - - if (!((RSAPrivateKey)key).getModulus().equals(mod)) - { - fail("Modulus doesn't match."); - } - - Certificate[] ch = store.getCertificateChain(pName); - - if (ch.length != 3) - { - fail("chain was wrong length"); - } - - if (!((X509Certificate)ch[0]).getSerialNumber().equals(new BigInteger("96153094170511488342715101755496684211"))) - { - fail("chain[0] wrong certificate."); - } - - if (!((X509Certificate)ch[1]).getSerialNumber().equals(new BigInteger("279751514312356623147411505294772931957"))) - { - fail("chain[1] wrong certificate."); - } - - if (!((X509Certificate)ch[2]).getSerialNumber().equals(new BigInteger("11341398017"))) - { - fail("chain[2] wrong certificate."); - } - - // - // save test - // - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - store.store(bOut, passwd); - - stream = new ByteArrayInputStream(bOut.toByteArray()); - - store.load(stream, passwd); - - key = (PrivateKey)store.getKey(pName, null); - - if (!((RSAPrivateKey)key).getModulus().equals(mod)) - { - fail("Modulus doesn't match."); - } - - // - // save test using LoadStoreParameter - // - bOut = new ByteArrayOutputStream(); - - PKCS12StoreParameter storeParam = new PKCS12StoreParameter(bOut, passwd, true); - - store.store(storeParam); - - byte[] data = bOut.toByteArray(); - - stream = new ByteArrayInputStream(data); - store.load(stream, passwd); - - key = (PrivateKey)store.getKey(pName, null); - - if (!((RSAPrivateKey)key).getModulus().equals(mod)) - { - fail("Modulus doesn't match."); - } - - ASN1Encodable outer = new ASN1StreamParser(data).readObject(); - if (!(outer instanceof DERSequenceParser)) - { - fail("Failed DER encoding test."); - } - - // - // save test using LoadStoreParameter - // - bOut = new ByteArrayOutputStream(); - - JDKPKCS12StoreParameter oldParam = new JDKPKCS12StoreParameter(); - oldParam.setOutputStream(bOut); - oldParam.setPassword(passwd); - oldParam.setUseDEREncoding(true); - - store.store(oldParam); - - data = bOut.toByteArray(); - - stream = new ByteArrayInputStream(data); - store.load(stream, passwd); - - key = (PrivateKey)store.getKey(pName, null); - - if (!((RSAPrivateKey)key).getModulus().equals(mod)) - { - fail("Modulus doesn't match."); - } - - outer = new ASN1StreamParser(data).readObject(); - if (!(outer instanceof DERSequenceParser)) - { - fail("Failed DER encoding test."); - } - - // - // delete test - // - store.deleteEntry(pName); - - if (store.getKey(pName, null) != null) - { - fail("Failed deletion test."); - } - - // cert chain test - // - store.setCertificateEntry("testCert", ch[2]); - - if (store.getCertificateChain("testCert") != null) - { - fail("Failed null chain test."); - } - - // - // UTF 8 single cert test - // - store = KeyStore.getInstance("PKCS12", "BC"); - stream = new ByteArrayInputStream(certUTF); - - store.load(stream, "user".toCharArray()); - - if (store.getCertificate("37") == null) - { - fail("Failed to find UTF cert."); - } - - // - // try for a self generated certificate - // - RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16)); - - RSAPrivateCrtKeySpec privKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16), - new BigInteger("9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89", 16), - new BigInteger("c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", 16), - new BigInteger("f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", 16), - new BigInteger("b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", 16), - new BigInteger("d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", 16), - new BigInteger("b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", 16)); - - // - // set up the keys - // - PrivateKey privKey = null; - PublicKey pubKey = null; - - try - { - KeyFactory fact = KeyFactory.getInstance("RSA", "BC"); - - privKey = fact.generatePrivate(privKeySpec); - pubKey = fact.generatePublic(pubKeySpec); - } - catch (Exception e) - { - fail("error setting up keys - " + e.toString()); - } - - Certificate[] chain = new Certificate[1]; - - chain[0] = createCert(pubKey, privKey, "issuer@bouncycastle.org", "subject@bouncycastle.org"); - - testSupportedTypes(privKey, chain); - - store = KeyStore.getInstance("PKCS12", "BC"); - - store.load(null, null); - - store.setKeyEntry("privateKey", privKey, null, chain); - - if (!store.containsAlias("privateKey") || !store.containsAlias("PRIVATEKEY")) - { - fail("couldn't find alias privateKey"); - } - - if (store.isCertificateEntry("privateKey")) - { - fail("key identified as certificate entry"); - } - - if (!store.isKeyEntry("privateKey") || !store.isKeyEntry("PRIVATEKEY")) - { - fail("key not identified as key entry"); - } - - if (!"privateKey".equals(store.getCertificateAlias(chain[0]))) - { - fail("Did not return alias for key certificate privateKey"); - } - - ByteArrayOutputStream store1Stream = new ByteArrayOutputStream(); - - store.store(store1Stream, passwd); - - testNoExtraLocalKeyID(store1Stream.toByteArray()); - - // - // no friendly name test - // - store = KeyStore.getInstance("PKCS12", "BC"); - stream = new ByteArrayInputStream(pkcs12noFriendly); - - store.load(stream, noFriendlyPassword); - - en = store.aliases(); - pName = null; - - while (en.hasMoreElements()) - { - String n = (String)en.nextElement(); - - if (store.isKeyEntry(n)) - { - pName = n; - } - } - - ch = store.getCertificateChain(pName); - - for (int i = 0; i != ch.length; i++) - { - //System.out.println(ch[i]); - } - - if (ch.length != 1) - { - fail("no cert found in pkcs12noFriendly"); - } - - // - // failure tests - // - ch = store.getCertificateChain("dummy"); - - store.getCertificateChain("DUMMY"); - - store.getCertificate("dummy"); - - store.getCertificate("DUMMY"); - - // - // storage test - // - store = KeyStore.getInstance("PKCS12", "BC"); - stream = new ByteArrayInputStream(pkcs12StorageIssue); - - store.load(stream, storagePassword); - - en = store.aliases(); - pName = null; - - while (en.hasMoreElements()) - { - String n = (String)en.nextElement(); - - if (store.isKeyEntry(n)) - { - pName = n; - } - } - - ch = store.getCertificateChain(pName); - if (ch.length != 2) - { - fail("Certificate chain wrong length"); - } - - store.store(new ByteArrayOutputStream(), storagePassword); - - // - // basic certificate check - // - store.setCertificateEntry("cert", ch[1]); - - if (!store.containsAlias("cert") || !store.containsAlias("CERT")) - { - fail("couldn't find alias cert"); - } - - if (!store.isCertificateEntry("cert") || !store.isCertificateEntry("CERT")) - { - fail("cert not identified as certificate entry"); - } - - if (store.isKeyEntry("cert") || store.isKeyEntry("CERT")) - { - fail("cert identified as key entry"); - } - - if (!store.entryInstanceOf("cert", KeyStore.TrustedCertificateEntry.class)) - { - fail("cert not identified as TrustedCertificateEntry"); - } - - if (!store.entryInstanceOf("CERT", KeyStore.TrustedCertificateEntry.class)) - { - fail("CERT not identified as TrustedCertificateEntry"); - } - - if (store.entryInstanceOf("cert", KeyStore.PrivateKeyEntry.class)) - { - fail("cert identified as key entry via PrivateKeyEntry"); - } - - if (!"cert".equals(store.getCertificateAlias(ch[1]))) - { - fail("Did not return alias for certificate entry"); - } - - // - // test restoring of a certificate with private key originally as a ca certificate - // - store = KeyStore.getInstance("PKCS12", "BC"); - - store.load(null, null); - - store.setCertificateEntry("cert", ch[0]); - - if (!store.containsAlias("cert") || !store.containsAlias("CERT")) - { - fail("restore: couldn't find alias cert"); - } - - if (!store.isCertificateEntry("cert") || !store.isCertificateEntry("CERT")) - { - fail("restore: cert not identified as certificate entry"); - } - - if (store.isKeyEntry("cert") || store.isKeyEntry("CERT")) - { - fail("restore: cert identified as key entry"); - } - - if (store.entryInstanceOf("cert", KeyStore.PrivateKeyEntry.class)) - { - fail("restore: cert identified as key entry via PrivateKeyEntry"); - } - - if (store.entryInstanceOf("CERT", KeyStore.PrivateKeyEntry.class)) - { - fail("restore: cert identified as key entry via PrivateKeyEntry"); - } - - if (!store.entryInstanceOf("cert", KeyStore.TrustedCertificateEntry.class)) - { - fail("restore: cert not identified as TrustedCertificateEntry"); - } - - // - // test of reading incorrect zero-length encoding - // - store = KeyStore.getInstance("PKCS12", "BC"); - stream = new ByteArrayInputStream(pkcs12nopass); - - store.load(stream, "".toCharArray()); - } - - private void testSupportedTypes(PrivateKey privKey, Certificate[] chain) - throws Exception - { - basicStoreTest(privKey, chain, "PKCS12"); - basicStoreTest(privKey, chain, "BCPKCS12"); - basicStoreTest(privKey, chain, "PKCS12-DEF"); - - basicStoreTest(privKey, chain, "PKCS12-3DES-40RC2"); - basicStoreTest(privKey, chain, "PKCS12-3DES-3DES"); - - basicStoreTest(privKey, chain, "PKCS12-DEF-3DES-40RC2"); - basicStoreTest(privKey, chain, "PKCS12-DEF-3DES-3DES"); - } - - private void basicStoreTest(PrivateKey privKey, Certificate[] chain, String type) - throws Exception - { - KeyStore store = KeyStore.getInstance(type, "BC"); - - store.load(null, null); - - store.setKeyEntry("key", privKey, null, chain); - - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - store.store(bOut, passwd); - - store.load(new ByteArrayInputStream(bOut.toByteArray()), passwd); - - Key k = store.getKey("key", null); - - if (!k.equals(privKey)) - { - fail("private key didn't match"); - } - - Certificate[] c = store.getCertificateChain("key"); - - if (c.length != chain.length || !c[0].equals(chain[0])) - { - fail("certificates didn't match"); - } - - if (type.contains("DEF")) - { - if (c[0] instanceof X509CertificateObject) - { - fail("wrong certificate type found"); - } - } - - // check attributes - PKCS12BagAttributeCarrier b1 = (PKCS12BagAttributeCarrier)k; - PKCS12BagAttributeCarrier b2 = (PKCS12BagAttributeCarrier)chain[0]; - - if (b1.getBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_friendlyName) != null) - { - DERBMPString name = (DERBMPString)b1.getBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_friendlyName); - - if (!name.equals(new DERBMPString("key"))) - { - fail("friendly name wrong"); - } - } - else - { - fail("no friendly name found on key"); - } - - if (b1.getBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_localKeyId) != null) - { - ASN1OctetString id = (ASN1OctetString)b1.getBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_localKeyId); - - if (!id.equals(b2.getBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_localKeyId))) - { - fail("local key id mismatch"); - } - } - else - { - fail("no local key id found"); - } - - // - // check algorithm types. - // - ASN1InputStream aIn = new ASN1InputStream(bOut.toByteArray()); - - Pfx pfx = Pfx.getInstance(aIn.readObject()); - - ContentInfo cInfo = pfx.getAuthSafe(); - - ASN1OctetString auth = (ASN1OctetString)cInfo.getContent(); - - aIn = new ASN1InputStream(auth.getOctets()); - ASN1Sequence s1 = (ASN1Sequence)aIn.readObject(); - - ContentInfo c1 = ContentInfo.getInstance(s1.getObjectAt(0)); - ContentInfo c2 = ContentInfo.getInstance(s1.getObjectAt(1)); - - aIn = new ASN1InputStream(((ASN1OctetString)c1.getContent()).getOctets()); - - SafeBag sb = SafeBag.getInstance((((ASN1Sequence)aIn.readObject()).getObjectAt(0))); - - EncryptedPrivateKeyInfo encInfo = EncryptedPrivateKeyInfo.getInstance(sb.getBagValue()); - - if (!encInfo.getEncryptionAlgorithm().getAlgorithm().equals(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC)) - { - fail("key encryption algorithm wrong"); - } - - // check the key encryption - - // check the certificate encryption - EncryptedData cb = EncryptedData.getInstance(c2.getContent()); - - if (type.endsWith("3DES")) - { - if (!cb.getEncryptionAlgorithm().getAlgorithm().equals(PKCSObjectIdentifiers.pbeWithSHAAnd3_KeyTripleDES_CBC)) - { - fail("expected 3DES found: " + cb.getEncryptionAlgorithm().getAlgorithm()); - } - } - else if (type.endsWith("40RC2")) - { - if (!cb.getEncryptionAlgorithm().getAlgorithm().equals(PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC2_CBC)) - { - fail("expected 40 bit RC2 found: " + cb.getEncryptionAlgorithm().getAlgorithm()); - } - } - else - { - if (!cb.getEncryptionAlgorithm().getAlgorithm().equals(PKCSObjectIdentifiers.pbeWithSHAAnd40BitRC2_CBC)) - { - fail("expected 40 bit RC2 found: " + cb.getEncryptionAlgorithm().getAlgorithm()); - } - } - } - - private void testNoExtraLocalKeyID(byte[] store1data) - throws Exception - { - KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC"); - - kpg.initialize(512); - - KeyPair newPair = kpg.genKeyPair(); - - KeyStore store1 = KeyStore.getInstance("PKCS12", "BC"); - - store1.load(new ByteArrayInputStream(store1data), passwd); - - KeyStore store2 = KeyStore.getInstance("PKCS12", "BC"); - - store2.load(null, null); - - PrivateKey k1 = (PrivateKey)store1.getKey("privatekey", null); - Certificate[] chain1 = store1.getCertificateChain("privatekey"); - - Certificate[] chain2 = new Certificate[chain1.length + 1]; - - System.arraycopy(chain1, 0, chain2, 1, chain1.length); - - chain2[0] = createCert(newPair.getPublic(), k1, "subject@bouncycastle.org", "extra@bouncycaste.org"); - - if (((PKCS12BagAttributeCarrier)chain1[0]).getBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_localKeyId) == null) - { - fail("localKeyID not found initially"); - } - - store2.setKeyEntry("new", newPair.getPrivate(), null, chain2); - - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - store2.store(bOut, passwd); - - store2.load(new ByteArrayInputStream(bOut.toByteArray()), passwd); - - chain2 = store2.getCertificateChain("new"); - - if (((PKCS12BagAttributeCarrier)chain2[1]).getBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_localKeyId) != null) - { - fail("localKeyID found after save"); - } - } - - public String getName() - { - return "PKCS12Store"; - } - - public void performTest() - throws Exception - { - testPKCS12Store(); - testGOSTStore(); - - // converter tests - - KeyStore kS = KeyStore.getInstance("PKCS12", "BC"); - - byte[] data = PKCS12Util.convertToDefiniteLength(pkcs12); - kS.load(new ByteArrayInputStream(data), passwd); // check MAC - - ASN1Encodable obj = new ASN1StreamParser(data).readObject(); - if (!(obj instanceof DERSequenceParser)) - { - fail("Failed DER conversion test."); - } - - data = PKCS12Util.convertToDefiniteLength(pkcs12, passwd, "BC"); - kS.load(new ByteArrayInputStream(data), passwd); //check MAC - - obj = new ASN1StreamParser(data).readObject(); - if (!(obj instanceof DERSequenceParser)) - { - fail("Failed deep DER conversion test - outer."); - } - - Pfx pfx = Pfx.getInstance(obj); - - obj = new ASN1StreamParser(ASN1OctetString.getInstance(pfx.getAuthSafe().getContent()).getOctets()).readObject(); - if (!(obj instanceof DERSequenceParser)) - { - fail("Failed deep DER conversion test - inner."); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new PKCS12StoreTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXNameConstraintsTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXNameConstraintsTest.java deleted file mode 100644 index df8e8b5f..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXNameConstraintsTest.java +++ /dev/null @@ -1,452 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.asn1.DEROctetString; -import org.bouncycastle.asn1.x509.GeneralName; -import org.bouncycastle.asn1.x509.GeneralSubtree; -import org.bouncycastle.jce.provider.PKIXNameConstraintValidator; -import org.bouncycastle.jce.provider.PKIXNameConstraintValidatorException; -import org.bouncycastle.util.test.SimpleTest; - -/** - * Test class for {@link PKIXNameConstraintValidator}. - * <p> - * The field testXYZ is the name to test. - * <p> - * The field testXYZIsConstraint must be tested if it is permitted and excluded. - * <p> - * The field testXYZIsNotConstraint must be tested if it is not permitted and - * not excluded. - * <p> - * Furthermore there are tests for the intersection and union of test names. - * - */ -public class PKIXNameConstraintsTest - extends SimpleTest -{ - - private final static String testEmail = "test@abc.test.com"; - - private final static String testEmailIsConstraint[] = - { "test@abc.test.com", "abc.test.com", ".test.com" }; - - private final static String testEmailIsNotConstraint[] = - { ".abc.test.com", "www.test.com", "test1@abc.test.com", "bc.test.com" }; - - private final static String email1[] = - { "test@test.com", "test@test.com", "test@test.com", "test@abc.test.com", - "test@test.com", "test@test.com", ".test.com", ".test.com", - ".test.com", ".test.com", "test.com", "abc.test.com", - "abc.test1.com", "test.com", "test.com", ".test.com" }; - - private final static String email2[] = - { "test@test.abc.com", "test@test.com", ".test.com", ".test.com", - "test.com", "test1.com", "test@test.com", ".test.com", - ".test1.com", "test.com", "test.com", ".test.com", ".test.com", - "test1.com", ".test.com", "abc.test.com" }; - - private final static String emailintersect[] = - { null, "test@test.com", null, "test@abc.test.com", "test@test.com", null, - null, ".test.com", null, null, "test.com", "abc.test.com", null, - null, null, "abc.test.com" }; - - private final static String emailunion[][] = - { - { "test@test.com", "test@test.abc.com" }, - { "test@test.com" }, - { "test@test.com", ".test.com" }, - { ".test.com" }, - { "test.com" }, - { "test@test.com", "test1.com" }, - { ".test.com", "test@test.com" }, - { ".test.com" }, - { ".test.com", ".test1.com" }, - { ".test.com", "test.com" }, - { "test.com" }, - { ".test.com" }, - { ".test.com", "abc.test1.com" }, - { "test1.com", "test.com" }, - { ".test.com", "test.com" }, - { ".test.com" } }; - - private final static String[] dn1 = - { "O=test org, OU=test org unit, CN=John Doe" }; - - private final static String[] dn2 = - { "O=test org, OU=test org unit" }; - - private final static String[][] dnUnion = - { - { "O=test org, OU=test org unit" } }; - - private final static String[] dnIntersection = - { "O=test org, OU=test org unit, CN=John Doe" }; - - private final static String testDN = "O=test org, OU=test org unit, CN=John Doe"; - - private final static String testDNIsConstraint[] = - { "O=test org, OU=test org unit", - "O=test org, OU=test org unit, CN=John Doe" }; - - private final static String testDNIsNotConstraint[] = - { "O=test org, OU=test org unit, CN=John Doe2", - "O=test org, OU=test org unit2", - "OU=test org unit, O=test org, CN=John Doe", - "O=test org, OU=test org unit, CN=John Doe, L=USA" }; - - private final static String testDNS = "abc.test.com"; - - private final static String testDNSIsConstraint[] = - { "test.com", "abc.test.com", "test.com" }; - - private final static String testDNSIsNotConstraint[] = - { "wwww.test.com", "ww.test.com", "www.test.com" }; - - private final static String dns1[] = - { "www.test.de", "www.test1.de", "www.test.de" }; - - private final static String dns2[] = - { "test.de", "www.test.de", "www.test.de" }; - - private final static String dnsintersect[] = - { "www.test.de", null, null }; - - private final static String dnsunion[][] = - { - { "test.de" }, - { "www.test1.de", "www.test.de" }, - { "www.test.de" } }; - - private final static String testURI = "http://karsten:password@abc.test.com:8080"; - - private final static String testURIIsConstraint[] = - { "abc.test.com", ".test.com" }; - - private final static String testURIIsNotConstraint[] = - { "xyz.test.com", ".abc.test.com" }; - - private final static String uri1[] = - { "www.test.de", ".test.de", "test1.de", ".test.de" }; - - private final static String uri2[] = - { "test.de", "www.test.de", "test1.de", ".test.de" }; - - private final static String uriintersect[] = - { null, "www.test.de", "test1.de", ".test.de" }; - - private final static String uriunion[][] = - { - { "www.test.de", "test.de" }, - { ".test.de" }, - { "test1.de" }, - { ".test.de" } }; - - private final static byte[] testIP = - - { (byte) 192, (byte) 168, 1, 2 }; - - private final static byte[][] testIPIsConstraint = - { - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, 0 }, - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, 4 } }; - - private final static byte[][] testIPIsNotConstraint = - { - { (byte) 192, (byte) 168, 3, 1, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, 2 }, - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, 3 } }; - - private final static byte[][] ip1 = - { - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFE, (byte) 0xFF }, - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF }, - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0x00 } }; - - private final static byte[][] ip2 = - { - { (byte) 192, (byte) 168, 0, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFC, 3 }, - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF }, - { (byte) 192, (byte) 168, 0, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0x00 } }; - - private final static byte[][] ipintersect = - { - { (byte) 192, (byte) 168, 0, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFE, (byte) 0xFF }, - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF }, null }; - - private final static byte[][][] ipunion = - { - { - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFE, (byte) 0xFF }, - { (byte) 192, (byte) 168, 0, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFC, 3 } }, - { - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0xFF } }, - { - { (byte) 192, (byte) 168, 1, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0x00 }, - { (byte) 192, (byte) 168, 0, 1, (byte) 0xFF, (byte) 0xFF, - (byte) 0xFF, (byte) 0x00 } } }; - - public String getName() - { - return "PKIXNameConstraintsTest"; - } - - public void performTest() throws Exception - { - testConstraints(GeneralName.rfc822Name, testEmail, - testEmailIsConstraint, testEmailIsNotConstraint, email1, email2, - emailunion, emailintersect); - testConstraints(GeneralName.dNSName, testDNS, testDNSIsConstraint, - testDNSIsNotConstraint, dns1, dns2, dnsunion, dnsintersect); - testConstraints(GeneralName.directoryName, testDN, testDNIsConstraint, - testDNIsNotConstraint, dn1, dn2, dnUnion, dnIntersection); - testConstraints(GeneralName.uniformResourceIdentifier, testURI, - testURIIsConstraint, testURIIsNotConstraint, uri1, uri2, uriunion, - uriintersect); - testConstraints(GeneralName.iPAddress, testIP, testIPIsConstraint, - testIPIsNotConstraint, ip1, ip2, ipunion, ipintersect); - } - - /** - * Tests string based GeneralNames for inclusion or exclusion. - * - * @param nameType The {@link GeneralName} type to test. - * @param testName The name to test. - * @param testNameIsConstraint The names where <code>testName</code> must - * be included and excluded. - * @param testNameIsNotConstraint The names where <code>testName</code> - * must not be excluded and included. - * @param testNames1 Operand 1 of test names to use for union and - * intersection testing. - * @param testNames2 Operand 2 of test names to use for union and - * intersection testing. - * @param testUnion The union results. - * @param testInterSection The intersection results. - * @throws Exception If an unexpected exception occurs. - */ - private void testConstraints( - int nameType, - String testName, - String[] testNameIsConstraint, - String[] testNameIsNotConstraint, - String[] testNames1, - String[] testNames2, - String[][] testUnion, - String[] testInterSection) throws Exception - { - for (int i = 0; i < testNameIsConstraint.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, testNameIsConstraint[i]))); - constraintValidator.checkPermitted(new GeneralName(nameType, testName)); - } - for (int i = 0; i < testNameIsNotConstraint.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, testNameIsNotConstraint[i]))); - try - { - constraintValidator.checkPermitted(new GeneralName(nameType, testName)); - fail("not permitted name allowed: " + nameType); - } - catch (PKIXNameConstraintValidatorException e) - { - // expected - } - } - for (int i = 0; i < testNameIsConstraint.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.addExcludedSubtree(new GeneralSubtree(new GeneralName( - nameType, testNameIsConstraint[i]))); - try - { - constraintValidator.checkExcluded(new GeneralName(nameType, testName)); - fail("excluded name missed: " + nameType); - } - catch (PKIXNameConstraintValidatorException e) - { - // expected - } - } - for (int i = 0; i < testNameIsNotConstraint.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.addExcludedSubtree(new GeneralSubtree(new GeneralName( - nameType, testNameIsNotConstraint[i]))); - constraintValidator.checkExcluded(new GeneralName(nameType, testName)); - } - for (int i = 0; i < testNames1.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.addExcludedSubtree(new GeneralSubtree(new GeneralName( - nameType, testNames1[i]))); - constraintValidator.addExcludedSubtree(new GeneralSubtree(new GeneralName( - nameType, testNames2[i]))); - PKIXNameConstraintValidator constraints2 = new PKIXNameConstraintValidator(); - for (int j = 0; j < testUnion[i].length; j++) - { - constraints2.addExcludedSubtree(new GeneralSubtree( - new GeneralName(nameType, testUnion[i][j]))); - } - if (!constraints2.equals(constraintValidator)) - { - fail("union wrong: " + nameType); - } - constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, testNames1[i]))); - constraintValidator.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, testNames2[i]))); - constraints2 = new PKIXNameConstraintValidator(); - if (testInterSection[i] != null) - { - constraints2.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, testInterSection[i]))); - } - else - { - constraints2.intersectEmptyPermittedSubtree(nameType); - } - if (!constraints2.equals(constraintValidator)) - { - fail("intersection wrong: " + nameType); - } - } - } - - /** - * Tests byte array based GeneralNames for inclusion or exclusion. - * - * @param nameType The {@link GeneralName} type to test. - * @param testName The name to test. - * @param testNameIsConstraint The names where <code>testName</code> must - * be included and excluded. - * @param testNameIsNotConstraint The names where <code>testName</code> - * must not be excluded and included. - * @param testNames1 Operand 1 of test names to use for union and - * intersection testing. - * @param testNames2 Operand 2 of test names to use for union and - * intersection testing. - * @param testUnion The union results. - * @param testInterSection The intersection results. - * @throws Exception If an unexpected exception occurs. - */ - private void testConstraints( - int nameType, - byte[] testName, - byte[][] testNameIsConstraint, - byte[][] testNameIsNotConstraint, - byte[][] testNames1, - byte[][] testNames2, - byte[][][] testUnion, - byte[][] testInterSection) throws Exception - { - for (int i = 0; i < testNameIsConstraint.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, new DEROctetString( - testNameIsConstraint[i])))); - constraintValidator.checkPermitted(new GeneralName(nameType, - new DEROctetString(testName))); - } - for (int i = 0; i < testNameIsNotConstraint.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, new DEROctetString( - testNameIsNotConstraint[i])))); - try - { - constraintValidator.checkPermitted(new GeneralName(nameType, - new DEROctetString(testName))); - fail("not permitted name allowed: " + nameType); - } - catch (PKIXNameConstraintValidatorException e) - { - // expected - } - } - for (int i = 0; i < testNameIsConstraint.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.addExcludedSubtree(new GeneralSubtree(new GeneralName( - nameType, new DEROctetString(testNameIsConstraint[i])))); - try - { - constraintValidator.checkExcluded(new GeneralName(nameType, - new DEROctetString(testName))); - fail("excluded name missed: " + nameType); - } - catch (PKIXNameConstraintValidatorException e) - { - // expected - } - } - for (int i = 0; i < testNameIsNotConstraint.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.addExcludedSubtree(new GeneralSubtree(new GeneralName( - nameType, new DEROctetString(testNameIsNotConstraint[i])))); - constraintValidator.checkExcluded(new GeneralName(nameType, - new DEROctetString(testName))); - } - for (int i = 0; i < testNames1.length; i++) - { - PKIXNameConstraintValidator constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.addExcludedSubtree(new GeneralSubtree(new GeneralName( - nameType, new DEROctetString(testNames1[i])))); - constraintValidator.addExcludedSubtree(new GeneralSubtree(new GeneralName( - nameType, new DEROctetString(testNames2[i])))); - PKIXNameConstraintValidator constraints2 = new PKIXNameConstraintValidator(); - for (int j = 0; j < testUnion[i].length; j++) - { - constraints2.addExcludedSubtree(new GeneralSubtree( - new GeneralName(nameType, new DEROctetString( - testUnion[i][j])))); - } - if (!constraints2.equals(constraintValidator)) - { - fail("union wrong: " + nameType); - } - constraintValidator = new PKIXNameConstraintValidator(); - constraintValidator.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, new DEROctetString(testNames1[i])))); - constraintValidator.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, new DEROctetString(testNames2[i])))); - constraints2 = new PKIXNameConstraintValidator(); - if (testInterSection[i] != null) - { - constraints2.intersectPermittedSubtree(new GeneralSubtree( - new GeneralName(nameType, new DEROctetString( - testInterSection[i])))); - } - else - { - constraints2.intersectEmptyPermittedSubtree(nameType); - } - - if (!constraints2.equals(constraintValidator)) - { - fail("intersection wrong: " + nameType); - } - } - } - - public static void main(String[] args) - { - runTest(new PKIXNameConstraintsTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXPolicyMappingTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXPolicyMappingTest.java deleted file mode 100644 index 069a0063..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXPolicyMappingTest.java +++ /dev/null @@ -1,450 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.IOException; -import java.math.BigInteger; -import java.security.InvalidAlgorithmParameterException; -import java.security.KeyFactory; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.Security; -import java.security.cert.CertPathBuilder; -import java.security.cert.CertStore; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.PKIXBuilderParameters; -import java.security.cert.PKIXCertPathBuilderResult; -import java.security.cert.TrustAnchor; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.security.spec.RSAPrivateCrtKeySpec; -import java.security.spec.RSAPublicKeySpec; -import java.util.Date; -import java.util.HashSet; -import java.util.Hashtable; -import java.util.Set; - -import org.bouncycastle.asn1.ASN1EncodableVector; -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.DERSequence; -import org.bouncycastle.asn1.x509.BasicConstraints; -import org.bouncycastle.asn1.x509.CertificatePolicies; -import org.bouncycastle.asn1.x509.PolicyInformation; -import org.bouncycastle.asn1.x509.PolicyMappings; -import org.bouncycastle.asn1.x509.X509Extensions; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.util.test.TestFailedException; -import org.bouncycastle.x509.X509V3CertificateGenerator; - -public class PKIXPolicyMappingTest - extends SimpleTest -{ - static X509V3CertificateGenerator v3CertGen = new X509V3CertificateGenerator(); - - public String getName() - { - return "PKIXPolicyMapping"; - } - - /** - * TrustAnchor's Cert - */ - private X509Certificate createTrustCert( - PublicKey pubKey, - PrivateKey privKey) - throws Exception - { - String issuer = "C=JP, O=policyMappingAdditionalTest, OU=trustAnchor"; - String subject = "C=JP, O=policyMappingAdditionalTest, OU=trustAnchor"; - v3CertGen.setSerialNumber(BigInteger.valueOf(10)); - v3CertGen.setIssuerDN(new X509Principal(issuer)); - v3CertGen.setNotBefore(new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30)); - v3CertGen.setNotAfter(new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 30))); - v3CertGen.setSubjectDN(new X509Principal(subject)); - v3CertGen.setPublicKey(pubKey); - v3CertGen.setSignatureAlgorithm("SHA1WithRSAEncryption"); - X509Certificate cert = v3CertGen.generate(privKey); - return cert; - } - - /** - * intermediate cert - */ - private X509Certificate createIntmedCert( - PublicKey pubKey, - PrivateKey caPrivKey, - PublicKey caPubKey, - CertificatePolicies policies, - Hashtable policyMap) - throws Exception - { - String issuer = "C=JP, O=policyMappingAdditionalTest, OU=trustAnchor"; - String subject = "C=JP, O=policyMappingAdditionalTest, OU=intmedCA"; - v3CertGen.reset(); - v3CertGen.setSerialNumber(BigInteger.valueOf(20)); - v3CertGen.setIssuerDN(new X509Principal(issuer)); - v3CertGen.setNotBefore(new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30)); - v3CertGen.setNotAfter(new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 30))); - v3CertGen.setSubjectDN(new X509Principal(subject)); - v3CertGen.setPublicKey(pubKey); - v3CertGen.setSignatureAlgorithm("SHA1WithRSAEncryption"); - v3CertGen.addExtension(X509Extensions.CertificatePolicies, true, policies); - v3CertGen.addExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(true)); - v3CertGen.addExtension(X509Extensions.PolicyMappings, true, new PolicyMappings(policyMap)); - X509Certificate cert = v3CertGen.generate(caPrivKey); - return cert; - } - - /** - * endEntity cert - */ - private X509Certificate createEndEntityCert( - PublicKey pubKey, - PrivateKey caPrivKey, - PublicKey caPubKey, - ASN1EncodableVector policies) - throws Exception - { - String issuer = "C=JP, O=policyMappingAdditionalTest, OU=intMedCA"; - String subject = "C=JP, O=policyMappingAdditionalTest, OU=endEntity"; - v3CertGen.reset(); - v3CertGen.setSerialNumber(BigInteger.valueOf(20)); - v3CertGen.setIssuerDN(new X509Principal(issuer)); - v3CertGen.setNotBefore(new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30)); - v3CertGen.setNotAfter(new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 30))); - v3CertGen.setSubjectDN(new X509Principal(subject)); - v3CertGen.setPublicKey(pubKey); - v3CertGen.setSignatureAlgorithm("SHA1WithRSAEncryption"); - v3CertGen.addExtension(X509Extensions.CertificatePolicies,true,new DERSequence(policies)); - X509Certificate cert = v3CertGen.generate(caPrivKey); - return cert; - } - - private String testPolicies( - int index, - X509Certificate trustCert, - X509Certificate intCert, - X509Certificate endCert, - Set requirePolicies, - boolean okay) - throws IOException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException - { - Set trust = new HashSet(); - trust.add(new TrustAnchor(trustCert, null)); - X509CertSelector targetConstraints = new X509CertSelector(); - targetConstraints.setSubject(endCert.getSubjectX500Principal().getEncoded()); - PKIXBuilderParameters params = new PKIXBuilderParameters(trust, targetConstraints); - - Set certs = new HashSet(); - certs.add(intCert); - certs.add(endCert); - CollectionCertStoreParameters pr = new CollectionCertStoreParameters(certs); - CertStore store = CertStore.getInstance("Collection",pr); - params.addCertStore(store); - - params.setRevocationEnabled(false); - if (requirePolicies != null) - { - params.setExplicitPolicyRequired(true); - params.setInitialPolicies(requirePolicies); - } - - CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX","BC"); -// CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX","SUN"); - PKIXCertPathBuilderResult result = null; - try - { - result = (PKIXCertPathBuilderResult)cpb.build(params); - - if (!okay) - { - fail(index + ": path validated when failure expected."); - } - -// if (result.getPolicyTree() != null) -// { -// System.out.println("OK"); -// System.out.println("policy: " + result.getPolicyTree()); -// } -// else -// { -// System.out.println("OK: policy tree = null"); -// } - - return ""; - } - catch (TestFailedException e) - { - throw e; - } - catch (Exception e) - { - if (okay) - { - fail(index + ": path failed to validate when success expected."); - } - - Throwable ee = e.getCause(); - if (ee != null) - { - return ee.getMessage(); - } - - return e.getMessage(); - } - } - - public void performTest() - throws Exception - { - // - // personal keys - // - RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16)); - - RSAPrivateCrtKeySpec privKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16), - new BigInteger("9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89", 16), - new BigInteger("c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", 16), - new BigInteger("f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", 16), - new BigInteger("b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", 16), - new BigInteger("d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", 16), - new BigInteger("b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", 16)); - - // - // intermediate keys. - // - RSAPublicKeySpec intPubKeySpec = new RSAPublicKeySpec( - new BigInteger("8de0d113c5e736969c8d2b047a243f8fe18edad64cde9e842d3669230ca486f7cfdde1f8eec54d1905fff04acc85e61093e180cadc6cea407f193d44bb0e9449b8dbb49784cd9e36260c39e06a947299978c6ed8300724e887198cfede20f3fbde658fa2bd078be946a392bd349f2b49c486e20c405588e306706c9017308e69", 16), - new BigInteger("ffff", 16)); - - - RSAPrivateCrtKeySpec intPrivKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("8de0d113c5e736969c8d2b047a243f8fe18edad64cde9e842d3669230ca486f7cfdde1f8eec54d1905fff04acc85e61093e180cadc6cea407f193d44bb0e9449b8dbb49784cd9e36260c39e06a947299978c6ed8300724e887198cfede20f3fbde658fa2bd078be946a392bd349f2b49c486e20c405588e306706c9017308e69", 16), - new BigInteger("ffff", 16), - new BigInteger("7deb1b194a85bcfd29cf871411468adbc987650903e3bacc8338c449ca7b32efd39ffc33bc84412fcd7df18d23ce9d7c25ea910b1ae9985373e0273b4dca7f2e0db3b7314056ac67fd277f8f89cf2fd73c34c6ca69f9ba477143d2b0e2445548aa0b4a8473095182631da46844c356f5e5c7522eb54b5a33f11d730ead9c0cff", 16), - new BigInteger("ef4cede573cea47f83699b814de4302edb60eefe426c52e17bd7870ec7c6b7a24fe55282ebb73775f369157726fcfb988def2b40350bdca9e5b418340288f649", 16), - new BigInteger("97c7737d1b9a0088c3c7b528539247fd2a1593e7e01cef18848755be82f4a45aa093276cb0cbf118cb41117540a78f3fc471ba5d69f0042274defc9161265721", 16), - new BigInteger("6c641094e24d172728b8da3c2777e69adfd0839085be7e38c7c4a2dd00b1ae969f2ec9d23e7e37090fcd449a40af0ed463fe1c612d6810d6b4f58b7bfa31eb5f", 16), - new BigInteger("70b7123e8e69dfa76feb1236d0a686144b00e9232ed52b73847e74ef3af71fb45ccb24261f40d27f98101e230cf27b977a5d5f1f15f6cf48d5cb1da2a3a3b87f", 16), - new BigInteger("e38f5750d97e270996a286df2e653fd26c242106436f5bab0f4c7a9e654ce02665d5a281f2c412456f2d1fa26586ef04a9adac9004ca7f913162cb28e13bf40d", 16)); - - // - // ca keys - // - RSAPublicKeySpec caPubKeySpec = new RSAPublicKeySpec( - new BigInteger("b259d2d6e627a768c94be36164c2d9fc79d97aab9253140e5bf17751197731d6f7540d2509e7b9ffee0a70a6e26d56e92d2edd7f85aba85600b69089f35f6bdbf3c298e05842535d9f064e6b0391cb7d306e0a2d20c4dfb4e7b49a9640bdea26c10ad69c3f05007ce2513cee44cfe01998e62b6c3637d3fc0391079b26ee36d5", 16), - new BigInteger("11", 16)); - - RSAPrivateCrtKeySpec caPrivKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("b259d2d6e627a768c94be36164c2d9fc79d97aab9253140e5bf17751197731d6f7540d2509e7b9ffee0a70a6e26d56e92d2edd7f85aba85600b69089f35f6bdbf3c298e05842535d9f064e6b0391cb7d306e0a2d20c4dfb4e7b49a9640bdea26c10ad69c3f05007ce2513cee44cfe01998e62b6c3637d3fc0391079b26ee36d5", 16), - new BigInteger("11", 16), - new BigInteger("92e08f83cc9920746989ca5034dcb384a094fb9c5a6288fcc4304424ab8f56388f72652d8fafc65a4b9020896f2cde297080f2a540e7b7ce5af0b3446e1258d1dd7f245cf54124b4c6e17da21b90a0ebd22605e6f45c9f136d7a13eaac1c0f7487de8bd6d924972408ebb58af71e76fd7b012a8d0e165f3ae2e5077a8648e619", 16), - new BigInteger("f75e80839b9b9379f1cf1128f321639757dba514642c206bbbd99f9a4846208b3e93fbbe5e0527cc59b1d4b929d9555853004c7c8b30ee6a213c3d1bb7415d03", 16), - new BigInteger("b892d9ebdbfc37e397256dd8a5d3123534d1f03726284743ddc6be3a709edb696fc40c7d902ed804c6eee730eee3d5b20bf6bd8d87a296813c87d3b3cc9d7947", 16), - new BigInteger("1d1a2d3ca8e52068b3094d501c9a842fec37f54db16e9a67070a8b3f53cc03d4257ad252a1a640eadd603724d7bf3737914b544ae332eedf4f34436cac25ceb5", 16), - new BigInteger("6c929e4e81672fef49d9c825163fec97c4b7ba7acb26c0824638ac22605d7201c94625770984f78a56e6e25904fe7db407099cad9b14588841b94f5ab498dded", 16), - new BigInteger("dae7651ee69ad1d081ec5e7188ae126f6004ff39556bde90e0b870962fa7b926d070686d8244fe5a9aa709a95686a104614834b0ada4b10f53197a5cb4c97339", 16)); - - // - // set up the keys - // - KeyFactory fact = KeyFactory.getInstance("RSA", "BC"); - PrivateKey caPrivKey = fact.generatePrivate(caPrivKeySpec); - PublicKey caPubKey = fact.generatePublic(caPubKeySpec); - PrivateKey intPrivKey = fact.generatePrivate(intPrivKeySpec); - PublicKey intPubKey = fact.generatePublic(intPubKeySpec); - PrivateKey privKey = fact.generatePrivate(privKeySpec); - PublicKey pubKey = fact.generatePublic(pubKeySpec); - - X509Certificate trustCert = createTrustCert(caPubKey, caPrivKey); - CertificatePolicies intPolicies = null; - Hashtable map = null; - ASN1EncodableVector policies = null; - Set requirePolicies = null; - X509Certificate intCert = null; - X509Certificate endCert = null; - - /** - * valid test_00 - */ - intPolicies = new CertificatePolicies(new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0"))); - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1","2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.2"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = null; - String msg = testPolicies(0, trustCert, intCert, endCert, requirePolicies, true); - checkMessage(0, msg, ""); - - /** - * test_01 - */ - intPolicies = new CertificatePolicies(new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0"))); - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1","2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.2"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = new HashSet(); - requirePolicies.add("2.16.840.1.101.3.2.1.48.1"); - msg = testPolicies(1, trustCert, intCert, endCert, requirePolicies, true); - checkMessage(1, msg, ""); - - /** - * test_02 - */ - intPolicies = new CertificatePolicies(new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0"))); - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1","2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.2"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = new HashSet(); - requirePolicies.add("2.5.29.32.0"); - msg = testPolicies(2, trustCert, intCert, endCert, requirePolicies, true); - checkMessage(2, msg, ""); - - /** - * test_03 - */ - intPolicies = new CertificatePolicies(new PolicyInformation[] - { new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.3")), - new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0")) }); - - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1","2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.2"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = new HashSet(); - requirePolicies.add("2.16.840.1.101.3.2.1.48.1"); - msg = testPolicies(3, trustCert, intCert, endCert, requirePolicies, true); - checkMessage(3, msg, ""); - - /** - * test_04 - */ - intPolicies = new CertificatePolicies(new PolicyInformation[] - { new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.3")), - new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0")) } ); - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1", "2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.3"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = new HashSet(); - requirePolicies.add("2.16.840.1.101.3.2.1.48.3"); - msg = testPolicies(4, trustCert, intCert, endCert, requirePolicies, true); - checkMessage(4, msg, ""); - - /** - * test_05 - */ - intPolicies = new CertificatePolicies(new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0"))); - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1", "2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.2"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = new HashSet(); - requirePolicies.add("2.16.840.1.101.3.2.1.48.2"); - msg = testPolicies(5, trustCert, intCert, endCert, requirePolicies, false); - checkMessage(5, msg, "Path processing failed on policy."); - - /** - * test_06 - */ - intPolicies = new CertificatePolicies(new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0"))); - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1", "2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.1"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = new HashSet(); - requirePolicies.add("2.16.840.1.101.3.2.1.48.1"); - msg = testPolicies(6, trustCert, intCert, endCert, requirePolicies, true); - checkMessage(6, msg, ""); - - /** - * test_07 - */ - intPolicies = new CertificatePolicies(new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0"))); - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1", "2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.2"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = new HashSet(); - requirePolicies.add("2.16.840.1.101.3.2.1.48.3"); - msg = testPolicies(7, trustCert, intCert, endCert, requirePolicies, false); - checkMessage(7, msg, "Path processing failed on policy."); - - /** - * test_08 - */ - intPolicies = new CertificatePolicies(new PolicyInformation(new ASN1ObjectIdentifier("2.5.29.32.0"))); - map = new Hashtable(); - map.put("2.16.840.1.101.3.2.1.48.1", "2.16.840.1.101.3.2.1.48.2"); - intCert = createIntmedCert(intPubKey, caPrivKey, caPubKey, intPolicies, map); - - policies = new ASN1EncodableVector(); - policies.add(new PolicyInformation(new ASN1ObjectIdentifier("2.16.840.1.101.3.2.1.48.3"))); - endCert = createEndEntityCert(pubKey, intPrivKey, intPubKey, policies); - - requirePolicies = new HashSet(); - requirePolicies.add("2.16.840.1.101.3.2.1.48.1"); - msg = testPolicies(8, trustCert, intCert, endCert, requirePolicies, false); - checkMessage(8, msg, "Path processing failed on policy."); - } - - - private void checkMessage( - int index, - String msg, - String expected) - { - if (!msg.equals(expected)) - { - fail("test " + index + " failed got: " + msg + " expected: " + expected); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new PKIXPolicyMappingTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXTest.java deleted file mode 100644 index 99d21b0b..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/PKIXTest.java +++ /dev/null @@ -1,248 +0,0 @@ - -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.security.Security; -import java.security.cert.CertificateFactory; -import java.security.cert.X509CRL; -import java.security.cert.X509Certificate; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTestResult; -import org.bouncycastle.util.test.Test; -import org.bouncycastle.util.test.TestResult; - -public class PKIXTest - implements Test -{ - /* - * The following certs and crls are described in: - * http://www.ietf.org/internet-drafts/draft-ietf-pkix-new-part1-08.txt - * - * This section contains four examples: three certificates and a CRL. - * The first two certificates and the CRL comprise a minimal - * certification path. - * - * Section C.1 contains an annotated hex dump of a "self-signed" - * certificate issued by a CA whose distinguished name is - * cn=us,o=gov,ou=nist. The certificate contains a DSA public key with - * parameters, and is signed by the corresponding DSA private key. - * - * Section C.2 contains an annotated hex dump of an end entity - * certificate. The end entity certificate contains a DSA public key, - * and is signed by the private key corresponding to the "self-signed" - * certificate in section C.1. - * - * Section C.3 contains a dump of an end entity certificate which - * contains an RSA public key and is signed with RSA and MD5. This - * certificate is not part of the minimal certification path. - * - * Section C.4 contains an annotated hex dump of a CRL. The CRL is - * issued by the CA whose distinguished name is cn=us,o=gov,ou=nist and - * the list of revoked certificates includes the end entity certificate - * presented in C.2. - */ - - /** - * C.1 Certificate - * - * This section contains an annotated hex dump of a 699 byte version 3 - * certificate. The certificate contains the following information: - * (a) the serial number is 23 (17 hex); - * (b) the certificate is signed with DSA and the SHA-1 hash algorithm; - * (c) the issuer's distinguished name is OU=NIST; O=gov; C=US - * (d) and the subject's distinguished name is OU=NIST; O=gov; C=US - * (e) the certificate was issued on June 30, 1997 and will expire on - * December 31, 1997; - * (f) the certificate contains a 1024 bit DSA public key with - * parameters; - * (g) the certificate contains a subject key identifier extension - * generated using method (1) of section 4.2.1.2; and - * (h) the certificate is a CA certificate (as indicated through the - * basic constraints extension.) - */ - static byte[] rootCertBin = Hex.decode( - "308202bb3082027ba003020102020111300906072a8648ce380403302a310b30" - + "09060355040613025553310c300a060355040a1303676f76310d300b06035504" - + "0b13044e495354301e170d3937303633303030303030305a170d393731323331" - + "3030303030305a302a310b3009060355040613025553310c300a060355040a13" - + "03676f76310d300b060355040b13044e495354308201b83082012c06072a8648" - + "ce3804013082011f02818100b68b0f942b9acea525c6f2edfcfb9532ac011233" - + "b9e01cad909bbc48549ef394773c2c713555e6fe4f22cbd5d83e8993334dfcbd" - + "4f41643ea29870ec31b450deebf198280ac93e44b3fd22979683d018a3e3bd35" - + "5bffeea321726a7b96dab93f1e5a90af24d620f00d21a7d402b91afcac21fb9e" - + "949e4b42459e6ab24863fe43021500b20db0b101df0c6624fc1392ba55f77d57" - + "7481e5028181009abf46b1f53f443dc9a565fb91c08e47f10ac30147c2444236" - + "a99281de57c5e0688658007b1ff99b77a1c510a580917851513cf6fcfccc46c6" - + "817892843df4933d0c387e1a5b994eab1464f60c21224e28089c92b9669f40e8" - + "95f6d5312aef39a262c7b26d9e58c43aa81181846daff8b419b4c211aed0223b" - + "aa207fee1e57180381850002818100b59e1f490447d1dbf53addca0475e8dd75" - + "f69b8ab197d6596982d3034dfd3b365f4af2d14ec107f5d12ad378776356ea96" - + "614d420b7a1dfbab91a4cedeef77c8e5ef20aea62848afbe69c36aa530f2c2b9" - + "d9822b7dd9c4841fde0de854d71b992eb3d088f6d6639ba7e20e82d43b8a681b" - + "065631590b49eb99a5d581417bc955a3323030301d0603551d0e0416041486ca" - + "a5228162efad0a89bcad72412c2949f48656300f0603551d130101ff04053003" - + "0101ff300906072a8648ce380403032f00302c0214431bcf292545c04e52e77d" - + "d6fcb1664c83cf2d7702140b5b9a241198e8f3869004f608a9e18da5cc3ad4"); - - - /** - * C.2 Certificate - * - * This section contains an annotated hex dump of a 730 byte version 3 - * certificate. The certificate contains the following information: - * (a the serial number is 18 (12 hex); - * (b) the certificate is signed with DSA and the SHA-1 hash algorithm; - * (c) the issuer's distinguished name is OU=nist; O=gov; C=US - * (d) and the subject's distinguished name is CN=Tim Polk; OU=nist; - * O=gov; C=US - * (e) the certificate was valid from July 30, 1997 through December 1, - * 1997; - * (f) the certificate contains a 1024 bit DSA public key; - * (g) the certificate is an end entity certificate, as the basic - * constraints extension is not present; - * (h) the certificate contains an authority key identifier extension - * matching the subject key identifier of the certificate in Appendix - * C.1; and - * (i) the certificate includes one alternative name - an RFC 822 - * address of "wpolk@nist.gov". - */ - static byte[] userCert1Bin = Hex.decode( - "308202da30820299a003020102020112300906072a8648ce380403302a310b30" - + "09060355040613025553310c300a060355040a1303676f76310d300b06035504" - + "0b13044e495354301e170d3937303733303030303030305a170d393731323031" - + "3030303030305a303d310b3009060355040613025553310c300a060355040a13" - + "03676f76310d300b060355040b13044e4953543111300f060355040313085469" - + "6d20506f6c6b308201b73082012c06072a8648ce3804013082011f02818100b6" - + "8b0f942b9acea525c6f2edfcfb9532ac011233b9e01cad909bbc48549ef39477" - + "3c2c713555e6fe4f22cbd5d83e8993334dfcbd4f41643ea29870ec31b450deeb" - + "f198280ac93e44b3fd22979683d018a3e3bd355bffeea321726a7b96dab93f1e" - + "5a90af24d620f00d21a7d402b91afcac21fb9e949e4b42459e6ab24863fe4302" - + "1500b20db0b101df0c6624fc1392ba55f77d577481e5028181009abf46b1f53f" - + "443dc9a565fb91c08e47f10ac30147c2444236a99281de57c5e0688658007b1f" - + "f99b77a1c510a580917851513cf6fcfccc46c6817892843df4933d0c387e1a5b" - + "994eab1464f60c21224e28089c92b9669f40e895f6d5312aef39a262c7b26d9e" - + "58c43aa81181846daff8b419b4c211aed0223baa207fee1e5718038184000281" - + "8030b675f77c2031ae38bb7e0d2baba09c4bdf20d524133ccd98e55f6cb7c1ba" - + "4abaa9958053f00d72dc3337f4010bf5041f9d2e1f62d8843a9b25095a2dc846" - + "8e2bd4f50d3bc72dc66cb998c1253a444e8eca9561357cce15315c23131ea205" - + "d17a241ccbd3720990ff9b9d28c0a10aec469f0db8d0dcd018a62b5ef98fb595" - + "bea33e303c30190603551d1104123010810e77706f6c6b406e6973742e676f76" - + "301f0603551d2304183016801486caa5228162efad0a89bcad72412c2949f486" - + "56300906072a8648ce380403033000302d02143697cbe3b42ce1bb61a9d3cc24" - + "cc22929ff4f587021500abc979afd2161ca9e368a91410b4a02eff225a73"); - - - /** - * C.3 End Entity Certificate Using RSA - * - * This section contains an annotated hex dump of a 654 byte version 3 - * certificate. The certificate contains the following information: - * (a) the serial number is 256; - * (b) the certificate is signed with RSA and the SHA-1 hash algorithm; - * (c) the issuer's distinguished name is OU=NIST; O=gov; C=US - * (d) and the subject's distinguished name is CN=Tim Polk; OU=NIST; - * O=gov; C=US - * (e) the certificate was issued on May 21, 1996 at 09:58:26 and - * expired on May 21, 1997 at 09:58:26; - * (f) the certificate contains a 1024 bit RSA public key; - * (g) the certificate is an end entity certificate (not a CA - * certificate); - * (h) the certificate includes an alternative subject name of - * "<http://www.itl.nist.gov/div893/staff/polk/index.html>" and an - * alternative issuer name of "<http://www.nist.gov/>" - both are URLs; - * (i) the certificate include an authority key identifier extension - * and a certificate policies extension psecifying the policy OID - * 2.16.840.1.101.3.2.1.48.9; and - * (j) the certificate includes a critical key usage extension - * specifying that the public key is intended for verification of - * digital signatures. - */ - static byte[] userCert2Bin = Hex.decode( - "3082028e308201f7a00302010202020100300d06092a864886f70d0101050500" - + "302a310b3009060355040613025553310c300a060355040b1303676f76310d30" - + "0b060355040a13044e495354301e170d3936303532313039353832365a170d39" - + "37303532313039353832365a303d310b3009060355040613025553310c300a06" - + "0355040b1303676f76310d300b060355040a13044e4953543111300f06035504" - + "03130854696d20506f6c6b30819f300d06092a864886f70d010101050003818d" - + "0030818902818100e16ae4033097023cf410f3b51e4d7f147bf6f5d078e9a48a" - + "f0a375ecedb656967f8899859af23e687787eb9ed19fc0b417dcab8923a41d7e" - + "16234c4fa84df531b87caae31a4909f44b26db2767308212014ae91ab6c10c53" - + "8b6cfc2f7a43ec33367e32b27bd5aacf0114c612ec13f22d147a8b215814134c" - + "46a39af21695ff230203010001a381af3081ac303f0603551d11043830368634" - + "687474703a2f2f7777772e69746c2e6e6973742e676f762f6469763839332f73" - + "746166662f706f6c6b2f696e6465782e68746d6c301f0603551d120418301686" - + "14687474703a2f2f7777772e6e6973742e676f762f301f0603551d2304183016" - + "80140868af8533c8394a7af882938e706a4a20842c3230170603551d20041030" - + "0e300c060a60864801650302013009300e0603551d0f0101ff04040302078030" - + "0d06092a864886f70d0101050500038181008e8e3656788bbfa13975172ee310" - + "dc832b6834521cf66c1d525e5420105e4ca940f94b729e82b961dceb32a5bdb1" - + "b148f99b01bbebaf9b83f6528cb06d7cd09a39543e6d206fcdd0debe275f204f" - + "b6ab0df5b7e1bab4dfdf3dd4f6ed01fb6ecb9859ac41fb489c1ff65b46e029e2" - + "76ecc43a0afc92c5c0d2a9c9d32952876533"); - - /** - * This section contains an annotated hex dump of a version 2 CRL with - * one extension (cRLNumber). The CRL was issued by OU=NIST; O=gov; C=US - * on August 7, 1997; the next scheduled issuance was September 7, 1997. - * The CRL includes one revoked certificates: serial number 18 (12 hex), - * which was revoked on July 31, 1997 due to keyCompromise. The CRL - * itself is number 18, and it was signed with DSA and SHA-1. - */ - static byte[] crlBin = Hex.decode( - "3081cb30818c020101300906072a8648ce380403302a310b3009060355040613025553310c300a060355040a1303676f76310d300b060355040b13044e495354170d3937303830373030303030305a170d3937303930373030303030305a30223020020112170d3937303733313030303030305a300c300a0603551d1504030a0101a00e300c300a0603551d14040302010c300906072a8648ce380403032f00302c0214224e9f43ba950634f2bb5e65dba68005c03a29470214591a57c982d7022114c3d40b321b9616b11f465a"); - - - public TestResult perform() - { - try - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate rootCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(rootCertBin)); - X509Certificate userCert1 = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(userCert1Bin)); - X509Certificate userCert2 = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(userCert2Bin)); - X509CRL crl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(crlBin)); - rootCert.verify(rootCert.getPublicKey(), "BC"); - userCert1.verify(rootCert.getPublicKey(), "BC"); - - crl.verify(rootCert.getPublicKey(), "BC"); - - if (!crl.isRevoked(userCert1)) - { - return new SimpleTestResult(false, this.getName() + ": usercert1 not revoked."); - } - - if (crl.isRevoked(userCert2)) - { - return new SimpleTestResult(false, this.getName() + ": usercert2 revoked."); - } - - } - catch (Exception e) - { - return new SimpleTestResult(false, this.getName() + ": exception - " + e.toString()); - } - - return new SimpleTestResult(true, this.getName() + ": Okay"); - } - - public String getName() - { - return "PKIX"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - Test test = new PKIXTest(); - TestResult result = test.perform(); - - System.out.println(result.toString()); - } - -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/PSSTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/PSSTest.java deleted file mode 100644 index 44d18abd..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/PSSTest.java +++ /dev/null @@ -1,261 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.AlgorithmParameters; -import java.security.KeyFactory; -import java.security.MessageDigest; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.spec.MGF1ParameterSpec; -import java.security.spec.PSSParameterSpec; -import java.security.spec.RSAPrivateCrtKeySpec; -import java.security.spec.RSAPublicKeySpec; - -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; -import org.bouncycastle.asn1.x509.X509ObjectIdentifiers; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.FixedSecureRandom; -import org.bouncycastle.util.test.SimpleTest; - -public class PSSTest - extends SimpleTest -{ - private class FixedRandom - extends SecureRandom - { - byte[] vals; - - FixedRandom( - byte[] vals) - { - this.vals = vals; - } - - public void nextBytes( - byte[] bytes) - { - System.arraycopy(vals, 0, bytes, 0, vals.length); - } - } - - private boolean arrayEquals( - byte[] a, - byte[] b) - { - if (a.length != b.length) - { - return false; - } - - for (int i = 0; i != a.length; i++) - { - if (a[i] != b[i]) - { - return false; - } - } - - return true; - } - - - private RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec( - new BigInteger("a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991d8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1dfd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f105acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a2137",16), - new BigInteger("010001",16)); - - private RSAPrivateCrtKeySpec privKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("a56e4a0e701017589a5187dc7ea841d156f2ec0e36ad52a44dfeb1e61f7ad991d8c51056ffedb162b4c0f283a12a88a394dff526ab7291cbb307ceabfce0b1dfd5cd9508096d5b2b8b6df5d671ef6377c0921cb23c270a70e2598e6ff89d19f105acc2d3f0cb35f29280e1386b6f64c4ef22e1e1f20d0ce8cffb2249bd9a2137",16), - new BigInteger("010001",16), - new BigInteger("33a5042a90b27d4f5451ca9bbbd0b44771a101af884340aef9885f2a4bbe92e894a724ac3c568c8f97853ad07c0266c8c6a3ca0929f1e8f11231884429fc4d9ae55fee896a10ce707c3ed7e734e44727a39574501a532683109c2abacaba283c31b4bd2f53c3ee37e352cee34f9e503bd80c0622ad79c6dcee883547c6a3b325",16), - new BigInteger("e7e8942720a877517273a356053ea2a1bc0c94aa72d55c6e86296b2dfc967948c0a72cbccca7eacb35706e09a1df55a1535bd9b3cc34160b3b6dcd3eda8e6443",16), - new BigInteger("b69dca1cf7d4d7ec81e75b90fcca874abcde123fd2700180aa90479b6e48de8d67ed24f9f19d85ba275874f542cd20dc723e6963364a1f9425452b269a6799fd",16), - new BigInteger("28fa13938655be1f8a159cbaca5a72ea190c30089e19cd274a556f36c4f6e19f554b34c077790427bbdd8dd3ede2448328f385d81b30e8e43b2fffa027861979",16), - new BigInteger("1a8b38f398fa712049898d7fb79ee0a77668791299cdfa09efc0e507acb21ed74301ef5bfd48be455eaeb6e1678255827580a8e4e8e14151d1510a82a3f2e729",16), - new BigInteger("27156aba4126d24a81f3a528cbfb27f56886f840a9f6e86e17a44b94fe9319584b8e22fdde1e5a2e3bd8aa5ba8d8584194eb2190acf832b847f13a3d24a79f4d",16)); - - // PSSExample1.1 - - private byte[] msg1a = Hex.decode("cdc87da223d786df3b45e0bbbc721326d1ee2af806cc315475cc6f0d9c66e1b62371d45ce2392e1ac92844c310102f156a0d8d52c1f4c40ba3aa65095786cb769757a6563ba958fed0bcc984e8b517a3d5f515b23b8a41e74aa867693f90dfb061a6e86dfaaee64472c00e5f20945729cbebe77f06ce78e08f4098fba41f9d6193c0317e8b60d4b6084acb42d29e3808a3bc372d85e331170fcbf7cc72d0b71c296648b3a4d10f416295d0807aa625cab2744fd9ea8fd223c42537029828bd16be02546f130fd2e33b936d2676e08aed1b73318b750a0167d0"); - - private byte[] slt1a = Hex.decode("dee959c7e06411361420ff80185ed57f3e6776af"); - - private byte[] sig1a = Hex.decode("9074308fb598e9701b2294388e52f971faac2b60a5145af185df5287b5ed2887e57ce7fd44dc8634e407c8e0e4360bc226f3ec227f9d9e54638e8d31f5051215df6ebb9c2f9579aa77598a38f914b5b9c1bd83c4e2f9f382a0d0aa3542ffee65984a601bc69eb28deb27dca12c82c2d4c3f66cd500f1ff2b994d8a4e30cbb33c"); - - private byte[] sig1b = Hex.decode("96ea348db4db2947aee807bd687411a880913706f21b383a1002b97e43656e5450a9d1812efbedd1ed159f8307986adf48bada66a8efd14bd9e2f6f6f458e73b50c8ce6e3079011c5b4bd1600a2601a66198a1582574a43f13e0966c6c2337e6ca0886cd9e1b1037aeadef1382117d22b35e7e4403f90531c8cfccdf223f98e4"); - - private byte[] sig1c = Hex.decode("9e64cc1062c537b142480bc5af407b55904ead970e20e0f8f6664279c96c6da6b03522160f224a85cc413dfe6bd00621485b665abac6d90ff38c9af06f4ddd6c7c81540439e5795601a1343d9feb465712ff8a5f5150391522fb5a9b8e2225a555f4efaa5e5c0ed7a19b27074c2d9f6dbbd0c893ba02c4a35b115d337bccd7a2"); - - public void performTest() throws Exception - { - KeyFactory fact = KeyFactory.getInstance("RSA", "BC"); - - PrivateKey privKey = fact.generatePrivate(privKeySpec); - PublicKey pubKey = fact.generatePublic(pubKeySpec); - - Signature s = Signature.getInstance("SHA1withRSA/PSS", "BC"); - - s.initSign(privKey, new FixedRandom(slt1a)); - s.update(msg1a); - byte[] sig = s.sign(); - - if (!arrayEquals(sig1a, sig)) - { - fail("PSS Sign test expected " + new String(Hex.encode(sig1a)) + " got " + new String(Hex.encode(sig))); - } - - s = Signature.getInstance("SHA1withRSAandMGF1", "BC"); - - s.initVerify(pubKey); - s.update(msg1a); - if (!s.verify(sig1a)) - { - fail("SHA1 signature verification failed"); - } - - s = Signature.getInstance("SHA1withRSAandMGF1", "BC"); - - s.setParameter(PSSParameterSpec.DEFAULT); - - s.initVerify(pubKey); - s.update(msg1a); - if (!s.verify(sig1a)) - { - fail("SHA1 signature verification with default parameters failed"); - } - - AlgorithmParameters pss = s.getParameters(); - if (!arrayEquals(pss.getEncoded(), new byte[] { 0x30, 0x00 })) - { - fail("failed default encoding test."); - } - - s = Signature.getInstance("SHA256withRSA/PSS", "BC"); - - s.initSign(privKey, new FixedRandom(slt1a)); - s.update(msg1a); - sig = s.sign(); - - pss = s.getParameters(); - - if (!arrayEquals(sig1b, sig)) - { - fail("PSS Sign test expected " + new String(Hex.encode(sig1b)) + " got " + new String(Hex.encode(sig))); - } - - s = Signature.getInstance("SHA256withRSAandMGF1", "BC"); - - s.setParameter(pss.getParameterSpec(PSSParameterSpec.class)); - - s.initVerify(pubKey); - s.update(msg1a); - if (!s.verify(sig1b)) - { - fail("SHA256 signature verification failed"); - } - - // - // 512 test -with zero salt length - // - s = Signature.getInstance("SHA512withRSAandMGF1", "BC"); - - s.setParameter(new PSSParameterSpec("SHA-512", "MGF1", new MGF1ParameterSpec("SHA-512"), 0, 1)); - s.initSign(privKey); - - s.update(msg1a); - sig = s.sign(); - - pss = s.getParameters(); - - if (!arrayEquals(sig1c, sig)) - { - fail("PSS Sign test expected " + new String(Hex.encode(sig1c)) + " got " + new String(Hex.encode(sig))); - } - - s = Signature.getInstance("SHA512withRSAandMGF1", "BC"); - - s.setParameter(pss.getParameterSpec(PSSParameterSpec.class)); - - s.initVerify(pubKey); - s.update(msg1a); - if (!s.verify(sig1c)) - { - fail("SHA512 signature verification failed"); - } - - SecureRandom random = new SecureRandom(); - - // Note: PSS minimum key size determined by hash/salt lengths - PrivateKey priv2048Key = fact.generatePrivate(RSATest.priv2048KeySpec); - PublicKey pub2048Key = fact.generatePublic(RSATest.pub2048KeySpec); - - rawModeTest("SHA1withRSA/PSS", X509ObjectIdentifiers.id_SHA1, priv2048Key, pub2048Key, random); - rawModeTest("SHA224withRSA/PSS", NISTObjectIdentifiers.id_sha224, priv2048Key, pub2048Key, random); - rawModeTest("SHA256withRSA/PSS", NISTObjectIdentifiers.id_sha256, priv2048Key, pub2048Key, random); - rawModeTest("SHA384withRSA/PSS", NISTObjectIdentifiers.id_sha384, priv2048Key, pub2048Key, random); - rawModeTest("SHA512withRSA/PSS", NISTObjectIdentifiers.id_sha512, priv2048Key, pub2048Key, random); - } - - private void rawModeTest(String sigName, ASN1ObjectIdentifier digestOID, - PrivateKey privKey, PublicKey pubKey, SecureRandom random) throws Exception - { - byte[] sampleMessage = new byte[1000 + random.nextInt(100)]; - random.nextBytes(sampleMessage); - - Signature normalSig = Signature.getInstance(sigName, "BC"); - - PSSParameterSpec spec = (PSSParameterSpec)normalSig.getParameters().getParameterSpec(PSSParameterSpec.class); - - // Make sure we generate the same 'random' salt for both normal and raw signers - int saltLen = spec.getSaltLength(); - byte[] fixedRandomBytes = new byte[saltLen]; - random.nextBytes(fixedRandomBytes); - - normalSig.initSign(privKey, new FixedSecureRandom(fixedRandomBytes)); - normalSig.update(sampleMessage); - byte[] normalResult = normalSig.sign(); - - MessageDigest digest = MessageDigest.getInstance(digestOID.getId(), "BC"); - byte[] hash = digest.digest(sampleMessage); - - Signature rawSig = Signature.getInstance("RAWRSASSA-PSS", "BC"); - - // Need to init the params explicitly to avoid having a 'raw' variety of every PSS algorithm - rawSig.setParameter(spec); - - rawSig.initSign(privKey, new FixedSecureRandom(fixedRandomBytes)); - rawSig.update(hash); - byte[] rawResult = rawSig.sign(); - - if (!Arrays.areEqual(normalResult, rawResult)) - { - fail("raw mode signature differs from normal one"); - } - - rawSig.initVerify(pubKey); - rawSig.update(hash); - - if (!rawSig.verify(rawResult)) - { - fail("raw mode signature verification failed"); - } - } - - public String getName() - { - return "PSSTest"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new PSSTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/Poly1305Test.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/Poly1305Test.java deleted file mode 100644 index c147c173..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/Poly1305Test.java +++ /dev/null @@ -1,150 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.NoSuchAlgorithmException; -import java.security.Security; -import java.util.ArrayList; -import java.util.List; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.Mac; -import javax.crypto.SecretKey; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.util.test.TestFailedException; - -public class Poly1305Test - extends SimpleTest -{ - private static final byte[] MASTER_KEY = Hex - .decode("95cc0e44d0b79a8856afcae1bec4fe3c01bcb20bfc8b6e03609ddd09f44b060f"); - - public String getName() - { - return "Poly1305"; - } - - public void performTest() - throws Exception - { - checkRegistrations(); - } - - private void checkRegistrations() - throws Exception - { - List missingMacs = new ArrayList(); - List missingKeyGens = new ArrayList(); - - String[] ciphers = new String[]{"AES", "NOEKEON", "Twofish", "CAST6", "SEED", "Serpent", "RC6", "CAMELLIA"}; - String[] macs = new String[]{ - "4bb5e21dd13001ed5faccfcfdaf8a854", - "6d601be3d5ebbb9972a64ed3223d913d", - "211195296d9afc7b35a1223a79487c87", - "f328857a1b653684e73760c804c55b1d", - "21cd8adb23ca84eb4dbb12780595bf28", - "211195296d9afc7b35a1223a79487c87", - "db86de7b1fcae429753d68b1263d7ca0", - "11918174f33a2f278fb86554da094112"}; - - for (int i = 0; i < ciphers.length; i++) - { - String cipherName = ciphers[i]; - Cipher cipher; - try - { - cipher = Cipher.getInstance(cipherName, "BC"); - } catch (Exception e) - { - System.err.println(cipherName + ": " + e.getMessage()); - continue; - } - int blocksize; - try - { - blocksize = cipher.getBlockSize(); - } catch (Exception e) - { - System.err.println(cipherName + ": " + e.getMessage()); - continue; - } - // Poly1305 is defined over 128 bit block ciphers - if (blocksize == 16) - { - String macName = "Poly1305-" + cipherName; - String macNameAlt = "Poly1305" + cipherName; - - // Check we have a Poly1305 registered for each name - checkMac(macName, missingMacs, missingKeyGens, macs[i]); - checkMac(macNameAlt, missingMacs, missingKeyGens, macs[i]); - } - } - if (missingMacs.size() != 0) - { - fail("Did not find Poly1305 registrations for the following ciphers: " + missingMacs); - } - if (missingKeyGens.size() != 0) - { - fail("Did not find Poly1305 KeyGenerator registrations for the following macs: " + missingKeyGens); - } - } - - private void checkMac(String name, List missingMacs, List missingKeyGens, String macOutput) - { - try - { - try - { - KeyGenerator kg = KeyGenerator.getInstance(name); - SecretKey key = kg.generateKey(); - - try - { - Poly1305KeyGenerator.checkKey(key.getEncoded()); - } catch (IllegalArgumentException e) - { - fail("Generated key for algo " + name + " does not match required Poly1305 format."); - } - - try - { - Mac mac = Mac.getInstance(name); - mac.init(new SecretKeySpec(MASTER_KEY, name), new IvParameterSpec(new byte[16])); - mac.update(new byte[128]); - byte[] bytes = mac.doFinal(); - - if (!Arrays.areEqual(bytes, Hex.decode(macOutput))) - { - fail("wrong mac value computed for " + name, macOutput, new String(Hex.encode(bytes))); - } - } catch (NoSuchAlgorithmException e) - { - missingMacs.add(name); - } - - } catch (NoSuchAlgorithmException e) - { - missingKeyGens.add(name); - } - } catch (TestFailedException e) - { - throw e; - } catch (Exception e) - { - fail("Unexpected error", e); - } - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new Poly1305Test()); - } -}
\ No newline at end of file diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java deleted file mode 100644 index 2fce07c5..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/RSATest.java +++ /dev/null @@ -1,834 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.math.BigInteger; -import java.security.AlgorithmParameters; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.interfaces.RSAPrivateCrtKey; -import java.security.interfaces.RSAPublicKey; -import java.security.spec.MGF1ParameterSpec; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.RSAKeyGenParameterSpec; -import java.security.spec.RSAPrivateCrtKeySpec; -import java.security.spec.RSAPrivateKeySpec; -import java.security.spec.RSAPublicKeySpec; -import java.security.spec.X509EncodedKeySpec; - -import javax.crypto.Cipher; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.spec.OAEPParameterSpec; -import javax.crypto.spec.PSource; - -import org.bouncycastle.asn1.ASN1Encoding; -import org.bouncycastle.asn1.ASN1ObjectIdentifier; -import org.bouncycastle.asn1.DERNull; -import org.bouncycastle.asn1.DEROctetString; -import org.bouncycastle.asn1.nist.NISTObjectIdentifiers; -import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; -import org.bouncycastle.asn1.pkcs.RSAESOAEPparams; -import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers; -import org.bouncycastle.asn1.x509.AlgorithmIdentifier; -import org.bouncycastle.asn1.x509.DigestInfo; -import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; -import org.bouncycastle.asn1.x509.X509ObjectIdentifiers; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class RSATest - extends SimpleTest -{ - /** - * a fake random number generator - we just want to make sure the random numbers - * aren't random so that we get the same output, while still getting to test the - * key generation facilities. - */ - private class FixedSecureRandom - extends SecureRandom - { - byte[] seed = { - (byte)0xaa, (byte)0xfd, (byte)0x12, (byte)0xf6, (byte)0x59, - (byte)0xca, (byte)0xe6, (byte)0x34, (byte)0x89, (byte)0xb4, - (byte)0x79, (byte)0xe5, (byte)0x07, (byte)0x6d, (byte)0xde, - (byte)0xc2, (byte)0xf0, (byte)0x6c, (byte)0xb5, (byte)0x8f - }; - - public void nextBytes( - byte[] bytes) - { - int offset = 0; - - while ((offset + seed.length) < bytes.length) - { - System.arraycopy(seed, 0, bytes, offset, seed.length); - offset += seed.length; - } - - System.arraycopy(seed, 0, bytes, offset, bytes.length - offset); - } - } - - private RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16)); - - private RSAPrivateCrtKeySpec privKeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", 16), - new BigInteger("11", 16), - new BigInteger("9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89", 16), - new BigInteger("c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", 16), - new BigInteger("f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", 16), - new BigInteger("b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", 16), - new BigInteger("d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", 16), - new BigInteger("b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", 16)); - - private RSAPublicKeySpec isoPubKeySpec = new RSAPublicKeySpec( - new BigInteger("0100000000000000000000000000000000bba2d15dbb303c8a21c5ebbcbae52b7125087920dd7cdf358ea119fd66fb064012ec8ce692f0a0b8e8321b041acd40b7", 16), - new BigInteger("03", 16)); - - private RSAPrivateKeySpec isoPrivKeySpec = new RSAPrivateKeySpec( - new BigInteger("0100000000000000000000000000000000bba2d15dbb303c8a21c5ebbcbae52b7125087920dd7cdf358ea119fd66fb064012ec8ce692f0a0b8e8321b041acd40b7", 16), - new BigInteger("2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac9f0783a49dd5f6c5af651f4c9d0dc9281c96a3f16a85f9572d7cc3f2d0f25a9dbf1149e4cdc32273faadd3fda5dcda7", 16)); - - static RSAPublicKeySpec pub2048KeySpec = new RSAPublicKeySpec( - new BigInteger("a7295693155b1813bb84877fb45343556e0568043de5910872a3a518cc11e23e2db74eaf4545068c4e3d258a2718fbacdcc3eafa457695b957e88fbf110aed049a992d9c430232d02f3529c67a3419935ea9b569f85b1bcd37de6b899cd62697e843130ff0529d09c97d813cb15f293751ff56f943fbdabb63971cc7f4f6d5bff1594416b1f5907bde5a84a44f9802ef29b43bda1960f948f8afb8766c1ab80d32eec88ed66d0b65aebe44a6d0b3c5e0ab051aaa1b912fbcc17b8e751ddecc5365b6db6dab0020c3057db4013a51213a5798a3aab67985b0f4d88627a54a0f3f0285fbcb4afdfeb65cb153af66825656d43238b75503231500753f4e421e3c57", 16), - new BigInteger("10001", 16)); - - static RSAPrivateCrtKeySpec priv2048KeySpec = new RSAPrivateCrtKeySpec( - new BigInteger("a7295693155b1813bb84877fb45343556e0568043de5910872a3a518cc11e23e2db74eaf4545068c4e3d258a2718fbacdcc3eafa457695b957e88fbf110aed049a992d9c430232d02f3529c67a3419935ea9b569f85b1bcd37de6b899cd62697e843130ff0529d09c97d813cb15f293751ff56f943fbdabb63971cc7f4f6d5bff1594416b1f5907bde5a84a44f9802ef29b43bda1960f948f8afb8766c1ab80d32eec88ed66d0b65aebe44a6d0b3c5e0ab051aaa1b912fbcc17b8e751ddecc5365b6db6dab0020c3057db4013a51213a5798a3aab67985b0f4d88627a54a0f3f0285fbcb4afdfeb65cb153af66825656d43238b75503231500753f4e421e3c57", 16), - new BigInteger("10001", 16), - new BigInteger("65dad56ac7df7abb434e4cb5eeadb16093aa6da7f0033aad3815289b04757d32bfee6ade7749c8e4a323b5050a2fb9e2a99e23469e1ed4ba5bab54336af20a5bfccb8b3424cc6923db2ffca5787ed87aa87aa614cd04cedaebc8f623a2d2063017910f436dff18bb06f01758610787f8b258f0a8efd8bd7de30007c47b2a1031696c7d6523bc191d4d918927a7e0b09584ed205bd2ff4fc4382678df82353f7532b3bbb81d69e3f39070aed3fb64fce032a089e8e64955afa5213a6eb241231bd98d702fba725a9b205952fda186412d9e0d9344d2998c455ad8c2bae85ee672751466d5288304032b5b7e02f7e558c7af82c7fbf58eea0bb4ef0f001e6cd0a9", 16), - new BigInteger("d4fd9ac3474fb83aaf832470643609659e511b322632b239b688f3cd2aad87527d6cf652fb9c9ca67940e84789444f2e99b0cb0cfabbd4de95396106c865f38e2fb7b82b231260a94df0e01756bf73ce0386868d9c41645560a81af2f53c18e4f7cdf3d51d80267372e6e0216afbf67f655c9450769cca494e4f6631b239ce1b", 16), - new BigInteger("c8eaa0e2a1b3a4412a702bccda93f4d150da60d736c99c7c566fdea4dd1b401cbc0d8c063daaf0b579953d36343aa18b33dbf8b9eae94452490cc905245f8f7b9e29b1a288bc66731a29e1dd1a45c9fd7f8238ff727adc49fff73991d0dc096206b9d3a08f61e7462e2b804d78cb8c5eccdb9b7fbd2ad6a8fea46c1053e1be75", 16), - new BigInteger("10edcb544421c0f9e123624d1099feeb35c72a8b34e008ac6fa6b90210a7543f293af4e5299c8c12eb464e70092805c7256e18e5823455ba0f504d36f5ccacac1b7cd5c58ff710f9c3f92646949d88fdd1e7ea5fed1081820bb9b0d2a8cd4b093fecfdb96dabd6e28c3a6f8c186dc86cddc89afd3e403e0fcf8a9e0bcb27af0b", 16), - new BigInteger("97fc25484b5a415eaa63c03e6efa8dafe9a1c8b004d9ee6e80548fefd6f2ce44ee5cb117e77e70285798f57d137566ce8ea4503b13e0f1b5ed5ca6942537c4aa96b2a395782a4cb5b58d0936e0b0fa63b1192954d39ced176d71ef32c6f42c84e2e19f9d4dd999c2151b032b97bd22aa73fd8c5bcd15a2dca4046d5acc997021", 16), - new BigInteger("4bb8064e1eff7e9efc3c4578fcedb59ca4aef0993a8312dfdcb1b3decf458aa6650d3d0866f143cbf0d3825e9381181170a0a1651eefcd7def786b8eb356555d9fa07c85b5f5cbdd74382f1129b5e36b4166b6cc9157923699708648212c484958351fdc9cf14f218dbe7fbf7cbd93a209a4681fe23ceb44bab67d66f45d1c9d", 16)); - - public void performTest() - throws Exception - { - KeyFactory fact; - byte[] input = new byte[] - { (byte)0x54, (byte)0x85, (byte)0x9b, (byte)0x34, (byte)0x2c, (byte)0x49, (byte)0xea, (byte)0x2a }; - byte[][] output = new byte[][] - { - Hex.decode("8b427f781a2e59dd9def386f1956b996ee07f48c96880e65a368055ed8c0a8831669ef7250b40918b2b1d488547e72c84540e42bd07b03f14e226f04fbc2d929"), - Hex.decode("2ec6e1a1711b6c7b8cd3f6a25db21ab8bb0a5f1d6df2ef375fa708a43997730ffc7c98856dbbe36edddcdd1b2d2a53867d8355af94fea3aeec128da908e08f4c"), - Hex.decode("0850ac4e5a8118323200c8ed1e5aaa3d5e635172553ccac66a8e4153d35c79305c4440f11034ab147fccce21f18a50cf1c0099c08a577eb68237a91042278965"), - Hex.decode("1c9649bdccb51056751fe43837f4eb43bada472accf26f65231666d5de7d11950d8379b3596dfdf75c6234274896fa8d18ad0865d3be2ac4d6687151abdf01e93941dcef18fa63186c9351d1506c89d09733c5ff4304208c812bdd21a50f56fde115e629e0e973721c9fcc87e89295a79853dee613962a0b2f2fc57163fd99057a3c776f13c20c26407eb8863998d7e53b543ba8d0a295a9a68d1a149833078c9809ad6a6dad7fc22a95ad615a73138c54c018f40d99bf8eeecd45f5be526f2d6b01aeb56381991c1ab31a2e756f15e052b9cd5638b2eff799795c5bae493307d5eb9f8c21d438de131fe505a4e7432547ab19224094f9e4be1968bd0793b79d"), - Hex.decode("4c4afc0c24dddaedd4f9a3b23be30d35d8e005ffd36b3defc5d18acc830c3ed388ce20f43a00e614fd087c814197bc9fc2eff9ad4cc474a7a2ef3ed9c0f0a55eb23371e41ee8f2e2ed93ea3a06ca482589ab87e0d61dcffda5eea1241408e43ea1108726cdb87cc3aa5e9eaaa9f72507ca1352ac54a53920c94dccc768147933d8c50aefd9d1da10522a40133cd33dbc0524669e70f771a88d65c4716d471cd22b08b9f01f24e4e9fc7ffbcfa0e0a7aed47b345826399b26a73be112eb9c5e06fc6742fc3d0ef53d43896403c5105109cfc12e6deeaf4a48ba308e039774b9bdb31a9b9e133c81c321630cf0b4b2d1f90717b24c3268e1fea681ea9cdc709342"), - Hex.decode("06b5b26bd13515f799e5e37ca43cace15cd82fd4bf36b25d285a6f0998d97c8cb0755a28f0ae66618b1cd03e27ac95eaaa4882bc6dc0078cd457d4f7de4154173a9c7a838cfc2ac2f74875df462aae0cfd341645dc51d9a01da9bdb01507f140fa8a016534379d838cc3b2a53ac33150af1b242fc88013cb8d914e66c8182864ee6de88ce2879d4c05dd125409620a96797c55c832fb2fb31d4310c190b8ed2c95fdfda2ed87f785002faaec3f35ec05cf70a3774ce185e4882df35719d582dd55ac31257344a9cba95189dcbea16e8c6cb7a235a0384bc83b6183ca8547e670fe33b1b91725ae0c250c9eca7b5ba78bd77145b70270bf8ac31653006c02ca9c"), - Hex.decode("135f1be3d045526235bf9d5e43499d4ee1bfdf93370769ae56e85dbc339bc5b7ea3bee49717497ee8ac3f7cd6adb6fc0f17812390dcd65ac7b87fef7970d9ff9"), - Hex.decode("03c05add1e030178c352face07cafc9447c8f369b8f95125c0d311c16b6da48ca2067104cce6cd21ae7b163cd18ffc13001aecebdc2eb02b9e92681f84033a98"), - Hex.decode("00319bb9becb49f3ed1bca26d0fcf09b0b0a508e4d0bd43b350f959b72cd25b3af47d608fdcd248eada74fbe19990dbeb9bf0da4b4e1200243a14e5cab3f7e610c") - }; - SecureRandom rand = new FixedSecureRandom(); - - - fact = KeyFactory.getInstance("RSA", "BC"); - - PrivateKey privKey = fact.generatePrivate(privKeySpec); - PublicKey pubKey = fact.generatePublic(pubKeySpec); - - PrivateKey priv2048Key = fact.generatePrivate(priv2048KeySpec); - PublicKey pub2048Key = fact.generatePublic(pub2048KeySpec); - - // - // key without CRT coefficients - // - PrivateKeyInfo keyInfo = PrivateKeyInfo.getInstance(privKey.getEncoded()); - BigInteger zero = BigInteger.valueOf(0); - PKCS8EncodedKeySpec noCrtSpec = new PKCS8EncodedKeySpec(new PrivateKeyInfo(keyInfo.getPrivateKeyAlgorithm(), - new org.bouncycastle.asn1.pkcs.RSAPrivateKey(privKeySpec.getModulus(), privKeySpec.getPublicExponent(), privKeySpec.getPrivateExponent(), zero, zero, zero, zero, zero)).getEncoded()); - - PrivateKey noCrtKey = fact.generatePrivate(noCrtSpec); - if (noCrtKey instanceof RSAPrivateCrtKey) - { - fail("private key without CRT coefficients returned as CRT key"); - } - - // - // No Padding - // - Cipher c = Cipher.getInstance("RSA", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - byte[] out = c.doFinal(input); - - if (!areEqual(out, output[0])) - { - fail("NoPadding test failed on encrypt expected " + new String(Hex.encode(output[0])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("NoPadding test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - // - // No Padding - incremental - // - c = Cipher.getInstance("RSA", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - c.update(input); - - out = c.doFinal(); - - if (!areEqual(out, output[0])) - { - fail("NoPadding test failed on encrypt expected " + new String(Hex.encode(output[0])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("NoPadding test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - // - // No Padding - incremental - explicit use of NONE in mode. - // - c = Cipher.getInstance("RSA/NONE/NoPadding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - c.update(input); - - out = c.doFinal(); - - if (!areEqual(out, output[0])) - { - fail("NoPadding test failed on encrypt expected " + new String(Hex.encode(output[0])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("NoPadding test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - // - // No Padding - maximum length - // - c = Cipher.getInstance("RSA", "BC"); - - byte[] modBytes = ((RSAPublicKey)pubKey).getModulus().toByteArray(); - byte[] maxInput = new byte[modBytes.length - 1]; - - maxInput[0] |= 0x7f; - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - out = c.doFinal(maxInput); - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, maxInput)) - { - fail("NoPadding test failed on decrypt expected " + new String(Hex.encode(maxInput)) + " got " + new String(Hex.encode(out))); - } - - // - // PKCS1 V 1.5 - // - c = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - out = c.doFinal(input); - - if (!areEqual(out, output[1])) - { - fail("PKCS1 test failed on encrypt expected " + new String(Hex.encode(output[1])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("PKCS1 test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - // - // PKCS1 V 1.5 - NONE - // - c = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - out = c.doFinal(input); - - if (!areEqual(out, output[1])) - { - fail("PKCS1 test failed on encrypt expected " + new String(Hex.encode(output[1])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("PKCS1 test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - // - // OAEP - SHA1 - // - c = Cipher.getInstance("RSA/NONE/OAEPPadding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - out = c.doFinal(input); - - if (!areEqual(out, output[2])) - { - fail("OAEP test failed on encrypt expected " + new String(Hex.encode(output[2])) + " got " + new String(Hex.encode(out))); - } - - c = Cipher.getInstance("RSA/NONE/OAEPWithSHA1AndMGF1Padding", "BC"); - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("OAEP test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - AlgorithmParameters oaepP = c.getParameters(); - - if (!areEqual(oaepP.getEncoded(), - new RSAESOAEPparams( - new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE)), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(new byte[0]))).getEncoded())) - { - fail("OAEP test failed default sha-1 parameters"); - } - - // - // OAEP - SHA224 - // - c = Cipher.getInstance("RSA/NONE/OAEPWithSHA224AndMGF1Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pub2048Key, rand); - - out = c.doFinal(input); - - if (!areEqual(out, output[3])) - { - fail("OAEP SHA-224 test failed on encrypt expected " + new String(Hex.encode(output[2])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, priv2048Key); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("OAEP SHA-224 test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - oaepP = c.getParameters(); - - if (!areEqual(oaepP.getEncoded(), - new RSAESOAEPparams( - new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha224, DERNull.INSTANCE), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha224, DERNull.INSTANCE)), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(new byte[0]))).getEncoded())) - { - fail("OAEP test failed default sha-224 parameters"); - } - - // - // OAEP - SHA 256 - // - c = Cipher.getInstance("RSA/NONE/OAEPWithSHA256AndMGF1Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pub2048Key, rand); - - out = c.doFinal(input); - - if (!areEqual(out, output[4])) - { - fail("OAEP SHA-256 test failed on encrypt expected " + new String(Hex.encode(output[2])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, priv2048Key); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("OAEP SHA-256 test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - oaepP = c.getParameters(); - - if (!areEqual(oaepP.getEncoded(), - new RSAESOAEPparams( - new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha256, DERNull.INSTANCE), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha256, DERNull.INSTANCE)), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(new byte[0]))).getEncoded())) - { - fail("OAEP test failed default sha-256 parameters"); - } - - // - // OAEP - SHA 384 - // - c = Cipher.getInstance("RSA/NONE/OAEPWithSHA384AndMGF1Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pub2048Key, rand); - - out = c.doFinal(input); - - if (!areEqual(out, output[5])) - { - fail("OAEP SHA-384 test failed on encrypt expected " + new String(Hex.encode(output[2])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, priv2048Key); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("OAEP SHA-384 test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - oaepP = c.getParameters(); - - if (!areEqual(oaepP.getEncoded(), - new RSAESOAEPparams( - new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha384, DERNull.INSTANCE), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha384, DERNull.INSTANCE)), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(new byte[0]))).getEncoded())) - { - fail("OAEP test failed default sha-384 parameters"); - } - - // - // OAEP - MD5 - // - c = Cipher.getInstance("RSA/NONE/OAEPWithMD5AndMGF1Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - out = c.doFinal(input); - - if (!areEqual(out, output[6])) - { - fail("OAEP MD5 test failed on encrypt expected " + new String(Hex.encode(output[2])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("OAEP MD5 test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - oaepP = c.getParameters(); - - if (!areEqual(oaepP.getEncoded(), - new RSAESOAEPparams( - new AlgorithmIdentifier(PKCSObjectIdentifiers.md5, DERNull.INSTANCE), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, new AlgorithmIdentifier(PKCSObjectIdentifiers.md5, DERNull.INSTANCE)), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(new byte[0]))).getEncoded())) - { - fail("OAEP test failed default md5 parameters"); - } - - // - // OAEP - SHA1 with default parameters - // - c = Cipher.getInstance("RSA/NONE/OAEPPadding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, OAEPParameterSpec.DEFAULT, rand); - - out = c.doFinal(input); - - if (!areEqual(out, output[2])) - { - fail("OAEP test failed on encrypt expected " + new String(Hex.encode(output[2])) + " got " + new String(Hex.encode(out))); - } - - c = Cipher.getInstance("RSA/NONE/OAEPWithSHA1AndMGF1Padding", "BC"); - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("OAEP test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - oaepP = c.getParameters(); - - if (!areEqual(oaepP.getEncoded(), new byte[] { 0x30, 0x00 })) - { - fail("OAEP test failed default parameters"); - } - - // - // OAEP - SHA1 with specified string - // - c = Cipher.getInstance("RSA/NONE/OAEPPadding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, pubKey, new OAEPParameterSpec("SHA1", "MGF1", new MGF1ParameterSpec("SHA1"), new PSource.PSpecified(new byte[] { 1, 2, 3, 4, 5 })), rand); - - out = c.doFinal(input); - - oaepP = c.getParameters(); - - if (!areEqual(oaepP.getEncoded(), - new RSAESOAEPparams( - new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_mgf1, new AlgorithmIdentifier(OIWObjectIdentifiers.idSHA1, DERNull.INSTANCE)), - new AlgorithmIdentifier(PKCSObjectIdentifiers.id_pSpecified, new DEROctetString(new byte[] { 1, 2, 3, 4, 5 }))).getEncoded())) - { - fail("OAEP test failed changed sha-1 parameters"); - } - - if (!areEqual(out, output[7])) - { - fail("OAEP test failed on encrypt expected " + new String(Hex.encode(output[2])) + " got " + new String(Hex.encode(out))); - } - - c = Cipher.getInstance("RSA/NONE/OAEPWithSHA1AndMGF1Padding", "BC"); - - c.init(Cipher.DECRYPT_MODE, privKey, oaepP); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("OAEP test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - // - // ISO9796-1 - // - byte[] isoInput = Hex.decode("fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210"); - PrivateKey isoPrivKey = fact.generatePrivate(isoPrivKeySpec); - PublicKey isoPubKey = fact.generatePublic(isoPubKeySpec); - - c = Cipher.getInstance("RSA/NONE/ISO9796-1Padding", "BC"); - - c.init(Cipher.ENCRYPT_MODE, isoPrivKey); - - out = c.doFinal(isoInput); - - if (!areEqual(out, output[8])) - { - fail("ISO9796-1 test failed on encrypt expected " + new String(Hex.encode(output[3])) + " got " + new String(Hex.encode(out))); - } - - c.init(Cipher.DECRYPT_MODE, isoPubKey); - - out = c.doFinal(out); - - if (!areEqual(out, isoInput)) - { - fail("ISO9796-1 test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - // - // - // generation with parameters test. - // - KeyPairGenerator keyPairGen = - KeyPairGenerator.getInstance("RSA", "BC"); - - // - // 768 bit RSA with e = 2^16-1 - // - keyPairGen.initialize( - new RSAKeyGenParameterSpec(768, - BigInteger.valueOf(65537)), - new SecureRandom()); - - KeyPair kp = keyPairGen.generateKeyPair(); - - pubKey = kp.getPublic(); - privKey = kp.getPrivate(); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - out = c.doFinal(input); - - c.init(Cipher.DECRYPT_MODE, privKey); - - out = c.doFinal(out); - - if (!areEqual(out, input)) - { - fail("key generation test failed on decrypt expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(out))); - } - - // - // comparison check - // - KeyFactory keyFact = KeyFactory.getInstance("RSA", "BC"); - - RSAPrivateCrtKey crtKey = (RSAPrivateCrtKey)keyFact.translateKey(privKey); - - if (!privKey.equals(crtKey)) - { - fail("private key equality check failed"); - } - - crtKey = (RSAPrivateCrtKey)keyFact.generatePrivate(new PKCS8EncodedKeySpec(privKey.getEncoded())); - - if (!privKey.equals(crtKey)) - { - fail("private key equality check failed"); - } - - crtKey = (RSAPrivateCrtKey)serializeDeserialize(privKey); - - if (!privKey.equals(crtKey)) - { - fail("private key equality check failed"); - } - - if (privKey.hashCode() != crtKey.hashCode()) - { - fail("private key hashCode check failed"); - } - - RSAPublicKey copyKey = (RSAPublicKey)keyFact.translateKey(pubKey); - - if (!pubKey.equals(copyKey)) - { - fail("public key equality check failed"); - } - - copyKey = (RSAPublicKey)keyFact.generatePublic(new X509EncodedKeySpec(pubKey.getEncoded())); - - if (!pubKey.equals(copyKey)) - { - fail("public key equality check failed"); - } - - copyKey = (RSAPublicKey)serializeDeserialize(pubKey); - - if (!pubKey.equals(copyKey)) - { - fail("public key equality check failed"); - } - - if (pubKey.hashCode() != copyKey.hashCode()) - { - fail("public key hashCode check failed"); - } - - // - // test an OAEP key - // - SubjectPublicKeyInfo oaepKey = new SubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.id_RSAES_OAEP, new RSAESOAEPparams()), - SubjectPublicKeyInfo.getInstance(pubKey.getEncoded()).parsePublicKey()); - - copyKey = (RSAPublicKey)serializeDeserialize(keyFact.generatePublic(new X509EncodedKeySpec(oaepKey.getEncoded()))); - - if (!pubKey.equals(copyKey)) - { - fail("public key equality check failed"); - } - - if (pubKey.hashCode() != copyKey.hashCode()) - { - fail("public key hashCode check failed"); - } - - if (!Arrays.areEqual(copyKey.getEncoded(), oaepKey.getEncoded())) - { - fail("encoding does not match"); - } - - oaepCompatibilityTest("SHA-1", priv2048Key, pub2048Key); - oaepCompatibilityTest("SHA-224", priv2048Key, pub2048Key); - oaepCompatibilityTest("SHA-256", priv2048Key, pub2048Key); - oaepCompatibilityTest("SHA-384", priv2048Key, pub2048Key); - oaepCompatibilityTest("SHA-512", priv2048Key, pub2048Key); - - SecureRandom random = new SecureRandom(); - rawModeTest("SHA1withRSA", X509ObjectIdentifiers.id_SHA1, priv2048Key, pub2048Key, random); - rawModeTest("MD5withRSA", PKCSObjectIdentifiers.md5, priv2048Key, pub2048Key, random); - rawModeTest("RIPEMD128withRSA", TeleTrusTObjectIdentifiers.ripemd128, priv2048Key, pub2048Key, random); - - // init reset test - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - out = c.update(new byte[40]); - - c.init(Cipher.ENCRYPT_MODE, pubKey, rand); - - out = c.update(new byte[40]); - } - - private void oaepCompatibilityTest(String digest, PrivateKey privKey, PublicKey pubKey) - throws Exception - { - if (Security.getProvider("SunJCE") == null || Security.getProvider("SunRsaSign") == null) - { - return; - } - - KeyFactory fact = KeyFactory.getInstance("RSA", "SunRsaSign"); - PrivateKey priv2048Key = fact.generatePrivate(priv2048KeySpec); - PublicKey pub2048Key = fact.generatePublic(pub2048KeySpec); - - byte[] data = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; - - Cipher sCipher; - try - { - sCipher = Cipher.getInstance("RSA/ECB/OAEPWith" + digest + "AndMGF1Padding", "SunJCE"); - } - catch (NoSuchAlgorithmException e) - { - return; - } - catch (NoSuchPaddingException e) - { - return; - } - - sCipher.init(Cipher.ENCRYPT_MODE, pub2048Key); - - byte[] enctext = sCipher.doFinal(data); - - Cipher bcCipher = Cipher.getInstance("RSA/ECB/OAEPWith" + digest + "AndMGF1Padding", "BC"); - - bcCipher.init(Cipher.DECRYPT_MODE, privKey, new OAEPParameterSpec(digest, "MGF1", MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT)); - - byte[] plaintext = bcCipher.doFinal(enctext); - - if (!Arrays.areEqual(plaintext, data)) - { - fail("data did not decrypt first time"); - } - - bcCipher.init(Cipher.ENCRYPT_MODE, pubKey, new OAEPParameterSpec(digest, "MGF1", MGF1ParameterSpec.SHA1, PSource.PSpecified.DEFAULT)); - - enctext = bcCipher.doFinal(data); - - sCipher.init(Cipher.DECRYPT_MODE, priv2048Key); - - plaintext = sCipher.doFinal(enctext); - - if (!Arrays.areEqual(plaintext, data)) - { - fail("data did not decrypt second time"); - } - } - - private void rawModeTest(String sigName, ASN1ObjectIdentifier digestOID, - PrivateKey privKey, PublicKey pubKey, SecureRandom random) throws Exception - { - byte[] sampleMessage = new byte[1000 + random.nextInt(100)]; - random.nextBytes(sampleMessage); - - Signature normalSig = Signature.getInstance(sigName, "BC"); - normalSig.initSign(privKey); - normalSig.update(sampleMessage); - byte[] normalResult = normalSig.sign(); - - MessageDigest digest = MessageDigest.getInstance(digestOID.getId(), "BC"); - byte[] hash = digest.digest(sampleMessage); - byte[] digInfo = derEncode(digestOID, hash); - - Signature rawSig = Signature.getInstance("RSA", "BC"); - rawSig.initSign(privKey); - rawSig.update(digInfo); - byte[] rawResult = rawSig.sign(); - - if (!Arrays.areEqual(normalResult, rawResult)) - { - fail("raw mode signature differs from normal one"); - } - - rawSig.initVerify(pubKey); - rawSig.update(digInfo); - - if (!rawSig.verify(rawResult)) - { - fail("raw mode signature verification failed"); - } - } - - private Object serializeDeserialize(Object o) - throws Exception - { - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - ObjectOutputStream oOut = new ObjectOutputStream(bOut); - - oOut.writeObject(o); - oOut.close(); - - ObjectInputStream oIn = new ObjectInputStream(new ByteArrayInputStream(bOut.toByteArray())); - - return oIn.readObject(); - } - - private byte[] derEncode(ASN1ObjectIdentifier oid, byte[] hash) throws IOException - { - AlgorithmIdentifier algId = new AlgorithmIdentifier(oid, DERNull.INSTANCE); - DigestInfo dInfo = new DigestInfo(algId, hash); - - return dInfo.getEncoded(ASN1Encoding.DER); - } - - public String getName() - { - return "RSATest"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new RSATest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/RegressionTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/RegressionTest.java deleted file mode 100644 index 770b69b0..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/RegressionTest.java +++ /dev/null @@ -1,101 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Security; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.Test; -import org.bouncycastle.util.test.TestResult; - -public class RegressionTest -{ - public static Test[] tests = { - new FIPSDESTest(), - new DESedeTest(), - new AESTest(), - new AEADTest(), - new CamelliaTest(), - new SEEDTest(), - new AESSICTest(), - new GOST28147Test(), - new PBETest(), - new BlockCipherTest(), - new MacTest(), - new HMacTest(), - new SealedTest(), - new RSATest(), - new DHTest(), - new DHIESTest(), - new DSATest(), - new ImplicitlyCaTest(), - new ECNRTest(), - new ECIESTest(), - new ECDSA5Test(), - new GOST3410Test(), - new ElGamalTest(), - new IESTest(), - new SigTest(), - new CertTest(), - new PKCS10CertRequestTest(), - new EncryptedPrivateKeyInfoTest(), - new KeyStoreTest(), - new PKCS12StoreTest(), - new DigestTest(), - new PSSTest(), - new WrapTest(), - new DoFinalTest(), - new CipherStreamTest(), - new CipherStreamTest2(), - new NamedCurveTest(), - new PKIXTest(), - new NetscapeCertRequestTest(), - new X509StreamParserTest(), - new X509CertificatePairTest(), - new CertPathTest(), - new CertStoreTest(), - // new CertPathValidatorTest(), - // new CertPathBuilderTest(), - new ECEncodingTest(), - new AlgorithmParametersTest(), - new NISTCertPathTest(), - new PKIXPolicyMappingTest(), - new SlotTwoTest(), - new PKIXNameConstraintsTest(), - new MultiCertStoreTest(), - new NoekeonTest(), - new SerialisationTest(), - new SigNameTest(), - new MQVTest(), - new CMacTest(), - new GMacTest(), - new OCBTest(), - new DSTU4145Test(), - new CRL5Test(), - new Poly1305Test(), - new SipHashTest(), - new SHA3Test(), - new SkeinTest(), - new Shacal2Test(), - new DetDSATest() - }; - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - System.out.println("Testing " + Security.getProvider("BC").getInfo() + " version: " + Security.getProvider("BC").getVersion()); - - for (int i = 0; i != tests.length; i++) - { - TestResult result = tests[i].perform(); - - if (result.getException() != null) - { - result.getException().printStackTrace(); - } - - System.out.println(result); - } - } -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SEEDTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SEEDTest.java deleted file mode 100644 index 20364647..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SEEDTest.java +++ /dev/null @@ -1,175 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.asn1.kisa.KISAObjectIdentifiers; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.spec.SecretKeySpec; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.security.Key; -import java.security.Security; - -/** - * basic test class for SEED - */ -public class SEEDTest - extends BaseBlockCipherTest -{ - static String[] cipherTests = - { - "128", - "28DBC3BC49FFD87DCFA509B11D422BE7", - "B41E6BE2EBA84A148E2EED84593C5EC7", - "9B9B7BFCD1813CB95D0B3618F40F5122" - }; - - public SEEDTest() - { - super("SEED"); - } - - public void test( - int strength, - byte[] keyBytes, - byte[] input, - byte[] output) - throws Exception - { - Key key; - Cipher in, out; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - key = new SecretKeySpec(keyBytes, "SEED"); - - in = Cipher.getInstance("SEED/ECB/NoPadding", "BC"); - out = Cipher.getInstance("SEED/ECB/NoPadding", "BC"); - - try - { - out.init(Cipher.ENCRYPT_MODE, key); - } - catch (Exception e) - { - fail("SEED failed initialisation - " + e.toString(), e); - } - - try - { - in.init(Cipher.DECRYPT_MODE, key); - } - catch (Exception e) - { - fail("SEED failed initialisation - " + e.toString(), e); - } - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - try - { - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - } - catch (IOException e) - { - fail("SEED failed encryption - " + e.toString(), e); - } - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!areEqual(bytes, output)) - { - fail("SEED failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - try - { - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - } - catch (Exception e) - { - fail("SEED failed encryption - " + e.toString(), e); - } - - if (!areEqual(bytes, input)) - { - fail("SEED failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - } - - public void performTest() - throws Exception - { - for (int i = 0; i != cipherTests.length; i += 4) - { - test(Integer.parseInt(cipherTests[i]), - Hex.decode(cipherTests[i + 1]), - Hex.decode(cipherTests[i + 2]), - Hex.decode(cipherTests[i + 3])); - } - - byte[] kek1 = Hex.decode("000102030405060708090a0b0c0d0e0f"); - byte[] in1 = Hex.decode("00112233445566778899aabbccddeeff"); - byte[] out1 = Hex.decode("bf71f77138b5afea05232a8dad54024e812dc8dd7d132559"); - - wrapTest(1, "SEEDWrap", kek1, in1, out1); - - String[] oids = { - KISAObjectIdentifiers.id_seedCBC.getId() - }; - - String[] names = { - "SEED/CBC/PKCS7Padding" - }; - - oidTest(oids, names, 1); - - String[] wrapOids = { - KISAObjectIdentifiers.id_npki_app_cmsSeed_wrap.getId() - }; - - wrapOidTest(wrapOids, "SEEDWrap"); - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new SEEDTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SHA3Test.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SHA3Test.java deleted file mode 100644 index 89b85ae4..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SHA3Test.java +++ /dev/null @@ -1,136 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.MessageDigest; -import java.security.Security; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class SHA3Test - extends SimpleTest -{ - final static String provider = "BC"; - - static private byte[] nullMsg = new byte[0]; - - static private String[][] nullVectors = - { - { "SHA3-224", "f71837502ba8e10837bdd8d365adb85591895602fc552b48b7390abd" }, - { "SHA3-256", "c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470" }, - { "SHA3-384", "2c23146a63a29acf99e73b88f8c24eaa7dc60aa771780ccc006afbfa8fe2479b2dd2b21362337441ac12b515911957ff" }, - { "SHA3-512", "0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e" }, - }; - - static private byte[] shortMsg = Hex.decode("54686520717569636b2062726f776e20666f78206a756d7073206f76657220746865206c617a7920646f67"); - - static private String[][] shortVectors = - { - { "SHA3-224", "310aee6b30c47350576ac2873fa89fd190cdc488442f3ef654cf23fe" }, - { "SHA3-256", "4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15" }, - { "SHA3-384", "283990fa9d5fb731d786c5bbee94ea4db4910f18c62c03d173fc0a5e494422e8a0b3da7574dae7fa0baf005e504063b3" }, - { "SHA3-512", "d135bb84d0439dbac432247ee573a23ea7d3c9deb2a968eb31d47c4fb45f1ef4422d6c531b5b9bd6f449ebcc449ea94d0a8f05f62130fda612da53c79659f609" }, - }; - - public String getName() - { - return "SHA3"; - } - - void test(String algorithm, byte[] message, String expected) - throws Exception - { - MessageDigest digest = MessageDigest.getInstance(algorithm, provider); - - byte[] result = digest.digest(message); - byte[] result2 = digest.digest(message); - - // test zero results valid - if (!MessageDigest.isEqual(result, Hex.decode(expected))) - { - fail("null result not equal for " + algorithm); - } - - // test one digest the same message with the same instance - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 1 not equal"); - } - - if (!MessageDigest.isEqual(result, Hex.decode(expected))) - { - fail("Result object 1 not equal"); - } - - // test two, single byte updates - for (int i = 0; i < message.length; i++) - { - digest.update(message[i]); - } - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 2 not equal"); - } - - // test three, two half updates - digest.update(message, 0, message.length/2); - digest.update(message, message.length/2, message.length-message.length/2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 3 not equal"); - } - - // test four, clone test - digest.update(message, 0, message.length/2); - MessageDigest d = (MessageDigest)digest.clone(); - digest.update(message, message.length/2, message.length-message.length/2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 4(a) not equal"); - } - - d.update(message, message.length/2, message.length-message.length/2); - result2 = d.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 4(b) not equal"); - } - - // test five, check reset() method - digest.update(message, 0, message.length/2); - digest.reset(); - digest.update(message, 0, message.length/2); - digest.update(message, message.length/2, message.length-message.length/2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 5 not equal"); - } - - } - - public void performTest() - throws Exception - { - for (int i = 0; i != nullVectors.length; i++) - { - test(nullVectors[i][0], nullMsg, nullVectors[i][1]); - test(shortVectors[i][0], shortMsg, shortVectors[i][1]); - } - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new SHA3Test()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SealedTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SealedTest.java deleted file mode 100644 index 9a7e3141..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SealedTest.java +++ /dev/null @@ -1,79 +0,0 @@ - -package org.bouncycastle.jce.provider.test; - -import java.security.Key; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.SealedObject; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTestResult; -import org.bouncycastle.util.test.Test; -import org.bouncycastle.util.test.TestResult; - -public class SealedTest - implements Test -{ - final static String provider = "BC"; - - public String getName() - { - return "SealedObject"; - } - - public TestResult perform() - { - try - { - KeyGenerator keyGen = KeyGenerator.getInstance("DES", provider); - Key key = keyGen.generateKey(); - Cipher c = Cipher.getInstance("DES/ECB/PKCS5Padding", provider); - - c.init(Cipher.ENCRYPT_MODE, key); - String object = "Hello world"; - SealedObject so = new SealedObject(object, c); - c.init(Cipher.DECRYPT_MODE, key); - - Object o = so.getObject(c); - if (!o.equals(object)) - { - return new SimpleTestResult(false, "Result object 1 not equal" - + "orig: " + object + " res: " + o); - } - - o = so.getObject(key); - if (!o.equals(object)) - { - return new SimpleTestResult(false, "Result object 2 not equal" - + "orig: " + object + " res: " + o); - } - - o = so.getObject(key, provider); - if (!o.equals(object)) - { - return new SimpleTestResult(false, "Result object 3 not equal" - + "orig: " + object + " res: " + o); - } - - return new SimpleTestResult(true, getName() + ": Okay"); - } - catch (Exception e) - { - return new SimpleTestResult(false, getName() - + ": failed excpetion - " + e.toString(), e); - } - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - Test test = new SealedTest(); - TestResult result = test.perform(); - - System.out.println(result.toString()); - } -} - diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SerialisationTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SerialisationTest.java deleted file mode 100644 index 6d04f97b..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SerialisationTest.java +++ /dev/null @@ -1,342 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.math.BigInteger; -import java.security.interfaces.DSAPrivateKey; -import java.security.interfaces.DSAPublicKey; -import java.security.interfaces.RSAPrivateCrtKey; -import java.security.interfaces.RSAPublicKey; - -import javax.crypto.interfaces.DHPrivateKey; -import javax.crypto.interfaces.DHPublicKey; - -import org.bouncycastle.jce.interfaces.ElGamalPrivateKey; -import org.bouncycastle.jce.interfaces.ElGamalPublicKey; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTest; - -public class SerialisationTest - extends SimpleTest -{ - private static BigInteger mod = new BigInteger("69919157209851583596607278525201743749468350078269839551939850344506918649679"); - private static BigInteger pubExp = new BigInteger("65537"); - private static BigInteger privExp = new BigInteger("6387323103214694462561419908301918608189256611651974386490887304224030221257"); - private static BigInteger crtExp = new BigInteger("49050879172577973803420172068797326635"); - private static BigInteger p = new BigInteger("272712035519670228866910009292918035133"); - private static BigInteger q = new BigInteger("256384567247338962716621434774670631163"); - private static BigInteger expP = new BigInteger("121540093892892992427860713054115232161"); - private static BigInteger expQ = new BigInteger("169333445127196347119779037859859594883"); - - private static byte[] rsaPub = Base64.decode( - "rO0ABXNyAC1vcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KQ0VSU0FQdWJsaWNLZXklImoOW/pshAIAAkwAB21vZHV" - + "sdXN0ABZMamF2YS9tYXRoL0JpZ0ludGVnZXI7TAAOcHVibGljRXhwb25lbnRxAH4AAXhwc3IAFGphdmEubWF0aC5CaWdJbn" - + "RlZ2VyjPyfH6k7+x0DAAZJAAhiaXRDb3VudEkACWJpdExlbmd0aEkAE2ZpcnN0Tm9uemVyb0J5dGVOdW1JAAxsb3dlc3RTZ" - + "XRCaXRJAAZzaWdudW1bAAltYWduaXR1ZGV0AAJbQnhyABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cP//////////" - + "/////v////4AAAABdXIAAltCrPMX+AYIVOACAAB4cAAAACCalNcvvJNMM944KWzzuH2MXkKbiW10OEzGQb9B9MM/T3hzcQB" - + "+AAP///////////////7////+AAAAAXVxAH4ABwAAAAMBAAF4"); - - private static byte[] rsaPriv = Base64.decode( - "rO0ABXNyADFvcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KQ0VSU0FQcml2YXRlQ3J0S2V5bLqHzgJzVS4CAAZMAA5" - + "jcnRDb2VmZmljaWVudHQAFkxqYXZhL21hdGgvQmlnSW50ZWdlcjtMAA5wcmltZUV4cG9uZW50UHEAfgABTAAOcHJpbWVFeH" - + "BvbmVudFFxAH4AAUwABnByaW1lUHEAfgABTAAGcHJpbWVRcQB+AAFMAA5wdWJsaWNFeHBvbmVudHEAfgABeHIALm9yZy5ib" - + "3VuY3ljYXN0bGUuamNlLnByb3ZpZGVyLkpDRVJTQVByaXZhdGVLZXlG6wnAB89BHAMABEwAB21vZHVsdXNxAH4AAUwAEHBr" - + "Y3MxMkF0dHJpYnV0ZXN0ABVMamF2YS91dGlsL0hhc2h0YWJsZTtMAA5wa2NzMTJPcmRlcmluZ3QAEkxqYXZhL3V0aWwvVmV" - + "jdG9yO0wAD3ByaXZhdGVFeHBvbmVudHEAfgABeHBzcgAUamF2YS5tYXRoLkJpZ0ludGVnZXKM/J8fqTv7HQMABkkACGJpdE" - + "NvdW50SQAJYml0TGVuZ3RoSQATZmlyc3ROb256ZXJvQnl0ZU51bUkADGxvd2VzdFNldEJpdEkABnNpZ251bVsACW1hZ25pd" - + "HVkZXQAAltCeHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhw///////////////+/////gAAAAF1cgACW0Ks8xf4" - + "BghU4AIAAHhwAAAAIJqU1y+8k0wz3jgpbPO4fYxeQpuJbXQ4TMZBv0H0wz9PeHNyABNqYXZhLnV0aWwuSGFzaHRhYmxlE7s" - + "PJSFK5LgDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAACHcIAAAACwAAAAB4c3IAEGphdmEudXRpbC5WZW" - + "N0b3LZl31bgDuvAQMAA0kAEWNhcGFjaXR5SW5jcmVtZW50SQAMZWxlbWVudENvdW50WwALZWxlbWVudERhdGF0ABNbTGphd" - + "mEvbGFuZy9PYmplY3Q7eHAAAAAAAAAAAHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB4cAAAAApwcHBwcHBw" - + "cHBweHNxAH4ABv///////////////v////4AAAABdXEAfgAKAAAAIA4fGMVoocAtYNiamDRvnzBmMv/l8FibkQsOUJjxrmP" - + "JeHhzcQB+AAb///////////////7////+AAAAAXVxAH4ACgAAABAk5tsPIq2YfF0nfLPvAKUreHNxAH4ABv////////////" - + "///v////4AAAABdXEAfgAKAAAAEFtvxUfS67k0bWmAU9/geaF4c3EAfgAG///////////////+/////gAAAAF1cQB+AAoAA" - + "AAQf2RvbOpsxhCjGK1vhd7+g3hzcQB+AAb///////////////7////+AAAAAXVxAH4ACgAAABDNKm1zRn/cYal03dRjdxK9" - + "eHNxAH4ABv///////////////v////4AAAABdXEAfgAKAAAAEMDh3xza3MJ4XNak/35BYPt4c3EAfgAG///////////////" - + "+/////gAAAAF1cQB+AAoAAAADAQABeA=="); - - private static byte[] rsaPub2 = Base64.decode( - "rO0ABXNyAD5vcmcuYm91bmN5Y2FzdGxlLmpjYWpjZS5wcm92aWRlci5hc3ltbWV0cmljLnJzYS5CQ1JTQVB1YmxpY0tleS" - + "Uiag5b+myEAgACTAAHbW9kdWx1c3QAFkxqYXZhL21hdGgvQmlnSW50ZWdlcjtMAA5wdWJsaWNFeHBvbmVudHEAfgABeHBz" - + "cgAUamF2YS5tYXRoLkJpZ0ludGVnZXKM/J8fqTv7HQMABkkACGJpdENvdW50SQAJYml0TGVuZ3RoSQATZmlyc3ROb256ZXJvQnl0ZU51bUkADGxvd2VzdFNldEJpdEkABnNpZ251bVsACW1hZ25pdHVkZXQAAltCeHIAEGphdmEubGFuZy5OdW1iZXKGrJUdC5TgiwIAAHhw///////////////+/////gAAAAF1cgACW0Ks8xf4BghU4AIAAHhwAAAAIJqU1y+8k0wz3jgpbPO4fYxeQpuJbXQ4TMZBv0H0wz9PeHNxAH4AA////////////////v////4AAAABdXEAfgAHAAAAAwEAAXg="); - - private static BigInteger elGamalY = new BigInteger("89822212135401014750127909969755994242838935150891306006689219384134393835581"); - private static BigInteger elGamalX = new BigInteger("23522982289275336984843296896007818700866293719703239515258104457243931686357"); - private static BigInteger elGamalG = new BigInteger("29672625807664138507782226105202719390719480236799714903174779490259822385963"); - private static BigInteger elGamalP = new BigInteger("98263422916834911205348180460395783697757584103849580149025105739079617780363"); - - private static byte[] elGamalPub = Base64.decode( - "rO0ABXNyADFvcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KQ0VFbEdhbWFsUHVibGljS2V5eOnUVVUsZjQDAAJMAAZ" - + "lbFNwZWN0ADBMb3JnL2JvdW5jeWNhc3RsZS9qY2Uvc3BlYy9FbEdhbWFsUGFyYW1ldGVyU3BlYztMAAF5dAAWTGphdmEvbW" - + "F0aC9CaWdJbnRlZ2VyO3hwc3IAFGphdmEubWF0aC5CaWdJbnRlZ2VyjPyfH6k7+x0DAAZJAAhiaXRDb3VudEkACWJpdExlb" - + "md0aEkAE2ZpcnN0Tm9uemVyb0J5dGVOdW1JAAxsb3dlc3RTZXRCaXRJAAZzaWdudW1bAAltYWduaXR1ZGV0AAJbQnhyABBq" - + "YXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cP///////////////v////4AAAABdXIAAltCrPMX+AYIVOACAAB4cAAAACD" - + "GlZIJNbVQCnj4wiR0o8gGbKtJEWJBllz8NAELXcqwPXhzcQB+AAT///////////////7////+AAAAAXVxAH4ACAAAACDZPy" - + "BetQ1Ed8NUnTfXb+MBhFVK1KRe2LzQP7oVz2Kai3hzcQB+AAT///////////////7////+AAAAAXVxAH4ACAAAACBBmhxth" - + "0FhU4SsG01Wjyi1dlZFZvOy1zFC12XRGO8bK3h4"); - - private static byte[] elGamalPriv = Base64.decode( - "rO0ABXNyADJvcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KQ0VFbEdhbWFsUHJpdmF0ZUtleULhxV+2vMBOAwAETAA" - + "GZWxTcGVjdAAwTG9yZy9ib3VuY3ljYXN0bGUvamNlL3NwZWMvRWxHYW1hbFBhcmFtZXRlclNwZWM7TAAQcGtjczEyQXR0cm" - + "lidXRlc3QAFUxqYXZhL3V0aWwvSGFzaHRhYmxlO0wADnBrY3MxMk9yZGVyaW5ndAASTGphdmEvdXRpbC9WZWN0b3I7TAABe" - + "HQAFkxqYXZhL21hdGgvQmlnSW50ZWdlcjt4cHNyABRqYXZhLm1hdGguQmlnSW50ZWdlcoz8nx+pO/sdAwAGSQAIYml0Q291" - + "bnRJAAliaXRMZW5ndGhJABNmaXJzdE5vbnplcm9CeXRlTnVtSQAMbG93ZXN0U2V0Qml0SQAGc2lnbnVtWwAJbWFnbml0dWR" - + "ldAACW0J4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHD///////////////7////+AAAAAXVyAAJbQqzzF/gGCF" - + "TgAgAAeHAAAAAgNAGJQeYfM6ToYoA3ePFdEe7yh8hKecr+WZA0AwxrtdV4c3EAfgAG///////////////+/////gAAAAF1c" - + "QB+AAoAAAAg2T8gXrUNRHfDVJ0312/jAYRVStSkXti80D+6Fc9imot4c3EAfgAG///////////////+/////gAAAAF1cQB+" - + "AAoAAAAgQZocbYdBYVOErBtNVo8otXZWRWbzstcxQtdl0RjvGyt4eA=="); - - private static BigInteger dhY = new BigInteger("1925747248304483170395506065378568192931506039297732684689153183373019672434"); - private static BigInteger dhX = new BigInteger("3"); - private static BigInteger dhG = new BigInteger("3493483775405590747011712302510626058005717040655777294576367636428413099058"); - private static BigInteger dhP = new BigInteger("106557663805518855012633095511067237673895862256610675920943888960856082029127"); - - private static byte[] dhPub = Base64.decode( - "rO0ABXNyACxvcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KQ0VESFB1YmxpY0tlefz+KCkPI+T8AwACTAAGZGhTcGV" - + "jdAAjTGphdmF4L2NyeXB0by9zcGVjL0RIUGFyYW1ldGVyU3BlYztMAAF5dAAWTGphdmEvbWF0aC9CaWdJbnRlZ2VyO3hwc3" - + "IAFGphdmEubWF0aC5CaWdJbnRlZ2VyjPyfH6k7+x0DAAZJAAhiaXRDb3VudEkACWJpdExlbmd0aEkAE2ZpcnN0Tm9uemVyb" - + "0J5dGVOdW1JAAxsb3dlc3RTZXRCaXRJAAZzaWdudW1bAAltYWduaXR1ZGV0AAJbQnhyABBqYXZhLmxhbmcuTnVtYmVyhqyV" - + "HQuU4IsCAAB4cP///////////////v////4AAAABdXIAAltCrPMX+AYIVOACAAB4cAAAACAEQe8vYXxZPS5oAUy0e0yRYxK" - + "EAO3GjhMWZKNw8flvcnhzcQB+AAT///////////////7////+AAAAAXVxAH4ACAAAACDrlYAb5zOABHPgsK6oIKtMFgPD3v" - + "nbTosOnokaSVsaR3hzcQB+AAT///////////////7////+AAAAAXVxAH4ACAAAACAHuT3jEhOVRGfaKdFOX6J2vDYxiMPQW" - + "ljjL/3Xz85cMnh3BAAAAAB4"); - - private static byte[] dhPriv = Base64.decode( - "rO0ABXNyAC1vcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KQ0VESFByaXZhdGVLZXkEURpYQRlitAMABEwABmRoU3B" - + "lY3QAI0xqYXZheC9jcnlwdG8vc3BlYy9ESFBhcmFtZXRlclNwZWM7TAAQcGtjczEyQXR0cmlidXRlc3QAFUxqYXZhL3V0aW" - + "wvSGFzaHRhYmxlO0wADnBrY3MxMk9yZGVyaW5ndAASTGphdmEvdXRpbC9WZWN0b3I7TAABeHQAFkxqYXZhL21hdGgvQmlnS" - + "W50ZWdlcjt4cHNyABRqYXZhLm1hdGguQmlnSW50ZWdlcoz8nx+pO/sdAwAGSQAIYml0Q291bnRJAAliaXRMZW5ndGhJABNm" - + "aXJzdE5vbnplcm9CeXRlTnVtSQAMbG93ZXN0U2V0Qml0SQAGc2lnbnVtWwAJbWFnbml0dWRldAACW0J4cgAQamF2YS5sYW5" - + "nLk51bWJlcoaslR0LlOCLAgAAeHD///////////////7////+AAAAAXVyAAJbQqzzF/gGCFTgAgAAeHAAAAABA3hzcQB+AA" - + "b///////////////7////+AAAAAXVxAH4ACgAAACDrlYAb5zOABHPgsK6oIKtMFgPD3vnbTosOnokaSVsaR3hzcQB+AAb//" - + "/////////////7////+AAAAAXVxAH4ACgAAACAHuT3jEhOVRGfaKdFOX6J2vDYxiMPQWljjL/3Xz85cMnh3BAAAAAB4"); - - private static BigInteger dsaY = new BigInteger("6189794363048388077684611193598066807847399153242870209962581468350882042922904596556915269714052441467859854436813271130403014368908908961326314287317209"); - private static BigInteger dsaX = new BigInteger("45673695048287886591258561084679393738177012644"); - private static BigInteger dsaG = new BigInteger("3245524385217980657302535456606469153364622623109429686740209357408427939040123729832874550911504858612362156241316117434271994372338032643547044203024422"); - private static BigInteger dsaP = new BigInteger("8836853285188714261909188099204635517862922237850722644742752953058083563923137941667883080809922365262319540202714582925718707421743492259382127680083261"); - - private static byte[] dsaPub = Base64.decode( - "rO0ABXNyAC1vcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KREtEU0FQdWJsaWNLZXkYUfY34kLIBwMAAkwAB2RzYVN" - + "wZWN0ACRMamF2YS9zZWN1cml0eS9pbnRlcmZhY2VzL0RTQVBhcmFtcztMAAF5dAAWTGphdmEvbWF0aC9CaWdJbnRlZ2VyO3" - + "hwc3IAFGphdmEubWF0aC5CaWdJbnRlZ2VyjPyfH6k7+x0DAAZJAAhiaXRDb3VudEkACWJpdExlbmd0aEkAE2ZpcnN0Tm9ue" - + "mVyb0J5dGVOdW1JAAxsb3dlc3RTZXRCaXRJAAZzaWdudW1bAAltYWduaXR1ZGV0AAJbQnhyABBqYXZhLmxhbmcuTnVtYmVy" - + "hqyVHQuU4IsCAAB4cP///////////////v////4AAAABdXIAAltCrPMX+AYIVOACAAB4cAAAAEB2LxWpG2UqKz0HcWZwDii" - + "fO0+3sXqWwmnAnHw8HbPRbtJUozr0As4FX7loWxvWyV+CJDse2KwdxISyMmq6hMDZeHNxAH4ABP///////////////v////" - + "4AAAABdXEAfgAIAAAAQKi5o5xNZaCAFFAV6dWnHHjG0TVoA7d34RUNF0GhquH6BH/W3BvW4fy428+NPnCgUvJM9iLBTpuBn" - + "oepupEE1T14c3EAfgAE///////////////+/////gAAAAF1cQB+AAgAAAAU/tVyr5rbnY4WkK7C6NK21c9jn8V4c3EAfgAE" - + "///////////////+/////gAAAAF1cQB+AAgAAABAPffK8RBcfUspb5PsGDyjZf4Tqcmo5UhuaABmUnq8Vqb3P7jc1+LNaTh" - + "mUJSnjWQ4+kyCeeJgPH9d3iBd5blQJnh4"); - - private static byte[] dsaPriv = Base64.decode( - "rO0ABXNyAC5vcmcuYm91bmN5Y2FzdGxlLmpjZS5wcm92aWRlci5KREtEU0FQcml2YXRlS2V5vxcJOSU9rboDAANMAAthdHR" - + "yQ2FycmllcnQAPUxvcmcvYm91bmN5Y2FzdGxlL2pjZS9wcm92aWRlci9QS0NTMTJCYWdBdHRyaWJ1dGVDYXJyaWVySW1wbD" - + "tMAAdkc2FTcGVjdAAkTGphdmEvc2VjdXJpdHkvaW50ZXJmYWNlcy9EU0FQYXJhbXM7TAABeHQAFkxqYXZhL21hdGgvQmlnS" - + "W50ZWdlcjt4cHNyABRqYXZhLm1hdGguQmlnSW50ZWdlcoz8nx+pO/sdAwAGSQAIYml0Q291bnRJAAliaXRMZW5ndGhJABNm" - + "aXJzdE5vbnplcm9CeXRlTnVtSQAMbG93ZXN0U2V0Qml0SQAGc2lnbnVtWwAJbWFnbml0dWRldAACW0J4cgAQamF2YS5sYW5" - + "nLk51bWJlcoaslR0LlOCLAgAAeHD///////////////7////+AAAAAXVyAAJbQqzzF/gGCFTgAgAAeHAAAAAUCAAUTkau3a" - + "uChEXbN4isGH4aY6R4c3EAfgAF///////////////+/////gAAAAF1cQB+AAkAAABAqLmjnE1loIAUUBXp1acceMbRNWgDt" - + "3fhFQ0XQaGq4foEf9bcG9bh/Ljbz40+cKBS8kz2IsFOm4Geh6m6kQTVPXhzcQB+AAX///////////////7////+AAAAAXVx" - + "AH4ACQAAABT+1XKvmtudjhaQrsLo0rbVz2OfxXhzcQB+AAX///////////////7////+AAAAAXVxAH4ACQAAAEA998rxEFx" - + "9Sylvk+wYPKNl/hOpyajlSG5oAGZSerxWpvc/uNzX4s1pOGZQlKeNZDj6TIJ54mA8f13eIF3luVAmeHNyABNqYXZhLnV0aW" - + "wuSGFzaHRhYmxlE7sPJSFK5LgDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAACHcIAAAACwAAAAB4c3IAE" - + "GphdmEudXRpbC5WZWN0b3LZl31bgDuvAQMAA0kAEWNhcGFjaXR5SW5jcmVtZW50SQAMZWxlbWVudENvdW50WwALZWxlbWVu" - + "dERhdGF0ABNbTGphdmEvbGFuZy9PYmplY3Q7eHAAAAAAAAAAAHVyABNbTGphdmEubGFuZy5PYmplY3Q7kM5YnxBzKWwCAAB" - + "4cAAAAApwcHBwcHBwcHBweHg="); - - public String getName() - { - return "Serialisation"; - } - - public void performTest() throws Exception - { - rsaTest(); - elGamalTest(); - dhTest(); - dsaTest(); - } - - private void rsaTest() - throws IOException, ClassNotFoundException - { - RSAPublicKey pub = (RSAPublicKey)readObject(rsaPub); - - if (!mod.equals(pub.getModulus())) - { - fail("public key modulus mismatch"); - } - if (!pubExp.equals(pub.getPublicExponent())) - { - fail("public key exponent mismatch"); - } - - RSAPublicKey pub2 = (RSAPublicKey)readObject(rsaPub2); - - if (!mod.equals(pub2.getModulus())) - { - fail("public key 2 modulus mismatch"); - } - if (!pubExp.equals(pub2.getPublicExponent())) - { - fail("public key 2 exponent mismatch"); - } - - RSAPrivateCrtKey priv = (RSAPrivateCrtKey)readObject(rsaPriv); - - if (!mod.equals(priv.getModulus())) - { - fail("private key modulus mismatch"); - } - if (!privExp.equals(priv.getPrivateExponent())) - { - fail("private key exponent mismatch"); - } - if (!p.equals(priv.getPrimeP())) - { - fail("private key p mismatch"); - } - if (!q.equals(priv.getPrimeQ())) - { - fail("private key q mismatch"); - } - if (!expP.equals(priv.getPrimeExponentP())) - { - fail("private key p exponent mismatch"); - } - if (!expQ.equals(priv.getPrimeExponentQ())) - { - fail("private key q exponent mismatch"); - } - if (!crtExp.equals(priv.getCrtCoefficient())) - { - fail("private key crt exponent mismatch"); - } - } - - private void elGamalTest() - throws IOException, ClassNotFoundException - { - ElGamalPublicKey pub = (ElGamalPublicKey)readObject(elGamalPub); - - if (!elGamalY.equals(pub.getY())) - { - fail("public key y mismatch"); - } - if (!elGamalG.equals(pub.getParameters().getG())) - { - fail("public key g mismatch"); - } - if (!elGamalP.equals(pub.getParameters().getP())) - { - fail("public key p mismatch"); - } - - ElGamalPrivateKey priv = (ElGamalPrivateKey)readObject(elGamalPriv); - - if (!elGamalX.equals(priv.getX())) - { - fail("private key x mismatch"); - } - if (!elGamalG.equals(priv.getParameters().getG())) - { - fail("private key g mismatch"); - } - if (!elGamalP.equals(priv.getParameters().getP())) - { - fail("private key p mismatch"); - } - } - - private void dhTest() - throws IOException, ClassNotFoundException - { - DHPublicKey pub = (DHPublicKey)readObject(dhPub); - - if (!dhY.equals(pub.getY())) - { - fail("dh public key y mismatch"); - } - if (!dhG.equals(pub.getParams().getG())) - { - fail("dh public key g mismatch"); - } - if (!dhP.equals(pub.getParams().getP())) - { - fail("dh public key p mismatch"); - } - if (0 != pub.getParams().getL()) - { - fail("dh public key l mismatch"); - } - - DHPrivateKey priv = (DHPrivateKey)readObject(dhPriv); - - if (!dhX.equals(priv.getX())) - { - fail("dh private key x mismatch"); - } - if (!dhG.equals(priv.getParams().getG())) - { - fail("dh private key g mismatch"); - } - if (!dhP.equals(priv.getParams().getP())) - { - fail("dh private key p mismatch"); - } - if (0 != priv.getParams().getL()) - { - fail("dh private key l mismatch"); - } - } - - private void dsaTest() - throws IOException, ClassNotFoundException - { - DSAPublicKey pub = (DSAPublicKey)readObject(dsaPub); - - if (!dsaY.equals(pub.getY())) - { - fail("dsa public key y mismatch"); - } - if (!dsaG.equals(pub.getParams().getG())) - { - fail("dsa public key g mismatch"); - } - if (!dsaP.equals(pub.getParams().getP())) - { - fail("dsa public key p mismatch"); - } - - DSAPrivateKey priv = (DSAPrivateKey)readObject(dsaPriv); - - if (!dsaX.equals(priv.getX())) - { - fail("dsa private key x mismatch"); - } - if (!dsaG.equals(priv.getParams().getG())) - { - fail("dsa private key g mismatch"); - } - if (!dsaP.equals(priv.getParams().getP())) - { - fail("dsa private key p mismatch"); - } - } - - private Object readObject(byte[] key) - throws IOException, ClassNotFoundException - { - ObjectInputStream oIn = new ObjectInputStream(new ByteArrayInputStream(key)); - - return oIn.readObject(); - } - - public static void main( - String[] args) - { - runTest(new SerialisationTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/Shacal2Test.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/Shacal2Test.java deleted file mode 100644 index 4b4954a3..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/Shacal2Test.java +++ /dev/null @@ -1,154 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.security.Key; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.CipherInputStream; -import javax.crypto.CipherOutputStream; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -/** - * basic test class for the Shacal2 cipher, vector from NESSIE (Test vectors set 8, vector# 0) - */ -public class Shacal2Test - extends SimpleTest -{ - static String[] cipherTests = - { - "512", - "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F", - "98BCC10405AB0BFC686BECECAAD01AC19B452511BCEB9CB094F905C51CA45430", - "00112233445566778899AABBCCDDEEFF102132435465768798A9BACBDCEDFE0F", - - }; - - public String getName() - { - return "Shacal2"; - } - - public void testECB( - int strength, - byte[] keyBytes, - byte[] input, - byte[] output) - throws Exception - { - Key key; - Cipher in, out; - CipherInputStream cIn; - CipherOutputStream cOut; - ByteArrayInputStream bIn; - ByteArrayOutputStream bOut; - - key = new SecretKeySpec(keyBytes, "Shacal2"); - - in = Cipher.getInstance("Shacal2/ECB/NoPadding", "BC"); - out = Cipher.getInstance("Shacal2/ECB/NoPadding", "BC"); - try - { - out.init(Cipher.ENCRYPT_MODE, key); - } - catch (Exception e) - { - fail("Shacal2 failed initialisation - " + e.toString(), e); - } - - try - { - in.init(Cipher.DECRYPT_MODE, key); - } - catch (Exception e) - { - fail("Shacal2 failed initialisation - " + e.toString(), e); - } - - // - // encryption pass - // - bOut = new ByteArrayOutputStream(); - - cOut = new CipherOutputStream(bOut, out); - - try - { - for (int i = 0; i != input.length / 2; i++) - { - cOut.write(input[i]); - } - cOut.write(input, input.length / 2, input.length - input.length / 2); - cOut.close(); - } - catch (IOException e) - { - fail("Shacal2 failed encryption - " + e.toString(), e); - } - - byte[] bytes; - - bytes = bOut.toByteArray(); - - if (!areEqual(bytes, output)) - { - fail("Shacal2 failed encryption - expected " + new String(Hex.encode(output)) + " got " + new String(Hex.encode(bytes))); - } - - // - // decryption pass - // - bIn = new ByteArrayInputStream(bytes); - - cIn = new CipherInputStream(bIn, in); - - try - { - DataInputStream dIn = new DataInputStream(cIn); - - bytes = new byte[input.length]; - - for (int i = 0; i != input.length / 2; i++) - { - bytes[i] = (byte)dIn.read(); - } - dIn.readFully(bytes, input.length / 2, bytes.length - input.length / 2); - } - catch (Exception e) - { - fail("Shacal2 failed encryption - " + e.toString(), e); - } - - if (!areEqual(bytes, input)) - { - fail("Shacal2 failed decryption - expected " + new String(Hex.encode(input)) + " got " + new String(Hex.encode(bytes))); - } - } - - public void performTest() - throws Exception - { - for (int i = 0; i != cipherTests.length; i += 4) - { - testECB(Integer.parseInt(cipherTests[i]), - Hex.decode(cipherTests[i + 1]), - Hex.decode(cipherTests[i + 2]), - Hex.decode(cipherTests[i + 3])); - } - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new Shacal2Test()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SigNameTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SigNameTest.java deleted file mode 100644 index 0ed90c35..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SigNameTest.java +++ /dev/null @@ -1,83 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.Security; -import java.security.Signature; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTest; - -public class SigNameTest - extends SimpleTest -{ - private void checkName(String name) - throws NoSuchProviderException, NoSuchAlgorithmException - { - if (!name.equals(Signature.getInstance(name, "BC").getAlgorithm())) - { - fail("name misatch on " + name); - } - } - - public void performTest() - throws Exception - { - checkName("SHA1withRSA"); - checkName("SHA224withRSA"); - checkName("SHA256withRSA"); - checkName("SHA384withRSA"); - checkName("SHA512withRSA"); - checkName("MD2withRSA"); - checkName("MD4withRSA"); - checkName("MD5withRSA"); - checkName("RIPEMD160withRSA"); - checkName("RIPEMD128withRSA"); - checkName("RIPEMD256withRSA"); - - checkName("SHA1withDSA"); - checkName("SHA224withDSA"); - checkName("SHA256withDSA"); - checkName("SHA384withDSA"); - checkName("SHA512withDSA"); - checkName("NONEwithDSA"); - checkName("SHA1withECDSA"); - checkName("SHA224withECDSA"); - checkName("SHA256withECDSA"); - checkName("SHA384withECDSA"); - checkName("SHA512withECDSA"); - checkName("RIPEMD160withECDSA"); - checkName("SHA1withECNR"); - checkName("SHA224withECNR"); - checkName("SHA256withECNR"); - checkName("SHA384withECNR"); - checkName("SHA512withECNR"); - - checkName("SHA1withRSAandMGF1"); - checkName("SHA1withRSAandMGF1"); - checkName("SHA224withRSAandMGF1"); - checkName("SHA256withRSAandMGF1"); - checkName("SHA384withRSAandMGF1"); - checkName("SHA512withRSAandMGF1"); - - checkName("GOST3411withGOST3410"); - checkName("GOST3411withECGOST3410"); - - checkName("SHA1withRSA/ISO9796-2"); - checkName("MD5withRSA/ISO9796-2"); - checkName("RIPEMD160withRSA/ISO9796-2"); - } - - public String getName() - { - return "SigNameTest"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new SigNameTest()); - } -}
\ No newline at end of file diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java deleted file mode 100644 index 1863ca69..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SigTest.java +++ /dev/null @@ -1,373 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.KeyFactory; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.MessageDigest; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; -import java.security.Signature; -import java.security.spec.RSAPrivateKeySpec; -import java.security.spec.RSAPublicKeySpec; - -import javax.crypto.Cipher; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class SigTest - extends SimpleTest -{ - /** - * signature with a "forged signature" (sig block not at end of plain text) - */ - private void testBadSig(PrivateKey priv, PublicKey pub) throws Exception - { - MessageDigest sha1 = MessageDigest.getInstance("SHA1", "BC"); - Cipher signer = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC"); - - signer.init(Cipher.ENCRYPT_MODE, priv); - - byte[] block = new byte[signer.getBlockSize()]; - - sha1.update((byte)0); - - byte[] sigHeader = Hex.decode("3021300906052b0e03021a05000414"); - System.arraycopy(sigHeader, 0, block, 0, sigHeader.length); - - byte[] dig = sha1.digest(); - - System.arraycopy(dig, 0, block, sigHeader.length, dig.length); - - System.arraycopy(sigHeader, 0, block, - sigHeader.length + dig.length, sigHeader.length); - - byte[] sig = signer.doFinal(block); - - Signature verifier = Signature.getInstance("SHA1WithRSA", "BC"); - - verifier.initVerify(pub); - - verifier.update((byte)0); - - if (verifier.verify(sig)) - { - fail("bad signature passed"); - } - } - - public void performTest() - throws Exception - { - Signature sig = Signature.getInstance("SHA1WithRSAEncryption", "BC"); - KeyPairGenerator fact; - KeyPair keyPair; - byte[] data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - - fact = KeyPairGenerator.getInstance("RSA", "BC"); - - fact.initialize(768, new SecureRandom()); - - keyPair = fact.generateKeyPair(); - - PrivateKey signingKey = keyPair.getPrivate(); - PublicKey verifyKey = keyPair.getPublic(); - - testBadSig(signingKey, verifyKey); - - sig.initSign(signingKey); - - sig.update(data); - - byte[] sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("SHA1 verification failed"); - } - - sig = Signature.getInstance("MD2WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("MD2 verification failed"); - } - - sig = Signature.getInstance("MD5WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("MD5 verification failed"); - } - - sig = Signature.getInstance("RIPEMD160WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("RIPEMD160 verification failed"); - } - - // - // RIPEMD-128 - // - sig = Signature.getInstance("RIPEMD128WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("RIPEMD128 verification failed"); - } - - // - // RIPEMD256 - // - sig = Signature.getInstance("RIPEMD256WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("RIPEMD256 verification failed"); - } - - // - // SHA-224 - // - sig = Signature.getInstance("SHA224WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("SHA224 verification failed"); - } - - // - // SHA-256 - // - sig = Signature.getInstance("SHA256WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("SHA256 verification failed"); - } - - // - // SHA-384 - // - sig = Signature.getInstance("SHA384WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("SHA384 verification failed"); - } - - // - // SHA-512 - // - sig = Signature.getInstance("SHA512WithRSAEncryption", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("SHA512 verification failed"); - } - - // - // ISO Sigs. - // - sig = Signature.getInstance("MD5WithRSA/ISO9796-2", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("MD5/ISO verification failed"); - } - - sig = Signature.getInstance("SHA1WithRSA/ISO9796-2", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("SHA1/ISO verification failed"); - } - - sig = Signature.getInstance("RIPEMD160WithRSA/ISO9796-2", "BC"); - - sig.initSign(signingKey); - - sig.update(data); - - sigBytes = sig.sign(); - - sig.initVerify(verifyKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("RIPEMD160/ISO verification failed"); - } - - // - // standard vector test - B.1.3 RIPEMD160, implicit. - // - BigInteger mod = new BigInteger("ffffffff78f6c55506c59785e871211ee120b0b5dd644aa796d82413a47b24573f1be5745b5cd9950f6b389b52350d4e01e90009669a8720bf265a2865994190a661dea3c7828e2e7ca1b19651adc2d5", 16); - BigInteger pub = new BigInteger("03", 16); - BigInteger pri = new BigInteger("2aaaaaaa942920e38120ee965168302fd0301d73a4e60c7143ceb0adf0bf30b9352f50e8b9e4ceedd65343b2179005b2f099915e4b0c37e41314bb0821ad8330d23cba7f589e0f129b04c46b67dfce9d", 16); - - KeyFactory f = KeyFactory.getInstance("RSA", "BC"); - - PrivateKey privKey = f.generatePrivate(new RSAPrivateKeySpec(mod, pri)); - PublicKey pubKey = f.generatePublic(new RSAPublicKeySpec(mod, pub)); - byte[] testSig = Hex.decode("5cf9a01854dbacaec83aae8efc563d74538192e95466babacd361d7c86000fe42dcb4581e48e4feb862d04698da9203b1803b262105104d510b365ee9c660857ba1c001aa57abfd1c8de92e47c275cae"); - - data = Hex.decode("fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210"); - - sig = Signature.getInstance("RIPEMD160WithRSA/ISO9796-2", "BC"); - - sig.initSign(privKey); - - sig.update(data); - - sigBytes = sig.sign(); - - if (!Arrays.areEqual(testSig, sigBytes)) - { - fail("SigTest: failed ISO9796-2 generation Test"); - } - - sig.initVerify(pubKey); - - sig.update(data); - - if (!sig.verify(sigBytes)) - { - fail("RIPEMD160/ISO verification failed"); - } - } - - public String getName() - { - return "SigTest"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new SigTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SipHashTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SipHashTest.java deleted file mode 100644 index 59861410..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SipHashTest.java +++ /dev/null @@ -1,129 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.Security; - -import javax.crypto.KeyGenerator; -import javax.crypto.Mac; -import javax.crypto.SecretKey; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class SipHashTest - extends SimpleTest -{ - public void performTest() - throws Exception - { - testMac(); - testKeyGenerator(); - } - - private void testKeyGenerator() - throws NoSuchAlgorithmException, - NoSuchProviderException - { - testKeyGen("SipHash"); - testKeyGen("SipHash-2-4"); - testKeyGen("SipHash-4-8"); - } - - private void testKeyGen(String algorithm) - throws NoSuchAlgorithmException, - NoSuchProviderException - { - KeyGenerator kg = KeyGenerator.getInstance(algorithm, "BC"); - - SecretKey key = kg.generateKey(); - - if (!key.getAlgorithm().equalsIgnoreCase("SipHash")) - { - fail("Unexpected algorithm name in key", "SipHash", key.getAlgorithm()); - } - if (key.getEncoded().length != 16) - { - fail("Expected 128 bit key"); - } - } - - private void testMac() - throws NoSuchAlgorithmException, - NoSuchProviderException, - InvalidKeyException - { - byte[] key = Hex.decode("000102030405060708090a0b0c0d0e0f"); - byte[] input = Hex.decode("000102030405060708090a0b0c0d0e"); - - byte[] expected = Hex.decode("e545be4961ca29a1"); - - Mac mac = Mac.getInstance("SipHash", "BC"); - - mac.init(new SecretKeySpec(key, "SipHash")); - - mac.update(input, 0, input.length); - - byte[] result = mac.doFinal(); - - if (!Arrays.areEqual(expected, result)) - { - fail("Result does not match expected value for doFinal()"); - } - - mac.init(new SecretKeySpec(key, "SipHash-2-4")); - - mac.update(input, 0, input.length); - - result = mac.doFinal(); - if (!Arrays.areEqual(expected, result)) - { - fail("Result does not match expected value for second doFinal()"); - } - - mac = Mac.getInstance("SipHash-2-4", "BC"); - - mac.init(new SecretKeySpec(key, "SipHash-2-4")); - - mac.update(input, 0, input.length); - - result = mac.doFinal(); - if (!Arrays.areEqual(expected, result)) - { - fail("Result does not match expected value for alias"); - } - - // SipHash 4-8 - expected = Hex.decode("e0a6a97dd589d383"); - - mac = Mac.getInstance("SipHash-4-8", "BC"); - - mac.init(new SecretKeySpec(key, "SipHash")); - - mac.update(input, 0, input.length); - - result = mac.doFinal(); - - if (!Arrays.areEqual(expected, result)) - { - fail("Result does not match expected value for SipHash 4-8"); - } - } - - public String getName() - { - return "SipHash"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new SipHashTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SkeinTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SkeinTest.java deleted file mode 100644 index 5bc5387d..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SkeinTest.java +++ /dev/null @@ -1,316 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.MessageDigest; -import java.security.Security; - -import javax.crypto.KeyGenerator; -import javax.crypto.Mac; -import javax.crypto.SecretKey; -import javax.crypto.spec.SecretKeySpec; - -import org.bouncycastle.jcajce.spec.SkeinParameterSpec; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Hex; -import org.bouncycastle.util.test.SimpleTest; - -public class SkeinTest - extends SimpleTest -{ - final static String provider = "BC"; - - static private byte[] nullMsg = new byte[0]; - - static private String[][] nullVectors = - { - { "Skein-256-128", "07e8ff2191c5052e1a25914c7c213078" }, - { "Skein-256-160", "ff800bed6d2044ee9d604a674e3fda50d9b24a72" }, - { "Skein-256-224", "0fadf1fa39e3837a95b3660b4184d9c2f3cfc94b55d8e7a083278bf8" }, - { "Skein-256-256", "c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba" }, - { "Skein-512-128", "7c9aff5c3738e3faadc7a5265768def1" }, - { "Skein-512-160", "49daf1ccebb3544bc93cb5019ba91b0eea8876ee" }, - { "Skein-512-224", "1541ae9fc3ebe24eb758ccb1fd60c2c31a9ebfe65b220086e7819e25" }, - { "Skein-512-256", "39ccc4554a8b31853b9de7a1fe638a24cce6b35a55f2431009e18780335d2621" }, - { "Skein-512-384", "dd5aaf4589dc227bd1eb7bc68771f5baeaa3586ef6c7680167a023ec8ce26980f06c4082c488b4ac9ef313f8cbe70808" }, - { "Skein-512-512", "bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a" }, - { "Skein-1024-384", "1fdb081963b960e89eaa11b87dda55e8a55a3e1066b30e38d8ae2a45242f7dadfaf06d80ca8a73cd8242ce5eab84c164" }, - { "Skein-1024-512", "e2943eb0bc0efabd49503a76edf7cfcf072db25bad94ed44fe537284163f3119c47ac6f78699b4272255966e0aba65c75a0a64bd23df6996d1bc3174afd9fa8b" }, - { "Skein-1024-1024", "0fff9563bb3279289227ac77d319b6fff8d7e9f09da1247b72a0a265cd6d2a62645ad547ed8193db48cff847c06494a03f55666d3b47eb4c20456c9373c86297d630d5578ebd34cb40991578f9f52b18003efa35d3da6553ff35db91b81ab890bec1b189b7f52cb2a783ebb7d823d725b0b4a71f6824e88f68f982eefc6d19c6" }, - }; - - static private byte[] shortMsg = Hex.decode("fbd17c26b61a82e12e125f0d459b96c91ab4837dff22b39b78439430cdfc5dc8" - + "78bb393a1a5f79bef30995a85a12923339ba8ab7d8fc6dc5fec6f4ed22c122bb" - + "e7eb61981892966de5cef576f71fc7a80d14dab2d0c03940b95b9fb3a727c66a" - + "6e1ff0dc311b9aa21a3054484802154c1826c2a27a0914152aeb76f1168d4410"); - - static private String[][] shortVectors = - { - { "Skein-256-128", "9703382ea27dc2913e9d02cd976c582f" }, - { "Skein-256-160", "0cd491b7715704c3a15a45a1ca8d93f8f646d3a1" }, - { "Skein-256-224", "afd1e2d0f5b6cd4e1f8b3935fa2497d27ee97e72060adac099543487" }, - { "Skein-256-256", "4de6fe2bfdaa3717a4261030ef0e044ced9225d066354610842a24a3eafd1dcf" }, - { "Skein-512-128", "c901b1c04af3da4dce05d7975c419224" }, - { "Skein-512-160", "ef03079d61b57c6047e15fa2b35b46fa24279539" }, - { "Skein-512-224", "d9e3219b214e15246a2038f76a573e018ef69b385b3bd0576b558231" }, - { "Skein-512-256", "809dd3f763a11af90912bbb92bc0d94361cbadab10142992000c88b4ceb88648" }, - { "Skein-512-384", "825f5cbd5da8807a7b4d3e7bd9cd089ca3a256bcc064cd73a9355bf3ae67f2bf93ac7074b3b19907a0665ba3a878b262" }, - { "Skein-512-512", "1a0d5abf4432e7c612d658f8dcfa35b0d1ab68b8d6bd4dd115c23cc57b5c5bcdde9bff0ece4208596e499f211bc07594d0cb6f3c12b0e110174b2a9b4b2cb6a9" }, - { "Skein-1024-384", "9c3d0648c11f31c18395d5e6c8ebd73f43d189843fc45235e2c35e345e12d62bc21a41f65896ddc6a04969654c2e2ce9" }, - { "Skein-1024-512", "5d0416f49c2d08dfd40a1446169dc6a1d516e23b8b853be4933513051de8d5c26baccffb08d3b16516ba3c6ccf3e9a6c78fff6ef955f2dbc56e1459a7cdba9a5" }, - { "Skein-1024-1024", "96ca81f586c825d0360aef5acaec49ad55289e1797072eee198b64f349ce65b6e6ed804fe38f05135fe769cc56240ddda5098f620865ce4a4278c77fa2ec6bc31c0f354ca78c7ca81665bfcc5dc54258c3b8310ed421d9157f36c093814d9b25103d83e0ddd89c52d0050e13a64c6140e6388431961685734b1f138fe2243086" }, - }; - - static private String[][] shortMacVectors = - { - { "Skein-Mac-256-128", "738f8b23541d50f691ab60af664c1583" }, - { "Skein-Mac-256-160", "fe07fe50f99b7683bc16980041d8c045857f1189" }, - { "Skein-Mac-256-224", "0bc19b185f5bfe50f0dba7ab49cd8ca9440260edd5a392d4bdcd2216" }, - { "Skein-Mac-256-256", "9837ba53d23afcdabd9fcd614ce9e51c0ebecec7a210df4d3724ed591f026ef1" }, - { "Skein-Mac-512-128", "6d34f46f2033947da7a9dfb068f4102d" }, - { "Skein-Mac-512-160", "83cb2effecaa60674c2f9fb2fb6771a9899708ba" }, - { "Skein-Mac-512-224", "e5f83c032875451f31977cd649c866708cb283a509e99cdfd4d995c5" }, - { "Skein-Mac-512-256", "ed5507ec551ec944c6ed531990c32907eca885dd3af3d50dd09f1dbef422bb11" }, - { "Skein-Mac-512-384", "b8f84a212723b92a591d6dc145c1655c70df710e9f3365064abdf79e9288dced2f0f895d81f465c811f1207b43b8cfce" }, - { "Skein-Mac-512-512", "d13ba582467096a0f862114d97baa218512f39c82c984aa29deee724950d7f0929f726173dd42bc35566b0dbfbf5d2a1552ba6f132de301846714215b64e7f82" }, - { "Skein-Mac-1024-384", "490dbbd049403e602ee3535181a70ee2eb5ade6d83b519953dd0d93c45729f098b679efcd64b5e3f03cd2fa9f1e70d69" }, - { "Skein-Mac-1024-512", "ce7f1052fa486309d73058d1d4986f886d966a849c72d196bb2b97fc9fb0b1e69f43a521ebd979f5a5581bd12a0dbd0d1ee27af0929881f1d35c875cc0542ecf" }, - { "Skein-Mac-1024-1024", "60cd8c755b331bcefe97be5a9fe6f63146d12520ca7b20dbc5c5370dae2ff9815c95fab564329a01eced76f0ecb1944ad52a74e89fa1b6cdcdcee4c71c2c18909c4d1324d279fac5ca2280eea0fa70521cf4ea8c616a3ac6082c2244bec5c1ab3a173faf29d84bec7fb852e278ed57785535c979b33b81465c437cd998c04b95" }, - }; - - static private String[][] shortHMacVectors = - { - { "HMAC-Skein-256-128", "926a445d5218605286dfe0542a437012" }, - { "HMAC-Skein-256-160", "5ebc30295e4562a879f94db531ada465073b8bb7" }, - { "HMAC-Skein-256-224", "a05b3cfc6b86fda7f5dcf0afbb707dc745fa55279a3f80e2c9977ff1" }, - { "HMAC-Skein-256-256", "51741f6e8ebf133216ac8e05c7a75a6339351fd2dcc4db04e418521c628a2111" }, - { "HMAC-Skein-512-128", "ad51f8c7b1b347fe52f0f5c71ae9b8eb" }, - { "HMAC-Skein-512-160", "e0d06c2d406f32bb14dbb2129176219b62d4f89f" }, - { "HMAC-Skein-512-224", "e7e5327e2aaa88d0038049e8112db31df223be4c31da24abf03731a8" }, - { "HMAC-Skein-512-256", "30177414f6e35019cacc2e3ae474b25765e6e0e541e16d754c3dad19df763ab0" }, - { "HMAC-Skein-512-384", "7f0ba3c1c642cf09eb03d0e3760fe172f22fb263006b1fba5bdea1bfaf6e971c17e039abb0030d1a40ac94a747732cce" }, - { "HMAC-Skein-512-512", "70d864e7f6cbd446778914a951d1961e646ee17a3da8eae551d29f4fafc540b0457cc9f8064c511b80dc29f8369fb5dc258559542abb5342c4892f22934bf5f1" }, - { "HMAC-Skein-1024-384", "e7d3465b30b5089e24244e747a91f7cb255596b49843466497c07e120c5c2232f51151b185a1e8a5610f041a85cc59ee" }, - { "HMAC-Skein-1024-512", "c428059ae2d17ba13e461384c4a64cb0be694909e7a04e4983a4fc16476d644c7764e0019b33ea2a8719f731a579f4f7015da7ec1bc56a4920071ac41da836fe" }, - { "HMAC-Skein-1024-1024", "3ebd13ec7bf1533c343ac78e1b5146225ce7629787f3997b646139c1b80d6f54cd562b7625419ede8710d76410dfb8617514ca3f7abf17657d2bc96722071adb2a6ecd9795a1ef5e4734b450d588efcbc3220faf53c880e61438bb953e024e48db6a745d2368375ac792be858cd01915e28590d4d6d599be95f6e6ceed7d7d91" }, - }; - - static private byte[] shortMacMessage = Hex.decode("d3090c72167517f7"); - static private byte[] shortMacKey = Hex.decode("cb41f1706cde09651203c2d0efbaddf8"); - - static private byte[] keyIdentifier = "asecretkey".getBytes(); - static private byte[] keyIdentifierVector = Hex.decode("ca9970a83997e1c346c4348b54cfc9ba7e19bfba"); - - public String getName() - { - return "Skein"; - } - - void test(String type, String algorithm, byte[] message, String expected) throws Exception - { - MessageDigest digest = MessageDigest.getInstance(algorithm, provider); - - byte[] result = digest.digest(message); - byte[] result2 = digest.digest(message); - - // test zero results valid - if (!MessageDigest.isEqual(result, Hex.decode(expected))) - { - fail(type + " result not equal for " + algorithm, expected, new String(Hex.encode(result))); - } - - // test one digest the same message with the same instance - if (!MessageDigest.isEqual(result, result2)) - { - fail(type + " result object 1 not equal"); - } - - if (!MessageDigest.isEqual(result, Hex.decode(expected))) - { - fail(type + " result object 1 not equal"); - } - - // test two, single byte updates - for (int i = 0; i < message.length; i++) - { - digest.update(message[i]); - } - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail(type + " result object 2 not equal"); - } - - // test three, two half updates - digest.update(message, 0, message.length / 2); - digest.update(message, message.length / 2, message.length - message.length / 2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail(type + " result object 3 not equal"); - } - - // test four, clone test - digest.update(message, 0, message.length / 2); - MessageDigest d = (MessageDigest)digest.clone(); - digest.update(message, message.length / 2, message.length - message.length / 2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail(type + " result object 4(a) not equal"); - } - - d.update(message, message.length / 2, message.length - message.length / 2); - result2 = d.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail(type + " result object 4(b) not equal"); - } - - // test five, check reset() method - digest.update(message, 0, message.length / 2); - digest.reset(); - digest.update(message, 0, message.length / 2); - digest.update(message, message.length / 2, message.length - message.length / 2); - result2 = digest.digest(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail(type + " result object 5 not equal"); - } - } - - private void testMac(String algorithm, byte[] message, byte[] key, String expected) throws Exception - { - Mac mac = Mac.getInstance(algorithm, provider); - - mac.init(new SecretKeySpec(key, algorithm)); - - byte[] result = mac.doFinal(message); - byte[] result2 = mac.doFinal(message); - - // test zero results valid - if (!MessageDigest.isEqual(result, Hex.decode(expected))) - { - fail("null result not equal for " + algorithm, expected, new String(Hex.encode(result))); - } - - // test one digest the same message with the same instance - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 1 not equal"); - } - - if (!MessageDigest.isEqual(result, Hex.decode(expected))) - { - fail("Result object 1 not equal"); - } - - // test two, single byte updates - for (int i = 0; i < message.length; i++) - { - mac.update(message[i]); - } - result2 = mac.doFinal(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 2 not equal"); - } - - // test three, two half updates - mac.update(message, 0, message.length / 2); - mac.update(message, message.length / 2, message.length - message.length / 2); - result2 = mac.doFinal(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 3 not equal"); - } - - // test five, check reset() method - mac.update(message, 0, message.length / 2); - mac.reset(); - mac.update(message, 0, message.length / 2); - mac.update(message, message.length / 2, message.length - message.length / 2); - result2 = mac.doFinal(); - - if (!MessageDigest.isEqual(result, result2)) - { - fail("Result object 5 not equal"); - } - - // test six, check KeyGenerator - KeyGenerator generator = KeyGenerator.getInstance(algorithm, provider); - - mac = Mac.getInstance(algorithm, provider); - final SecretKey generatedKey = generator.generateKey(); - if (generatedKey.getEncoded().length != mac.getMacLength()) - { - fail("Default mac key length for " + algorithm); - } - mac.init(generatedKey); - mac.update(message); - mac.doFinal(); - } - - private void testParameters() throws Exception - { - Mac mac = Mac.getInstance("Skein-Mac-512-160", provider); - - // test six, init using SkeinParameters - mac.init(new SecretKeySpec(shortMacKey, "Skein-Mac-512-160"), - new SkeinParameterSpec.Builder().setKeyIdentifier(keyIdentifier).build()); - byte[] result = mac.doFinal(shortMacMessage); - - if (!MessageDigest.isEqual(result, keyIdentifierVector)) - { - fail("Mac with key identifier failed.", new String(Hex.encode(keyIdentifierVector)), new String(Hex.encode(result))); - } - } - - private void testMacKeyGenerators(String algorithm) throws Exception - { - KeyGenerator gen = KeyGenerator.getInstance(algorithm); - - int outputSize = Integer.parseInt(algorithm.substring(algorithm.lastIndexOf('-') + 1)); - SecretKey key = gen.generateKey(); - - if (key.getEncoded().length != (outputSize / 8)) { - fail(algorithm + " key length should be equal to output size " + (outputSize) + ", but was " + key.getEncoded().length * 8); - } - } - - public void performTest() throws Exception - { - for (int i = 0; i < nullVectors.length; i++) - { - test("Null message", nullVectors[i][0], nullMsg, nullVectors[i][1]); - } - for (int i = 0; i < shortVectors.length; i++) - { - test("Short message", shortVectors[i][0], shortMsg, shortVectors[i][1]); - } - for (int i = 0; i < shortMacVectors.length; i++) - { - testMac(shortMacVectors[i][0], shortMacMessage, shortMacKey, shortMacVectors[i][1]); - testMacKeyGenerators(shortMacVectors[i][0]); - } - - for (int i = 0; i < shortHMacVectors.length; i++) - { - testMac(shortHMacVectors[i][0], shortMacMessage, shortMacKey, shortHMacVectors[i][1]); - testMacKeyGenerators(shortHMacVectors[i][0]); - } - testParameters(); - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new SkeinTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/SlotTwoTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/SlotTwoTest.java deleted file mode 100644 index 7a2a880e..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/SlotTwoTest.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Key; -import java.security.SecureRandom; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.spec.IvParameterSpec; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTest; - -public class SlotTwoTest - extends SimpleTest -{ - byte[] plainData = "abcdefghijklmnopqrstuvwxyz".getBytes(); - - public String getName() - { - return "SlotTwo"; - } - - public void performTest() - throws Exception - { - Security.removeProvider("BC"); - Security.insertProviderAt(new BouncyCastleProvider(), 2); - - KeyGenerator keyGen = KeyGenerator.getInstance("DESede", "BC"); - - keyGen.init(new SecureRandom()); - - Key key = keyGen.generateKey(); - - testDesEde(key, "ECB", "PKCS7Padding"); - testDesEde(key, "CBC", "PKCS7Padding"); - testDesEde(key, "CTR", "NoPadding"); - testDesEde(key, "CTR", "PKCS7Padding"); - testDesEde(key, "OFB", "PKCS7Padding"); - testDesEde(key, "CFB", "PKCS7Padding"); - - Security.removeProvider("BC"); - Security.addProvider(new BouncyCastleProvider()); - } - - private void testDesEde( - Key key, - String mode, - String padding) - throws Exception - { - Cipher encrypt = Cipher.getInstance("DESede/" + mode + "/" + padding, "BC"); - Cipher decrypt = Cipher.getInstance("DESede/" + mode + "/" + padding); - - if (!decrypt.getProvider().getName().equals("BC")) - { - fail("BC provider not returned for DESede/" + mode + "/" + padding + " got " + decrypt.getProvider().getName()); - } - - encrypt.init(Cipher.ENCRYPT_MODE, key); - - byte[] encryptedBytes = encrypt.doFinal(plainData); - byte[] ivBytes = encrypt.getIV(); - - if (ivBytes != null) - { - IvParameterSpec ivp = new IvParameterSpec(ivBytes); - - decrypt.init(Cipher.DECRYPT_MODE, key, ivp); - } - else - { - decrypt.init(Cipher.DECRYPT_MODE, key); - } - - byte[] plainBytes = decrypt.doFinal(encryptedBytes, 0, encryptedBytes.length); - - if (!areEqual(plainData, plainBytes)) - { - fail("decryption test failed."); - } - } - - public static void main( - String[] args) - { - runTest(new SlotTwoTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/TestUtils.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/TestUtils.java deleted file mode 100644 index 4d57efe0..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/TestUtils.java +++ /dev/null @@ -1,301 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.math.BigInteger; -import java.security.InvalidKeyException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.Principal; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.SignatureException; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateException; -import java.security.cert.CertificateExpiredException; -import java.security.cert.CertificateNotYetValidException; -import java.security.cert.X509CRL; -import java.security.cert.X509Certificate; -import java.util.Date; -import java.util.Set; - -import org.bouncycastle.asn1.x509.BasicConstraints; -import org.bouncycastle.asn1.x509.CRLNumber; -import org.bouncycastle.asn1.x509.CRLReason; -import org.bouncycastle.asn1.x509.KeyUsage; -import org.bouncycastle.asn1.x509.SubjectKeyIdentifier; -import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; -import org.bouncycastle.asn1.x509.X509Extensions; -import org.bouncycastle.crypto.Digest; -import org.bouncycastle.crypto.digests.SHA1Digest; -import org.bouncycastle.jce.PrincipalUtil; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.x509.X509V1CertificateGenerator; -import org.bouncycastle.x509.X509V2CRLGenerator; -import org.bouncycastle.x509.X509V3CertificateGenerator; -import org.bouncycastle.x509.extension.AuthorityKeyIdentifierStructure; - -/** - * Test Utils - */ -class TestUtils -{ - /** - * Create a random 1024 bit RSA key pair - */ - public static KeyPair generateRSAKeyPair() - throws Exception - { - KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA", "BC"); - - kpGen.initialize(1024, new SecureRandom()); - - return kpGen.generateKeyPair(); - } - - public static X509Certificate generateRootCert(KeyPair pair) - throws Exception - { - X509V1CertificateGenerator certGen = new X509V1CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(new X509Principal("CN=Test CA Certificate")); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000)); - certGen.setSubjectDN(new X509Principal("CN=Test CA Certificate")); - certGen.setPublicKey(pair.getPublic()); - certGen.setSignatureAlgorithm("SHA256WithRSAEncryption"); - - return certGen.generate(pair.getPrivate(), "BC"); - } - - public static X509Certificate generateIntermediateCert(PublicKey intKey, PrivateKey caKey, X509Certificate caCert) - throws Exception - { - X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(PrincipalUtil.getSubjectX509Principal(caCert)); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000)); - certGen.setSubjectDN(new X509Principal("CN=Test Intermediate Certificate")); - certGen.setPublicKey(intKey); - certGen.setSignatureAlgorithm("SHA256WithRSAEncryption"); - - certGen.addExtension(X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure(caCert)); - certGen.addExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifier(getDigest(SubjectPublicKeyInfo.getInstance(intKey.getEncoded())))); - certGen.addExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(0)); - certGen.addExtension(X509Extensions.KeyUsage, true, new KeyUsage(KeyUsage.digitalSignature | KeyUsage.keyCertSign | KeyUsage.cRLSign)); - - return certGen.generate(caKey, "BC"); - } - - public static X509Certificate generateEndEntityCert(PublicKey entityKey, PrivateKey caKey, X509Certificate caCert) - throws Exception - { - X509V3CertificateGenerator certGen = new X509V3CertificateGenerator(); - - certGen.setSerialNumber(BigInteger.valueOf(1)); - certGen.setIssuerDN(PrincipalUtil.getSubjectX509Principal(caCert)); - certGen.setNotBefore(new Date(System.currentTimeMillis() - 50000)); - certGen.setNotAfter(new Date(System.currentTimeMillis() + 50000)); - certGen.setSubjectDN(new X509Principal("CN=Test End Certificate")); - certGen.setPublicKey(entityKey); - certGen.setSignatureAlgorithm("SHA256WithRSAEncryption"); - - certGen.addExtension(X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure(caCert)); - certGen.addExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifier(getDigest(SubjectPublicKeyInfo.getInstance(entityKey.getEncoded())))); - certGen.addExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(false)); - certGen.addExtension(X509Extensions.KeyUsage, true, new KeyUsage(KeyUsage.digitalSignature | KeyUsage.keyEncipherment)); - - return certGen.generate(caKey, "BC"); - } - - public static X509CRL createCRL( - X509Certificate caCert, - PrivateKey caKey, - BigInteger serialNumber) - throws Exception - { - X509V2CRLGenerator crlGen = new X509V2CRLGenerator(); - Date now = new Date(); - BigInteger revokedSerialNumber = BigInteger.valueOf(2); - - crlGen.setIssuerDN(PrincipalUtil.getSubjectX509Principal(caCert)); - - crlGen.setThisUpdate(now); - crlGen.setNextUpdate(new Date(now.getTime() + 100000)); - crlGen.setSignatureAlgorithm("SHA256WithRSAEncryption"); - - crlGen.addCRLEntry(serialNumber, now, CRLReason.privilegeWithdrawn); - - crlGen.addExtension(X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure(caCert)); - crlGen.addExtension(X509Extensions.CRLNumber, false, new CRLNumber(BigInteger.valueOf(1))); - - return crlGen.generate(caKey, "BC"); - } - - public static X509Certificate createExceptionCertificate(boolean exceptionOnEncode) - { - return new ExceptionCertificate(exceptionOnEncode); - } - - private static class ExceptionCertificate - extends X509Certificate - { - private boolean _exceptionOnEncode; - - public ExceptionCertificate(boolean exceptionOnEncode) - { - _exceptionOnEncode = exceptionOnEncode; - } - - public void checkValidity() throws CertificateExpiredException, CertificateNotYetValidException - { - throw new CertificateNotYetValidException(); - } - - public void checkValidity(Date date) throws CertificateExpiredException, CertificateNotYetValidException - { - throw new CertificateExpiredException(); - } - - public int getVersion() - { - return 0; - } - - public BigInteger getSerialNumber() - { - return null; - } - - public Principal getIssuerDN() - { - return null; - } - - public Principal getSubjectDN() - { - return null; - } - - public Date getNotBefore() - { - return null; - } - - public Date getNotAfter() - { - return null; - } - - public byte[] getTBSCertificate() throws CertificateEncodingException - { - throw new CertificateEncodingException(); - } - - public byte[] getSignature() - { - return new byte[0]; - } - - public String getSigAlgName() - { - return null; - } - - public String getSigAlgOID() - { - return null; - } - - public byte[] getSigAlgParams() - { - return new byte[0]; - } - - public boolean[] getIssuerUniqueID() - { - return new boolean[0]; - } - - public boolean[] getSubjectUniqueID() - { - return new boolean[0]; - } - - public boolean[] getKeyUsage() - { - return new boolean[0]; - } - - public int getBasicConstraints() - { - return 0; - } - - public byte[] getEncoded() throws CertificateEncodingException - { - if (_exceptionOnEncode) - { - throw new CertificateEncodingException(); - } - - return new byte[0]; - } - - public void verify(PublicKey key) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureException - { - throw new CertificateException(); - } - - public void verify(PublicKey key, String sigProvider) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, NoSuchProviderException, SignatureException - { - throw new CertificateException(); - } - - public String toString() - { - return null; - } - - public PublicKey getPublicKey() - { - return null; - } - - public boolean hasUnsupportedCriticalExtension() - { - return false; - } - - public Set getCriticalExtensionOIDs() - { - return null; - } - - public Set getNonCriticalExtensionOIDs() - { - return null; - } - - public byte[] getExtensionValue(String oid) - { - return new byte[0]; - } - - } - - private static byte[] getDigest(SubjectPublicKeyInfo spki) - { - Digest digest = new SHA1Digest(); - byte[] resBuf = new byte[digest.getDigestSize()]; - - byte[] bytes = spki.getPublicKeyData().getBytes(); - digest.update(bytes, 0, bytes.length); - digest.doFinal(resBuf, 0); - return resBuf; - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/WrapTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/WrapTest.java deleted file mode 100644 index 118e1827..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/WrapTest.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import java.security.Key; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.MessageDigest; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SecureRandom; -import java.security.Security; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTestResult; -import org.bouncycastle.util.test.Test; -import org.bouncycastle.util.test.TestResult; - -public class WrapTest - implements Test -{ - public TestResult perform() - { - try - { - Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding", "BC"); - KeyPairGenerator fact = KeyPairGenerator.getInstance("RSA", "BC"); - fact.initialize(512, new SecureRandom()); - - KeyPair keyPair = fact.generateKeyPair(); - - PrivateKey priKey = keyPair.getPrivate(); - PublicKey pubKey = keyPair.getPublic(); - - KeyGenerator keyGen = KeyGenerator.getInstance("DES", "BC"); - Key wrapKey = keyGen.generateKey(); - cipher.init(Cipher.WRAP_MODE, wrapKey); - byte[] wrappedKey = cipher.wrap(priKey); - - cipher.init(Cipher.UNWRAP_MODE, wrapKey); - Key key = cipher.unwrap(wrappedKey, "RSA", Cipher.PRIVATE_KEY); - - if (!MessageDigest.isEqual(priKey.getEncoded(), key.getEncoded())) - { - return new SimpleTestResult(false, "Unwrapped key does not match"); - } - - return new SimpleTestResult(true, getName() + ": Okay"); - } - catch (Exception e) - { - return new SimpleTestResult(false, getName() + ": exception - " + e.toString(), e); - } - } - - public String getName() - { - return "WrapTest"; - } - - public static void main( - String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - Test test = new WrapTest(); - TestResult result = test.perform(); - - System.out.println(result.toString()); - if (result.getException() != null) - { - result.getException().printStackTrace(); - } - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/X509CertificatePairTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/X509CertificatePairTest.java deleted file mode 100644 index 4eecef8a..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/X509CertificatePairTest.java +++ /dev/null @@ -1,147 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.x509.X509CertificatePair; - -import java.io.ByteArrayInputStream; -import java.security.Security; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; - -public class X509CertificatePairTest - extends SimpleTest -{ - public void performTest() - throws Exception - { - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - - X509Certificate rootCert = (X509Certificate)cf.generateCertificate( - new ByteArrayInputStream(CertPathTest.rootCertBin)); - X509Certificate interCert = (X509Certificate)cf.generateCertificate( - new ByteArrayInputStream(CertPathTest.interCertBin)); - X509Certificate finalCert = (X509Certificate)cf.generateCertificate( - new ByteArrayInputStream(CertPathTest.finalCertBin)); - - - X509CertificatePair pair1 = new X509CertificatePair(rootCert, interCert); - X509CertificatePair pair2 = new X509CertificatePair(rootCert, interCert); - X509CertificatePair pair3 = new X509CertificatePair(interCert, finalCert); - X509CertificatePair pair4 = new X509CertificatePair(rootCert, finalCert); - X509CertificatePair pair5 = new X509CertificatePair(rootCert, null); - X509CertificatePair pair6 = new X509CertificatePair(rootCert, null); - X509CertificatePair pair7 = new X509CertificatePair(null, rootCert); - X509CertificatePair pair8 = new X509CertificatePair(null, rootCert); - - if (!pair1.equals(pair2)) - { - fail("pair1 pair2 equality test"); - } - - if (!pair5.equals(pair6)) - { - fail("pair1 pair2 equality test"); - } - - if (!pair7.equals(pair8)) - { - fail("pair1 pair2 equality test"); - } - - if (pair1.equals(null)) - { - fail("pair1 null equality test"); - } - - if (pair1.hashCode() != pair2.hashCode()) - { - fail("pair1 pair2 hashCode equality test"); - } - - if (pair1.equals(pair3)) - { - fail("pair1 pair3 inequality test"); - } - - if (pair1.equals(pair4)) - { - fail("pair1 pair4 inequality test"); - } - - if (pair1.equals(pair5)) - { - fail("pair1 pair5 inequality test"); - } - - if (pair1.equals(pair7)) - { - fail("pair1 pair7 inequality test"); - } - - if (pair5.equals(pair1)) - { - fail("pair5 pair1 inequality test"); - } - - if (pair7.equals(pair1)) - { - fail("pair7 pair1 inequality test"); - } - - if (pair1.getForward() != rootCert) - { - fail("pair1 forward test"); - } - - if (pair1.getReverse() != interCert) - { - fail("pair1 reverse test"); - } - - if (!areEqual(pair1.getEncoded(), pair2.getEncoded())) - { - fail("encoding check"); - } - - pair4 = new X509CertificatePair(rootCert, TestUtils.createExceptionCertificate(false)); - - try - { - pair4.getEncoded(); - - fail("no exception on bad getEncoded()"); - } - catch (CertificateEncodingException e) - { - // expected - } - - pair4 = new X509CertificatePair(rootCert, TestUtils.createExceptionCertificate(true)); - - try - { - pair4.getEncoded(); - - fail("no exception on exception getEncoded()"); - } - catch (CertificateEncodingException e) - { - // expected - } - } - - public String getName() - { - return "X509CertificatePair"; - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new X509CertificatePairTest()); - } - -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/X509LDAPCertStoreTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/X509LDAPCertStoreTest.java deleted file mode 100644 index 27167127..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/X509LDAPCertStoreTest.java +++ /dev/null @@ -1,467 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.jce.PrincipalUtil; -import org.bouncycastle.jce.X509LDAPCertStoreParameters; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.x509.X509CRLStoreSelector; -import org.bouncycastle.x509.X509CertStoreSelector; -import org.bouncycastle.x509.X509Store; - -import java.io.ByteArrayInputStream; -import java.security.Security; -import java.security.cert.CRLException; -import java.security.cert.CertStore; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509CRL; -import java.security.cert.X509CRLSelector; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; - -public class X509LDAPCertStoreTest extends SimpleTest -{ - private static final byte cert1[] = Base64 - .decode("MIIDyTCCAzKgAwIBAgIEL64+8zANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJE" - + "RTEcMBoGA1UEChQTRGV1dHNjaGUgVGVsZWtvbSBBRzEoMAwGBwKCBgEKBxQTATEw" - + "GAYDVQQDFBFUVEMgVGVzdCBDQSAxMTpQTjAeFw0wMzAzMjUxNDM1MzFaFw0wNjAz" - + "MjUxNDM1MzFaMGIxCzAJBgNVBAYTAkRFMRswGQYDVQQKDBJHRlQgU29sdXRpb25z" - + "IEdtYkgxEjAQBgNVBAsMCUhZUEFSQ0hJVjEWMBQGA1UEAwwNRGllZ2UsIFNpbW9u" - + "ZTEKMAgGA1UEBRMBMTCBoDANBgkqhkiG9w0BAQEFAAOBjgAwgYoCgYEAiEYsFbs4" - + "FesQpMjBkzJB92c0p8tJ02nbCNA5l17VVbbrv6/twnQHW4kgA+9lZlXfzI8iunT1" - + "KuiwVupWObHgFaGPkelIN/qIbuwbQzh7T+IUKdKETE12Lc+xk9YvQ6mJVgosmwpr" - + "nMMjezymh8DjPhe7MC7/H3AotrHVNM3mEJcCBEAAAIGjggGWMIIBkjAfBgNVHSME" - + "GDAWgBTQc8wTeltcAM3iTE63fk/wTA+IJTAdBgNVHQ4EFgQUq6ChBvXPiqhMHLS3" - + "kiKpSeGWDz4wDgYDVR0PAQH/BAQDAgQwMB8GA1UdEQQYMBaBFHNpbW9uZS5kaWVn" - + "ZUBnZnQuY29tMIHoBgNVHR8EgeAwgd0wgdqgaqBohjVsZGFwOi8vcGtzbGRhcC50" - + "dHRjLmRlOjM4OS9jPWRlLG89RGV1dHNjaGUgVGVsZWtvbSBBR4YvaHR0cDovL3d3" - + "dy50dHRjLmRlL3RlbGVzZWMvc2VydmxldC9kb3dubG9hZF9jcmyibKRqMGgxCzAJ" - + "BgNVBAYTAkRFMRwwGgYDVQQKFBNEZXV0c2NoZSBUZWxla29tIEFHMTswDAYHAoIG" - + "AQoHFBMBMTArBgNVBAMUJFRlbGVTZWMgRGlyZWN0b3J5IFNlcnZpY2UgU2lnRyAx" - + "MDpQTjA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly93d3cudHR0" - + "Yy5kZS9vY3NwcjANBgkqhkiG9w0BAQUFAAOBgQBCPudAtrP9Bx7GRhHQgYS6kaoN" - + "vYb/yDss86pyn0uiFuwT+mT1popcAfxPo2yxL0jqqlsDNFBC2hJob5rjihsKPmqV" - + "rSaW0VJu/zBihsX7hLKOVMf5gvUYMS5ulq/bp8jOj8a+5SmxVY+WWZVFghWjISse" - + "T3WABdTS9S3zjnQiyg=="); - - private static final byte[] directCRL = Base64 - .decode("MIIGXTCCBckCAQEwCgYGKyQDAwECBQAwdDELMAkGA1UEBhMCREUxHDAaBgNVBAoU" - + "E0RldXRzY2hlIFRlbGVrb20gQUcxFzAVBgNVBAsUDlQtVGVsZVNlYyBUZXN0MS4w" - + "DAYHAoIGAQoHFBMBMTAeBgNVBAMUF1QtVGVsZVNlYyBUZXN0IERJUiA4OlBOFw0w" - + "NjA4MDQwODQ1MTRaFw0wNjA4MDQxNDQ1MTRaMIIElTAVAgQvrj/pFw0wMzA3MjIw" - + "NTQxMjhaMBUCBC+uP+oXDTAzMDcyMjA1NDEyOFowFQIEL64/5xcNMDQwNDA1MTMx" - + "ODE3WjAVAgQvrj/oFw0wNDA0MDUxMzE4MTdaMBUCBC+uP+UXDTAzMDExMzExMTgx" - + "MVowFQIEL64/5hcNMDMwMTEzMTExODExWjAVAgQvrj/jFw0wMzAxMTMxMTI2NTZa" - + "MBUCBC+uP+QXDTAzMDExMzExMjY1NlowFQIEL64/4hcNMDQwNzEzMDc1ODM4WjAV" - + "AgQvrj/eFw0wMzAyMTcwNjMzMjVaMBUCBC+uP98XDTAzMDIxNzA2MzMyNVowFQIE" - + "L64/0xcNMDMwMjE3MDYzMzI1WjAVAgQvrj/dFw0wMzAxMTMxMTI4MTRaMBUCBC+u" - + "P9cXDTAzMDExMzExMjcwN1owFQIEL64/2BcNMDMwMTEzMTEyNzA3WjAVAgQvrj/V" - + "Fw0wMzA0MzAxMjI3NTNaMBUCBC+uP9YXDTAzMDQzMDEyMjc1M1owFQIEL64/xhcN" - + "MDMwMjEyMTM0NTQwWjAVAgQvrj/FFw0wMzAyMTIxMzQ1NDBaMBUCBC+uP8IXDTAz" - + "MDIxMjEzMDkxNlowFQIEL64/wRcNMDMwMjEyMTMwODQwWjAVAgQvrj++Fw0wMzAy" - + "MTcwNjM3MjVaMBUCBC+uP70XDTAzMDIxNzA2MzcyNVowFQIEL64/sBcNMDMwMjEy" - + "MTMwODU5WjAVAgQvrj+vFw0wMzAyMTcwNjM3MjVaMBUCBC+uP5MXDTAzMDQxMDA1" - + "MjYyOFowFQIEL64/khcNMDMwNDEwMDUyNjI4WjAVAgQvrj8/Fw0wMzAyMjYxMTA0" - + "NDRaMBUCBC+uPz4XDTAzMDIyNjExMDQ0NFowFQIEL64+zRcNMDMwNTIwMDUyNzM2" - + "WjAVAgQvrj7MFw0wMzA1MjAwNTI3MzZaMBUCBC+uPjwXDTAzMDYxNzEwMzQxNlow" - + "FQIEL64+OxcNMDMwNjE3MTAzNDE2WjAVAgQvrj46Fw0wMzA2MTcxMDM0MTZaMBUC" - + "BC+uPjkXDTAzMDYxNzEzMDEwMFowFQIEL64+OBcNMDMwNjE3MTMwMTAwWjAVAgQv" - + "rj43Fw0wMzA2MTcxMzAxMDBaMBUCBC+uPjYXDTAzMDYxNzEzMDEwMFowFQIEL64+" - + "MxcNMDMwNjE3MTAzNzQ5WjAVAgQvrj4xFw0wMzA2MTcxMDQyNThaMBUCBC+uPjAX" - + "DTAzMDYxNzEwNDI1OFowFQIEL649qRcNMDMxMDIyMTEzMjI0WjAVAgQvrjyyFw0w" - + "NTAzMTEwNjQ0MjRaMBUCBC+uPKsXDTA0MDQwMjA3NTQ1M1owFQIEL6466BcNMDUw" - + "MTI3MTIwMzI0WjAVAgQvrjq+Fw0wNTAyMTYwNzU3MTZaMBUCBC+uOqcXDTA1MDMx" - + "MDA1NTkzNVowFQIEL646PBcNMDUwNTExMTA0OTQ2WjAVAgQvrG3VFw0wNTExMTEx" - + "MDAzMjFaMBUCBC+uLmgXDTA2MDEyMzEwMjU1NVowFQIEL64mxxcNMDYwODAxMDk0" - + "ODQ0WqCBijCBhzALBgNVHRQEBAICEQwwHwYDVR0jBBgwFoAUA1vI26YMj3njkfCU" - + "IXbo244kLjkwVwYDVR0SBFAwToZMbGRhcDovL3Brc2xkYXAudHR0Yy5kZS9vdT1U" - + "LVRlbGVTZWMgVGVzdCBESVIgODpQTixvPURldXRzY2hlIFRlbGVrb20gQUcsYz1k" - + "ZTAKBgYrJAMDAQIFAAOBgQArj4eMlbAwuA2aS5O4UUUHQMKKdK/dtZi60+LJMiMY" - + "ojrMIf4+ZCkgm1Ca0Cd5T15MJxVHhh167Ehn/Hd48pdnAP6Dfz/6LeqkIHGWMHR+" - + "z6TXpwWB+P4BdUec1ztz04LypsznrHcLRa91ixg9TZCb1MrOG+InNhleRs1ImXk8" - + "MQ=="); - - private static final String ldapURL1 = "ldap://pksldap.tttc.de:389"; - - private static final X509LDAPCertStoreParameters params1 = new X509LDAPCertStoreParameters.Builder( - ldapURL1, "o=Deutsche Telekom AG, c=DE"). - setAACertificateSubjectAttributeName("ou cn"). - setAttributeAuthorityRevocationListIssuerAttributeName("cn"). - setAttributeCertificateAttributeSubjectAttributeName("cn"). - setAttributeCertificateRevocationListIssuerAttributeName("cn"). - setAttributeDescriptorCertificateSubjectAttributeName("ou cn"). - setAuthorityRevocationListIssuerAttributeName("cn"). - setCACertificateSubjectAttributeName("ou cn"). - setCertificateRevocationListIssuerAttributeName("cn"). - setCrossCertificateSubjectAttributeName("cn"). - setDeltaRevocationListIssuerAttributeName("cn"). - setSearchForSerialNumberIn("cn") - .build(); - - private static final String ldapURL2 = "ldap://directory.d-trust.de:389"; - - private static final X509LDAPCertStoreParameters params2 = new X509LDAPCertStoreParameters.Builder( - ldapURL2, "o=D-Trust GmbH, c=DE"). - setAACertificateSubjectAttributeName("cn o"). - setAttributeAuthorityRevocationListIssuerAttributeName("cn"). - setAttributeCertificateAttributeSubjectAttributeName("cn"). - setAttributeCertificateRevocationListIssuerAttributeName("cn"). - setAttributeDescriptorCertificateSubjectAttributeName("cn o"). - setAuthorityRevocationListIssuerAttributeName("cn"). - setCACertificateSubjectAttributeName("cn o"). - setCertificateRevocationListIssuerAttributeName("cn"). - setCrossCertificateSubjectAttributeName("cn o"). - setDeltaRevocationListIssuerAttributeName("cn"). - setSearchForSerialNumberIn("uid") - .build(); - - private static final byte[] cert2 = Base64 - .decode("MIIEADCCAuigAwIBAgIDAJ/QMA0GCSqGSIb3DQEBBQUAMD8xCzAJBgNVBAYTAkRF" - + "MRUwEwYDVQQKDAxELVRydXN0IEdtYkgxGTAXBgNVBAMMEEQtVFJVU1QgRGVtbyBD" - + "QTEwHhcNMDYwMzAyMTYxNTU3WhcNMDgwMzEyMTYxNTU3WjB+MQswCQYDVQQGEwJE" - + "RTEUMBIGA1UECgwLTXVzdGVyIEdtYkgxFzAVBgNVBAMMDk1heCBNdXN0ZXJtYW5u" - + "MRMwEQYDVQQEDApNdXN0ZXJtYW5uMQwwCgYDVQQqDANNYXgxHTAbBgNVBAUTFERU" - + "UldFMTQxMjk5NDU1MTgwMTIxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC" - + "AQEAjLDFeviSZDEZgLzTdptU4biPgNV7SvLqsNholfqkyQm2r5WSghGZSjhKYIne" - + "qKmZ08W59a51bGqDEsifYR7Tw9JC/AhH19fyK01+1ZAXHalgVthaRtLw31lcoTVJ" - + "R7j9fvrnW0sMPVP4m5gePb3P5/pYHVmN1MjdPIm38us5aJOytOO5Li2IwQIG0t4M" - + "bEC6/1horBR5TgRl7ACamrdaPHOvO1QVweOqYU7uVxLgDTK4mSV6heyrisFMfkbj" - + "7jT/c44kXM7dtgNcmESINudu6bnqaB1CxOFTJ/Jzv81R5lf7pBX2LOG1Bu94Yw2x" - + "cHUVROs2UWY8kQrNUozsBHzQ0QIDAKq5o4HFMIHCMBMGA1UdIwQMMAqACEITKrPL" - + "WuYiMDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZC10" - + "cnVzdC5uZXQwEAYDVR0gBAkwBzAFBgMqAwQwEQYDVR0OBAoECEvE8bXFHkFLMA4G" - + "A1UdDwEB/wQEAwIGQDAPBgUrJAgDCAQGDARUZXN0MB8GA1UdEQQYMBaBFG0ubXVz" - + "dGVybWFubkB0ZXN0LmRlMA8GBSskCAMPBAYMBFRlc3QwDQYJKoZIhvcNAQEFBQAD" - + "ggEBADD/X+UZZN30nCBDzJ7MtmgwvMBVDAU6HkPlzfyn9pxIKFrq3uR9wcY2pedM" - + "yQQk0NpTDCIhAYIjAHysMue0ViQnW5qq8uUCFn0+fsgMqqTQNRmE4NIqUrnYO40g" - + "WjcepCEApkTqGf3RFaDMf9zpRvj9qUx18De+V0GC22uD2vPKpqRcvS2dSw6pHBW2" - + "NwEU+RgNhoPXrHt332PEYdwO0zOL7eSLBD9AmkpP2uDjpMQ02Lu9kXG6OOfanwfS" - + "jHioCvDXyl5pwSHwrHNWQRb5dLF12Fg41LMapDwR7awAKE9h6qHBonvCMBPMvqrr" - + "NktqQcoQkluR9MItONJI5XHADtU="); - - private static final String ldapURL3 = "ldap://dir.signtrust.de:389"; - - private static final X509LDAPCertStoreParameters params3 = new X509LDAPCertStoreParameters.Builder( - ldapURL3, "o=Deutsche Post AG, c=de"). - setAACertificateSubjectAttributeName("ou"). - setAttributeAuthorityRevocationListIssuerAttributeName("cn"). - setAttributeCertificateAttributeSubjectAttributeName("cn"). - setAttributeCertificateRevocationListIssuerAttributeName("o"). - setAttributeDescriptorCertificateSubjectAttributeName("ou"). - setAuthorityRevocationListIssuerAttributeName("o"). - setCACertificateSubjectAttributeName("ou"). - setCertificateRevocationListIssuerAttributeName("o"). - setCrossCertificateSubjectAttributeName("o"). - setDeltaRevocationListIssuerAttributeName("o"). - setSearchForSerialNumberIn("serialNumber") - .build(); - - private static final byte[] cert3 = Base64 - .decode("MIICwDCCAimgAwIBAgIBKzANBgkqhkiG9w0BAQUFADA6MRAwDgYDVQQDEwdQQ0Ex" - + "OlBOMRkwFwYDVQQKExBEZXV0c2NoZSBQb3N0IEFHMQswCQYDVQQGEwJERTAeFw0w" - + "MDA0MTkyMjAwMDBaFw0wMzA0MTkyMjAwMDBaMIGOMRAwDgYDVQQEFAdN5G5jaGVy" - + "MQ4wDAYDVQQqEwVLbGF1czEWMBQGA1UEAxQNS2xhdXMgTeRuY2hlcjEVMBMGA1UE" - + "CRMMV2llc2Vuc3RyLiAzMQ4wDAYDVQQREwU2MzMyOTESMBAGA1UEBxMJRWdlbHNi" - + "YWNoMQswCQYDVQQGEwJERTEKMAgGA1UEBRMBMTCBnzANBgkqhkiG9w0BAQEFAAOB" - + "jQAwgYkCgYEAn7z6Ba9wpv/mNBIaricY/d0KpxGpqGAXdqKlvqkk/seJEoBLvmL7" - + "wZz88RPELQqzDhc4oXYohS2dh3NHus9FpSPMq0JzKAcE3ArrVDxwtXtlcwN2v7iS" - + "TcHurgLOb9C/r8JdsMHNgwHMkkdp96cJk/sioyP5sLPYmgWxg1JH0vMCAwEAAaOB" - + "gDB+MAwGA1UdEwEB/wQCMAAwDwYDVR0PAQH/BAUDAwfAADBKBgNVHSMEQzBBoTyk" - + "OjEQMA4GA1UEAxMHUENBMTpQTjEZMBcGA1UEChMQRGV1dHNjaGUgUG9zdCBBRzEL" - + "MAkGA1UEBhMCREWCAQEwEQYDVR0OBAoECEAeJ6R3USjxMA0GCSqGSIb3DQEBBQUA" - + "A4GBADMRtdiQJF2fg7IcedTjnAW+QGl/wNSKy7A4oaBQeahcruo+hzH+ZU+DsiSu" - + "TJZaf2X1eUUEPmV+5zZlopGa3HvFfgmIYIXBw9ZO3Qb/HWGsPNgW0yg5eXEGwNEt" - + "vV85BTMGuMjiuDw841IuAZaMKqOKnVXHmd2pLJz7Wv0MLJhw"); - - private static final byte[] caCert3 = Base64 - .decode("MIICUjCCAb6gAwIBAgIDD2ptMAoGBiskAwMBAgUAMG8xCzAJBgNVBAYTAkRFMT0w" - + "OwYDVQQKFDRSZWd1bGllcnVuZ3NiZWjIb3JkZSBmyHVyIFRlbGVrb21tdW5pa2F0" - + "aW9uIHVuZCBQb3N0MSEwDAYHAoIGAQoHFBMBMTARBgNVBAMUCjRSLUNBIDE6UE4w" - + "IhgPMjAwMDA0MTIwODIyMDNaGA8yMDA0MDQxMjA4MjIwM1owWzELMAkGA1UEBhMC" - + "REUxGTAXBgNVBAoUEERldXRzY2hlIFBvc3QgQUcxMTAMBgcCggYBCgcUEwExMCEG" - + "A1UEAxQaQ0EgREVSIERFVVRTQ0hFTiBQT1NUIDU6UE4wgZ8wDQYJKoZIhvcNAQEB" - + "BQADgY0AMIGJAoGBAIH3c+gig1KkY5ceR6n/AMq+xz7hi3f0PMdpwIe2v2w6Hu5k" - + "jipe++NvU3r6wakIY2royHl3gKWrExOisBico9aQmn8lMJnWZ7SUbB+WpRn0mAWN" - + "ZM9YT+/U5hRCffeeuLWClzrbScaWnAeaaI0G+N/QKnSSjrV/l64jogyADWCTAgMB" - + "AAGjEjAQMA4GA1UdDwEB/wQEAwIBBjAKBgYrJAMDAQIFAAOBgQAaV5WClEneXk9s" - + "LO8zTQAsf4KvDaLd1BFcFeYM7kLLRHKeWQ0MAd0xkuAMme5NVwWNpNZP74B4HX7Q" - + "/Q0h/wo/9LTgQaxw52lLs4Ml0HUyJbSFjoQ+sqgjg2fGNGw7aGkVNY5dQTAy8oSv" - + "iG8mxTsQ7Fxaush3cIB0qDDwXar/hg=="); - - private static final byte[] crossCert3 = Base64 - .decode("MIICVDCCAcCgAwIBAgIDDIOsMAoGBiskAwMBAgUAMG8xCzAJBgNVBAYTAkRFMT0w" - + "OwYDVQQKFDRSZWd1bGllcnVuZ3NiZWjIb3JkZSBmyHVyIFRlbGVrb21tdW5pa2F0" - + "aW9uIHVuZCBQb3N0MSEwDAYHAoIGAQoHFBMBMTARBgNVBAMUCjRSLUNBIDE6UE4w" - + "IhgPMjAwMDAzMjIwOTQzNTBaGA8yMDA0MDEyMTE2MDQ1M1owbzELMAkGA1UEBhMC" - + "REUxPTA7BgNVBAoUNFJlZ3VsaWVydW5nc2JlaMhvcmRlIGbIdXIgVGVsZWtvbW11" - + "bmlrYXRpb24gdW5kIFBvc3QxITAMBgcCggYBCgcUEwExMBEGA1UEAxQKNVItQ0Eg" - + "MTpQTjCBoTANBgkqhkiG9w0BAQEFAAOBjwAwgYsCgYEAih5BUycfBpqKhU8RDsaS" - + "vV5AtzWeXQRColL9CH3t0DKnhjKAlJ8iccFtJNv+d3bh8bb9sh0maRSo647xP7hs" - + "HTjKgTE4zM5BYNfXvST79OtcMgAzrnDiGjQIIWv8xbfV1MqxxdtZJygrwzRMb9jG" - + "CAGoJEymoyzAMNG7tSdBWnUCBQDAAAABMAoGBiskAwMBAgUAA4GBAIBWrl6aEy4d" - + "2d6U/924YK8Tv9oChmaKVhklkiTzcKv1N8dhLnLTibq4/stop03CY3rKU4X5aTfu" - + "0J77FIV1Poy9jLT5Tm1NBpi71m4uO3AUoSeyhJXGQGsYFjAc3URqkznbTL/nr9re" - + "IoBhf6u9cX+idnN6Uy1q+j/LOrcy3zgj"); - - public void performTest() throws Exception - { - certStoretest(); - x509StoreTest(); - } - - private void certStoretest() throws Exception - { - CertStore cs = CertStore.getInstance("X509LDAP", params1, "BC"); - X509CertSelector sl = new X509CertSelector(); - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - X509Certificate xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(cert1)); - sl.setCertificate(xcert); - Collection coll = cs.getCertificates(sl); - if (coll.isEmpty() || !coll.iterator().next().equals(xcert)) - { - fail("certificate could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - sl.setCertificate(null); - sl.setSubject(getSubject(xcert).getEncoded()); - coll = cs.getCertificates(sl); - if (coll.isEmpty() || !coll.iterator().next().equals(xcert)) - { - fail("certificate could not be picked from LDAP directory."); - } - X509CRLSelector sl2 = new X509CRLSelector(); - X509CRL crl = (X509CRL)cf.generateCRL(new - ByteArrayInputStream(directCRL)); - sl2.addIssuerName(getCRLIssuer(crl).getEncoded()); - coll = cs.getCRLs(sl2); - if (!coll.iterator().hasNext()) - { - fail("CRL could not be picked from LDAP directory."); - } - // System.out.println(coll.toArray()[0]); - - cs = CertStore.getInstance("X509LDAP", params2, "BC"); - sl = new X509CertSelector(); - xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(cert2)); - sl.setCertificate(xcert); - coll = cs.getCertificates(sl); - if (coll.isEmpty() || !coll.iterator().next().equals(xcert)) - { - fail("Certificate could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - cs = CertStore.getInstance("X509LDAP", params3, "BC"); - sl = new X509CertSelector(); - xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(cert3)); - sl.setCertificate(xcert); - coll = cs.getCertificates(sl); - if (coll.isEmpty() || !coll.iterator().next().equals(xcert)) - { - fail("Certificate could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(caCert3)); - sl = new X509CertSelector(); - sl.setSubject(getSubject(xcert).getEncoded()); - coll = cs.getCertificates(sl); - boolean found = false; - if (coll.isEmpty()) - { - fail("Certificate could not be picked from LDAP directory."); - } - - for (Iterator it = coll.iterator(); it.hasNext();) - { - if (it.next().equals(xcert)) - { - found = true; - break; - } - } - if (!found) - { - fail("Certificate could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - sl = new X509CertSelector(); - xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(crossCert3)); - sl = new X509CertSelector(); - sl.setSubject(getSubject(xcert).getEncoded()); - coll = cs.getCertificates(sl); - if (coll.isEmpty()) - { - fail("Cross certificate pair could not be picked from LDAP directory."); - } - found = false; - for (Iterator it = coll.iterator(); it.hasNext();) - { - if (it.next().equals(xcert)) - { - found = true; - break; - } - } - if (!found) - { - fail("Cross certificate pair could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - } - - private void x509StoreTest() throws Exception - { - X509Store cs = X509Store.getInstance("CERTIFICATE/LDAP", params1, "BC"); - - X509CertStoreSelector sl = new X509CertStoreSelector(); - CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); - X509Certificate xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(cert1)); - sl.setCertificate(xcert); - Collection coll = cs.getMatches(sl); - if (coll.isEmpty() || !coll.iterator().next().equals(xcert)) - { - fail("certificate could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - sl.setCertificate(null); - sl.setSubject(getSubject(xcert).getEncoded()); - coll = cs.getMatches(sl); - if (coll.isEmpty() || !coll.iterator().next().equals(xcert)) - { - fail("certificate could not be picked from LDAP directory."); - } - X509CRLStoreSelector sl2 = new X509CRLStoreSelector(); - X509CRL crl = (X509CRL)cf.generateCRL(new - ByteArrayInputStream(directCRL)); - sl2.setIssuers(Collections.singleton(crl.getIssuerX500Principal())); - cs = X509Store.getInstance("CRL/LDAP", params1, "BC"); - coll = cs.getMatches(sl2); - if (!coll.iterator().hasNext()) - { - fail("CRL could not be picked from LDAP directory."); - } - // System.out.println(coll.toArray()[0]); - - cs = X509Store.getInstance("CERTIFICATE/LDAP", params2, "BC"); - sl = new X509CertStoreSelector(); - xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(cert2)); - sl.setCertificate(xcert); - coll = cs.getMatches(sl); - if (coll.isEmpty() || !coll.iterator().next().equals(xcert)) - { - fail("Certificate could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - cs = X509Store.getInstance("CERTIFICATE/LDAP", params3, "BC"); - sl = new X509CertStoreSelector(); - xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(cert3)); - sl.setCertificate(xcert); - coll = cs.getMatches(sl); - if (coll.isEmpty() || !coll.iterator().next().equals(xcert)) - { - fail("Certificate could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(caCert3)); - sl = new X509CertStoreSelector(); - sl.setSubject(getSubject(xcert).getEncoded()); - coll = cs.getMatches(sl); - boolean found = false; - if (coll.isEmpty()) - { - fail("Certificate could not be picked from LDAP directory."); - } - - for (Iterator it = coll.iterator(); it.hasNext();) - { - if (it.next().equals(xcert)) - { - found = true; - break; - } - } - if (!found) - { - fail("Certificate could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - sl = new X509CertStoreSelector(); - xcert = (X509Certificate)cf - .generateCertificate(new ByteArrayInputStream(crossCert3)); - sl.setSubject(getSubject(xcert).getEncoded()); - coll = cs.getMatches(sl); - if (coll.isEmpty()) - { - fail("Cross certificate pair could not be picked from LDAP directory."); - } - found = false; - for (Iterator it = coll.iterator(); it.hasNext();) - { - if (it.next().equals(xcert)) - { - found = true; - break; - } - } - if (!found) - { - fail("Cross certificate pair could not be picked from LDAP directory."); - } - - // System.out.println(coll.toArray()[0]); - - } - - private X509Principal getSubject(X509Certificate cert) - throws CertificateEncodingException - { - return PrincipalUtil.getSubjectX509Principal(cert); - } - - private X509Principal getCRLIssuer(X509CRL crl) - throws CRLException - { - return PrincipalUtil.getIssuerX509Principal(crl); - } - - public String getName() - { - return "LDAPCertStoreTest"; - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - runTest(new X509LDAPCertStoreTest()); - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/X509StreamParserTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/X509StreamParserTest.java deleted file mode 100644 index 8f3c7fe3..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/X509StreamParserTest.java +++ /dev/null @@ -1,360 +0,0 @@ -package org.bouncycastle.jce.provider.test; - -import org.bouncycastle.asn1.ASN1EncodableVector; -import org.bouncycastle.asn1.ASN1InputStream; -import org.bouncycastle.asn1.DERSet; -import org.bouncycastle.asn1.DERTaggedObject; -import org.bouncycastle.asn1.cms.CMSObjectIdentifiers; -import org.bouncycastle.asn1.cms.ContentInfo; -import org.bouncycastle.asn1.cms.SignedData; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.encoders.Base64; -import org.bouncycastle.util.test.SimpleTest; -import org.bouncycastle.x509.X509AttributeCertificate; -import org.bouncycastle.x509.X509CertificatePair; -import org.bouncycastle.x509.X509StreamParser; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.security.Security; -import java.security.cert.X509CRL; -import java.security.cert.X509Certificate; -import java.util.Collection; - -public class X509StreamParserTest - extends SimpleTest -{ - byte[] attrCert = Base64.decode( - "MIIHQDCCBqkCAQEwgZChgY2kgYowgYcxHDAaBgkqhkiG9w0BCQEWDW1sb3JjaEB2" - + "dC5lZHUxHjAcBgNVBAMTFU1hcmt1cyBMb3JjaCAobWxvcmNoKTEbMBkGA1UECxMS" - + "VmlyZ2luaWEgVGVjaCBVc2VyMRAwDgYDVQQLEwdDbGFzcyAyMQswCQYDVQQKEwJ2" - + "dDELMAkGA1UEBhMCVVMwgYmkgYYwgYMxGzAZBgkqhkiG9w0BCQEWDHNzaGFoQHZ0" - + "LmVkdTEbMBkGA1UEAxMSU3VtaXQgU2hhaCAoc3NoYWgpMRswGQYDVQQLExJWaXJn" - + "aW5pYSBUZWNoIFVzZXIxEDAOBgNVBAsTB0NsYXNzIDExCzAJBgNVBAoTAnZ0MQsw" - + "CQYDVQQGEwJVUzANBgkqhkiG9w0BAQQFAAIBBTAiGA8yMDAzMDcxODE2MDgwMloY" - + "DzIwMDMwNzI1MTYwODAyWjCCBU0wggVJBgorBgEEAbRoCAEBMYIFORaCBTU8UnVs" - + "ZSBSdWxlSWQ9IkZpbGUtUHJpdmlsZWdlLVJ1bGUiIEVmZmVjdD0iUGVybWl0Ij4K" - + "IDxUYXJnZXQ+CiAgPFN1YmplY3RzPgogICA8U3ViamVjdD4KICAgIDxTdWJqZWN0" - + "TWF0Y2ggTWF0Y2hJZD0idXJuOm9hc2lzOm5hbWVzOnRjOnhhY21sOjEuMDpmdW5j" - + "dGlvbjpzdHJpbmctZXF1YWwiPgogICAgIDxBdHRyaWJ1dGVWYWx1ZSBEYXRhVHlw" - + "ZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjc3RyaW5nIj4KICAg" - + "ICAgIENOPU1hcmt1cyBMb3JjaDwvQXR0cmlidXRlVmFsdWU+CiAgICAgPFN1Ympl" - + "Y3RBdHRyaWJ1dGVEZXNpZ25hdG9yIEF0dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFt" - + "ZXM6dGM6eGFjbWw6MS4wOnN1YmplY3Q6c3ViamVjdC1pZCIgRGF0YVR5cGU9Imh0" - + "dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hI3N0cmluZyIgLz4gCiAgICA8" - + "L1N1YmplY3RNYXRjaD4KICAgPC9TdWJqZWN0PgogIDwvU3ViamVjdHM+CiAgPFJl" - + "c291cmNlcz4KICAgPFJlc291cmNlPgogICAgPFJlc291cmNlTWF0Y2ggTWF0Y2hJ" - + "ZD0idXJuOm9hc2lzOm5hbWVzOnRjOnhhY21sOjEuMDpmdW5jdGlvbjpzdHJpbmct" - + "ZXF1YWwiPgogICAgIDxBdHRyaWJ1dGVWYWx1ZSBEYXRhVHlwZT0iaHR0cDovL3d3" - + "dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYW55VVJJIj4KICAgICAgaHR0cDovL3p1" - + "bmkuY3MudnQuZWR1PC9BdHRyaWJ1dGVWYWx1ZT4KICAgICA8UmVzb3VyY2VBdHRy" - + "aWJ1dGVEZXNpZ25hdG9yIEF0dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFtZXM6dGM6" - + "eGFjbWw6MS4wOnJlc291cmNlOnJlc291cmNlLWlkIiBEYXRhVHlwZT0iaHR0cDov" - + "L3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjYW55VVJJIiAvPiAKICAgIDwvUmVz" - + "b3VyY2VNYXRjaD4KICAgPC9SZXNvdXJjZT4KICA8L1Jlc291cmNlcz4KICA8QWN0" - + "aW9ucz4KICAgPEFjdGlvbj4KICAgIDxBY3Rpb25NYXRjaCBNYXRjaElkPSJ1cm46" - + "b2FzaXM6bmFtZXM6dGM6eGFjbWw6MS4wOmZ1bmN0aW9uOnN0cmluZy1lcXVhbCI+" - + "CiAgICAgPEF0dHJpYnV0ZVZhbHVlIERhdGFUeXBlPSJodHRwOi8vd3d3LnczLm9y" - + "Zy8yMDAxL1hNTFNjaGVtYSNzdHJpbmciPgpEZWxlZ2F0ZSBBY2Nlc3MgICAgIDwv" - + "QXR0cmlidXRlVmFsdWU+CgkgIDxBY3Rpb25BdHRyaWJ1dGVEZXNpZ25hdG9yIEF0" - + "dHJpYnV0ZUlkPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGFjbWw6MS4wOmFjdGlvbjph" - + "Y3Rpb24taWQiIERhdGFUeXBlPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNj" - + "aGVtYSNzdHJpbmciIC8+IAogICAgPC9BY3Rpb25NYXRjaD4KICAgPC9BY3Rpb24+" - + "CiAgPC9BY3Rpb25zPgogPC9UYXJnZXQ+CjwvUnVsZT4KMA0GCSqGSIb3DQEBBAUA" - + "A4GBAGiJSM48XsY90HlYxGmGVSmNR6ZW2As+bot3KAfiCIkUIOAqhcphBS23egTr" - + "6asYwy151HshbPNYz+Cgeqs45KkVzh7bL/0e1r8sDVIaaGIkjHK3CqBABnfSayr3" - + "Rd1yBoDdEv8Qb+3eEPH6ab9021AsLEnJ6LWTmybbOpMNZ3tv"); - - public void performTest() - throws Exception - { - X509StreamParser parser = X509StreamParser.getInstance("Certificate", "BC"); - - parser.init(new ByteArrayInputStream(CertPathTest.rootCertBin)); - X509Certificate rootCert = (X509Certificate)parser.read(); - - parser = X509StreamParser.getInstance("CRL", "BC"); - - parser.init(new ByteArrayInputStream(CertPathTest.rootCrlBin)); - - - X509CRL rootCrl = (X509CRL)parser.read(); - - parser = X509StreamParser.getInstance("AttributeCertificate", "BC"); - - parser.init(new ByteArrayInputStream(attrCert)); - - X509AttributeCertificate aCert = (X509AttributeCertificate)parser.read(); - - ByteArrayOutputStream bOut = new ByteArrayOutputStream(); - - bOut.write(CertPathTest.rootCertBin); - bOut.write(CertPathTest.interCertBin); - bOut.write(CertPathTest.finalCertBin); - - parser = X509StreamParser.getInstance("Certificate", "BC"); - - parser.init(bOut.toByteArray()); - - Collection res = parser.readAll(); - - if (res.size() != 3) - { - fail("wrong number of certificates found"); - } - - bOut = new ByteArrayOutputStream(); - - bOut.write(CertPathTest.rootCrlBin); - bOut.write(CertPathTest.interCrlBin); - - parser = X509StreamParser.getInstance("CRL", "BC"); - - parser.init(bOut.toByteArray()); - - res = parser.readAll(); - - if (res.size() != 2) - { - fail("wrong number of CRLs found"); - } - - bOut = new ByteArrayOutputStream(); - - bOut.write(attrCert); - bOut.write(attrCert); - - parser = X509StreamParser.getInstance("AttributeCertificate", "BC"); - - parser.init(bOut.toByteArray()); - - res = parser.readAll(); - - if (res.size() != 2) - { - fail("wrong number of Attribute Certificates found"); - } - - // - // PEM tests - // - parser = X509StreamParser.getInstance("Certificate", "BC"); - - parser.init(PEMData.CERTIFICATE_1.getBytes("US-ASCII")); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of Certificates found"); - } - - parser = X509StreamParser.getInstance("Certificate", "BC"); - - parser.init(PEMData.CERTIFICATE_2.getBytes("US-ASCII")); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of Certificates found"); - } - - parser = X509StreamParser.getInstance("CRL", "BC"); - - parser.init(PEMData.CRL_1.getBytes("US-ASCII")); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of CRLs found"); - } - - parser = X509StreamParser.getInstance("CRL", "BC"); - - parser.init(PEMData.CRL_2.getBytes("US-ASCII")); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of CRLs found"); - } - - parser = X509StreamParser.getInstance("AttributeCertificate", "BC"); - - parser.init(PEMData.ATTRIBUTE_CERTIFICATE_1.getBytes("US-ASCII")); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of Attribute Certificates found"); - } - - parser = X509StreamParser.getInstance("AttributeCertificate", "BC"); - - parser.init(PEMData.ATTRIBUTE_CERTIFICATE_2.getBytes("US-ASCII")); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of Attribute Certificates found"); - } - - ASN1EncodableVector certs = new ASN1EncodableVector(); - - certs.add(new ASN1InputStream(CertPathTest.rootCertBin).readObject()); - certs.add(new DERTaggedObject(false, 2, new ASN1InputStream(attrCert).readObject())); - - ASN1EncodableVector crls = new ASN1EncodableVector(); - - crls.add(new ASN1InputStream(CertPathTest.rootCrlBin).readObject()); - - // - // cross certificate pairs - // - parser = X509StreamParser.getInstance("CertificatePair", "BC"); - - parser.init(new X509CertificatePair(rootCert, rootCert).getEncoded()); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of CertificatePairs found"); - } - - // - // PKCS7 - // - SignedData sigData = new SignedData(new DERSet(), new ContentInfo(CMSObjectIdentifiers.data, null), new DERSet(certs), new DERSet(crls), new DERSet()); - - ContentInfo info = new ContentInfo(CMSObjectIdentifiers.signedData, sigData); - - parser = X509StreamParser.getInstance("Certificate", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of Certificates found"); - } - - parser = X509StreamParser.getInstance("CRL", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of CRLs found"); - } - - parser = X509StreamParser.getInstance("AttributeCertificate", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 1) - { - fail("wrong number of Attribute Certificates found"); - } - - // data with no certificates or CRLs - - sigData = new SignedData(new DERSet(), new ContentInfo(CMSObjectIdentifiers.data, null), new DERSet(), new DERSet(), new DERSet()); - - info = new ContentInfo(CMSObjectIdentifiers.signedData, sigData); - - parser = X509StreamParser.getInstance("Certificate", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 0) - { - fail("wrong number of Certificates found - expected 0"); - } - - parser = X509StreamParser.getInstance("CRL", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 0) - { - fail("wrong number of CRLs found - expected 0"); - } - - parser = X509StreamParser.getInstance("AttributeCertificate", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 0) - { - fail("wrong number of Attribute Certificates found - expected 0"); - } - - // data with absent certificates and CRLs - sigData = new SignedData(new DERSet(), new ContentInfo(CMSObjectIdentifiers.data, null), null, null, new DERSet()); - - info = new ContentInfo(CMSObjectIdentifiers.signedData, sigData); - - parser = X509StreamParser.getInstance("Certificate", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 0) - { - fail("wrong number of Certificates found - expected 0"); - } - - parser = X509StreamParser.getInstance("CRL", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 0) - { - fail("wrong number of CRLs found - expected 0"); - } - - parser = X509StreamParser.getInstance("AttributeCertificate", "BC"); - - parser.init(info.getEncoded()); - - res = parser.readAll(); - - if (res.size() != 0) - { - fail("wrong number of Attribute Certificates found - expected 0"); - } - } - - public String getName() - { - return "X509StreamParser"; - } - - public static void main(String[] args) - { - Security.addProvider(new BouncyCastleProvider()); - - runTest(new X509StreamParserTest()); - } - -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/nist/NistCertPathReviewerTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/nist/NistCertPathReviewerTest.java deleted file mode 100644 index 1ee8dede..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/nist/NistCertPathReviewerTest.java +++ /dev/null @@ -1,713 +0,0 @@ -package org.bouncycastle.jce.provider.test.nist; - -import java.io.FileInputStream; -import java.io.InputStream; -import java.security.Security; -import java.security.cert.CertPath; -import java.security.cert.CertStore; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.PKIXParameters; -import java.security.cert.TrustAnchor; -import java.security.cert.X509CRL; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.TimeZone; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import org.bouncycastle.asn1.ASN1Encoding; -import org.bouncycastle.asn1.ASN1Primitive; -import org.bouncycastle.asn1.x509.X509Extension; -import org.bouncycastle.i18n.ErrorBundle; -import org.bouncycastle.x509.PKIXCertPathReviewer; -import org.bouncycastle.x509.extension.X509ExtensionUtil; - -/** - * NIST CertPath test data for RFC 3280 - */ -public class NistCertPathReviewerTest - extends TestCase -{ - private static final String TEST_DATA_HOME = "bc.test.data.home"; - - private static final String GOOD_CA_CERT = "GoodCACert"; - - private static final String GOOD_CA_CRL = "GoodCACRL"; - - private static final String TRUST_ANCHOR_ROOT_CRL = "TrustAnchorRootCRL"; - - private static final String TRUST_ANCHOR_ROOT_CERTIFICATE = "TrustAnchorRootCertificate"; - - private static final char[] PKCS12_PASSWORD = "password".toCharArray(); - - private static String NIST_TEST_POLICY_1 = "2.16.840.1.101.3.2.1.48.1"; - private static String NIST_TEST_POLICY_2 = "2.16.840.1.101.3.2.1.48.2"; - private static String NIST_TEST_POLICY_3 = "2.16.840.1.101.3.2.1.48.3"; - - private static Map certs = new HashMap(); - private static Map crls = new HashMap(); - - private static Set noPolicies = Collections.EMPTY_SET; - private static Set nistTestPolicy1 = Collections.singleton(NIST_TEST_POLICY_1); - private static Set nistTestPolicy2 = Collections.singleton(NIST_TEST_POLICY_2); - private static Set nistTestPolicy3 = Collections.singleton(NIST_TEST_POLICY_3); - private static Set nistTestPolicy1And2 = new HashSet(Arrays.asList(new String[] { NIST_TEST_POLICY_1, NIST_TEST_POLICY_2 })); - - public void testValidSignaturesTest1() - throws Exception - { - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "ValidCertificatePathTest1EE", GOOD_CA_CERT}, - new String[] { GOOD_CA_CRL, TRUST_ANCHOR_ROOT_CRL }); - } - - public void testInvalidCASignatureTest2() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "ValidCertificatePathTest1EE", "BadSignedCACert" }, - new String[] { "BadSignedCACRL", TRUST_ANCHOR_ROOT_CRL}, - 1, - "CertPathReviewer.signatureNotVerified", - "The certificate signature is invalid. A java.security.SignatureException occurred."); - } - - public void testInvalidEESignatureTest3() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "InvalidEESignatureTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }, - 0, - "CertPathReviewer.signatureNotVerified", - "The certificate signature is invalid. A java.security.SignatureException occurred."); - } - - public void testValidDSASignaturesTest4() - throws Exception - { - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "DSACACert", "ValidDSASignaturesTest4EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "DSACACRL" }); - } - /* - public void testValidDSAParameterInheritanceTest5() - throws Exception - { - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "DSACACert", "DSAParametersInheritedCACert", "ValidDSAParameterInheritanceTest5EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "DSACACRL", "DSAParametersInheritedCACRL" }); - } - */ - public void testInvalidDSASignaturesTest6() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "DSACACert", "InvalidDSASignatureTest6EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "DSACACRL" }, - 0, - "CertPathReviewer.signatureNotVerified", - "The certificate signature is invalid. A java.security.SignatureException occurred."); - } - - public void testCANotBeforeDateTest1() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "BadnotBeforeDateCACert", "InvalidCAnotBeforeDateTest1EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "BadnotBeforeDateCACRL" }, - 1, - "CertPathReviewer.certificateNotYetValid", - "Could not validate the certificate. Certificate is not valid until Jan 1, 2047 12:01:00 PM GMT."); - } - - public void testInvalidEENotBeforeDateTest2() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "InvalidEEnotBeforeDateTest2EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }, - 0, - "CertPathReviewer.certificateNotYetValid", - "Could not validate the certificate. Certificate is not valid until Jan 1, 2047 12:01:00 PM GMT."); - } - - public void testValidPre2000UTCNotBeforeDateTest3() - throws Exception - { - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "Validpre2000UTCnotBeforeDateTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }); - } - - public void testValidGeneralizedTimeNotBeforeDateTest4() - throws Exception - { - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "ValidGeneralizedTimenotBeforeDateTest4EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }); - } - - public void testInvalidCANotAfterDateTest5() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "BadnotAfterDateCACert", "InvalidCAnotAfterDateTest5EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "BadnotAfterDateCACRL" }, - 1, - "CertPathReviewer.certificateExpired", - "Could not validate the certificate. Certificate expired on Jan 1, 2002 12:01:00 PM GMT."); - } - - public void testInvalidEENotAfterDateTest6() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "InvalidEEnotAfterDateTest6EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }, - 0, - "CertPathReviewer.certificateExpired", - "Could not validate the certificate. Certificate expired on Jan 1, 2002 12:01:00 PM GMT."); - } - - public void testInvalidValidPre2000UTCNotAfterDateTest7() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "Invalidpre2000UTCEEnotAfterDateTest7EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }, - 0, - "CertPathReviewer.certificateExpired", - "Could not validate the certificate. Certificate expired on Jan 1, 1999 12:01:00 PM GMT."); - } - - public void testInvalidNegativeSerialNumberTest15() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "NegativeSerialNumberCACert", "InvalidNegativeSerialNumberTest15EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "NegativeSerialNumberCACRL" }, - 0, - "CertPathReviewer.certRevoked", - "The certificate was revoked at Apr 19, 2001 2:57:20 PM GMT. Reason: Key Compromise."); - } - - // - // 4.8 Certificate Policies - // - public void testAllCertificatesSamePolicyTest1() - throws Exception - { - String[] certList = new String[] { GOOD_CA_CERT, "ValidCertificatePathTest1EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - certList, - crlList, - noPolicies); - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - certList, - crlList, - nistTestPolicy1); - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - certList, - crlList, - nistTestPolicy2, - -1, - "CertPathReviewer.invalidPolicy", - "Path processing failed on policy."); - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - certList, - crlList, - nistTestPolicy1And2); - } - - public void testAllCertificatesNoPoliciesTest2() - throws Exception - { - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "NoPoliciesCACert", "AllCertificatesNoPoliciesTest2EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "NoPoliciesCACRL" }); - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "NoPoliciesCACert", "AllCertificatesNoPoliciesTest2EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "NoPoliciesCACRL" }, - noPolicies, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest3() - throws Exception - { - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "PoliciesP2subCACert", "DifferentPoliciesTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "PoliciesP2subCACRL" }); - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "PoliciesP2subCACert", "DifferentPoliciesTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "PoliciesP2subCACRL" }, - noPolicies, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "PoliciesP2subCACert", "DifferentPoliciesTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "PoliciesP2subCACRL" }, - nistTestPolicy1And2, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest4() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "GoodsubCACert", "DifferentPoliciesTest4EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "GoodsubCACRL" }, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest5() - throws Exception - { - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "PoliciesP2subCA2Cert", "DifferentPoliciesTest5EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "PoliciesP2subCA2CRL" }, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - } - - public void testOverlappingPoliciesTest6() - throws Exception - { - String[] certList = new String[] { "PoliciesP1234CACert", "PoliciesP1234subCAP123Cert", "PoliciesP1234subsubCAP123P12Cert", "OverlappingPoliciesTest6EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP1234CACRL", "PoliciesP1234subCAP123CRL", "PoliciesP1234subsubCAP123P12CRL" }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "CertPathReviewer.invalidPolicy", - "Path processing failed on policy."); - } - - public void testDifferentPoliciesTest7() - throws Exception - { - String[] certList = new String[] { "PoliciesP123CACert", "PoliciesP123subCAP12Cert", "PoliciesP123subsubCAP12P1Cert", "DifferentPoliciesTest7EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP123CACRL", "PoliciesP123subCAP12CRL", "PoliciesP123subsubCAP12P1CRL" }; - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest8() - throws Exception - { - String[] certList = new String[] { "PoliciesP12CACert", "PoliciesP12subCAP1Cert", "PoliciesP12subsubCAP1P2Cert", "DifferentPoliciesTest8EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP12CACRL", "PoliciesP12subCAP1CRL", "PoliciesP12subsubCAP1P2CRL" }; - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest9() - throws Exception - { - String[] certList = new String[] { "PoliciesP123CACert", "PoliciesP123subCAP12Cert", "PoliciesP123subsubCAP12P2Cert", "PoliciesP123subsubsubCAP12P2P1Cert", "DifferentPoliciesTest9EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP123CACRL", "PoliciesP123subCAP12CRL", "PoliciesP123subsubCAP2P2CRL", "PoliciesP123subsubsubCAP12P2P1CRL" }; - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - } - - public void testAllCertificatesSamePoliciesTest10() - throws Exception - { - String[] certList = new String[] { "PoliciesP12CACert", "AllCertificatesSamePoliciesTest10EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP12CACRL" }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); - } - - public void testAllCertificatesAnyPolicyTest11() - throws Exception - { - String[] certList = new String[] { "anyPolicyCACert", "AllCertificatesanyPolicyTest11EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "anyPolicyCACRL" }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - } - - public void testDifferentPoliciesTest12() - throws Exception - { - String[] certList = new String[] { "PoliciesP3CACert", "DifferentPoliciesTest12EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP3CACRL" }; - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, - -1, - "CertPathReviewer.noValidPolicyTree", - "Policy checking failed: no valid policy tree found when one expected."); - } - - public void testAllCertificatesSamePoliciesTest13() - throws Exception - { - String[] certList = new String[] { "PoliciesP123CACert", "AllCertificatesSamePoliciesTest13EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP123CACRL" }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy3); - } - - public void testAnyPolicyTest14() - throws Exception - { - String[] certList = new String[] { "anyPolicyCACert", "AnyPolicyTest14EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "anyPolicyCACRL" }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "CertPathReviewer.invalidPolicy", - "Path processing failed on policy."); - } - - public void testUserNoticeQualifierTest15() - throws Exception - { - String[] certList = new String[] { "UserNoticeQualifierTest15EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "CertPathReviewer.invalidPolicy", - "Path processing failed on policy."); - } - - public void testUserNoticeQualifierTest16() - throws Exception - { - String[] certList = new String[] { GOOD_CA_CERT, "UserNoticeQualifierTest16EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "CertPathReviewer.invalidPolicy", - "Path processing failed on policy."); - } - - public void testUserNoticeQualifierTest17() - throws Exception - { - String[] certList = new String[] { GOOD_CA_CERT, "UserNoticeQualifierTest17EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "CertPathReviewer.invalidPolicy", - "Path processing failed on policy."); - } - - public void testUserNoticeQualifierTest18() - throws Exception - { - String[] certList = new String[] { "PoliciesP12CACert", "UserNoticeQualifierTest18EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP12CACRL" }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); - } - - public void testUserNoticeQualifierTest19() - throws Exception - { - String[] certList = new String[] { "UserNoticeQualifierTest19EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL }; - - doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "CertPathReviewer.invalidPolicy", - "Path processing failed on policy."); - } - - private void doAcceptingTest( - String trustAnchor, - String[] certs, - String[] crls) - throws Exception - { - PKIXCertPathReviewer result = doTest(trustAnchor,certs,crls); - if (!result.isValidCertPath()) - { - fail("path rejected when should be accepted"); - } - } - - private void doAcceptingTest( - String trustAnchor, - String[] certs, - String[] crls, - Set policies) - throws Exception - { - PKIXCertPathReviewer result = doTest(trustAnchor,certs,crls,policies); - if (!result.isValidCertPath()) - { - fail("path rejected when should be accepted"); - } - } - - private void doErrorTest( - String trustAnchor, - String[] certs, - String[] crls, - int index, - String messageId, - String message) - throws Exception - { - PKIXCertPathReviewer result = doTest(trustAnchor, certs, crls); - if (result.isValidCertPath()) - { - fail("path accepted when should be rejected"); - } - else - { - ErrorBundle msg = (ErrorBundle) result.getErrors(index).iterator().next(); - assertEquals(messageId,msg.getId()); - assertEquals(message,msg.getText(Locale.ENGLISH,TimeZone.getTimeZone("GMT"))); - } - } - - private void doErrorTest( - String trustAnchor, - String[] certs, - String[] crls, - Set policies, - int index, - String messageId, - String message) - throws Exception - { - PKIXCertPathReviewer result = doTest(trustAnchor, certs, crls, policies); - if (result.isValidCertPath()) - { - fail("path accepted when should be rejected"); - } - else - { - ErrorBundle msg = (ErrorBundle) result.getErrors(index).iterator().next(); - assertEquals(messageId,msg.getId()); - assertEquals(message,msg.getText(Locale.ENGLISH,TimeZone.getTimeZone("GMT"))); - } - } - - private PKIXCertPathReviewer doTest( - String trustAnchor, - String[] certs, - String[] crls) - throws Exception - { - return doTest(trustAnchor, certs, crls, null); - } - - private PKIXCertPathReviewer doTest( - String trustAnchor, - String[] certs, - String[] crls, - Set policies) - throws Exception - { - Set trustedSet = Collections.singleton(getTrustAnchor(trustAnchor)); - List certsAndCrls = new ArrayList(); - X509Certificate endCert = loadCert(certs[certs.length - 1]); - - for (int i = 0; i != certs.length - 1; i++) - { - certsAndCrls.add(loadCert(certs[i])); - } - - certsAndCrls.add(endCert); - - CertPath certPath = CertificateFactory.getInstance("X.509","BC").generateCertPath(certsAndCrls); - - for (int i = 0; i != crls.length; i++) - { - certsAndCrls.add(loadCrl(crls[i])); - } - - CertStore store = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certsAndCrls), "BC"); - - //CertPathValidator validator = CertPathValidator.getInstance("PKIX","BC"); - PKIXCertPathReviewer reviewer; - PKIXParameters params = new PKIXParameters(trustedSet); - - params.addCertStore(store); - params.setRevocationEnabled(true); - params.setDate(new GregorianCalendar(2010, 1, 1).getTime()); - - if (policies != null) - { - params.setExplicitPolicyRequired(true); - params.setInitialPolicies(policies); - } - - reviewer = new PKIXCertPathReviewer(certPath,params); - - return reviewer; - } - - private X509Certificate loadCert( - String certName) - { - X509Certificate cert = (X509Certificate)certs.get(certName); - - if (cert != null) - { - return cert; - } - - try - { - InputStream in = new FileInputStream(getPkitsHome() + "/certs/" + certName + ".crt"); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - cert = (X509Certificate)fact.generateCertificate(in); - - certs.put(certName, cert); - - return cert; - } - catch (Exception e) - { - throw new IllegalStateException("exception loading certificate " + certName + ": " + e); - } - } - - private X509CRL loadCrl( - String crlName) - throws Exception - { - X509CRL crl = (X509CRL)certs.get(crlName); - - if (crl != null) - { - return crl; - } - - try - { - InputStream in = new FileInputStream(getPkitsHome() + "/crls/" + crlName + ".crl"); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - crl = (X509CRL)fact.generateCRL(in); - - crls.put(crlName, crl); - - return crl; - } - catch (Exception e) - { - throw new IllegalStateException("exception loading CRL: " + crlName); - } - } - - private TrustAnchor getTrustAnchor(String trustAnchorName) - throws Exception - { - X509Certificate cert = loadCert(trustAnchorName); - byte[] extBytes = cert.getExtensionValue(X509Extension.nameConstraints.getId()); - - if (extBytes != null) - { - ASN1Primitive extValue = X509ExtensionUtil.fromExtensionValue(extBytes); - - return new TrustAnchor(cert, extValue.getEncoded(ASN1Encoding.DER)); - } - - return new TrustAnchor(cert, null); - } - - private String getPkitsHome() - { - String dataHome = System.getProperty(TEST_DATA_HOME); - - if (dataHome == null) - { - throw new IllegalStateException(TEST_DATA_HOME + " property not set"); - } - - return dataHome + "/PKITS"; - } - - public static void main (String[] args) - throws Exception - { - junit.textui.TestRunner.run(suite()); - } - - public void setUp() - { - if (Security.getProvider("BC") == null) - { - Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); - } - } - - public static Test suite() - throws Exception - { - TestSuite suite = new TestSuite("NIST CertPath Tests"); - - suite.addTestSuite(NistCertPathReviewerTest.class); - - return suite; - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/nist/NistCertPathTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/nist/NistCertPathTest.java deleted file mode 100644 index af94e4e1..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/nist/NistCertPathTest.java +++ /dev/null @@ -1,873 +0,0 @@ -package org.bouncycastle.jce.provider.test.nist; - -import java.io.FileInputStream; -import java.io.InputStream; -import java.security.Security; -import java.security.cert.CertPath; -import java.security.cert.CertPathBuilder; -import java.security.cert.CertPathBuilderException; -import java.security.cert.CertPathValidator; -import java.security.cert.CertPathValidatorException; -import java.security.cert.CertStore; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.PKIXBuilderParameters; -import java.security.cert.PKIXCertPathBuilderResult; -import java.security.cert.PKIXCertPathValidatorResult; -import java.security.cert.PKIXParameters; -import java.security.cert.TrustAnchor; -import java.security.cert.X509CRL; -import java.security.cert.X509CertSelector; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import org.bouncycastle.asn1.ASN1Encodable; -import org.bouncycastle.asn1.ASN1Encoding; -import org.bouncycastle.asn1.ASN1OctetString; -import org.bouncycastle.asn1.ASN1Primitive; -import org.bouncycastle.asn1.x509.Extension; - -/** - * NIST CertPath test data for RFC 3280 - */ -public class NistCertPathTest - extends TestCase -{ - private static final String TEST_DATA_HOME = "bc.test.data.home"; - - private static final String GOOD_CA_CERT = "GoodCACert"; - - private static final String GOOD_CA_CRL = "GoodCACRL"; - - private static final String TRUST_ANCHOR_ROOT_CRL = "TrustAnchorRootCRL"; - - private static final String TRUST_ANCHOR_ROOT_CERTIFICATE = "TrustAnchorRootCertificate"; - - private static final char[] PKCS12_PASSWORD = "password".toCharArray(); - - private static final String ANY_POLICY = "2.5.29.32.0"; - private static final String NIST_TEST_POLICY_1 = "2.16.840.1.101.3.2.1.48.1"; - private static final String NIST_TEST_POLICY_2 = "2.16.840.1.101.3.2.1.48.2"; - private static final String NIST_TEST_POLICY_3 = "2.16.840.1.101.3.2.1.48.3"; - - private static Map certs = new HashMap(); - private static Map crls = new HashMap(); - - private static Set noPolicies = Collections.EMPTY_SET; - private static Set anyPolicy = Collections.singleton(ANY_POLICY); - private static Set nistTestPolicy1 = Collections.singleton(NIST_TEST_POLICY_1); - private static Set nistTestPolicy2 = Collections.singleton(NIST_TEST_POLICY_2); - private static Set nistTestPolicy3 = Collections.singleton(NIST_TEST_POLICY_3); - private static Set nistTestPolicy1And2 = new HashSet(Arrays.asList(new String[] { NIST_TEST_POLICY_1, NIST_TEST_POLICY_2 })); - - public void setUp() - { - if (Security.getProvider("BC") == null) - { - Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); - } - } - - public void testValidSignaturesTest1() - throws Exception - { - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "ValidCertificatePathTest1EE", GOOD_CA_CERT}, - new String[] { GOOD_CA_CRL, TRUST_ANCHOR_ROOT_CRL }); - } - - public void testInvalidCASignatureTest2() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "ValidCertificatePathTest1EE", "BadSignedCACert" }, - new String[] { "BadSignedCACRL", TRUST_ANCHOR_ROOT_CRL}, - 1, - "TrustAnchor found but certificate validation failed."); - } - - public void testInvalidEESignatureTest3() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "InvalidEESignatureTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }, - 0, - "Could not validate certificate signature."); - } - - public void testValidDSASignaturesTest4() - throws Exception - { - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "DSACACert", "ValidDSASignaturesTest4EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "DSACACRL" }); - } - - // 4.1.5 - public void testValidDSAParameterInheritanceTest5() - throws Exception - { - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "DSACACert", "DSAParametersInheritedCACert", "ValidDSAParameterInheritanceTest5EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "DSACACRL", "DSAParametersInheritedCACRL" }); - } - - public void testInvalidDSASignaturesTest6() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "DSACACert", "InvalidDSASignatureTest6EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "DSACACRL" }, - 0, - "Could not validate certificate signature."); - } - - public void testCANotBeforeDateTest1() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "BadnotBeforeDateCACert", "InvalidCAnotBeforeDateTest1EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "BadnotBeforeDateCACRL" }, - 1, - "Could not validate certificate: certificate not valid till 20470101120100GMT+00:00"); - } - - public void testInvalidEENotBeforeDateTest2() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "InvalidEEnotBeforeDateTest2EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }, - 0, - "Could not validate certificate: certificate not valid till 20470101120100GMT+00:00"); - } - - public void testValidPre2000UTCNotBeforeDateTest3() - throws Exception - { - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "Validpre2000UTCnotBeforeDateTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }); - } - - public void testValidGeneralizedTimeNotBeforeDateTest4() - throws Exception - { - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "ValidGeneralizedTimenotBeforeDateTest4EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }); - } - - public void testInvalidCANotAfterDateTest5() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "BadnotAfterDateCACert", "InvalidCAnotAfterDateTest5EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "BadnotAfterDateCACRL" }, - 1, - "Could not validate certificate: certificate expired on 20020101120100GMT+00:00"); - } - - public void testInvalidEENotAfterDateTest6() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "InvalidEEnotAfterDateTest6EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }, - 0, - "Could not validate certificate: certificate expired on 20020101120100GMT+00:00"); - } - - public void testInvalidValidPre2000UTCNotAfterDateTest7() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "Invalidpre2000UTCEEnotAfterDateTest7EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }, - 0, - "Could not validate certificate: certificate expired on 19990101120100GMT+00:00"); - } - - public void testInvalidNegativeSerialNumberTest15() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "NegativeSerialNumberCACert", "InvalidNegativeSerialNumberTest15EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "NegativeSerialNumberCACRL" }, - 0, - "Certificate revocation after 2001-04-19 14:57:20 +0000", "reason: keyCompromise"); - } - - // - // 4.8 Certificate Policies - // - public void testAllCertificatesSamePolicyTest1() - throws Exception - { - String[] certList = new String[] { GOOD_CA_CERT, "ValidCertificatePathTest1EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - certList, - crlList, - noPolicies); - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - certList, - crlList, - nistTestPolicy1); - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - certList, - crlList, - nistTestPolicy2, - -1, - "Path processing failed on policy."); - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - certList, - crlList, - nistTestPolicy1And2); - } - - public void testAllCertificatesNoPoliciesTest2() - throws Exception - { - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "NoPoliciesCACert", "AllCertificatesNoPoliciesTest2EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "NoPoliciesCACRL" }); - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { "NoPoliciesCACert", "AllCertificatesNoPoliciesTest2EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, "NoPoliciesCACRL" }, - noPolicies, - 1, - "No valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest3() - throws Exception - { - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "PoliciesP2subCACert", "DifferentPoliciesTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "PoliciesP2subCACRL" }); - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "PoliciesP2subCACert", "DifferentPoliciesTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "PoliciesP2subCACRL" }, - noPolicies, - 1, - "No valid policy tree found when one expected."); - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "PoliciesP2subCACert", "DifferentPoliciesTest3EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "PoliciesP2subCACRL" }, - nistTestPolicy1And2, - 1, - "No valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest4() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "GoodsubCACert", "DifferentPoliciesTest4EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "GoodsubCACRL" }, - 0, - "No valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest5() - throws Exception - { - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, - new String[] { GOOD_CA_CERT, "PoliciesP2subCA2Cert", "DifferentPoliciesTest5EE" }, - new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL, "PoliciesP2subCA2CRL" }, - 0, - "No valid policy tree found when one expected."); - } - - public void testOverlappingPoliciesTest6() - throws Exception - { - String[] certList = new String[] { "PoliciesP1234CACert", "PoliciesP1234subCAP123Cert", "PoliciesP1234subsubCAP123P12Cert", "OverlappingPoliciesTest6EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP1234CACRL", "PoliciesP1234subCAP123CRL", "PoliciesP1234subsubCAP123P12CRL" }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "Path processing failed on policy."); - } - - public void testDifferentPoliciesTest7() - throws Exception - { - String[] certList = new String[] { "PoliciesP123CACert", "PoliciesP123subCAP12Cert", "PoliciesP123subsubCAP12P1Cert", "DifferentPoliciesTest7EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP123CACRL", "PoliciesP123subCAP12CRL", "PoliciesP123subsubCAP12P1CRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, - 0, - "No valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest8() - throws Exception - { - String[] certList = new String[] { "PoliciesP12CACert", "PoliciesP12subCAP1Cert", "PoliciesP12subsubCAP1P2Cert", "DifferentPoliciesTest8EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP12CACRL", "PoliciesP12subCAP1CRL", "PoliciesP12subsubCAP1P2CRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, - 1, - "No valid policy tree found when one expected."); - } - - public void testDifferentPoliciesTest9() - throws Exception - { - String[] certList = new String[] { "PoliciesP123CACert", "PoliciesP123subCAP12Cert", "PoliciesP123subsubCAP12P2Cert", "PoliciesP123subsubsubCAP12P2P1Cert", "DifferentPoliciesTest9EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP123CACRL", "PoliciesP123subCAP12CRL", "PoliciesP123subsubCAP2P2CRL", "PoliciesP123subsubsubCAP12P2P1CRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, - 1, - "No valid policy tree found when one expected."); - } - - public void testAllCertificatesSamePoliciesTest10() - throws Exception - { - String[] certList = new String[] { "PoliciesP12CACert", "AllCertificatesSamePoliciesTest10EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP12CACRL" }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); - } - - public void testAllCertificatesAnyPolicyTest11() - throws Exception - { - String[] certList = new String[] { "anyPolicyCACert", "AllCertificatesanyPolicyTest11EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "anyPolicyCACRL" }; - - PKIXCertPathValidatorResult result = doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - - result = doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - } - - public void testDifferentPoliciesTest12() - throws Exception - { - String[] certList = new String[] { "PoliciesP3CACert", "DifferentPoliciesTest12EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP3CACRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, - 0, - "No valid policy tree found when one expected."); - } - - public void testAllCertificatesSamePoliciesTest13() - throws Exception - { - String[] certList = new String[] { "PoliciesP123CACert", "AllCertificatesSamePoliciesTest13EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP123CACRL" }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy3); - } - - public void testAnyPolicyTest14() - throws Exception - { - String[] certList = new String[] { "anyPolicyCACert", "AnyPolicyTest14EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "anyPolicyCACRL" }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "Path processing failed on policy."); - } - - public void testUserNoticeQualifierTest15() - throws Exception - { - String[] certList = new String[] { "UserNoticeQualifierTest15EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "Path processing failed on policy."); - } - - public void testUserNoticeQualifierTest16() - throws Exception - { - String[] certList = new String[] { GOOD_CA_CERT, "UserNoticeQualifierTest16EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }; - - PKIXCertPathValidatorResult result = doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - - result = doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "Path processing failed on policy."); - } - - public void testUserNoticeQualifierTest17() - throws Exception - { - String[] certList = new String[] { GOOD_CA_CERT, "UserNoticeQualifierTest17EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "Path processing failed on policy."); - } - - public void testUserNoticeQualifierTest18() - throws Exception - { - String[] certList = new String[] { "PoliciesP12CACert", "UserNoticeQualifierTest18EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP12CACRL" }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); - } - - public void testUserNoticeQualifierTest19() - throws Exception - { - String[] certList = new String[] { "UserNoticeQualifierTest19EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, - -1, - "Path processing failed on policy."); - } - - public void testInvalidInhibitPolicyMappingTest1() - throws Exception - { - String[] certList = new String[] { "inhibitPolicyMapping0CACert", "inhibitPolicyMapping0subCACert", "InvalidinhibitPolicyMappingTest1EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "inhibitPolicyMapping0CACRL", "inhibitPolicyMapping0subCACRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null, - 0, - "No valid policy tree found when one expected."); - } - - public void testValidinhibitPolicyMappingTest2() - throws Exception - { - String[] certList = new String[] { "inhibitPolicyMapping1P12CACert", "inhibitPolicyMapping1P12subCACert", "ValidinhibitPolicyMappingTest2EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "inhibitPolicyMapping1P12CACRL", "inhibitPolicyMapping1P12subCACRL" }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); - } - - // 4.12.7 - public void testValidSelfIssuedinhibitAnyPolicyTest7() - throws Exception - { - String[] certList = new String[] { "inhibitAnyPolicy1CACert", "inhibitAnyPolicy1SelfIssuedCACert", "inhibitAnyPolicy1subCA2Cert", "ValidSelfIssuedinhibitAnyPolicyTest7EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "inhibitAnyPolicy1CACRL", "inhibitAnyPolicy1subCA2CRL" }; - - doBuilderTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null, false, false); - } - - // 4.4.19 - public void testValidSeparateCertificateandCRLKeysTest19() - throws Exception - { - String[] certList = new String[] { "SeparateCertificateandCRLKeysCertificateSigningCACert", "SeparateCertificateandCRLKeysCRLSigningCert", "ValidSeparateCertificateandCRLKeysTest19EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "SeparateCertificateandCRLKeysCRL" }; - - doBuilderTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null, false, false); - } - - public void testValidpathLenConstraintTest13() - throws Exception - { - String[] certList = new String[] { "pathLenConstraint6CACert", "pathLenConstraint6subCA4Cert", "pathLenConstraint6subsubCA41Cert", "pathLenConstraint6subsubsubCA41XCert", "ValidpathLenConstraintTest13EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "pathLenConstraint6CACRL", "pathLenConstraint6subCA4CRL", "pathLenConstraint6subsubCA41CRL", "pathLenConstraint6subsubsubCA41XCRL" }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null); - } - - // 4.4.10 - public void testInvalidUnknownCRLExtensionTest10() - throws Exception - { - String[] certList = new String[] { "UnknownCRLExtensionCACert", "InvalidUnknownCRLExtensionTest10EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "UnknownCRLExtensionCACRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null, - 0, - "CRL contains unsupported critical extensions."); - - } - - // 4.14.3 - public void testInvaliddistributionPointTest3() - throws Exception - { - String[] certList = new String[] { "distributionPoint1CACert", "InvaliddistributionPointTest3EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "distributionPoint1CACRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null, - 0, - "No match for certificate CRL issuing distribution point name to cRLIssuer CRL distribution point."); - } - - // 4.14.5 - public void testValiddistributionPointTest5() - throws Exception - { - String[] certList = new String[] { "distributionPoint2CACert", "ValiddistributionPointTest5EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "distributionPoint2CACRL" }; - - doTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null); - } - - - // 4.14.8 - public void testInvaliddistributionPointTest8() - throws Exception - { - String[] certList = new String[] { "distributionPoint2CACert", "InvaliddistributionPointTest8EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "distributionPoint2CACRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null, - 0, - "No match for certificate CRL issuing distribution point name to cRLIssuer CRL distribution point."); - } - - // 4.14.9 - public void testInvaliddistributionPointTest9() - throws Exception - { - String[] certList = new String[] { "distributionPoint2CACert", "InvaliddistributionPointTest9EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "distributionPoint2CACRL" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null, - 0, - "No match for certificate CRL issuing distribution point name to cRLIssuer CRL distribution point."); - } - - // 4.14.17 - public void testInvalidonlySomeReasonsTest17() - throws Exception - { - String[] certList = new String[] { "onlySomeReasonsCA2Cert", "InvalidonlySomeReasonsTest17EE" }; - String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "onlySomeReasonsCA2CRL1", "onlySomeReasonsCA2CRL2" }; - - doExceptionTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, null, - 0, - "Certificate status could not be determined."); - } - - // section 4.14: tests 17, 24, 25, 30, 31, 32, 33, 35 - - // section 4.15: tests 5, 7 - private void doExceptionTest( - String trustAnchor, - String[] certs, - String[] crls, - int index, - String message) - throws Exception - { - try - { - doTest(trustAnchor, certs, crls); - - fail("path accepted when should be rejected"); - } - catch (CertPathValidatorException e) - { - assertEquals(index, e.getIndex()); - assertEquals(message, e.getMessage()); - } - } - - private void doExceptionTest( - String trustAnchor, - String[] certs, - String[] crls, - Set policies, - int index, - String message) - throws Exception - { - try - { - doTest(trustAnchor, certs, crls, policies); - - fail("path accepted when should be rejected"); - } - catch (CertPathValidatorException e) - { - assertEquals(index, e.getIndex()); - assertEquals(message, e.getMessage()); - } - } - - private void doExceptionTest( - String trustAnchor, - String[] certs, - String[] crls, - int index, - String mesStart, - String mesEnd) - throws Exception - { - try - { - doTest(trustAnchor, certs, crls); - - fail("path accepted when should be rejected"); - } - catch (CertPathValidatorException e) - { - assertEquals(index, e.getIndex()); - assertTrue(e.getMessage().startsWith(mesStart)); - assertTrue(e.getMessage().endsWith(mesEnd)); - } - } - - private PKIXCertPathValidatorResult doTest( - String trustAnchor, - String[] certs, - String[] crls) - throws Exception - { - return doTest(trustAnchor, certs, crls, null); - } - - private PKIXCertPathValidatorResult doTest( - String trustAnchor, - String[] certs, - String[] crls, - Set policies) - throws Exception - { - Set trustedSet = Collections.singleton(getTrustAnchor(trustAnchor)); - List certsAndCrls = new ArrayList(); - X509Certificate endCert = loadCert(certs[certs.length - 1]); - - for (int i = 0; i != certs.length - 1; i++) - { - certsAndCrls.add(loadCert(certs[i])); - } - - certsAndCrls.add(endCert); - - CertPath certPath = CertificateFactory.getInstance("X.509","BC").generateCertPath(certsAndCrls); - - for (int i = 0; i != crls.length; i++) - { - certsAndCrls.add(loadCrl(crls[i])); - } - - CertStore store = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certsAndCrls), "BC"); - - CertPathValidator validator = CertPathValidator.getInstance("PKIX","BC"); - PKIXParameters params = new PKIXParameters(trustedSet); - - params.addCertStore(store); - params.setRevocationEnabled(true); - params.setDate(new GregorianCalendar(2010, 1, 1).getTime()); - - if (policies != null) - { - params.setExplicitPolicyRequired(true); - params.setInitialPolicies(policies); - } - - return (PKIXCertPathValidatorResult)validator.validate(certPath, params); - } - - private PKIXCertPathBuilderResult doBuilderTest( - String trustAnchor, - String[] certs, - String[] crls, - Set initialPolicies, - boolean policyMappingInhibited, - boolean anyPolicyInhibited) - throws Exception - { - Set trustedSet = Collections.singleton(getTrustAnchor(trustAnchor)); - List certsAndCrls = new ArrayList(); - X509Certificate endCert = loadCert(certs[certs.length - 1]); - - for (int i = 0; i != certs.length - 1; i++) - { - certsAndCrls.add(loadCert(certs[i])); - } - - certsAndCrls.add(endCert); - - for (int i = 0; i != crls.length; i++) - { - certsAndCrls.add(loadCrl(crls[i])); - } - - CertStore store = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certsAndCrls), "BC"); - - CertPathBuilder builder = CertPathBuilder.getInstance("PKIX", "BC"); - - X509CertSelector endSelector = new X509CertSelector(); - - endSelector.setCertificate(endCert); - - PKIXBuilderParameters builderParams = new PKIXBuilderParameters(trustedSet, endSelector); - - if (initialPolicies != null) - { - builderParams.setInitialPolicies(initialPolicies); - builderParams.setExplicitPolicyRequired(true); - } - if (policyMappingInhibited) - { - builderParams.setPolicyMappingInhibited(policyMappingInhibited); - } - if (anyPolicyInhibited) - { - builderParams.setAnyPolicyInhibited(anyPolicyInhibited); - } - - builderParams.addCertStore(store); - builderParams.setDate(new GregorianCalendar(2010, 1, 1).getTime()); - - try - { - return (PKIXCertPathBuilderResult)builder.build(builderParams); - } - catch (CertPathBuilderException e) - { - throw (Exception)e.getCause(); - } - } - - private X509Certificate loadCert( - String certName) - { - X509Certificate cert = (X509Certificate)certs.get(certName); - - if (cert != null) - { - return cert; - } - - try - { - InputStream in = new FileInputStream(getPkitsHome() + "/certs/" + certName + ".crt"); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - cert = (X509Certificate)fact.generateCertificate(in); - - certs.put(certName, cert); - - return cert; - } - catch (Exception e) - { - throw new IllegalStateException("exception loading certificate " + certName + ": " + e); - } - } - - private X509CRL loadCrl( - String crlName) - throws Exception - { - X509CRL crl = (X509CRL)certs.get(crlName); - - if (crl != null) - { - return crl; - } - - try - { - InputStream in = new FileInputStream(getPkitsHome() + "/crls/" + crlName + ".crl"); - - CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); - - crl = (X509CRL)fact.generateCRL(in); - - crls.put(crlName, crl); - - return crl; - } - catch (Exception e) - { - throw new IllegalStateException("exception loading CRL: " + crlName); - } - } - - private TrustAnchor getTrustAnchor(String trustAnchorName) - throws Exception - { - X509Certificate cert = loadCert(trustAnchorName); - byte[] extBytes = cert.getExtensionValue(Extension.nameConstraints.getId()); - - if (extBytes != null) - { - ASN1Encodable extValue = ASN1Primitive.fromByteArray(ASN1OctetString.getInstance(extBytes).getOctets()); - - return new TrustAnchor(cert, extValue.toASN1Primitive().getEncoded(ASN1Encoding.DER)); - } - - return new TrustAnchor(cert, null); - } - - private String getPkitsHome() - { - String dataHome = System.getProperty(TEST_DATA_HOME); - - if (dataHome == null) - { - throw new IllegalStateException(TEST_DATA_HOME + " property not set"); - } - - return dataHome + "/PKITS"; - } - - public static void main (String[] args) - throws Exception - { - junit.textui.TestRunner.run(suite()); - } - - public static Test suite() - throws Exception - { - TestSuite suite = new TestSuite("NIST CertPath Tests"); - - suite.addTestSuite(NistCertPathTest.class); - - return suite; - } -} diff --git a/prov/src/test/java/org/bouncycastle/jce/provider/test/rsa3/RSA3CertTest.java b/prov/src/test/java/org/bouncycastle/jce/provider/test/rsa3/RSA3CertTest.java deleted file mode 100644 index 08ca1026..00000000 --- a/prov/src/test/java/org/bouncycastle/jce/provider/test/rsa3/RSA3CertTest.java +++ /dev/null @@ -1,131 +0,0 @@ -package org.bouncycastle.jce.provider.test.rsa3; - -import java.security.Security; -import java.security.Signature; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Marius Schilder's Bleichenbacher's Forgery Attack Tests - */ -public class RSA3CertTest - extends TestCase -{ - public void setUp() - { - if (Security.getProvider("BC") == null) - { - Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); - } - } - - public void testA() - throws Exception - { - doTest("self-testcase-A.pem"); - } - - public void testB() - throws Exception - { - doTest("self-testcase-B.pem"); - } - - public void testC() - throws Exception - { - doTest("self-testcase-C.pem"); - } - - public void testD() - throws Exception - { - doTest("self-testcase-D.pem"); - } - - public void testE() - throws Exception - { - doTest("self-testcase-E.pem"); - } - - public void testF() - throws Exception - { - doTest("self-testcase-F.pem"); - } - - public void testG() - throws Exception - { - doTest("self-testcase-G.pem"); - } - - public void testH() - throws Exception - { - doTest("self-testcase-H.pem"); - } - - public void testI() - throws Exception - { - doTest("self-testcase-I.pem"); - } - - public void testJ() - throws Exception - { - doTest("self-testcase-J.pem"); - } - - public void testL() - throws Exception - { - doTest("self-testcase-L.pem"); - } - - private void doTest( - String certName) - throws Exception - { - X509Certificate cert = loadCert(certName); - byte[] tbs = cert.getTBSCertificate(); - Signature sig = Signature.getInstance(cert.getSigAlgName(), "BC"); - - sig.initVerify(cert.getPublicKey()); - - sig.update(tbs); - - assertFalse(sig.verify(cert.getSignature())); - } - - private X509Certificate loadCert( - String certName) - throws Exception - { - CertificateFactory rd = CertificateFactory.getInstance("X.509", "BC"); - - return (X509Certificate)rd.generateCertificate(getClass().getResourceAsStream(certName)); - } - - public static void main (String[] args) - throws Exception - { - junit.textui.TestRunner.run(suite()); - } - - public static Test suite() - throws Exception - { - TestSuite suite = new TestSuite("Bleichenbacher's Forgery Attack Tests"); - - suite.addTestSuite(RSA3CertTest.class); - - return suite; - } -} |