1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Alexander Y. Kleymenov
208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage java.security.cert;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.math.BigInteger;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.InvalidKeyException;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchAlgorithmException;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchProviderException;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Principal;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PublicKey;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.SignatureException;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.CRLException;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.X509CRLEntry;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.ArrayList;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Collection;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Date;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Set;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.auth.x500.X500Principal;
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.asn1.ASN1Integer;
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.asn1.ASN1OctetString;
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.Test;
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestSuite;
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class X509CRLSelectorTest extends TestCase {
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * The abstract class stub implementation.
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private class TestCRL extends X509CRL {
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        private X500Principal principal = null;
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        private BigInteger crlNumber = null;
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        private Date thisUpdate = null;
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        private Date nextUpdate = null;
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public TestCRL(X500Principal principal) {
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.principal = principal;
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public TestCRL(Date thisUpdate, Date nextUpdate) {
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            setUpdateDates(thisUpdate, nextUpdate);
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public TestCRL(BigInteger crlNumber) {
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            setCrlNumber(crlNumber);
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void setUpdateDates(Date thisUpdate, Date nextUpdate) {
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.thisUpdate = thisUpdate;
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.nextUpdate = nextUpdate;
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
78e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void setCrlNumber(BigInteger crlNumber) {
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            this.crlNumber = crlNumber;
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public X500Principal getIssuerX500Principal() {
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return principal;
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String toString() {
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean isRevoked(Certificate cert) {
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return true;
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Set getNonCriticalExtensionOIDs() {
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Set getCriticalExtensionOIDs() {
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public byte[] getExtensionValue(String oid) {
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if ("2.5.29.20".equals(oid) && (crlNumber != null)) {
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return ASN1OctetString.getInstance().encode(
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        ASN1Integer.getInstance().encode(
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                crlNumber.toByteArray()));
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public boolean hasUnsupportedCriticalExtension() {
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return false;
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public byte[] getEncoded() {
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void verify(PublicKey key)
1218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                throws CRLException, NoSuchAlgorithmException,
1228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                InvalidKeyException, NoSuchProviderException,
1238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                SignatureException {
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void verify(PublicKey key, String sigProvider)
1278d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                throws CRLException, NoSuchAlgorithmException,
1288d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                InvalidKeyException, NoSuchProviderException,
1298d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                SignatureException {
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public int getVersion() {
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return 2;
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Principal getIssuerDN() {
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Date getThisUpdate() {
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return thisUpdate;
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Date getNextUpdate() {
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return nextUpdate;
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) {
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public Set getRevokedCertificates() {
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public byte[] getTBSCertList() {
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public byte[] getSignature() {
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String getSigAlgName() {
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String getSigAlgOID() {
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public byte[] getSigAlgParams() {
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return null;
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * setIssuers(Collection <X500Principal> issuers) method testing.
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if CRLs with any issuers match the selector in the case of
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * null issuerNames criteria, if specified issuers match the selector,
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * and if not specified issuer does not match the selector.
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSetIssuers() {
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss1 = new X500Principal("O=First Org.");
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss2 = new X500Principal("O=Second Org.");
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss3 = new X500Principal("O=Third Org.");
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl1 = new TestCRL(iss1);
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl2 = new TestCRL(iss2);
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl3 = new TestCRL(iss3);
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setIssuers(null);
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Any CRL issuers should match in the case of null issuers.",
1948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl1) && selector.match(crl2));
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ArrayList issuers = new ArrayList(2);
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        issuers.add(iss1);
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        issuers.add(iss2);
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setIssuers(issuers);
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
2018d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl1) && selector.match(crl2));
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
2038d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl3));
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        issuers.add(iss3);
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The internal issuer collection is not protected "
2068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                + "against the modifications.", selector.match(crl3));
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * setIssuerNames(Collection <?> names) method testing.
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if CRLs with any issuers match the selector in the case of
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * null issuerNames criteria, if specified issuers match the selector,
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * if not specified issuer does not match the selector, and if the
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * internal collection of issuer names is copied during initialization.
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSetIssuerNames() {
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String iss1 = "O=First Org.";
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] iss2 = new byte[]
2208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                //manually obtained DER encoding of "O=Second Org." issuer name;
2218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
2228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                        83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46 };
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String iss3 = "O=Third Org.";
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl3 = new TestCRL(new X500Principal(iss3));
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            selector.setIssuerNames(null);
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            e.printStackTrace();
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Unexpected IOException was thrown.");
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Any CRL issuers should match in the case of null issuers.",
2358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl1) && selector.match(crl2));
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ArrayList issuers = new ArrayList(2);
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        issuers.add(iss1);
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        issuers.add(iss2);
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            selector.setIssuerNames(issuers);
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            e.printStackTrace();
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Unexpected IOException was thrown.");
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
2478d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl1) && selector.match(crl2));
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
2498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl3));
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        issuers.add(iss3);
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The internal issuer collection is not protected "
2528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                + "against the modifications.", selector.match(crl3));
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * addIssuer(X500Principal issuer) method testing.
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if CRLs with specified issuers match the selector,
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * and if not specified issuer does not match the selector.
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testAddIssuer() {
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss1 = new X500Principal("O=First Org.");
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss2 = new X500Principal("O=Second Org.");
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl1 = new TestCRL(iss1);
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl2 = new TestCRL(iss2);
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss1);
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
2698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl1));
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
2718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl2));
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss2);
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
2748d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl2));
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * addIssuerName(String name) method testing.
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if CRLs with specified issuers match the selector,
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * and if not specified issuer does not match the selector.
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testAddIssuerName1() {
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String iss1 = "O=First Org.";
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String iss2 = "O=Second Org.";
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            selector.addIssuerName(iss1);
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            e.printStackTrace();
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Unexpected IOException was thrown.");
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
2968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl1));
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
2988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl2));
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            selector.addIssuerName(iss2);
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            e.printStackTrace();
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Unexpected IOException was thrown.");
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
3068d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl2));
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * addIssuerName(byte[] name) method testing.
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if CRLs with specified issuers match the selector,
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * and if not specified issuer does not match the selector.
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testAddIssuerName2() {
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] iss1 = new byte[]
3178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                //manually obtained DER encoding of "O=First Org." issuer name;
3188d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
3198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                        70, 105, 114, 115, 116, 32, 79, 114, 103, 46 };
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] iss2 = new byte[]
3218d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                //manually obtained DER encoding of "O=Second Org." issuer name;
3228d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
3238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                        83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46 };
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl1 = new TestCRL(new X500Principal(iss1));
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl2 = new TestCRL(new X500Principal(iss2));
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            selector.addIssuerName(iss1);
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            e.printStackTrace();
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Unexpected IOException was thrown.");
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
3348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl1));
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
3368d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl2));
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            selector.addIssuerName(iss2);
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            e.printStackTrace();
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Unexpected IOException was thrown.");
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
3448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl2));
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * setMinCRLNumber(BigInteger minCRL) method testing.
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if CRLs with any crl number value match the selector in the case of
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * null crlNumber criteria, if specified minCRL value matches the selector,
351e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * and if CRL with inappropriate crlNumber value does not match the selector.
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSetMinCRLNumber() {
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger minCRL = new BigInteger("10000");
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl = new TestCRL(minCRL);
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMinCRLNumber(null);
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Any CRL should match in the case of null minCRLNumber.",
3608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMinCRLNumber(minCRL);
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
3638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMinCRLNumber(new BigInteger("10001"));
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
3668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * setMaxCRLNumber(BigInteger maxCRL) method testing.
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if CRLs with any crl number value match the selector in the case of
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * null crlNumber criteria, if specified maxCRL value matches the selector,
373e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * and if CRL with inappropriate crlNumber value does not match the selector.
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSetMaxCRLNumber() {
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger maxCRL = new BigInteger("10000");
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl = new TestCRL(maxCRL);
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMaxCRLNumber(null);
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Any CRL should match in the case of null minCRLNumber.",
3828d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMaxCRLNumber(maxCRL);
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
3858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMaxCRLNumber(new BigInteger("9999"));
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
3888d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * setDateAndTime(Date dateAndTime) method testing.
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if CRLs with any update dates match the selector in the case of
394e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * null dateAndTime criteria, if correct dates match and incorrect
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * do not match the selector.
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSetDateAndTime() {
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl = new TestCRL(new Date(200), new Date(300));
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(null);
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Any CRL should match in the case of null dateAndTime.",
4028d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(new Date(200));
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
4058d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(new Date(250));
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
4088d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(new Date(300));
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The CRL should match the selection criteria.",
4118d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(new Date(150));
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
4148d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(new Date(350));
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The CRL should not match the selection criteria.",
4178d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * getIssuers() method testing.
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if the method return null in the case of not specified issuers,
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * if the returned collection corresponds to the specified issuers and
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * this collection is unmodifiable.
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetIssuers() throws Exception {
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss1 = new X500Principal("O=First Org.");
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss2 = new X500Principal("O=Second Org.");
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss3 = new X500Principal("O=Third Org.");
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String iss_name_1 = "O=First String DN";
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String iss_name_2 = "O=Second String DN";
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String iss_name_3 = "O=Third String DN";
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("The collection should be null.",
4358d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.getIssuers());
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuerName(iss_name_1);
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss1);
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuerName(iss_name_2);
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss2);
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuerName(iss_name_3);
441e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collection result = selector.getIssuers();
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Size does not correspond to expected",
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                5, result.size());
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            result.add(iss3);
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("The returned collection should be unmodifiable.");
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (UnsupportedOperationException e) {
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The collection should contain the specified DN.",
4518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                result.contains(iss1));
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The collection should contain the specified DN.",
4538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                result.contains(iss2));
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The collection should contain the specified DN.",
4558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                result.contains(new X500Principal(iss_name_1)));
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The collection should contain the specified DN.",
4578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                result.contains(new X500Principal(iss_name_2)));
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss3);
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The collection should contain the specified DN.",
4608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                result.contains(iss3));
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * getIssuerNames() method testing.
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if the method return null in the case of not specified issuers,
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * if the returned collection corresponds to the specified issuers.
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetIssuerNames() {
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] iss1 = new byte[]
4718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                //manually obtained DER encoding of "O=First Org." issuer name;
4728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                { 48, 21, 49, 19, 48, 17, 6, 3, 85, 4, 10, 19, 10,
4738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                        70, 105, 114, 115, 116, 32, 79, 114, 103, 46 };
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] iss2 = new byte[]
4758d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                //manually obtained DER encoding of "O=Second Org." issuer name;
4768d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                { 48, 22, 49, 20, 48, 18, 6, 3, 85, 4, 10, 19, 11,
4778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                        83, 101, 99, 111, 110, 100, 32, 79, 114, 103, 46 };
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("The collection should be null.",
4798d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.getIssuerNames());
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            selector.addIssuerName(iss1);
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            selector.addIssuerName(iss2);
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            e.printStackTrace();
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Unexpected IOException was thrown.");
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Collection result = selector.getIssuerNames();
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("The collection should contain all of the specified DNs.",
4898d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                2, result.size());
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * getMinCRL() method testing.
494e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * Tests if the method return null in the case of not specified minCRL
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * criteria, and if the returned value corresponds to the specified one.
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetMinCRL() {
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Initially the minCRL should be null.",
5008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.getMinCRL());
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger minCRL = new BigInteger("10000");
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMinCRLNumber(minCRL);
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The result should be equal to specified.",
5048d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                minCRL.equals(selector.getMinCRL()));
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * getMaxCRL() method testing.
509e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * Tests if the method return null in the case of not specified maxCRL
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * criteria, and if the returned value corresponds to the specified one.
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetMaxCRL() {
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Initially the maxCRL should be null.",
5158d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.getMaxCRL());
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger maxCRL = new BigInteger("10000");
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMaxCRLNumber(maxCRL);
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The result should be equal to specified.",
5198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                maxCRL.equals(selector.getMaxCRL()));
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * getDateAndTime() method testing.
524e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * Tests if the method return null in the case of not specified dateAndTime
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * criteria, and if the returned value corresponds to the specified one.
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetDateAndTime() {
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Initially the dateAndTime criteria should be null.",
5308d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.getDateAndTime());
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date(200);
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(date);
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The result should be equal to specified.",
5348d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                date.equals(selector.getDateAndTime()));
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * match(CRL crl) method testing.
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if the null object matches to the selector or not.
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testMatch() {
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
543e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        assertFalse("The null object should not match",
5448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match((X509CRL) null));
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * clone() method testing.
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tests if the selector is cloned correctly: the crl which matche to
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * the initial selector should match to the clone and the change of clone
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * should not cause the change of initial selector.
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testClone() {
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss1 = new X500Principal("O=First Org.");
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss2 = new X500Principal("O=Second Org.");
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss3 = new X500Principal("O=Third Org.");
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger minCRL = new BigInteger("10000");
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger maxCRL = new BigInteger("10000");
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date(200);
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss1);
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss2);
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMinCRLNumber(minCRL);
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMaxCRLNumber(maxCRL);
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(date);
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector clone = (X509CRLSelector) selector.clone();
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        TestCRL crl = new TestCRL(iss1);
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        crl.setCrlNumber(minCRL);
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        crl.setUpdateDates(new Date(200), new Date(200));
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("The specified CRL should match the clone selector.",
5738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.match(crl));
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        clone.addIssuer(iss3);
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("The changes of the clone selector should not cause "
5778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                + "the changes of initial object",
5788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath                selector.getIssuerNames().size() == 3);
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testToString() {
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X509CRLSelector selector = new X509CRLSelector();
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss1 = new X500Principal("O=First Org.");
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        X500Principal iss2 = new X500Principal("O=Second Org.");
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger minCRL = new BigInteger("10000");
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BigInteger maxCRL = new BigInteger("10000");
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Date date = new Date(200);
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss1);
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.addIssuer(iss2);
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMinCRLNumber(minCRL);
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setMaxCRLNumber(maxCRL);
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        selector.setDateAndTime(date);
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull("The result should not be null.", selector.toString());
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public static Test suite() {
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        return new TestSuite(X509CRLSelectorTest.class);
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
603