1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author Alexander Y. Kleymenov
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version $Revision$
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
23519bb724dc701bd0f59a4c27f72d4b589f382fadNarayan Kamathpackage org.apache.harmony.tests.javax.security.cert;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.Test;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestSuite;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.targets.security.cert.CertificateFactoryTestX509;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigInteger;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidKeyException;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Principal;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PublicKey;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security;
420c1fd5ae392a0d28481cd5680f0dce25e04409b5Alex Klyubinimport java.security.Signature;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SignatureException;
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider.Service;
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateFactory;
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Arrays;
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Calendar;
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Date;
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.GregorianCalendar;
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set;
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.logging.Logger;
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.Certificate;
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.CertificateEncodingException;
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.CertificateException;
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.CertificateExpiredException;
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.CertificateNotYetValidException;
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.X509Certificate;
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
6050b97349a2607e5b350ccadccc364972f3aaeeddUrs Grobimport junit.framework.Test;
6150b97349a2607e5b350ccadccc364972f3aaeeddUrs Grobimport junit.framework.TestCase;
6250b97349a2607e5b350ccadccc364972f3aaeeddUrs Grobimport junit.framework.TestSuite;
6350b97349a2607e5b350ccadccc364972f3aaeeddUrs Grobimport tests.targets.security.cert.CertificateFactoryTestX509;
6450b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class X509CertificateTest extends TestCase {
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // Testing data was generated by using of classes
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // from org.apache.harmony.security.asn1 package encoded
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    // by org.apache.harmony.misc.Base64 class.
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private static String base64cert = "-----BEGIN CERTIFICATE-----\n"
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "MIIC+jCCAragAwIBAgICAiswDAYHKoZIzjgEAwEBADAdMRswGQYDVQQKExJDZXJ0a"
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "WZpY2F0ZSBJc3N1ZXIwIhgPMTk3MDAxMTIxMzQ2NDBaGA8xOTcwMDEyNDAzMzMyMF"
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "owHzEdMBsGA1UEChMUU3ViamVjdCBPcmdhbml6YXRpb24wGTAMBgcqhkjOOAQDAQE"
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "AAwkAAQIDBAUGBwiBAgCqggIAVaOCAhQwggIQMA8GA1UdDwEB/wQFAwMBqoAwEgYD"
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "VR0TAQH/BAgwBgEB/wIBBTAUBgNVHSABAf8ECjAIMAYGBFUdIAAwZwYDVR0RAQH/B"
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "F0wW4EMcmZjQDgyMi5OYW1lggdkTlNOYW1lpBcxFTATBgNVBAoTDE9yZ2FuaXphdG"
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "lvboYaaHR0cDovL3VuaWZvcm0uUmVzb3VyY2UuSWSHBP///wCIByoDolyDsgMwDAY"
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "DVR0eAQH/BAIwADAMBgNVHSQBAf8EAjAAMIGZBgNVHSUBAf8EgY4wgYsGBFUdJQAG"
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "CCsGAQUFBwMBBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDB"
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "AYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEFBQcDBwYIKwYBBQUHAwgGCCsGAQUFBw"
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "MJBggrBgEFBQgCAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GA1UdNgEB/wQDAgE"
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "BMA4GBCpNhgkBAf8EAwEBATBkBgNVHRIEXTBbgQxyZmNAODIyLk5hbWWCB2ROU05h"
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "bWWkFzEVMBMGA1UEChMMT3JnYW5pemF0aW9uhhpodHRwOi8vdW5pZm9ybS5SZXNvd"
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "XJjZS5JZIcE////AIgHKgOiXIOyAzAJBgNVHR8EAjAAMAoGA1UdIwQDAQEBMAoGA1"
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "UdDgQDAQEBMAoGA1UdIQQDAQEBMAwGByqGSM44BAMBAQADMAAwLQIUAL4QvoazNWP"
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "7jrj84/GZlhm09DsCFQCBKGKCGbrP64VtUt4JPmLjW1VxQA==\n"
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            + "-----END CERTIFICATE-----";
91f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
9250b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   /*
9350b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob    * a self-signed certificate
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    */
9550b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   private static final String selfSignedCert = "-----BEGIN CERTIFICATE-----\n" +
9650b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "MIIDPzCCAqigAwIBAgIBADANBgkqhkiG9w0BAQUFADB5MQswCQYDVQQGEwJBTjEQ" +
9750b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "MA4GA1UECBMHQW5kcm9pZDEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5k" +
9850b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "cm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBh" +
9950b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "bmRyb2lkLmNvbTAeFw0wOTAzMjAxNzAwMDZaFw0xMjAzMTkxNzAwMDZaMHkxCzAJ" +
10050b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "BgNVBAYTAkFOMRAwDgYDVQQIEwdBbmRyb2lkMRAwDgYDVQQKEwdBbmRyb2lkMRAw" +
10150b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "DgYDVQQLEwdBbmRyb2lkMRAwDgYDVQQDEwdBbmRyb2lkMSIwIAYJKoZIhvcNAQkB" +
10250b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "FhNhbmRyb2lkQGFuZHJvaWQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB" +
10350b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "gQCqQkDtkiEXmV8O5EK4y2Y9YyoWNDx70z4fqD+9muuzJGuM5NovMbxhBycuKHF3" +
10450b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "WK60iXzrsAYkB1c8VHHbcUEFqz2fBdLKyxy/nYohlo8TYSVpEjt3vfc0sgmp4FKU" +
10550b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "RDHO2z3rZPHWysV9L9ZvjeQpiwaYipU9epdBmvFmxQmCDQIDAQABo4HWMIHTMB0G" +
10650b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "A1UdDgQWBBTnm32QKeqQC38IQXZOQSPoQyypAzCBowYDVR0jBIGbMIGYgBTnm32Q" +
10750b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "KeqQC38IQXZOQSPoQyypA6F9pHsweTELMAkGA1UEBhMCQU4xEDAOBgNVBAgTB0Fu" +
10850b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "ZHJvaWQxEDAOBgNVBAoTB0FuZHJvaWQxEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNV" +
10950b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "BAMTB0FuZHJvaWQxIjAgBgkqhkiG9w0BCQEWE2FuZHJvaWRAYW5kcm9pZC5jb22C" +
11050b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "AQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQAUmDApQu+r5rglS1WF" +
11150b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "BKXE3R2LasFvbBwdw2E0MAc0TWqLVW91VW4VWMX4r+C+c7rZpYXXtRqFRCuI/czL" +
11250b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "0e1GaUP/Wa6bXBcm2u7Iv2dVAaAOELmFSVTZeR57Lm9lT9kQLp24kmNndIsiDW3T" +
11350b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "XZ4pY/k2kxungOKx8b8pGYE9Bw==\n" +
11450b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob   "-----END CERTIFICATE-----";
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private java.security.cert.X509Certificate cert;
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private javax.security.cert.X509Certificate tbt_cert;
119f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private java.security.cert.X509Certificate javaCert;
121f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Provider myProvider;
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private javax.security.cert.X509Certificate javaxCert;
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private java.security.cert.Certificate javaSSCert;
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Provider mySSProvider;
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Certificate javaxSSCert;
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
132d5a055e559219904a95f6a32114e22d5fb943bd5Jorg Pleumann    @Override
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() throws Exception {
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ByteArrayInputStream bais = new ByteArrayInputStream(base64cert
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getBytes());
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            CertificateFactory cf = CertificateFactory.getInstance("X.509");
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.cert = (java.security.cert.X509Certificate) cf
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .generateCertificate(bais);
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.tbt_cert = X509Certificate.getInstance(cert.getEncoded());
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // non self signed cert
14350b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob            this.javaCert = (java.security.cert.X509Certificate)cf
14450b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob                    .generateCertificate(new ByteArrayInputStream(selfSignedCert.getBytes()));
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.javaxCert = X509Certificate.getInstance(javaCert.getEncoded());
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            myProvider = cf.getProvider();
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Security.addProvider(myProvider);
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // self signed cert
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.javaSSCert = cf.generateCertificate(new ByteArrayInputStream(
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    selfSignedCert.getBytes()));
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.javaxSSCert = X509Certificate.getInstance(javaCert
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getEncoded());
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            mySSProvider = cf.getProvider();
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Security.addProvider(mySSProvider);
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (java.security.cert.CertificateException e) {
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test pass..
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.cert = null;
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Logger.global.warning("Error in test setup: Certificate type not supported");
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (javax.security.cert.CertificateException e) {
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test pass..
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.cert = null;
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Logger.global.warning("Error in test setup: Certificate type not supported");
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * X509Certificate() constructor testing.
172229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * {@link X509Certificate#X509Certificate() }
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
174fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project    public void testConstructor() {
175fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        //Direct constructor, check if it throws an exception
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509Certificate cert = new MyCertificate();
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getInstance(InputStream inStream) method testing.
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetInstance1() {
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ByteArrayInputStream bais = new ByteArrayInputStream(cert
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getEncoded());
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            X509Certificate.getInstance(bais);
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (java.security.cert.CertificateEncodingException e) {
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected CertificateEncodingException was thrown.");
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateEncodingException e) {
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected CertificateEncodingException was thrown.");
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateException e) {
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test pass..
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for HARMONY-756
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            X509Certificate.getInstance((InputStream) null);
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected CertificateException");
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateException e) {
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected;
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getInstance(byte[] certData) method testing.
213f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws CertificateEncodingException
214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws java.security.cert.CertificateEncodingException
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetInstance2() throws java.security.cert.CertificateEncodingException, CertificateEncodingException {
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        boolean certificateException = false;
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        X509Certificate c = null;
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            c = X509Certificate.getInstance(cert.getEncoded());
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (java.security.cert.CertificateEncodingException e) {
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected CertificateEncodingException was thrown.");
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateException e) {
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test pass..
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            certificateException = true;
232f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
234f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (! certificateException) {
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNotNull(c);
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(Arrays.equals(c.getEncoded(),cert.getEncoded() ));
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
239f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
240fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        try {
241fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            X509Certificate.getInstance(new byte[]{(byte) 1 });
242fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        } catch (CertificateException e) {
243fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            //ok
244fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        }
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression for HARMONY-756
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            X509Certificate.getInstance((byte[]) null);
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected CertificateException");
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateException e) {
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected;
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
253f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * checkValidity() method testing.
258f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws CertificateNotYetValidException
259f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws CertificateExpiredException
260f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws java.security.cert.CertificateExpiredException
261f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws java.security.cert.CertificateNotYetValidException
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testCheckValidity1() throws CertificateExpiredException, CertificateNotYetValidException, java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException {
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Date date = new Date();
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Date nb_date = tbt_cert.getNotBefore();
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Date na_date = tbt_cert.getNotAfter();
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tbt_cert.checkValidity();
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse("CertificateExpiredException expected", date
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .compareTo(na_date) > 0);
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertFalse("CertificateNotYetValidException expected", date
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .compareTo(nb_date) < 0);
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateExpiredException e) {
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Unexpected CertificateExpiredException was thrown",
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    date.compareTo(na_date) > 0);
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateNotYetValidException e) {
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Unexpected CertificateNotYetValidException was thrown",
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    date.compareTo(nb_date) < 0);
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
285f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       try {
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       tbt_cert.checkValidity();
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       } catch (CertificateExpiredException e) {
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // ok
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       }
291f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       try {
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            cert.checkValidity();
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (java.security.cert.CertificateExpiredException e) {
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
296f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
297f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * checkValidity(Date date) method testing.
302f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws CertificateNotYetValidException
303f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws CertificateExpiredException
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testCheckValidity2() throws CertificateNotYetValidException, CertificateExpiredException {
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
311a698d224635ccfe3f141ccf627221271aa53bf69Kenny Root        Date[] date = new Date[8];
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Calendar calendar = Calendar.getInstance();
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < date.length; i++) {
314a698d224635ccfe3f141ccf627221271aa53bf69Kenny Root            calendar.set(i * 500, Calendar.JANUARY, 1);
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            date[i] = calendar.getTime();
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Date nb_date = tbt_cert.getNotBefore();
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Date na_date = tbt_cert.getNotAfter();
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < date.length; i++) {
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            try {
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                tbt_cert.checkValidity(date[i]);
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertFalse("CertificateExpiredException expected", date[i]
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        .compareTo(na_date) > 0);
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertFalse("CertificateNotYetValidException expected", date[i]
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        .compareTo(nb_date) < 0);
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (CertificateExpiredException e) {
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertTrue("Unexpected CertificateExpiredException was thrown",
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        date[i].compareTo(na_date) > 0);
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } catch (CertificateNotYetValidException e) {
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                assertTrue("Unexpected CertificateNotYetValidException "
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        + "was thrown", date[i].compareTo(nb_date) < 0);
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
334f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Calendar calendarNow = Calendar.getInstance();
336f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tbt_cert.checkValidity(calendarNow.getTime());
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateExpiredException e) {
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
342f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Calendar calendarPast = GregorianCalendar.getInstance();
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        calendarPast.clear();
345f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tbt_cert.checkValidity(calendarPast.getTime());
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CertificateNotYetValidException e) {
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //ok
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
351f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getVersion() method testing.
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetVersion() {
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The version is not correct.", tbt_cert.getVersion(), 2);
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getSerialNumber() method testing.
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSerialNumber() {
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The serial number is not correct.", tbt_cert
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getSerialNumber(), cert.getSerialNumber());
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getIssuerDN() method testing.
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetIssuerDN() {
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Logger.global.warning("testGetIssuerDN: error in test setup.");
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The issuer DN is not correct.", tbt_cert.getIssuerDN(),
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                cert.getIssuerDN());
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getSubjectDN() method testing.
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSubjectDN() {
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The subject DN is not correct.", tbt_cert.getSubjectDN(),
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                cert.getSubjectDN());
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getNotBefore() method testing.
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetNotBefore() {
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The NotBefore date is not correct.", tbt_cert
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getNotBefore(), cert.getNotBefore());
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getNotAfter() method testing.
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetNotAfter() {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The NotAfter date is not correct.", tbt_cert
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getNotAfter(), cert.getNotAfter());
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getSigAlgName() method testing.
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSigAlgName() {
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The name of signature algorithm is not correct.",
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                tbt_cert.getSigAlgName(), cert.getSigAlgName());
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getSigAlgOID() method testing.
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSigAlgOID() {
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The name of OID of signature algorithm is not correct.",
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                tbt_cert.getSigAlgOID(), cert.getSigAlgOID());
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getSigAlgParams() method testing.
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetSigAlgParams() {
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        if (this.cert == null) {
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // The requested certificate type is not available.
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // Test can not be applied.
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return;
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("The byte array with encoded algorithm parameters "
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "is not correct.", Arrays.equals(tbt_cert.getSigAlgParams(),
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                cert.getSigAlgParams()));
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The stub class used for testing of non abstract methods.
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class MyCertificate extends X509Certificate {
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public MyCertificate() {
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super();
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
479f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void checkValidity() throws CertificateExpiredException,
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                CertificateNotYetValidException {
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void checkValidity(Date arg0)
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws CertificateExpiredException,
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                CertificateNotYetValidException {
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Principal getIssuerDN() {
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Date getNotAfter() {
498fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            return null;
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Date getNotBefore() {
503fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            return null;
504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public BigInteger getSerialNumber() {
508fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            return null;
509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getSigAlgName() {
513fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            return null;
514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getSigAlgOID() {
518fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            return null;
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getSigAlgParams() {
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Principal getSubjectDN() {
528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getVersion() {
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 0;
534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getEncoded() throws CertificateEncodingException {
538fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            return null;
539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public PublicKey getPublicKey() {
543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String toString() {
548fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project            return null;
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void verify(PublicKey key) throws CertificateException,
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                NoSuchAlgorithmException, InvalidKeyException,
554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                NoSuchProviderException, SignatureException {
555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void verify(PublicKey key, String sigProvider)
559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws CertificateException, NoSuchAlgorithmException,
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                InvalidKeyException, NoSuchProviderException,
561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                SignatureException {
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
564f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public class MyModifiablePublicKey implements PublicKey {
566f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private PublicKey key;
568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private boolean modifiedAlgo;
569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private String algo;
570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private String format;
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private boolean modifiedFormat;
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private boolean modifiedEncoding;
573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private byte[] encoding;
574f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public MyModifiablePublicKey(PublicKey k) {
576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super();
577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.key = k;
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getAlgorithm() {
581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (modifiedAlgo) {
582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return algo;
583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } else {
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return key.getAlgorithm();
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getFormat() {
589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (modifiedFormat) {
590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return this.format;
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } else {
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return key.getFormat();
593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
594f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getEncoded() {
598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (modifiedEncoding) {
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return this.encoding;
600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            } else {
601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return key.getEncoded();
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
603f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public long getSerVerUID() {
607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return key.serialVersionUID;
608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
609f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setAlgorithm(String myAlgo) {
611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            modifiedAlgo = true;
612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            this.algo = myAlgo;
613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
614f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setFormat(String myFormat) {
616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            modifiedFormat = true;
617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            format = myFormat;
618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
619f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void setEncoding(byte[] myEncoded) {
621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            modifiedEncoding = true;
622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            encoding = myEncoded;
623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
625f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
627f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws CertificateEncodingException
628229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * {@link Certificate#getEncoded()}
629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetEncoded()
631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throws CertificateEncodingException, java.security.cert.CertificateException {
632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // cert = DER encoding of the ASN1.0 structure
633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(Arrays.equals(cert.getEncoded(), tbt_cert.getEncoded()));
634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Arrays.equals(javaxCert.getEncoded(), tbt_cert.getEncoded()));
635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
636f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
638229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * {@link Certificate#getPublicKey()}
639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetPublicKey() {
641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       PublicKey key = javaxCert.getPublicKey();
642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       assertNotNull(key);
643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       assertEquals(javaxCert.getPublicKey(), javaCert.getPublicKey());
644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       assertEquals(key.getAlgorithm(),"RSA");
645f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       key = javaxSSCert.getPublicKey();
647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       assertNotNull(key);
648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       assertEquals(key.getAlgorithm(),"RSA");
649f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project       //assertTrue(mySSProvider.containsKey(key));
651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
653f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
655f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws SignatureException
656f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws NoSuchProviderException
657f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws NoSuchAlgorithmException
658f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws InvalidKeyException
659f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws CertificateException
660229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * {@link Certificate#verify(PublicKey)}
661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
6626a6b612286976cc185c898803fe51e4e062bd9ebBrett Chabot    // Side Effect: Destroys MD5 provider, hurts succeeding tests
663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testVerifyPublicKey() throws InvalidKeyException,
664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            NoSuchAlgorithmException, NoSuchProviderException,
665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            SignatureException, CertificateException {
666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Preconditions
668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(javaxCert.getPublicKey());
669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(javaxSSCert.getPublicKey());
670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        //precondition for self signed certificates
671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        /*assertEquals(((X509Certificate) javaxSSCert).getIssuerDN().getName(),
672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                ((X509Certificate) javaxSSCert).getSubjectDN());*/
673f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // must always evaluate true for self signed
675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // here not self signed:
676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            javaxCert.verify(javaxCert.getPublicKey());
678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SignatureException e) {
679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        PublicKey k = javaxCert.getPublicKey();
683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MyModifiablePublicKey changedEncoding = new MyModifiablePublicKey(k);
685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        changedEncoding
686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .setEncoding(new byte[javaxCert.getEncoded().length - 1]);
687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            javaxCert.verify(tbt_cert.getPublicKey());
690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidKeyException e) {
691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            javaxCert.verify(null);
697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            javaxCert.verify(changedEncoding);
703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Exception expected");
704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
707f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
708fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // following test doesn't work because the algorithm is derived from
709fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // somewhere else.
710fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project
711fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // MyModifiablePublicKey changedAlgo = new MyModifiablePublicKey(k);
712fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // changedAlgo.setAlgorithm("MD5withBla");
713fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project
714fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // try {
715fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        //     javaxCert.verify(changedAlgo);
716fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        //     fail("Exception expected");
717fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // } catch (SignatureException e) {
718fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        //     // ok
719fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // }
720f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
721fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // Security.removeProvider(mySSProvider.getName());
722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
723fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // try {
724fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        //     javaxSSCert.verify(javaxSSCert.getPublicKey());
725fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // } catch (NoSuchProviderException e) {
726fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        //     // ok
727fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // }
728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
729fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // Security.addProvider(mySSProvider);
730f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // must always evaluate true for self signed
732fa890109ecc4522f0e07481431c04d4cf6ba16d1The Android Open Source Project        // javaxSSCert.verify(javaxSSCert.getPublicKey());
733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
734f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
736f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws SignatureException
737f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws NoSuchProviderException
738f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws NoSuchAlgorithmException
739f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws java.security.cert.CertificateException
740f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws InvalidKeyException
741f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws IOException
742f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes     * @throws CertificateException
743229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * {@link Certificate#verify(PublicKey, String)}
744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
745dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer    public void testVerifyPublicKeyString() throws Exception {
746f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
748adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            javaxCert.verify(javaxCert.getPublicKey(), myProvider.getName());
749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // myProvider.getService(type, algorithm)
754dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        // Keep track of the original position so the provider can be
755dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        // reinserted in the same spot later.
756dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        Provider[] providers = Security.getProviders();
757dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        int i = 0;
758dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        for (; i < providers.length; i++) {
759dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer            if (providers[i] == myProvider) {
760dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer                break;
761dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer            }
762dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        }
763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Security.removeProvider(myProvider.getName());
765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            javaxCert.verify(javaxCert.getPublicKey(), myProvider.getName());
767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchProviderException e) {
768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
770dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer
771dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        // Note: The position is 1-based, that is, 1 is most preferred,
772dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        // followed by 2, and so on
773dd90ad0a24b486f50dc13fe81a0a6f7f26bd950dNicholas Sauer        Security.insertProviderAt(myProvider, i + 1);
774f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
7750c1fd5ae392a0d28481cd5680f0dce25e04409b5Alex Klyubin        // Find the Provider which offers MD5withRSA for the certificate's
7760c1fd5ae392a0d28481cd5680f0dce25e04409b5Alex Klyubin        // public key.
7770c1fd5ae392a0d28481cd5680f0dce25e04409b5Alex Klyubin        Signature signature = Signature.getInstance("MD5withRSA");
7780c1fd5ae392a0d28481cd5680f0dce25e04409b5Alex Klyubin        signature.initVerify(javaxSSCert.getPublicKey());
7790c1fd5ae392a0d28481cd5680f0dce25e04409b5Alex Klyubin        Provider provider = signature.getProvider();
780f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // self signed cert: should verify with provider
78250b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        try {
78350b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob            javaxSSCert.verify(javaxSSCert.getPublicKey(),
7840c1fd5ae392a0d28481cd5680f0dce25e04409b5Alex Klyubin                    provider.getName());
78550b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        } catch (SignatureException e) {
78650b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob            fail("blu");
78750b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        }
788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Test suite() {
792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new TestSuite(X509CertificateTest.class);
793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
795