X509CRLTest.java revision 229e34b182b98e1dba15d3dc6341954986ae2b7a
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
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.security.cert;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.AndroidOnly;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.Test;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestSuite;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigInteger;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidKeyException;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Principal;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PublicKey;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SignatureException;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CRLException;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.Certificate;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.CertificateFactory;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.X509CRL;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.X509CRLEntry;
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.X509Certificate;
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Date;
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set;
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.auth.x500.X500Principal;
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.cert.TestUtils;
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.security.cert.X509CRL2Test.MyX509CRL;
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class X509CRLTest extends TestCase {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private X509CRL tbt_crl;
58f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    String certificate = "-----BEGIN CERTIFICATE-----\n"
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "MIICZTCCAdICBQL3AAC2MA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVTMSAw\n"
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "HgYDVQQKExdSU0EgRGF0YSBTZWN1cml0eSwgSW5jLjEuMCwGA1UECxMlU2VjdXJl\n"
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NzAyMjAwMDAwMDBa\n"
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "Fw05ODAyMjAyMzU5NTlaMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZv\n"
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "cm5pYTESMBAGA1UEBxMJUGFsbyBBbHRvMR8wHQYDVQQKExZTdW4gTWljcm9zeXN0\n"
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "ZW1zLCBJbmMuMSEwHwYDVQQLExhUZXN0IGFuZCBFdmFsdWF0aW9uIE9ubHkxGjAY\n"
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "BgNVBAMTEWFyZ29uLmVuZy5zdW4uY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB\n"
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "iQKBgQCofmdY+PiUWN01FOzEewf+GaG+lFf132UpzATmYJkA4AEA/juW7jSi+LJk\n"
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "wJKi5GO4RyZoyimAL/5yIWDV6l1KlvxyKslr0REhMBaD/3Z3EsLTTEf5gVrQS6sT\n"
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "WMoSZAyzB39kFfsB6oUXNtV8+UKKxSxKbxvhQn267PeCz5VX2QIDAQABMA0GCSqG\n"
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "SIb3DQEBAgUAA34AXl3at6luiV/7I9MN5CXYoPJYI8Bcdc1hBagJvTMcmlqL2uOZ\n"
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "H9T5hNMEL9Tk6aI7yZPXcw/xI2K6pOR/FrMp0UwJmdxX7ljV6ZtUZf7pY492UqwC\n"
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "1777XQ9UEZyrKJvF5ntleeO0ayBqLGVKCWzWZX9YsXCpv47FNLZbupE=\n"
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        + "-----END CERTIFICATE-----\n";
74f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    ByteArrayInputStream certArray = new ByteArrayInputStream(certificate
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        .getBytes());
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The stub class used for testing of non abstract methods.
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class TBTCRL extends X509CRL {
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String toString() {
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean isRevoked(Certificate cert) {
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return true;
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Set<String> getNonCriticalExtensionOIDs() {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Set<String> getCriticalExtensionOIDs() {
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getExtensionValue(String oid) {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public boolean hasUnsupportedCriticalExtension() {
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getEncoded() {
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void verify(PublicKey key)
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 throws CRLException, NoSuchAlgorithmException,
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        InvalidKeyException, NoSuchProviderException,
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        SignatureException
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        {
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void verify(PublicKey key, String sigProvider)
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                 throws CRLException, NoSuchAlgorithmException,
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        InvalidKeyException, NoSuchProviderException,
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        SignatureException
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public int getVersion() {
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return 2;
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Principal getIssuerDN() {
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Date getThisUpdate() {
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Date getNextUpdate() {
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) {
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Set<X509CRLEntry> getRevokedCertificates() {
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getTBSCertList() {
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getSignature() {
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getSigAlgName() {
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getSigAlgOID() {
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getSigAlgParams() {
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public X509CRLTest() {
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
173f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void setUp() {
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        tbt_crl = new TBTCRL() {
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] {1, 2, 3};
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getType() method testing. Tests that getType() method returns
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * the value "X.509"
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetType() {
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The type of X509CRL should be X.509",
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                            tbt_crl.getType(), "X.509");
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * equals(Object other) method testing. Tests the correctness of equal
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * operation: it should be reflexive, symmetric, transitive, consistent
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * and should be false on null object.
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testEquals() {
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCRL tbt_crl_1 = new TBTCRL() {
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] {1, 2, 3};
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCRL tbt_crl_2 = new TBTCRL() {
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] {1, 2, 3};
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCRL tbt_crl_3 = new TBTCRL() {
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] {3, 2, 1};
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // checking for reflexive law:
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("The equivalence relation should be reflexive.",
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                                    tbt_crl.equals(tbt_crl));
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The CRLs with equal encoded form should be equal",
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                                    tbt_crl, tbt_crl_1);
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // checking for symmetric law:
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("The equivalence relation should be symmetric.",
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                                    tbt_crl_1.equals(tbt_crl));
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("The CRLs with equal encoded form should be equal",
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                                    tbt_crl_1, tbt_crl_2);
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // checking for transitive law:
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("The equivalence relation should be transitive.",
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                                    tbt_crl.equals(tbt_crl_2));
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("Should not be equal to null object.",
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                                    tbt_crl.equals(null));
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("The CRLs with differing encoded form should not be equal",
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                                    tbt_crl.equals(tbt_crl_3));
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("The CRL should not be equals to the object which is not "
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    + "an instance of X509CRL", tbt_crl.equals(new Object()));
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * hashCode() method testing. Tests that for equal objects hash codes
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * are equal.
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testHashCode() {
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCRL tbt_crl_1 = new TBTCRL() {
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] {1, 2, 3};
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Equal objects should have the same hash codes.",
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                                    tbt_crl.hashCode() == tbt_crl_1.hashCode());
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
255229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.security.cert.X509CRL#getIssuerX500Principal()
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetIssuerX500Principal() {
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // return valid encoding
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCRL crl = new TBTCRL() {
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return TestUtils.getX509CRL_v1();
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new X500Principal("CN=Z"), crl.getIssuerX500Principal());
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * getRevokedCertificate(X509Certificate certificate) method testing.
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Check if the default implementation throws NullPointerException
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * on null input data.
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @AndroidOnly("Test filed on RI: getRevokedCertificate throws " +
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            "RuntimeException.")
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetRevokedCertificate() {
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tbt_crl.getRevokedCertificate((X509Certificate) null);
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException should be thrown "
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                        + "in the case of null input data.");
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
282f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
283f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            CertificateFactory cf = CertificateFactory.getInstance("X.509");
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            X509Certificate cert = (X509Certificate) cf.generateCertificate(certArray);
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            tbt_crl.getRevokedCertificate(cert);
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception: " + e);
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
292f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testAbstractMethods() {
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCRL crl = new TBTCRL() {
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return TestUtils.getX509CRL_v1();
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
299f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getEncoded();
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getIssuerDN();
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getNextUpdate();
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getRevokedCertificate(BigInteger.ONE);
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getRevokedCertificates();
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getSigAlgName();
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getSigAlgOID();
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getSigAlgParams();
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getSignature();
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getTBSCertList();
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getThisUpdate();
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.getVersion();
313f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.verify(null);
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            crl.verify(null, "test");
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception for constructor");
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
320f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testX509CRL() {
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            TBTCRL crl = new TBTCRL();
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(crl instanceof X509CRL);
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (Exception e) {
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("Unexpected exception for constructor");
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Test suite() {
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new TestSuite(X509CRLTest.class);
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
335