我想扩展证书验证算法,或将其模块化,以便我可以选择可以跳过哪些验证。我不想重新发明轮子,所以我希望我可以继承 Java Sun 的 PKIX 实现。
但是,我找不到源代码。显然它是一个引擎类,并且通过getInstance("PKIX")
. 我来找的关门PKIXValidator
在$JAVA_HOME\lib\src.zip\java.base\sun\security\validator\PKIXValidator
.
我觉得这不是正确的文件,因为该类本身具有以下方法:
private X509Certificate[] doValidate(X509Certificate[] chain,
PKIXBuilderParameters params) throws CertificateException {
CertPathValidator validator = CertPathValidator.getInstance("PKIX");
CertPath path = factory.generateCertPath(Arrays.asList(chain));
certPathLength = chain.length;
PKIXCertPathValidatorResult result =
(PKIXCertPathValidatorResult)validator.validate(path, params);
return toArray(path, result.getTrustAnchor());
}
由于这个类没有实现该validate()
方法,我假设有另一个文件实际上验证了证书。我指的不仅仅是签名,我指的是 KeyUsage、Extensions、正确的 Issuer/Subject、整个包。
所以,总结一下。我正在寻找检查正确的 KeyUsage、Subject 和 Issuer、Critical Extensions 等的实现。