1 package org.bouncycastle.jce.provider.test; 2 3 import java.io.ByteArrayInputStream; 4 import java.security.Security; 5 import java.security.cert.*; 6 import java.util.ArrayList; 7 import java.util.Calendar; 8 import java.util.HashSet; 9 import java.util.List; 10 import java.util.Set; 11 12 import org.bouncycastle.jce.X509Principal; 13 import org.bouncycastle.jce.provider.BouncyCastleProvider; 14 import org.bouncycastle.util.test.SimpleTestResult; 15 import org.bouncycastle.util.test.Test; 16 import org.bouncycastle.util.test.TestResult; 17 18 public class CertPathBuilderTest 19 implements Test 20 { 21 perform()22 public TestResult perform() 23 { 24 try 25 { 26 CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); 27 28 // initialise CertStore 29 X509Certificate rootCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.rootCertBin)); 30 X509Certificate interCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.interCertBin)); 31 X509Certificate finalCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.finalCertBin)); 32 X509CRL rootCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(CertPathTest.rootCrlBin)); 33 X509CRL interCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(CertPathTest.interCrlBin)); 34 List list = new ArrayList(); 35 list.add( rootCert ); 36 list.add( interCert ); 37 list.add( finalCert ); 38 list.add( rootCrl ); 39 list.add( interCrl ); 40 CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters( list ); 41 CertStore store = CertStore.getInstance("Collection", ccsp ); 42 Calendar validDate = Calendar.getInstance(); 43 validDate.set(2002,2,21,2,21,10); 44 45 //Searching for rootCert by subjectDN without CRL 46 Set trust = new HashSet(); 47 trust.add( new TrustAnchor( rootCert, null ) ); 48 49 CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX","BC"); 50 X509CertSelector targetConstraints = new X509CertSelector(); 51 targetConstraints.setSubject(((X509Principal)rootCert.getSubjectDN()).getEncoded()); 52 PKIXBuilderParameters params = new PKIXBuilderParameters( trust, targetConstraints ); 53 params.addCertStore( store ); 54 params.setDate( validDate.getTime() ); 55 PKIXCertPathBuilderResult result = (PKIXCertPathBuilderResult) cpb.build(params); 56 } 57 catch (Exception e) 58 { 59 e.printStackTrace(); 60 return new SimpleTestResult(false, this.getName() + ": exception - " + e.toString()); 61 } 62 63 return new SimpleTestResult(true, this.getName() + ": Okay"); 64 } 65 getName()66 public String getName() 67 { 68 return "CertPathBuilder"; 69 } 70 main( String[] args)71 public static void main( 72 String[] args) 73 { 74 Security.addProvider(new BouncyCastleProvider()); 75 76 Test test = new CertPathBuilderTest(); 77 TestResult result = test.perform(); 78 79 System.out.println(result.toString()); 80 } 81 82 } 83 84