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