summaryrefslogtreecommitdiffstats
path: root/luni/src/test/java/tests/api/javax/security/cert/X509CertificateTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'luni/src/test/java/tests/api/javax/security/cert/X509CertificateTest.java')
-rw-r--r--luni/src/test/java/tests/api/javax/security/cert/X509CertificateTest.java788
1 files changed, 0 insertions, 788 deletions
diff --git a/luni/src/test/java/tests/api/javax/security/cert/X509CertificateTest.java b/luni/src/test/java/tests/api/javax/security/cert/X509CertificateTest.java
deleted file mode 100644
index e937db9..0000000
--- a/luni/src/test/java/tests/api/javax/security/cert/X509CertificateTest.java
+++ /dev/null
@@ -1,788 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @author Alexander Y. Kleymenov
- * @version $Revision$
- */
-
-package tests.api.javax.security.cert;
-
-import dalvik.annotation.BrokenTest;
-import dalvik.annotation.SideEffect;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import tests.targets.security.cert.CertificateFactoryTestX509;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.math.BigInteger;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Principal;
-import java.security.Provider;
-import java.security.PublicKey;
-import java.security.Security;
-import java.security.SignatureException;
-import java.security.Provider.Service;
-import java.security.cert.CertificateFactory;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Set;
-import java.util.logging.Logger;
-
-import javax.security.cert.Certificate;
-import javax.security.cert.CertificateEncodingException;
-import javax.security.cert.CertificateException;
-import javax.security.cert.CertificateExpiredException;
-import javax.security.cert.CertificateNotYetValidException;
-import javax.security.cert.X509Certificate;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import tests.targets.security.cert.CertificateFactoryTestX509;
-
-/**
- */
-public class X509CertificateTest extends TestCase {
-
- // Testing data was generated by using of classes
- // from org.apache.harmony.security.asn1 package encoded
- // by org.apache.harmony.misc.Base64 class.
-
- private static String base64cert = "-----BEGIN CERTIFICATE-----\n"
- + "MIIC+jCCAragAwIBAgICAiswDAYHKoZIzjgEAwEBADAdMRswGQYDVQQKExJDZXJ0a"
- + "WZpY2F0ZSBJc3N1ZXIwIhgPMTk3MDAxMTIxMzQ2NDBaGA8xOTcwMDEyNDAzMzMyMF"
- + "owHzEdMBsGA1UEChMUU3ViamVjdCBPcmdhbml6YXRpb24wGTAMBgcqhkjOOAQDAQE"
- + "AAwkAAQIDBAUGBwiBAgCqggIAVaOCAhQwggIQMA8GA1UdDwEB/wQFAwMBqoAwEgYD"
- + "VR0TAQH/BAgwBgEB/wIBBTAUBgNVHSABAf8ECjAIMAYGBFUdIAAwZwYDVR0RAQH/B"
- + "F0wW4EMcmZjQDgyMi5OYW1lggdkTlNOYW1lpBcxFTATBgNVBAoTDE9yZ2FuaXphdG"
- + "lvboYaaHR0cDovL3VuaWZvcm0uUmVzb3VyY2UuSWSHBP///wCIByoDolyDsgMwDAY"
- + "DVR0eAQH/BAIwADAMBgNVHSQBAf8EAjAAMIGZBgNVHSUBAf8EgY4wgYsGBFUdJQAG"
- + "CCsGAQUFBwMBBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDB"
- + "AYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEFBQcDBwYIKwYBBQUHAwgGCCsGAQUFBw"
- + "MJBggrBgEFBQgCAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GA1UdNgEB/wQDAgE"
- + "BMA4GBCpNhgkBAf8EAwEBATBkBgNVHRIEXTBbgQxyZmNAODIyLk5hbWWCB2ROU05h"
- + "bWWkFzEVMBMGA1UEChMMT3JnYW5pemF0aW9uhhpodHRwOi8vdW5pZm9ybS5SZXNvd"
- + "XJjZS5JZIcE////AIgHKgOiXIOyAzAJBgNVHR8EAjAAMAoGA1UdIwQDAQEBMAoGA1"
- + "UdDgQDAQEBMAoGA1UdIQQDAQEBMAwGByqGSM44BAMBAQADMAAwLQIUAL4QvoazNWP"
- + "7jrj84/GZlhm09DsCFQCBKGKCGbrP64VtUt4JPmLjW1VxQA==\n"
- + "-----END CERTIFICATE-----";
-
- /*
- * a self-signed certificate
- */
- private static final String selfSignedCert = "-----BEGIN CERTIFICATE-----\n" +
- "MIIDPzCCAqigAwIBAgIBADANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJBTjEQ" +
- "MA4GA1UECBMHQW5kcm9pZDEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5k" +
- "cm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBh" +
- "bmRyb2lkLmNvbTAeFw0wOTAzMjAxNzAwMDZaFw0xMjAzMTkxNzAwMDZaMHkxCzAJ" +
- "BgNVBAYTAkFOMRAwDgYDVQQIEwdBbmRyb2lkMRAwDgYDVQQKEwdBbmRyb2lkMRAw" +
- "DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMSIwIAYJKoZIhvcNAQkB" +
- "FhNhbmRyb2lkQGFuZHJvaWQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB" +
- "gQCqQkDtkiEXmV8O5EK4y2Y9YyoWNDx70z4fqD+9muuzJGuM5NovMbxhBycuKHF3" +
- "WK60iXzrsAYkB1c8VHHbcUEFqz2fBdLKyxy/nYohlo8TYSVpEjt3vfc0sgmp4FKU" +
- "RDHO2z3rZPHWysV9L9ZvjeQpiwaYipU9epdBmvFmxQmCDQIDAQABo4HWMIHTMB0G" +
- "A1UdDgQWBBTnm32QKeqQC38IQXZOQSPoQyypAzCBowYDVR0jBIGbMIGYgBTnm32Q" +
- "KeqQC38IQXZOQSPoQyypA6F9pHsweTELMAkGA1UEBhMCQU4xEDAOBgNVBAgTB0Fu" +
- "ZHJvaWQxEDAOBgNVBAoTB0FuZHJvaWQxEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNV" +
- "BAMTB0FuZHJvaWQxIjAgBgkqhkiG9w0BCQEWE2FuZHJvaWRAYW5kcm9pZC5jb22C" +
- "AQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQAUmDApQu+r5rglS1WF" +
- "BKXE3R2LasFvbBwdw2E0MAc0TWqLVW91VW4VWMX4r+C+c7rZpYXXtRqFRCuI/czL" +
- "0e1GaUP/Wa6bXBcm2u7Iv2dVAaAOELmFSVTZeR57Lm9lT9kQLp24kmNndIsiDW3T" +
- "XZ4pY/k2kxungOKx8b8pGYE9Bw==\n" +
- "-----END CERTIFICATE-----";
-
- private java.security.cert.X509Certificate cert;
-
- private javax.security.cert.X509Certificate tbt_cert;
-
- private java.security.cert.X509Certificate javaCert;
-
- private Provider myProvider;
-
- private javax.security.cert.X509Certificate javaxCert;
-
- private java.security.cert.Certificate javaSSCert;
-
- private Provider mySSProvider;
-
- private Certificate javaxSSCert;
-
- @Override
- protected void setUp() throws Exception {
- try {
- ByteArrayInputStream bais = new ByteArrayInputStream(base64cert
- .getBytes());
- CertificateFactory cf = CertificateFactory.getInstance("X.509");
- this.cert = (java.security.cert.X509Certificate) cf
- .generateCertificate(bais);
- this.tbt_cert = X509Certificate.getInstance(cert.getEncoded());
-
- // non self signed cert
- this.javaCert = (java.security.cert.X509Certificate)cf
- .generateCertificate(new ByteArrayInputStream(selfSignedCert.getBytes()));
- this.javaxCert = X509Certificate.getInstance(javaCert.getEncoded());
- myProvider = cf.getProvider();
- Security.addProvider(myProvider);
-
- // self signed cert
- this.javaSSCert = cf.generateCertificate(new ByteArrayInputStream(
- selfSignedCert.getBytes()));
- this.javaxSSCert = X509Certificate.getInstance(javaCert
- .getEncoded());
- mySSProvider = cf.getProvider();
- Security.addProvider(mySSProvider);
-
- } catch (java.security.cert.CertificateException e) {
- // The requested certificate type is not available.
- // Test pass..
- this.cert = null;
- Logger.global.warning("Error in test setup: Certificate type not supported");
- } catch (javax.security.cert.CertificateException e) {
- // The requested certificate type is not available.
- // Test pass..
- this.cert = null;
- Logger.global.warning("Error in test setup: Certificate type not supported");
- }
- }
-
- /**
- * X509Certificate() constructor testing.
- * {@link X509Certificate#X509Certificate() }
- */
- public void testConstructor() {
- //Direct constructor, check if it throws an exception
- X509Certificate cert = new MyCertificate();
- }
-
- /**
- * getInstance(InputStream inStream) method testing.
- */
- public void testGetInstance1() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- try {
- ByteArrayInputStream bais = new ByteArrayInputStream(cert
- .getEncoded());
-
- X509Certificate.getInstance(bais);
- } catch (java.security.cert.CertificateEncodingException e) {
- fail("Unexpected CertificateEncodingException was thrown.");
- } catch (CertificateEncodingException e) {
- fail("Unexpected CertificateEncodingException was thrown.");
- } catch (CertificateException e) {
- // The requested certificate type is not available.
- // Test pass..
- }
-
- // Regression for HARMONY-756
- try {
- X509Certificate.getInstance((InputStream) null);
- fail("No expected CertificateException");
- } catch (CertificateException e) {
- // expected;
- }
- }
-
- /**
- * getInstance(byte[] certData) method testing.
- * @throws CertificateEncodingException
- * @throws java.security.cert.CertificateEncodingException
- */
- public void testGetInstance2() throws java.security.cert.CertificateEncodingException, CertificateEncodingException {
- boolean certificateException = false;
- X509Certificate c = null;
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- try {
- c = X509Certificate.getInstance(cert.getEncoded());
- } catch (java.security.cert.CertificateEncodingException e) {
- fail("Unexpected CertificateEncodingException was thrown.");
- } catch (CertificateException e) {
- // The requested certificate type is not available.
- // Test pass..
- certificateException = true;
-
- }
-
- if (! certificateException) {
- assertNotNull(c);
- assertTrue(Arrays.equals(c.getEncoded(),cert.getEncoded() ));
- }
-
- try {
- X509Certificate.getInstance(new byte[]{(byte) 1 });
- } catch (CertificateException e) {
- //ok
- }
-
- // Regression for HARMONY-756
- try {
- X509Certificate.getInstance((byte[]) null);
- fail("No expected CertificateException");
- } catch (CertificateException e) {
- // expected;
- }
-
- }
-
- /**
- * checkValidity() method testing.
- * @throws CertificateNotYetValidException
- * @throws CertificateExpiredException
- * @throws java.security.cert.CertificateExpiredException
- * @throws java.security.cert.CertificateNotYetValidException
- */
- public void testCheckValidity1() throws CertificateExpiredException, CertificateNotYetValidException, java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- Date date = new Date();
- Date nb_date = tbt_cert.getNotBefore();
- Date na_date = tbt_cert.getNotAfter();
- try {
- tbt_cert.checkValidity();
- assertFalse("CertificateExpiredException expected", date
- .compareTo(na_date) > 0);
- assertFalse("CertificateNotYetValidException expected", date
- .compareTo(nb_date) < 0);
- } catch (CertificateExpiredException e) {
- assertTrue("Unexpected CertificateExpiredException was thrown",
- date.compareTo(na_date) > 0);
- } catch (CertificateNotYetValidException e) {
- assertTrue("Unexpected CertificateNotYetValidException was thrown",
- date.compareTo(nb_date) < 0);
- }
-
- try {
- tbt_cert.checkValidity();
- } catch (CertificateExpiredException e) {
- // ok
- }
-
- try {
- cert.checkValidity();
- } catch (java.security.cert.CertificateExpiredException e) {
- // ok
- }
-
- }
-
- /**
- * checkValidity(Date date) method testing.
- * @throws CertificateNotYetValidException
- * @throws CertificateExpiredException
- */
- public void testCheckValidity2() throws CertificateNotYetValidException, CertificateExpiredException {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- Date[] date = new Date[8];
- Calendar calendar = Calendar.getInstance();
- for (int i = 0; i < date.length; i++) {
- calendar.set(i * 500, Calendar.JANUARY, 1);
- date[i] = calendar.getTime();
- }
- Date nb_date = tbt_cert.getNotBefore();
- Date na_date = tbt_cert.getNotAfter();
- for (int i = 0; i < date.length; i++) {
- try {
- tbt_cert.checkValidity(date[i]);
- assertFalse("CertificateExpiredException expected", date[i]
- .compareTo(na_date) > 0);
- assertFalse("CertificateNotYetValidException expected", date[i]
- .compareTo(nb_date) < 0);
- } catch (CertificateExpiredException e) {
- assertTrue("Unexpected CertificateExpiredException was thrown",
- date[i].compareTo(na_date) > 0);
- } catch (CertificateNotYetValidException e) {
- assertTrue("Unexpected CertificateNotYetValidException "
- + "was thrown", date[i].compareTo(nb_date) < 0);
- }
- }
-
- Calendar calendarNow = Calendar.getInstance();
-
- try {
- tbt_cert.checkValidity(calendarNow.getTime());
- } catch (CertificateExpiredException e) {
- //ok
- }
-
- Calendar calendarPast = GregorianCalendar.getInstance();
- calendarPast.clear();
-
- try {
- tbt_cert.checkValidity(calendarPast.getTime());
- } catch (CertificateNotYetValidException e) {
- //ok
- }
-
- }
-
- /**
- * getVersion() method testing.
- */
- public void testGetVersion() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- assertEquals("The version is not correct.", tbt_cert.getVersion(), 2);
- }
-
- /**
- * getSerialNumber() method testing.
- */
- public void testGetSerialNumber() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- assertEquals("The serial number is not correct.", tbt_cert
- .getSerialNumber(), cert.getSerialNumber());
- }
-
- /**
- * getIssuerDN() method testing.
- */
- public void testGetIssuerDN() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- Logger.global.warning("testGetIssuerDN: error in test setup.");
- }
- assertEquals("The issuer DN is not correct.", tbt_cert.getIssuerDN(),
- cert.getIssuerDN());
- }
-
- /**
- * getSubjectDN() method testing.
- */
- public void testGetSubjectDN() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- assertEquals("The subject DN is not correct.", tbt_cert.getSubjectDN(),
- cert.getSubjectDN());
- }
-
- /**
- * getNotBefore() method testing.
- */
- public void testGetNotBefore() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- assertEquals("The NotBefore date is not correct.", tbt_cert
- .getNotBefore(), cert.getNotBefore());
- }
-
- /**
- * getNotAfter() method testing.
- */
- public void testGetNotAfter() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- assertEquals("The NotAfter date is not correct.", tbt_cert
- .getNotAfter(), cert.getNotAfter());
- }
-
- /**
- * getSigAlgName() method testing.
- */
- public void testGetSigAlgName() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- assertEquals("The name of signature algorithm is not correct.",
- tbt_cert.getSigAlgName(), cert.getSigAlgName());
- }
-
- /**
- * getSigAlgOID() method testing.
- */
- public void testGetSigAlgOID() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- assertEquals("The name of OID of signature algorithm is not correct.",
- tbt_cert.getSigAlgOID(), cert.getSigAlgOID());
- }
-
- /**
- * getSigAlgParams() method testing.
- */
- public void testGetSigAlgParams() {
- if (this.cert == null) {
- // The requested certificate type is not available.
- // Test can not be applied.
- return;
- }
- assertTrue("The byte array with encoded algorithm parameters "
- + "is not correct.", Arrays.equals(tbt_cert.getSigAlgParams(),
- cert.getSigAlgParams()));
- }
-
- /**
- * The stub class used for testing of non abstract methods.
- */
- private class MyCertificate extends X509Certificate {
-
- public MyCertificate() {
- super();
- }
-
- @Override
- public void checkValidity() throws CertificateExpiredException,
- CertificateNotYetValidException {
- }
-
- @Override
- public void checkValidity(Date arg0)
- throws CertificateExpiredException,
- CertificateNotYetValidException {
- }
-
- @Override
- public Principal getIssuerDN() {
- return null;
- }
-
- @Override
- public Date getNotAfter() {
- return null;
- }
-
- @Override
- public Date getNotBefore() {
- return null;
- }
-
- @Override
- public BigInteger getSerialNumber() {
- return null;
- }
-
- @Override
- public String getSigAlgName() {
- return null;
- }
-
- @Override
- public String getSigAlgOID() {
- return null;
- }
-
- @Override
- public byte[] getSigAlgParams() {
- return null;
- }
-
- @Override
- public Principal getSubjectDN() {
- return null;
- }
-
- @Override
- public int getVersion() {
- return 0;
- }
-
- @Override
- public byte[] getEncoded() throws CertificateEncodingException {
- return null;
- }
-
- @Override
- public PublicKey getPublicKey() {
- return null;
- }
-
- @Override
- public String toString() {
- return null;
- }
-
- @Override
- public void verify(PublicKey key) throws CertificateException,
- NoSuchAlgorithmException, InvalidKeyException,
- NoSuchProviderException, SignatureException {
- }
-
- @Override
- public void verify(PublicKey key, String sigProvider)
- throws CertificateException, NoSuchAlgorithmException,
- InvalidKeyException, NoSuchProviderException,
- SignatureException {
- }
- }
-
- public class MyModifiablePublicKey implements PublicKey {
-
- private PublicKey key;
- private boolean modifiedAlgo;
- private String algo;
- private String format;
- private boolean modifiedFormat;
- private boolean modifiedEncoding;
- private byte[] encoding;
-
- public MyModifiablePublicKey(PublicKey k) {
- super();
- this.key = k;
- }
-
- public String getAlgorithm() {
- if (modifiedAlgo) {
- return algo;
- } else {
- return key.getAlgorithm();
- }
- }
-
- public String getFormat() {
- if (modifiedFormat) {
- return this.format;
- } else {
- return key.getFormat();
- }
-
- }
-
- public byte[] getEncoded() {
- if (modifiedEncoding) {
- return this.encoding;
- } else {
- return key.getEncoded();
- }
-
- }
-
- public long getSerVerUID() {
- return key.serialVersionUID;
- }
-
- public void setAlgorithm(String myAlgo) {
- modifiedAlgo = true;
- this.algo = myAlgo;
- }
-
- public void setFormat(String myFormat) {
- modifiedFormat = true;
- format = myFormat;
- }
-
- public void setEncoding(byte[] myEncoded) {
- modifiedEncoding = true;
- encoding = myEncoded;
- }
- }
-
- /**
- * @throws CertificateEncodingException
- * {@link Certificate#getEncoded()}
- */
- public void testGetEncoded()
- throws CertificateEncodingException, java.security.cert.CertificateException {
- // cert = DER encoding of the ASN1.0 structure
- assertTrue(Arrays.equals(cert.getEncoded(), tbt_cert.getEncoded()));
- assertFalse(Arrays.equals(javaxCert.getEncoded(), tbt_cert.getEncoded()));
- }
-
- /**
- * {@link Certificate#getPublicKey()}
- */
- public void testGetPublicKey() {
- PublicKey key = javaxCert.getPublicKey();
- assertNotNull(key);
- assertEquals(javaxCert.getPublicKey(), javaCert.getPublicKey());
- assertEquals(key.getAlgorithm(),"RSA");
-
- key = javaxSSCert.getPublicKey();
- assertNotNull(key);
- assertEquals(key.getAlgorithm(),"RSA");
-
- //assertTrue(mySSProvider.containsKey(key));
-
- }
-
- /**
- * @throws SignatureException
- * @throws NoSuchProviderException
- * @throws NoSuchAlgorithmException
- * @throws InvalidKeyException
- * @throws CertificateException
- * {@link Certificate#verify(PublicKey)}
- */
- @SideEffect("Destroys MD5 provider, hurts succeeding tests")
- public void testVerifyPublicKey() throws InvalidKeyException,
- NoSuchAlgorithmException, NoSuchProviderException,
- SignatureException, CertificateException {
-
- // Preconditions
- assertNotNull(javaxCert.getPublicKey());
- assertNotNull(javaxSSCert.getPublicKey());
- //precondition for self signed certificates
- /*assertEquals(((X509Certificate) javaxSSCert).getIssuerDN().getName(),
- ((X509Certificate) javaxSSCert).getSubjectDN());*/
-
- // must always evaluate true for self signed
- // here not self signed:
- try {
- javaxCert.verify(javaxCert.getPublicKey());
- } catch (SignatureException e) {
- // ok
- }
-
- PublicKey k = javaxCert.getPublicKey();
-
- MyModifiablePublicKey changedEncoding = new MyModifiablePublicKey(k);
- changedEncoding
- .setEncoding(new byte[javaxCert.getEncoded().length - 1]);
-
- try {
- javaxCert.verify(tbt_cert.getPublicKey());
- } catch (InvalidKeyException e) {
- // ok
- }
-
-
- try {
- javaxCert.verify(null);
- } catch (Exception e) {
- // ok
- }
-
- try {
- javaxCert.verify(changedEncoding);
- fail("Exception expected");
- } catch (Exception e) {
- // ok
- }
-
- // following test doesn't work because the algorithm is derived from
- // somewhere else.
-
- // MyModifiablePublicKey changedAlgo = new MyModifiablePublicKey(k);
- // changedAlgo.setAlgorithm("MD5withBla");
-
- // try {
- // javaxCert.verify(changedAlgo);
- // fail("Exception expected");
- // } catch (SignatureException e) {
- // // ok
- // }
-
- // Security.removeProvider(mySSProvider.getName());
-
- // try {
- // javaxSSCert.verify(javaxSSCert.getPublicKey());
- // } catch (NoSuchProviderException e) {
- // // ok
- // }
-
- // Security.addProvider(mySSProvider);
-
- // must always evaluate true for self signed
- // javaxSSCert.verify(javaxSSCert.getPublicKey());
- }
-
- /**
- * @throws SignatureException
- * @throws NoSuchProviderException
- * @throws NoSuchAlgorithmException
- * @throws java.security.cert.CertificateException
- * @throws InvalidKeyException
- * @throws IOException
- * @throws CertificateException
- * {@link Certificate#verify(PublicKey, String)}
- */
- @SideEffect("Destroys MD5 provider, hurts succeeding tests")
- public void testVerifyPublicKeyString() throws InvalidKeyException,
- java.security.cert.CertificateException, NoSuchAlgorithmException,
- NoSuchProviderException, SignatureException, IOException,
- CertificateException {
-
- try {
- javaxCert.verify(javaxCert.getPublicKey(), myProvider.getName());
- } catch (NoSuchAlgorithmException e) {
- // ok
- }
-
- // myProvider.getService(type, algorithm)
-
- Security.removeProvider(myProvider.getName());
- try {
- javaxCert.verify(javaxCert.getPublicKey(), myProvider.getName());
- } catch (NoSuchProviderException e) {
- // ok
- }
- Security.addProvider(myProvider);
-
- Provider[] providers = Security.getProviders("Signature.MD5withRSA");
- if (providers == null || providers.length == 0) {
- fail("no Provider for Signature.MD5withRSA");
- return;
- }
-
- // self signed cert: should verify with provider
- try {
- javaxSSCert.verify(javaxSSCert.getPublicKey(),
- providers[0].getName());
- } catch (SignatureException e) {
- fail("blu");
- }
-
- }
-
- public static Test suite() {
- return new TestSuite(X509CertificateTest.class);
- }
-}