From 14c586557e026909e47553658d38f00b861da33f Mon Sep 17 00:00:00 2001 From: Sean Mullan Date: Wed, 30 May 2012 17:19:46 -0400 Subject: [PATCH] 6854712: Revocation checking enhancements (JEP-124) 6637288: Add OCSP support to PKIX CertPathBuilder implementation 7126011: ReverseBuilder.getMatchingCACerts may throws NPE Reviewed-by: xuelei --- .../java/security/cert/CertPathBuilder.java | 63 +- .../security/cert/CertPathBuilderSpi.java | 23 +- .../java/security/cert/CertPathChecker.java | 77 ++ .../java/security/cert/CertPathValidator.java | 64 +- .../security/cert/CertPathValidatorSpi.java | 23 +- .../security/cert/PKIXCertPathChecker.java | 19 +- .../security/cert/PKIXRevocationChecker.java | 271 ++++ .../classes/java/security/cert/package.html | 10 +- .../provider/certpath/AdjacencyList.java | 218 ++-- .../provider/certpath/BasicChecker.java | 53 +- .../security/provider/certpath/BuildStep.java | 25 +- .../security/provider/certpath/Builder.java | 66 +- .../provider/certpath/CertStoreHelper.java | 7 +- .../certpath/CollectionCertStore.java | 25 +- .../provider/certpath/ConstraintsChecker.java | 47 +- .../certpath/CrlRevocationChecker.java | 785 ------------ .../certpath/DistributionPointFetcher.java | 100 +- .../provider/certpath/ForwardBuilder.java | 155 +-- .../provider/certpath/ForwardState.java | 55 +- .../certpath/IndexedCollectionCertStore.java | 24 +- .../provider/certpath/KeyChecker.java | 61 +- .../sun/security/provider/certpath/OCSP.java | 96 +- .../provider/certpath/OCSPChecker.java | 446 ------- .../provider/certpath/OCSPRequest.java | 34 +- .../provider/certpath/OCSPResponse.java | 266 ++-- .../sun/security/provider/certpath/PKIX.java | 289 +++++ .../certpath/PKIXCertPathValidator.java | 333 ++--- .../certpath/PKIXMasterCertPathValidator.java | 121 +- .../provider/certpath/PolicyChecker.java | 63 +- .../provider/certpath/PolicyNodeImpl.java | 25 +- .../provider/certpath/ReverseBuilder.java | 258 ++-- .../provider/certpath/ReverseState.java | 119 +- .../provider/certpath/RevocationChecker.java | 1095 +++++++++++++++++ .../provider/certpath/SunCertPathBuilder.java | 385 +++--- .../SunCertPathBuilderParameters.java | 8 +- .../provider/certpath/URICertStore.java | 10 +- .../security/provider/certpath/Vertex.java | 110 +- .../provider/certpath/X509CertPath.java | 12 +- .../certpath/X509CertificatePair.java | 9 +- .../sun/security/x509/X509CRLEntryImpl.java | 4 + .../cert/PKIXRevocationChecker/UnitTest.java | 179 +++ 41 files changed, 3257 insertions(+), 2776 deletions(-) create mode 100644 jdk/src/share/classes/java/security/cert/CertPathChecker.java create mode 100644 jdk/src/share/classes/java/security/cert/PKIXRevocationChecker.java delete mode 100644 jdk/src/share/classes/sun/security/provider/certpath/CrlRevocationChecker.java delete mode 100644 jdk/src/share/classes/sun/security/provider/certpath/OCSPChecker.java create mode 100644 jdk/src/share/classes/sun/security/provider/certpath/PKIX.java create mode 100644 jdk/src/share/classes/sun/security/provider/certpath/RevocationChecker.java create mode 100644 jdk/test/java/security/cert/PKIXRevocationChecker/UnitTest.java diff --git a/jdk/src/share/classes/java/security/cert/CertPathBuilder.java b/jdk/src/share/classes/java/security/cert/CertPathBuilder.java index 95988d4a3aa..096627d6188 100644 --- a/jdk/src/share/classes/java/security/cert/CertPathBuilder.java +++ b/jdk/src/share/classes/java/security/cert/CertPathBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -45,15 +45,28 @@ import sun.security.jca.GetInstance.Instance; * one of the static getInstance methods, passing in the * algorithm name of the CertPathBuilder desired and optionally * the name of the provider desired. - *

- * Once a CertPathBuilder object has been created, certification + * + *

Once a CertPathBuilder object has been created, certification * paths can be constructed by calling the {@link #build build} method and * passing it an algorithm-specific set of parameters. If successful, the * result (including the CertPath that was built) is returned * in an object that implements the CertPathBuilderResult * interface. * - *

Every implementation of the Java platform is required to support the + *

The {@link #getRevocationChecker} method allows an application to specify + * additional algorithm-specific parameters and options used by the + * {@code CertPathBuilder} when checking the revocation status of certificates. + * Here is an example demonstrating how it is used with the PKIX algorithm: + * + *

+ * CertPathBuilder cpb = CertPathBuilder.getInstance("PKIX");
+ * PKIXRevocationChecker rc = (PKIXRevocationChecker)cpb.getRevocationChecker();
+ * rc.setOptions(EnumSet.of(Option.PREFER_CRLS));
+ * params.addCertPathChecker(rc);
+ * CertPathBuilderResult cpbr = cpb.build(params);
+ * 
+ * + *

Every implementation of the Java platform is required to support the * following standard CertPathBuilder algorithm: *