1 /* 2 * Copyright �, Aegeus Technology Limited. All rights reserved. 3 */ 4 package jsdsi.certstore.jdbc; 5 6 import java.security.KeyPair; 7 import java.util.Collection; 8 9 import org.apache.commons.dbcp.BasicDataSource; 10 11 import jsdsi.Auth; 12 import jsdsi.AuthCert; 13 import jsdsi.AuthCertSelector; 14 import jsdsi.Certificate; 15 import jsdsi.CompatibleCertSelector; 16 import jsdsi.IssuerCertSelector; 17 import jsdsi.Name; 18 import jsdsi.NameCert; 19 import jsdsi.NameCertSelector; 20 import jsdsi.Principal; 21 import jsdsi.Provider; 22 import jsdsi.Signature; 23 import jsdsi.StringTag; 24 import jsdsi.Subject; 25 import jsdsi.SubjectCertSelector; 26 import jsdsi.Tag; 27 import jsdsi.Validity; 28 import jsdsi.util.DateUtil; 29 import jsdsi.util.DigestAlgoEnum; 30 import jsdsi.util.KeyEnum; 31 import jsdsi.util.KeyPairFactory; 32 import junit.framework.TestCase; 33 34 /*** 35 * @author Sean Radford 36 * @version $Revision: 1.1.4.3 $ $Date: 2004/12/12 17:01:39 $ 37 */ 38 public class JdbcCertificateDAOTest extends TestCase { 39 40 static { 41 Provider.install(); 42 } 43 44 private JdbcCertificateDAO dao; 45 46 /*** 47 * @see TestCase#setUp() 48 */ 49 protected void setUp() throws Exception { 50 super.setUp(); 51 BasicDataSource ds = new BasicDataSource(); 52 ds.setDriverClassName("org.hsqldb.jdbcDriver"); 53 ds.setUrl("jdbc:hsqldb:/tmp/jsdsi-testdb"); 54 ds.setUsername("sa"); 55 //ds.setPassword(""); 56 this.dao = new JdbcCertificateDAO(ds); 57 } 58 59 /*** 60 * @see TestCase#tearDown() 61 */ 62 protected void tearDown() throws Exception { 63 super.tearDown(); 64 } 65 66 public void testStoreAuthCert() throws Exception { 67 KeyPair kp1 = KeyPairFactory.create(KeyEnum.RSA, 512); 68 69 Certificate certificate = createAuthCertificate(kp1, 70 (Principal) kp1.getPublic(), 71 new StringTag("test")); 72 73 this.dao.store(certificate); 74 75 Collection col = this.dao.retrieve(new IssuerCertSelector((Principal) kp1.getPublic())); 76 assertNotNull(col); 77 assertEquals(col.size(), 1); 78 Certificate out = (Certificate) col.iterator().next(); 79 assertEquals(certificate, out); 80 } 81 82 public void testStoreNameCert() throws Exception { 83 KeyPair kp1 = KeyPairFactory.create(KeyEnum.RSA, 512); 84 KeyPair kp2 = KeyPairFactory.create(KeyEnum.RSA, 512); 85 86 Certificate certificate = createNameCertificate(kp1, 87 (Principal) kp1.getPublic(), "alice"); 88 this.dao.store(certificate); 89 90 Collection col = this.dao.retrieve(new IssuerCertSelector((Principal) kp1.getPublic())); 91 assertNotNull(col); 92 assertEquals(col.size(), 1); 93 Certificate out = (Certificate) col.iterator().next(); 94 assertEquals(certificate, out); 95 96 col = this.dao.retrieve(new NameCertSelector((Principal) kp1.getPublic(), 97 "alice")); 98 assertNotNull(col); 99 assertEquals(col.size(), 1); 100 out = (Certificate) col.iterator().next(); 101 assertEquals(certificate, out); 102 } 103 104 public void testAuthCertSelector() throws Exception { 105 KeyPair kp1 = KeyPairFactory.create(KeyEnum.RSA, 512); 106 KeyPair kp2 = KeyPairFactory.create(KeyEnum.RSA, 512); 107 108 Certificate certificate1 = createAuthCertificate(kp1, 109 (Principal) kp2.getPublic(), 110 new StringTag("test1")); 111 this.dao.store(certificate1); 112 Certificate certificate2 = createAuthCertificate(kp1, 113 (Principal) kp2.getPublic(), 114 new StringTag("test2")); 115 this.dao.store(certificate2); 116 Certificate certificate3 = createAuthCertificate(kp2, 117 (Principal) kp1.getPublic(), 118 new StringTag("test3")); 119 this.dao.store(certificate3); 120 121 Collection col = this.dao.retrieve(new AuthCertSelector((Principal) kp1.getPublic())); 122 assertEquals(2, col.size()); 123 assertTrue("1.Certificate1", col.contains(certificate1)); 124 assertTrue("1.Certificate2", col.contains(certificate2)); 125 126 col = this.dao.retrieve(new AuthCertSelector((Principal) kp2.getPublic())); 127 assertEquals(1, col.size()); 128 assertTrue("2.Certificate3", col.contains(certificate3)); 129 130 col = this.dao.retrieve(new AuthCertSelector((Principal) kp1.getPublic(), 131 new Auth( 132 new StringTag("test1"), false))); 133 assertEquals(1, col.size()); 134 assertTrue("3.Certificate1", col.contains(certificate1)); 135 } 136 137 public void testNameCertSelector() throws Exception { 138 KeyPair kp1 = KeyPairFactory.create(KeyEnum.RSA, 512); 139 KeyPair kp2 = KeyPairFactory.create(KeyEnum.RSA, 512); 140 KeyPair kp3 = KeyPairFactory.create(KeyEnum.RSA, 512); 141 KeyPair kp4 = KeyPairFactory.create(KeyEnum.RSA, 512); 142 143 Certificate certificate1 = createNameCertificate(kp1, 144 (Principal) kp2.getPublic(), "alice"); 145 this.dao.store(certificate1); 146 Certificate certificate2 = createNameCertificate(kp1, 147 (Principal) kp3.getPublic(), "bob"); 148 this.dao.store(certificate2); 149 Certificate certificate3 = createNameCertificate(kp1, 150 (Principal) kp4.getPublic(), "carol"); 151 this.dao.store(certificate3); 152 Certificate certificate4 = createNameCertificate(kp1, 153 (Principal) kp2.getPublic(), "friend"); 154 this.dao.store(certificate4); 155 Certificate certificate5 = createNameCertificate(kp1, 156 (Principal) kp3.getPublic(), "friend"); 157 this.dao.store(certificate5); 158 159 Collection col = this.dao.retrieve(new NameCertSelector((Principal) kp1.getPublic(), 160 "alice")); 161 assertEquals(1, col.size()); 162 assertTrue("1.Certificate1", col.contains(certificate1)); 163 164 col = this.dao.retrieve(new NameCertSelector((Principal) kp1.getPublic(), 165 "bob")); 166 assertEquals(1, col.size()); 167 assertTrue("2.Certificate2", col.contains(certificate2)); 168 169 col = this.dao.retrieve(new NameCertSelector((Principal) kp1.getPublic(), 170 "carol")); 171 assertEquals(1, col.size()); 172 assertTrue("3.Certificate3", col.contains(certificate3)); 173 174 col = this.dao.retrieve(new NameCertSelector((Principal) kp1.getPublic(), 175 "friend")); 176 assertEquals(2, col.size()); 177 assertTrue("4.Certificate4", col.contains(certificate4)); 178 assertTrue("4.Certificate5", col.contains(certificate5)); 179 } 180 181 public void testCompatibleCertSelector() throws Exception { 182 KeyPair kp1 = KeyPairFactory.create(KeyEnum.RSA, 512); 183 KeyPair kp2 = KeyPairFactory.create(KeyEnum.RSA, 512); 184 185 Certificate certificate1 = createNameCertificate(kp1, 186 (Principal) kp2.getPublic(), "bob"); 187 this.dao.store(certificate1); 188 Certificate certificate2 = createAuthCertificate(kp1, 189 (Principal) kp2.getPublic(), 190 new StringTag("test1")); 191 this.dao.store(certificate2); 192 193 Name name3 = new Name((Principal) kp1.getPublic(), "friend"); 194 Certificate certificate3 = createNameCertificate(kp1, name3, "a"); 195 this.dao.store(certificate3); 196 Name name4 = new Name((Principal) kp1.getPublic(), "family"); 197 Certificate certificate4 = createNameCertificate(kp1, name4, "b"); 198 this.dao.store(certificate4); 199 Name name5 = new Name((Principal) kp1.getPublic(), 200 new String[] {"friend","pet"}); 201 Certificate certificate5 = createAuthCertificate(kp1, 202 name5, 203 new StringTag("test1")); 204 this.dao.store(certificate5); 205 Name name6 = new Name((Principal) kp2.getPublic(), "friend"); 206 Certificate certificate6 = createAuthCertificate(kp1, 207 name6, 208 new StringTag("test1")); 209 this.dao.store(certificate6); 210 211 Collection col = this.dao.retrieve(new CompatibleCertSelector((Principal) kp1.getPublic(), 212 "friend")); 213 assertEquals(2, col.size()); 214 assertTrue("1.Certificate3", col.contains(certificate3)); 215 assertTrue("1.Certificate5", col.contains(certificate5)); 216 217 } 218 219 public void testIssuerCertSelector() throws Exception { 220 KeyPair kp1 = KeyPairFactory.create(KeyEnum.RSA, 512); 221 KeyPair kp2 = KeyPairFactory.create(KeyEnum.RSA, 512); 222 223 Certificate certificate1 = createNameCertificate(kp1, 224 (Principal) kp2.getPublic(), "bob"); 225 this.dao.store(certificate1); 226 Certificate certificate2 = createAuthCertificate(kp1, 227 (Principal) kp2.getPublic(), 228 new StringTag("test1")); 229 this.dao.store(certificate2); 230 231 Certificate certificate3 = createNameCertificate(kp2, 232 (Principal) kp1.getPublic(), "alice"); 233 this.dao.store(certificate3); 234 Certificate certificate4 = createAuthCertificate(kp2, 235 (Principal) kp1.getPublic(), 236 new StringTag("test2")); 237 this.dao.store(certificate4); 238 239 Collection col = this.dao.retrieve(new IssuerCertSelector((Principal) kp1.getPublic())); 240 assertEquals(2, col.size()); 241 assertTrue("1.Certificate1", col.contains(certificate1)); 242 assertTrue("1.Certificate2", col.contains(certificate2)); 243 244 col = this.dao.retrieve(new IssuerCertSelector((Principal) kp2.getPublic())); 245 assertEquals(2, col.size()); 246 assertTrue("2.Certificate3", col.contains(certificate3)); 247 assertTrue("2.Certificate4", col.contains(certificate4)); 248 } 249 250 public void testSubjectCertSelector() throws Exception { 251 KeyPair kp1 = KeyPairFactory.create(KeyEnum.RSA, 512); 252 KeyPair kp2 = KeyPairFactory.create(KeyEnum.RSA, 512); 253 254 Certificate certificate1 = createNameCertificate(kp1, 255 (Principal) kp2.getPublic(), "bob"); 256 this.dao.store(certificate1); 257 Certificate certificate2 = createAuthCertificate(kp1, 258 (Principal) kp2.getPublic(), 259 new StringTag("test")); 260 this.dao.store(certificate2); 261 Name name = new Name((Principal) kp2.getPublic(), "friend"); 262 Certificate certificate3 = createAuthCertificate(kp1, 263 name, 264 new StringTag("test")); 265 this.dao.store(certificate3); 266 267 Collection col = this.dao.retrieve(new SubjectCertSelector((Principal) kp2.getPublic())); 268 assertEquals(2, col.size()); 269 assertTrue("1.Certificate1", col.contains(certificate1)); 270 assertTrue("1.Certificate2", col.contains(certificate2)); 271 272 col = this.dao.retrieve(new SubjectCertSelector(name)); 273 assertEquals(1, col.size()); 274 assertTrue("2.Certificate3", col.contains(certificate3)); 275 } 276 277 private Certificate createAuthCertificate(KeyPair kp, 278 Subject subject, Tag tag) 279 throws Exception { 280 Principal issuer = (Principal) kp.getPublic(); 281 Validity validity = new Validity(DateUtil.newDate(), 282 DateUtil.newDate(0, 0, 1)); 283 String display = "plain/text"; 284 String comment = "a test certificate"; 285 boolean propagate = false; 286 AuthCert c = new AuthCert(issuer, 287 subject, 288 validity, display, comment, tag, propagate); 289 Signature s = Signature.create(kp, c, DigestAlgoEnum.MD5); 290 Certificate certificate = new Certificate(c, s); 291 return certificate; 292 } 293 294 private Certificate createNameCertificate(KeyPair kp, 295 Subject subject, String name) 296 throws Exception { 297 Principal issuer = (Principal) kp.getPublic(); 298 Validity validity = new Validity(DateUtil.newDate(), 299 DateUtil.newDate(0, 0, 1)); 300 String display = "plain/text"; 301 String comment = "a test certificate"; 302 boolean propagate = false; 303 NameCert c = new NameCert(issuer, 304 subject, validity, display, comment, name); 305 Signature s = Signature.create(kp, c, DigestAlgoEnum.MD5); 306 Certificate certificate = new Certificate(c, s); 307 return certificate; 308 } 309 310 }

This page was automatically generated by Maven