1 package org.ejbca.core.model.ca.certextensions; 2 3 import java.util.Properties ; 4 5 import junit.framework.TestCase; 6 7 import org.bouncycastle.asn1.DERBitString; 8 import org.bouncycastle.asn1.DERBoolean; 9 import org.bouncycastle.asn1.DEREncodable; 10 import org.bouncycastle.asn1.DERInteger; 11 import org.bouncycastle.asn1.DERNull; 12 import org.bouncycastle.asn1.DEROctetString; 13 import org.bouncycastle.asn1.DERPrintableString; 14 import org.bouncycastle.asn1.DERUTF8String; 15 16 public class TestBasicCertificateExtension extends TestCase { 17 18 19 public void test01NullBasicExtension() throws Exception { 20 Properties props = new Properties (); 21 props.put("id1.property.encoding", "DERNULL"); 22 23 BasicCertificateExtension baseExt = new BasicCertificateExtension(); 24 baseExt.init(1, "1.2.3", false, props); 25 26 DEREncodable value = baseExt.getValue(null, null, null); 27 assertTrue(value.getClass().toString(),value instanceof DERNull); 28 assertTrue(baseExt.getOID().equals("1.2.3")); 29 assertTrue(baseExt.getId() == 1); 30 assertFalse(baseExt.isCriticalFlag()); 31 } 32 33 public void test02IntegerBasicExtension() throws Exception { 34 Properties props = new Properties (); 35 props.put("id1.property.encoding", "DERINTEGER"); 36 props.put("id1.property.value", "1234"); 37 38 BasicCertificateExtension baseExt = new BasicCertificateExtension(); 39 baseExt.init(1, "1.2.3", false, props); 40 41 DEREncodable value = baseExt.getValue(null, null, null); 42 assertTrue(value.getClass().toString(),value instanceof DERInteger); 43 assertTrue(((DERInteger)value).toString(),((DERInteger)value).toString().equals("1234")); 44 assertTrue(baseExt.getOID().equals("1.2.3")); 45 assertTrue(baseExt.getId() == 1); 46 assertFalse(baseExt.isCriticalFlag()); 47 48 props = new Properties (); 49 props.put("id1.property.encoding", "DERINTEGER"); 50 props.put("id1.property.value", "123SA4"); 51 boolean exceptionThrown = false; 52 try{ 53 baseExt = new BasicCertificateExtension(); 54 baseExt.init(1, "1.2.3", false, props); 55 value = baseExt.getValue(null, null, null); 56 }catch(CertificateExtentionConfigurationException e){ 57 exceptionThrown = true; 58 } 59 assertTrue(exceptionThrown); 60 61 } 62 63 public void test03BitStringBasicExtension() throws Exception { 64 Properties props = new Properties (); 65 props.put("id1.property.encoding", "DERBITSTRING"); 66 props.put("id1.property.value", "1111"); 67 68 BasicCertificateExtension baseExt = new BasicCertificateExtension(); 69 baseExt.init(1, "1.2.3", false, props); 70 71 byte[] result = {15}; 72 DEREncodable value = baseExt.getValue(null, null, null); 73 assertTrue(value.getClass().toString(),value instanceof DERBitString); 74 assertTrue(((DERBitString)value).getBytes()[0]+"",((DERBitString)value).getBytes()[0] == result[0]); 75 assertTrue(((DERBitString)value).getPadBits() == 4); 76 assertTrue(baseExt.getOID().equals("1.2.3")); 77 assertTrue(baseExt.getId() == 1); 78 assertFalse(baseExt.isCriticalFlag()); 79 } 80 81 public void test04BooleanBasicExtension() throws Exception { 82 Properties props = new Properties (); 83 props.put("id1.property.encoding", "DERBOOLEAN"); 84 props.put("id1.property.value", "true"); 85 86 BasicCertificateExtension baseExt = new BasicCertificateExtension(); 87 baseExt.init(1, "1.2.3", false, props); 88 89 DEREncodable value = baseExt.getValue(null, null, null); 90 assertTrue(value.getClass().toString(),value instanceof DERBoolean); 91 assertTrue(((DERBoolean)value).toString(),((DERBoolean)value).toString().equals("TRUE")); 92 assertTrue(baseExt.getOID().equals("1.2.3")); 93 assertTrue(baseExt.getId() == 1); 94 assertFalse(baseExt.isCriticalFlag()); 95 96 props.put("id1.property.value", "false"); 97 98 baseExt = new BasicCertificateExtension(); 99 baseExt.init(1, "1.2.3", false, props); 100 101 value = baseExt.getValue(null, null, null); 102 assertTrue(((DERBoolean)value).toString(),((DERBoolean)value).toString().equals("FALSE")); 103 104 props = new Properties (); 105 props.put("id1.property.encoding", "DERBOOLEAN"); 106 props.put("id1.property.value", "1sdf"); 107 boolean exceptionThrown = false; 108 try{ 109 baseExt = new BasicCertificateExtension(); 110 baseExt.init(1, "1.2.3", false, props); 111 value = baseExt.getValue(null, null, null); 112 }catch(CertificateExtentionConfigurationException e){ 113 exceptionThrown = true; 114 } 115 assertTrue(exceptionThrown); 116 } 117 118 public void test05OctetBasicExtension() throws Exception { 119 Properties props = new Properties (); 120 props.put("id1.property.encoding", "DEROCTETSTRING"); 121 props.put("id1.property.value", "DBE81232"); 122 123 BasicCertificateExtension baseExt = new BasicCertificateExtension(); 124 baseExt.init(1, "1.2.3", false, props); 125 126 DEREncodable value = baseExt.getValue(null, null, null); 127 assertTrue(value.getClass().toString(),value instanceof DEROctetString); 128 assertTrue(((DEROctetString)value).toString(),((DEROctetString)value).toString().equalsIgnoreCase("#DBE81232")); 129 130 props = new Properties (); 131 props.put("id1.property.encoding", "DEROCTETSTRING"); 132 props.put("id1.property.value", "123SA4"); 133 boolean exceptionThrown = false; 134 try{ 135 baseExt = new BasicCertificateExtension(); 136 baseExt.init(1, "1.2.3", false, props); 137 value = baseExt.getValue(null, null, null); 138 }catch(CertificateExtentionConfigurationException e){ 139 exceptionThrown = true; 140 } 141 assertTrue(exceptionThrown); 142 143 } 144 145 public void test06PritableStringExtension() throws Exception { 146 Properties props = new Properties (); 147 props.put("id1.property.encoding", "DERPRINTABLESTRING"); 148 props.put("id1.property.value", "This is a printable string"); 149 150 BasicCertificateExtension baseExt = new BasicCertificateExtension(); 151 baseExt.init(1, "1.2.3", false, props); 152 153 DEREncodable value = baseExt.getValue(null, null, null); 154 assertTrue(value.getClass().toString(),value instanceof DERPrintableString); 155 assertTrue(((DERPrintableString)value).toString(),((DERPrintableString)value).toString().equals("This is a printable string")); 156 157 props = new Properties (); 158 props.put("id1.property.encoding", "DERPRINTABLESTRING"); 159 props.put("id1.property.value", "This is a non printable string åäö"); 160 boolean exceptionThrown = false; 161 try{ 162 baseExt = new BasicCertificateExtension(); 163 baseExt.init(1, "1.2.3", false, props); 164 value = baseExt.getValue(null, null, null); 165 }catch(CertificateExtentionConfigurationException e){ 166 exceptionThrown = true; 167 } 168 assertTrue(exceptionThrown); 169 170 } 171 172 public void test07UTF8StringExtension() throws Exception { 173 Properties props = new Properties (); 174 props.put("id1.property.encoding", "DERUTF8STRING"); 175 props.put("id1.property.value", "This is a utf8 åäö Êêstring"); 176 177 BasicCertificateExtension baseExt = new BasicCertificateExtension(); 178 baseExt.init(1, "1.2.3", false, props); 179 180 DEREncodable value = baseExt.getValue(null, null, null); 181 assertTrue(value.getClass().toString(),value instanceof DERUTF8String); 182 assertTrue(((DERUTF8String)value).getString(),((DERUTF8String)value).getString().equals("This is a utf8 åäö Êêstring")); 183 184 } 185 186 public void test08WrongEncoding() throws Exception { 187 Properties props = new Properties (); 188 props.put("id1.property.encoding", "DERUTF8sdfTRING"); 189 props.put("id1.property.value", "This is a utf8 åäö Êêstring"); 190 191 BasicCertificateExtension baseExt = new BasicCertificateExtension(); 192 baseExt.init(1, "1.2.3", false, props); 193 boolean exceptionThrown =false; 194 try{ 195 196 baseExt.getValue(null, null, null); 197 }catch(CertificateExtentionConfigurationException e){ 198 exceptionThrown = true; 199 } 200 assertTrue(exceptionThrown); 201 } 202 203 } 204 | Popular Tags |