📄 nistcertpathreviewertest.java
字号:
doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); } public void testAllCertificatesAnyPolicyTest11() throws Exception { String[] certList = new String[] { "anyPolicyCACert", "AllCertificatesanyPolicyTest11EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "anyPolicyCACRL" }; doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); } public void testDifferentPoliciesTest12() throws Exception { String[] certList = new String[] { "PoliciesP3CACert", "DifferentPoliciesTest12EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP3CACRL" }; doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, -1, "CertPathReviewer.noValidPolicyTree", "Policy checking failed: no valid policy tree found when one expected."); } public void testAllCertificatesSamePoliciesTest13() throws Exception { String[] certList = new String[] { "PoliciesP123CACert", "AllCertificatesSamePoliciesTest13EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP123CACRL" }; doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy3); } public void testAnyPolicyTest14() throws Exception { String[] certList = new String[] { "anyPolicyCACert", "AnyPolicyTest14EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "anyPolicyCACRL" }; doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, -1, "CertPathReviewer.invalidPolicy", "Path processing failed on policy."); } public void testUserNoticeQualifierTest15() throws Exception { String[] certList = new String[] { "UserNoticeQualifierTest15EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL }; doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, -1, "CertPathReviewer.invalidPolicy", "Path processing failed on policy."); } public void testUserNoticeQualifierTest16() throws Exception { String[] certList = new String[] { GOOD_CA_CERT, "UserNoticeQualifierTest16EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }; doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, -1, "CertPathReviewer.invalidPolicy", "Path processing failed on policy."); } public void testUserNoticeQualifierTest17() throws Exception { String[] certList = new String[] { GOOD_CA_CERT, "UserNoticeQualifierTest17EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, GOOD_CA_CRL }; doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, -1, "CertPathReviewer.invalidPolicy", "Path processing failed on policy."); } public void testUserNoticeQualifierTest18() throws Exception { String[] certList = new String[] { "PoliciesP12CACert", "UserNoticeQualifierTest18EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL, "PoliciesP12CACRL" }; doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2); } public void testUserNoticeQualifierTest19() throws Exception { String[] certList = new String[] { "UserNoticeQualifierTest19EE" }; String[] crlList = new String[] { TRUST_ANCHOR_ROOT_CRL }; doAcceptingTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy1); doErrorTest(TRUST_ANCHOR_ROOT_CERTIFICATE, certList, crlList, nistTestPolicy2, -1, "CertPathReviewer.invalidPolicy", "Path processing failed on policy."); } private void doAcceptingTest( String trustAnchor, String[] certs, String[] crls) throws Exception { PKIXCertPathReviewer result = doTest(trustAnchor,certs,crls); if (!result.isValidCertPath()) { fail("path rejected when should be accepted"); } } private void doAcceptingTest( String trustAnchor, String[] certs, String[] crls, Set policies) throws Exception { PKIXCertPathReviewer result = doTest(trustAnchor,certs,crls,policies); if (!result.isValidCertPath()) { fail("path rejected when should be accepted"); } } private void doErrorTest( String trustAnchor, String[] certs, String[] crls, int index, String messageId, String message) throws Exception { PKIXCertPathReviewer result = doTest(trustAnchor, certs, crls); if (result.isValidCertPath()) { fail("path accepted when should be rejected"); } else { ErrorBundle msg = (ErrorBundle) result.getErrors(index).iterator().next(); assertEquals(messageId,msg.getId()); assertEquals(message,msg.getText(Locale.ENGLISH,TimeZone.getTimeZone("GMT"))); } } private void doErrorTest( String trustAnchor, String[] certs, String[] crls, Set policies, int index, String messageId, String message) throws Exception { PKIXCertPathReviewer result = doTest(trustAnchor, certs, crls, policies); if (result.isValidCertPath()) { fail("path accepted when should be rejected"); } else { ErrorBundle msg = (ErrorBundle) result.getErrors(index).iterator().next(); assertEquals(messageId,msg.getId()); assertEquals(message,msg.getText(Locale.ENGLISH,TimeZone.getTimeZone("GMT"))); } } private PKIXCertPathReviewer doTest( String trustAnchor, String[] certs, String[] crls) throws Exception { return doTest(trustAnchor, certs, crls, null); } private PKIXCertPathReviewer doTest( String trustAnchor, String[] certs, String[] crls, Set policies) throws Exception { Set trustedSet = Collections.singleton(getTrustAnchor(trustAnchor)); List certsAndCrls = new ArrayList(); X509Certificate endCert = loadCert(certs[certs.length - 1]); for (int i = 0; i != certs.length - 1; i++) { certsAndCrls.add(loadCert(certs[i])); } certsAndCrls.add(endCert); CertPath certPath = CertificateFactory.getInstance("X.509","BC").generateCertPath(certsAndCrls); for (int i = 0; i != crls.length; i++) { certsAndCrls.add(loadCrl(crls[i])); } CertStore store = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certsAndCrls), "BC"); //CertPathValidator validator = CertPathValidator.getInstance("PKIX","BC"); PKIXCertPathReviewer reviewer; PKIXParameters params = new PKIXParameters(trustedSet); params.addCertStore(store); params.setRevocationEnabled(true); if (policies != null) { params.setExplicitPolicyRequired(true); params.setInitialPolicies(policies); } reviewer = new PKIXCertPathReviewer(certPath,params); return reviewer; } private X509Certificate loadCert( String certName) { X509Certificate cert = (X509Certificate)certs.get(certName); if (cert != null) { return cert; } try { InputStream in = new FileInputStream(getPkitsHome() + "/certs/" + certName + ".crt"); CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); cert = (X509Certificate)fact.generateCertificate(in); certs.put(certName, cert); return cert; } catch (Exception e) { throw new IllegalStateException("exception loading certificate " + certName + ": " + e); } } private X509CRL loadCrl( String crlName) throws Exception { X509CRL crl = (X509CRL)certs.get(crlName); if (crl != null) { return crl; } try { InputStream in = new FileInputStream(getPkitsHome() + "/crls/" + crlName + ".crl"); CertificateFactory fact = CertificateFactory.getInstance("X.509", "BC"); crl = (X509CRL)fact.generateCRL(in); crls.put(crlName, crl); return crl; } catch (Exception e) { throw new IllegalStateException("exception loading CRL: " + crlName); } } private TrustAnchor getTrustAnchor(String trustAnchorName) throws Exception { X509Certificate cert = loadCert(trustAnchorName); byte[] extBytes = cert.getExtensionValue(X509Extensions.NameConstraints.getId()); if (extBytes != null) { ASN1Encodable extValue = X509ExtensionUtil.fromExtensionValue(extBytes); return new TrustAnchor(cert, extValue.getDEREncoded()); } return new TrustAnchor(cert, null); } private String getPkitsHome() { String dataHome = System.getProperty(TEST_DATA_HOME); if (dataHome == null) { throw new IllegalStateException(TEST_DATA_HOME + " property not set"); } return dataHome + "/PKITS"; } public static void main (String[] args) throws Exception { junit.textui.TestRunner.run(suite()); } public void setUp() { if (Security.getProvider("BC") == null) { Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); } } public static Test suite() throws Exception { TestSuite suite = new TestSuite("NIST CertPath Tests"); suite.addTestSuite(NistCertPathReviewerTest.class); return suite; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -