Welcome to mirror list, hosted at ThFree Co, Russian Federation.

CertStoreTest.java « test « provider « jce « bouncycastle « org « jdk1.1 « test « src « prov - gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9e56ed745906cab2fad29c104174873d2dd1e0d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package org.bouncycastle.jce.provider.test;
 
import java.io.ByteArrayInputStream;
import java.security.Security;
import java.security.cert.CertStore;
import java.security.cert.CertificateFactory;
import java.security.cert.CollectionCertStoreParameters;
import java.security.cert.X509CRL;
import java.security.cert.X509CRLSelector;
import java.security.cert.X509CertSelector;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.bouncycastle.jce.X509Principal;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.util.test.SimpleTestResult;
import org.bouncycastle.util.test.Test;
import org.bouncycastle.util.test.TestResult;

public class CertStoreTest
    implements Test
{

    public TestResult perform()
    {
        try
         {
         CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");

         X509Certificate rootCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.rootCertBin));
         X509Certificate interCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.interCertBin));
         X509Certificate finalCert = (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(CertPathTest.finalCertBin));
         X509CRL rootCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(CertPathTest.rootCrlBin));
         X509CRL interCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(CertPathTest.interCrlBin));

             //Testing CollectionCertStore generation from List
         List list = new ArrayList();
         list.add( rootCert );
         list.add( interCert );
         list.add( finalCert );
         list.add( rootCrl );
         list.add( interCrl );
         CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters( list );
         CertStore store = CertStore.getInstance("Collection", ccsp );

             //Searching for rootCert by subjectDN
         X509CertSelector targetConstraints = new X509CertSelector();
         targetConstraints.setSubject(rootCert.getSubjectDN().getName());
         Collection certs = store.getCertificates( targetConstraints );
         if ( certs.size() != 1 || 
              ! certs.contains( rootCert ) ) {
             return new SimpleTestResult( false,  this.getName() + ": rootCert not found by subjectDN" );
         }

             //Searching for rootCert by subjectDN encoded as byte
        targetConstraints = new X509CertSelector();
        targetConstraints.setSubject(((X509Principal)rootCert.getSubjectDN()).getEncoded());
        certs = store.getCertificates( targetConstraints );
        if ( certs.size() != 1 || 
             ! certs.contains( rootCert ) ) {
            return new SimpleTestResult( false,  this.getName() + ": rootCert not found by encoded subjectDN" );
         }

             //Searching for rootCert by public key encoded as byte
        targetConstraints = new X509CertSelector();
        targetConstraints.setSubjectPublicKey(rootCert.getPublicKey().getEncoded());
        certs = store.getCertificates( targetConstraints );
        if ( certs.size() != 1 || 
             ! certs.contains( rootCert ) ) {
            return new SimpleTestResult( false,  this.getName() + ": rootCert not found by encoded public key" );
         }

             //Searching for interCert by issuerDN
         targetConstraints = new X509CertSelector();
         targetConstraints.setIssuer( ((X509Principal)rootCert.getSubjectDN()).getEncoded() );
         certs = store.getCertificates( targetConstraints );
         if ( certs.size() != 2 ) {
             return new SimpleTestResult( false,  this.getName() + ": did not found 2 certs" );
         }
         if ( ! certs.contains( rootCert ) ) {
             return new SimpleTestResult( false,  this.getName() + ": rootCert not found" );
         }
         if ( ! certs.contains( interCert ) ) {
             return new SimpleTestResult( false,  this.getName() + ": interCert not found" );
         }

             //Searching for rootCrl by issuerDN
         X509CRLSelector targetConstraintsCRL = new X509CRLSelector();
         targetConstraintsCRL.addIssuerName( ((X509Principal)rootCrl.getIssuerDN()).getEncoded() );
         Collection crls = store.getCRLs( targetConstraintsCRL );
         if ( crls.size() != 1 || 
              ! crls.contains( rootCrl ) ) {
             return new SimpleTestResult( false,  this.getName() + ": rootCrl not found" );
         }
         }
        catch (Exception e)
         {
         e.printStackTrace();
         return new SimpleTestResult(false, this.getName() + ": exception - " + e.toString());
         }

        return new SimpleTestResult(true, this.getName() + ": Okay");
    }

    public String getName()
    {
        return "CertStore";
    }

    public static void main(String[] args)
    {
        Security.addProvider(new BouncyCastleProvider());

        Test            test = new CertStoreTest();
        TestResult        result = test.perform();

        System.out.println(result.toString());
    }

}