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 18package tests.security.cert; 19 20import dalvik.annotation.TestLevel; 21import dalvik.annotation.TestTargetClass; 22import dalvik.annotation.TestTargetNew; 23import dalvik.annotation.TestTargets; 24 25import junit.framework.TestCase; 26 27import java.io.ByteArrayInputStream; 28import java.math.BigInteger; 29import java.security.Principal; 30import java.security.PublicKey; 31import java.security.cert.Certificate; 32import java.security.cert.CertificateFactory; 33import java.security.cert.X509CRL; 34import java.security.cert.X509CRLEntry; 35import java.security.cert.X509Certificate; 36import java.security.cert.X509Extension; 37import java.util.Date; 38import java.util.Iterator; 39import java.util.Set; 40import java.util.Vector; 41 42@TestTargetClass(X509CRL.class) 43public class X509CRL2Test extends TestCase { 44 45 private X509Certificate pemCert = null; 46 47 String certificate = "-----BEGIN CERTIFICATE-----\n" 48 + "MIID0jCCAzugAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBmjELMAkGA1UEBhMCVUsx\n" 49 + "EjAQBgNVBAgTCUhhbXBzaGlyZTETMBEGA1UEBxMKV2luY2hlc3RlcjETMBEGA1UE\n" 50 + "ChMKSUJNIFVLIEx0ZDEMMAoGA1UECxMDSlRDMRYwFAYDVQQDEw1QYXVsIEggQWJi\n" 51 + "b3R0MScwJQYJKoZIhvcNAQkBFhhQYXVsX0hfQWJib3R0QHVrLmlibS5jb20wHhcN\n" 52 + "MDQwNjIyMjA1MDU1WhcNMDUwNjIyMjA1MDU1WjCBmDELMAkGA1UEBhMCVUsxEjAQ\n" 53 + "BgNVBAgTCUhhbXBzaGlyZTETMBEGA1UEBxMKV2luY2hlc3RlcjETMBEGA1UEChMK\n" 54 + "SUJNIFVrIEx0ZDEMMAoGA1UECxMDSkVUMRQwEgYDVQQDEwtQYXVsIEFiYm90dDEn\n" 55 + "MCUGCSqGSIb3DQEJARYYUGF1bF9IX0FiYm90dEB1ay5pYm0uY29tMIGfMA0GCSqG\n" 56 + "SIb3DQEBAQUAA4GNADCBiQKBgQDitZBQ5d18ecNJpcnuKTraHYtqsAugoc95/L5Q\n" 57 + "28s3t1QAu2505qQR1MZaAkY7tDNyl1vPnZoym+Y06UswTrZoVYo/gPNeyWPMTsLA\n" 58 + "wzQvk5/6yhtE9ciH7B0SqYw6uSiDTbUY/zQ6qed+TsQhjlbn3PUHRjnI2P8A04cg\n" 59 + "LgYYGQIDAQABo4IBJjCCASIwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3Bl\n" 60 + "blNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFPplRPs65hUfxUBs\n" 61 + "6/Taq7nN8i1UMIHHBgNVHSMEgb8wgbyAFJOMtPAwlXdZLqE7DKU6xpL6FjFtoYGg\n" 62 + "pIGdMIGaMQswCQYDVQQGEwJVSzESMBAGA1UECBMJSGFtcHNoaXJlMRMwEQYDVQQH\n" 63 + "EwpXaW5jaGVzdGVyMRMwEQYDVQQKEwpJQk0gVUsgTHRkMQwwCgYDVQQLEwNKVEMx\n" 64 + "FjAUBgNVBAMTDVBhdWwgSCBBYmJvdHQxJzAlBgkqhkiG9w0BCQEWGFBhdWxfSF9B\n" 65 + "YmJvdHRAdWsuaWJtLmNvbYIBADANBgkqhkiG9w0BAQQFAAOBgQAnQ22Jw2HUrz7c\n" 66 + "VaOap31mTikuQ/CQxpwPYiSyTJ4s99eEzn+2yAk9tIDIJpqoay/fj+OLgPUQKIAo\n" 67 + "XpRVvmHlGE7UqMKebZtSZJQzs6VoeeKFhgHmqg8eVC2AsTc4ZswJmg4wCui5AH3a\n" 68 + "oqG7PIM3LxZqXYQlZiPSZ6kCpDOWVg==\n" 69 + "-----END CERTIFICATE-----\n"; 70 71 72 73 protected void setUp() throws Exception { 74 ByteArrayInputStream certArray = new ByteArrayInputStream(certificate 75 .getBytes()); 76 77 CertificateFactory certFact = CertificateFactory.getInstance("X509"); 78 pemCert = (X509Certificate) certFact.generateCertificate(certArray); 79 } 80 81 /** 82 * @tests java.security.cert.X509CRL#getExtensionValue(java.lang.String) 83 */ 84 @TestTargets({ 85 @TestTargetNew( 86 level = TestLevel.COMPLETE, 87 notes = "", 88 method = "getExtensionValue", 89 args = {java.lang.String.class} 90 ), 91 @TestTargetNew( 92 level = TestLevel.COMPLETE, 93 notes = "", 94 method = "getCriticalExtensionOIDs", 95 args = {} 96 ), 97 @TestTargetNew( 98 level = TestLevel.COMPLETE, 99 notes = "", 100 method = "getNonCriticalExtensionOIDs", 101 args = {} 102 ), 103 @TestTargetNew( 104 level = TestLevel.COMPLETE, 105 notes = "", 106 method = "hasUnsupportedCriticalExtension", 107 args = {} 108 ) 109 }) 110 public void test_getExtensionValueLjava_lang_String() { 111 try { 112 setUp(); 113 } catch (Exception e) { 114 fail("Exception " + e + " was thrown during configaration"); 115 } 116 if (pemCert != null) { 117 Vector<String> extensionOids = new Vector<String>(); 118 extensionOids.addAll(pemCert.getCriticalExtensionOIDs()); 119 extensionOids.addAll(pemCert.getNonCriticalExtensionOIDs()); 120 assertFalse(pemCert.hasUnsupportedCriticalExtension()); 121 Iterator<String> i = extensionOids.iterator(); 122 while (i.hasNext()) { 123 String oid = i.next(); 124 byte[] value = pemCert.getExtensionValue(oid); 125 if (value != null && value.length > 0) { 126 // check that it is an encoded as a OCTET STRING 127 assertTrue("The extension value for the oid " + oid 128 + " was not encoded as an OCTET STRING", 129 value[0] == 0x04); 130 } 131 }// end while 132 } else { 133 fail("Unable to obtain X509Certificate"); 134 } 135 } 136 137 /** 138 * @tests java.security.cert.X509CRL#X509CRL() 139 */ 140 @SuppressWarnings("cast") 141 @TestTargetNew( 142 level = TestLevel.COMPLETE, 143 notes = "", 144 method = "X509CRL", 145 args = {} 146 ) 147 public void test_X509CRL() { 148 try { 149 MyX509CRL crl = new MyX509CRL(); 150 assertNotNull(crl); 151 assertTrue(crl instanceof X509CRL); 152 } catch (Exception e) { 153 fail("Unexpected exception for constructor"); 154 } 155 } 156 157 class MyX509CRL extends X509CRL implements X509Extension { 158 159 public MyX509CRL() { 160 super(); 161 } 162 163 @Override 164 public byte[] getEncoded() { 165 return null; 166 } 167 168 @Override 169 public Principal getIssuerDN() { 170 return null; 171 } 172 173 @Override 174 public Date getNextUpdate() { 175 return null; 176 } 177 178 @Override 179 public X509CRLEntry getRevokedCertificate(BigInteger serialNumber) { 180 return null; 181 } 182 183 @Override 184 public Set<? extends X509CRLEntry> getRevokedCertificates() { 185 return null; 186 } 187 188 @Override 189 public String getSigAlgName() { 190 return null; 191 } 192 193 @Override 194 public String getSigAlgOID() { 195 return null; 196 } 197 198 @Override 199 public byte[] getSigAlgParams() { 200 return null; 201 } 202 203 @Override 204 public byte[] getSignature() { 205 return null; 206 } 207 208 @Override 209 public byte[] getTBSCertList() { 210 return null; 211 } 212 213 @Override 214 public Date getThisUpdate() { 215 return null; 216 } 217 218 @Override 219 public int getVersion() { 220 return 0; 221 } 222 223 @Override 224 public void verify(PublicKey key) { 225 } 226 227 @Override 228 public void verify(PublicKey key, String sigProvider) { 229 } 230 231 @Override 232 public boolean isRevoked(Certificate cert) { 233 return false; 234 } 235 236 @Override 237 public String toString() { 238 return null; 239 } 240 241 public Set<String> getCriticalExtensionOIDs() { 242 return null; 243 } 244 245 public byte[] getExtensionValue(String oid) { 246 return null; 247 } 248 249 public Set<String> getNonCriticalExtensionOIDs() { 250 return null; 251 } 252 253 public boolean hasUnsupportedCriticalExtension() { 254 return false; 255 } 256 } 257 258} 259