certstoretest.java

来自「kmlnjlkj nlkjlkjkljl okopokipoipo oipipi」· Java 代码 · 共 236 行

JAVA
236
字号
package org.bouncycastle.jce.provider.test;import org.bouncycastle.jce.provider.BouncyCastleProvider;import org.bouncycastle.util.test.SimpleTest;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.Iterator;import java.util.List;public class CertStoreTest    extends SimpleTest{    public void performTest()        throws Exception    {        basicTest();        orderTest();    }    private void basicTest()        throws Exception    {        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, "BC");        // Searching for rootCert by subjectDN        X509CertSelector targetConstraints = new X509CertSelector();        targetConstraints.setSubject(rootCert.getSubjectX500Principal().getName());        Collection certs = store.getCertificates(targetConstraints);        if (certs.size() != 1 || !certs.contains(rootCert))        {            fail("rootCert not found by subjectDN");        }        // Searching for rootCert by subjectDN encoded as byte        targetConstraints = new X509CertSelector();        targetConstraints.setSubject(rootCert.getSubjectX500Principal()                .getEncoded());        certs = store.getCertificates(targetConstraints);        if (certs.size() != 1 || !certs.contains(rootCert))        {            fail("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))        {            fail("rootCert not found by encoded public key");        }        // Searching for interCert by issuerDN        targetConstraints = new X509CertSelector();        targetConstraints.setIssuer(rootCert.getSubjectX500Principal()                .getEncoded());        certs = store.getCertificates(targetConstraints);        if (certs.size() != 2)        {            fail("did not found 2 certs");        }        if (!certs.contains(rootCert))        {            fail("rootCert not found");        }        if (!certs.contains(interCert))        {            fail("interCert not found");        }        // Searching for rootCrl by issuerDN        X509CRLSelector targetConstraintsCRL = new X509CRLSelector();        targetConstraintsCRL.addIssuerName(rootCrl.getIssuerX500Principal()                .getEncoded());        Collection crls = store.getCRLs(targetConstraintsCRL);        if (crls.size() != 1 || !crls.contains(rootCrl))        {            fail("rootCrl not found");        }    }    private void orderTest()        throws Exception    {        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));        List list = new ArrayList();        list.add(rootCert);        list.add(interCert);        list.add(finalCert);        CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters(list);        CertStore store = CertStore.getInstance("Collection", ccsp, "BC");        Iterator certs = store.getCertificates(null).iterator();        if (!certs.next().equals(rootCert))        {            fail("root ordering wrong");        }        if (!certs.next().equals(interCert))        {            fail("mid ordering wrong");        }        if (!certs.next().equals(finalCert))        {            fail("final ordering wrong");        }        list = new ArrayList();        list.add(finalCert);        list.add(interCert);        list.add(rootCert);        ccsp = new CollectionCertStoreParameters(list);        store = CertStore.getInstance("Collection", ccsp, "BC");        certs = store.getCertificates(null).iterator();        if (!certs.next().equals(finalCert))        {            fail("reverse final ordering wrong");        }        if (!certs.next().equals(interCert))        {            fail("reverse mid ordering wrong");        }        if (!certs.next().equals(rootCert))        {            fail("reverse root ordering wrong");        }        X509CRL rootCrl = (X509CRL)cf.generateCRL(new ByteArrayInputStream(                CertPathTest.rootCrlBin));        X509CRL interCrl = (X509CRL)cf                .generateCRL(new ByteArrayInputStream(                        CertPathTest.interCrlBin));        list = new ArrayList();        list.add(finalCert);        list.add(rootCrl);        list.add(interCrl);        ccsp = new CollectionCertStoreParameters(list);        store = CertStore.getInstance("Collection", ccsp, "BC");        Iterator crls = store.getCRLs(null).iterator();        if (!crls.next().equals(rootCrl))        {            fail("root crl ordering wrong");        }        if (!crls.next().equals(interCrl))        {            fail("mid crl ordering wrong");        }        list = new ArrayList();        list.add(finalCert);        list.add(interCrl);        list.add(rootCrl);        ccsp = new CollectionCertStoreParameters(list);        store = CertStore.getInstance("Collection", ccsp, "BC");        crls = store.getCRLs(null).iterator();        if (!crls.next().equals(interCrl))        {            fail("reverse mid crl ordering wrong");        }        if (!crls.next().equals(rootCrl))        {            fail("reverse root crl ordering wrong");        }    }        public String getName()    {        return "CertStore";    }    public static void main(String[] args)    {        Security.addProvider(new BouncyCastleProvider());        runTest(new CertStoreTest());    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?