1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package tests.security.cert;
19 
20 import junit.framework.TestCase;
21 
22 import java.io.ByteArrayInputStream;
23 import java.math.BigInteger;
24 import java.security.Principal;
25 import java.security.PublicKey;
26 import java.security.cert.Certificate;
27 import java.security.cert.CertificateFactory;
28 import java.security.cert.X509CRL;
29 import java.security.cert.X509CRLEntry;
30 import java.security.cert.X509Certificate;
31 import java.security.cert.X509Extension;
32 import java.util.Date;
33 import java.util.Iterator;
34 import java.util.Set;
35 import java.util.Vector;
36 
37 public class X509CRL2Test extends TestCase {
38 
39     private X509Certificate pemCert = null;
40 
41     String certificate = "-----BEGIN CERTIFICATE-----\n"
42         + "MIID0jCCAzugAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBmjELMAkGA1UEBhMCVUsx\n"
43         + "EjAQBgNVBAgTCUhhbXBzaGlyZTETMBEGA1UEBxMKV2luY2hlc3RlcjETMBEGA1UE\n"
44         + "ChMKSUJNIFVLIEx0ZDEMMAoGA1UECxMDSlRDMRYwFAYDVQQDEw1QYXVsIEggQWJi\n"
45         + "b3R0MScwJQYJKoZIhvcNAQkBFhhQYXVsX0hfQWJib3R0QHVrLmlibS5jb20wHhcN\n"
46         + "MDQwNjIyMjA1MDU1WhcNMDUwNjIyMjA1MDU1WjCBmDELMAkGA1UEBhMCVUsxEjAQ\n"
47         + "BgNVBAgTCUhhbXBzaGlyZTETMBEGA1UEBxMKV2luY2hlc3RlcjETMBEGA1UEChMK\n"
48         + "SUJNIFVrIEx0ZDEMMAoGA1UECxMDSkVUMRQwEgYDVQQDEwtQYXVsIEFiYm90dDEn\n"
49         + "MCUGCSqGSIb3DQEJARYYUGF1bF9IX0FiYm90dEB1ay5pYm0uY29tMIGfMA0GCSqG\n"
50         + "SIb3DQEBAQUAA4GNADCBiQKBgQDitZBQ5d18ecNJpcnuKTraHYtqsAugoc95/L5Q\n"
51         + "28s3t1QAu2505qQR1MZaAkY7tDNyl1vPnZoym+Y06UswTrZoVYo/gPNeyWPMTsLA\n"
52         + "wzQvk5/6yhtE9ciH7B0SqYw6uSiDTbUY/zQ6qed+TsQhjlbn3PUHRjnI2P8A04cg\n"
53         + "LgYYGQIDAQABo4IBJjCCASIwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3Bl\n"
54         + "blNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFPplRPs65hUfxUBs\n"
55         + "6/Taq7nN8i1UMIHHBgNVHSMEgb8wgbyAFJOMtPAwlXdZLqE7DKU6xpL6FjFtoYGg\n"
56         + "pIGdMIGaMQswCQYDVQQGEwJVSzESMBAGA1UECBMJSGFtcHNoaXJlMRMwEQYDVQQH\n"
57         + "EwpXaW5jaGVzdGVyMRMwEQYDVQQKEwpJQk0gVUsgTHRkMQwwCgYDVQQLEwNKVEMx\n"
58         + "FjAUBgNVBAMTDVBhdWwgSCBBYmJvdHQxJzAlBgkqhkiG9w0BCQEWGFBhdWxfSF9B\n"
59         + "YmJvdHRAdWsuaWJtLmNvbYIBADANBgkqhkiG9w0BAQQFAAOBgQAnQ22Jw2HUrz7c\n"
60         + "VaOap31mTikuQ/CQxpwPYiSyTJ4s99eEzn+2yAk9tIDIJpqoay/fj+OLgPUQKIAo\n"
61         + "XpRVvmHlGE7UqMKebZtSZJQzs6VoeeKFhgHmqg8eVC2AsTc4ZswJmg4wCui5AH3a\n"
62         + "oqG7PIM3LxZqXYQlZiPSZ6kCpDOWVg==\n"
63         + "-----END CERTIFICATE-----\n";
64 
65 
66 
setUp()67     protected void setUp() throws Exception {
68         ByteArrayInputStream certArray = new ByteArrayInputStream(certificate
69                 .getBytes());
70 
71         CertificateFactory certFact = CertificateFactory.getInstance("X509");
72         pemCert = (X509Certificate) certFact.generateCertificate(certArray);
73     }
74 
75     /**
76      * java.security.cert.X509CRL#getExtensionValue(java.lang.String)
77      */
test_getExtensionValueLjava_lang_String()78     public void test_getExtensionValueLjava_lang_String() {
79         try {
80             setUp();
81         } catch (Exception e) {
82             fail("Exception " + e + " was thrown during configaration");
83         }
84         if (pemCert != null) {
85             Vector<String> extensionOids = new Vector<String>();
86             extensionOids.addAll(pemCert.getCriticalExtensionOIDs());
87             extensionOids.addAll(pemCert.getNonCriticalExtensionOIDs());
88             assertFalse(pemCert.hasUnsupportedCriticalExtension());
89             Iterator<String> i = extensionOids.iterator();
90             while (i.hasNext()) {
91                 String oid = i.next();
92                 byte[] value = pemCert.getExtensionValue(oid);
93                 if (value != null && value.length > 0) {
94                     // check that it is an encoded as a OCTET STRING
95                     assertTrue("The extension value for the oid " + oid
96                             + " was not encoded as an OCTET STRING",
97                             value[0] == 0x04);
98                 }
99             }// end while
100         } else {
101             fail("Unable to obtain X509Certificate");
102         }
103     }
104 
105     /**
106      * java.security.cert.X509CRL#X509CRL()
107      */
108     @SuppressWarnings("cast")
test_X509CRL()109     public void test_X509CRL() {
110         try {
111             MyX509CRL crl = new MyX509CRL();
112             assertNotNull(crl);
113             assertTrue(crl instanceof X509CRL);
114         } catch (Exception e) {
115             fail("Unexpected exception for constructor");
116         }
117     }
118 
119     class MyX509CRL extends X509CRL implements X509Extension {
120 
MyX509CRL()121         public MyX509CRL() {
122             super();
123         }
124 
125         @Override
getEncoded()126         public byte[] getEncoded() {
127             return null;
128         }
129 
130         @Override
getIssuerDN()131         public Principal getIssuerDN() {
132             return null;
133         }
134 
135         @Override
getNextUpdate()136         public Date getNextUpdate() {
137             return null;
138         }
139 
140         @Override
getRevokedCertificate(BigInteger serialNumber)141         public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) {
142             return null;
143         }
144 
145         @Override
getRevokedCertificates()146         public Set<? extends X509CRLEntry> getRevokedCertificates() {
147             return null;
148         }
149 
150         @Override
getSigAlgName()151         public String getSigAlgName() {
152             return null;
153         }
154 
155         @Override
getSigAlgOID()156         public String getSigAlgOID() {
157             return null;
158         }
159 
160         @Override
getSigAlgParams()161         public byte[] getSigAlgParams() {
162             return null;
163         }
164 
165         @Override
getSignature()166         public byte[] getSignature() {
167             return null;
168         }
169 
170         @Override
getTBSCertList()171         public byte[] getTBSCertList() {
172             return null;
173         }
174 
175         @Override
getThisUpdate()176         public Date getThisUpdate() {
177             return null;
178         }
179 
180         @Override
getVersion()181         public int getVersion() {
182             return 0;
183         }
184 
185         @Override
verify(PublicKey key)186         public void verify(PublicKey key) {
187         }
188 
189         @Override
verify(PublicKey key, String sigProvider)190         public void verify(PublicKey key, String sigProvider) {
191         }
192 
193         @Override
isRevoked(Certificate cert)194         public boolean isRevoked(Certificate cert) {
195             return false;
196         }
197 
198         @Override
toString()199         public String toString() {
200             return null;
201         }
202 
getCriticalExtensionOIDs()203         public Set<String> getCriticalExtensionOIDs() {
204             return null;
205         }
206 
getExtensionValue(String oid)207         public byte[] getExtensionValue(String oid) {
208             return null;
209         }
210 
getNonCriticalExtensionOIDs()211         public Set<String> getNonCriticalExtensionOIDs() {
212             return null;
213         }
214 
hasUnsupportedCriticalExtension()215         public boolean hasUnsupportedCriticalExtension() {
216             return false;
217         }
218     }
219 
220 }
221