1250 lines
72 KiB
Java
1250 lines
72 KiB
Java
|
package org.bouncycastle.jce.provider;
|
||
|
|
||
|
import com.huawei.hms.android.SystemUtils;
|
||
|
import java.io.IOException;
|
||
|
import java.math.BigInteger;
|
||
|
import java.security.GeneralSecurityException;
|
||
|
import java.security.PublicKey;
|
||
|
import java.security.cert.CRL;
|
||
|
import java.security.cert.CertPath;
|
||
|
import java.security.cert.CertPathBuilderException;
|
||
|
import java.security.cert.CertPathValidatorException;
|
||
|
import java.security.cert.Certificate;
|
||
|
import java.security.cert.CertificateExpiredException;
|
||
|
import java.security.cert.CertificateNotYetValidException;
|
||
|
import java.security.cert.PKIXCertPathChecker;
|
||
|
import java.security.cert.X509CRL;
|
||
|
import java.security.cert.X509CRLSelector;
|
||
|
import java.security.cert.X509CertSelector;
|
||
|
import java.security.cert.X509Certificate;
|
||
|
import java.security.cert.X509Extension;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Collection;
|
||
|
import java.util.Date;
|
||
|
import java.util.Enumeration;
|
||
|
import java.util.HashSet;
|
||
|
import java.util.Iterator;
|
||
|
import java.util.List;
|
||
|
import java.util.Set;
|
||
|
import org.bouncycastle.asn1.ASN1Encodable;
|
||
|
import org.bouncycastle.asn1.ASN1EncodableVector;
|
||
|
import org.bouncycastle.asn1.ASN1Integer;
|
||
|
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
|
||
|
import org.bouncycastle.asn1.ASN1Primitive;
|
||
|
import org.bouncycastle.asn1.ASN1Sequence;
|
||
|
import org.bouncycastle.asn1.ASN1String;
|
||
|
import org.bouncycastle.asn1.ASN1TaggedObject;
|
||
|
import org.bouncycastle.asn1.DERSequence;
|
||
|
import org.bouncycastle.asn1.x500.RDN;
|
||
|
import org.bouncycastle.asn1.x500.X500Name;
|
||
|
import org.bouncycastle.asn1.x500.style.BCStyle;
|
||
|
import org.bouncycastle.asn1.x509.BasicConstraints;
|
||
|
import org.bouncycastle.asn1.x509.CRLDistPoint;
|
||
|
import org.bouncycastle.asn1.x509.DistributionPoint;
|
||
|
import org.bouncycastle.asn1.x509.DistributionPointName;
|
||
|
import org.bouncycastle.asn1.x509.Extension;
|
||
|
import org.bouncycastle.asn1.x509.GeneralName;
|
||
|
import org.bouncycastle.asn1.x509.GeneralNames;
|
||
|
import org.bouncycastle.asn1.x509.GeneralSubtree;
|
||
|
import org.bouncycastle.asn1.x509.IssuingDistributionPoint;
|
||
|
import org.bouncycastle.asn1.x509.NameConstraints;
|
||
|
import org.bouncycastle.asn1.x509.PolicyInformation;
|
||
|
import org.bouncycastle.jcajce.PKIXCRLStoreSelector;
|
||
|
import org.bouncycastle.jcajce.PKIXCertStoreSelector;
|
||
|
import org.bouncycastle.jcajce.PKIXExtendedBuilderParameters;
|
||
|
import org.bouncycastle.jcajce.PKIXExtendedParameters;
|
||
|
import org.bouncycastle.jcajce.util.JcaJceHelper;
|
||
|
import org.bouncycastle.jce.exception.ExtCertPathValidatorException;
|
||
|
import org.bouncycastle.util.Arrays;
|
||
|
|
||
|
/* loaded from: classes6.dex */
|
||
|
class RFC3280CertPathUtilities {
|
||
|
public static final String ANY_POLICY = "2.5.29.32.0";
|
||
|
protected static final int CRL_SIGN = 6;
|
||
|
protected static final int KEY_CERT_SIGN = 5;
|
||
|
private static final PKIXCRLUtil CRL_UTIL = new PKIXCRLUtil();
|
||
|
public static final String CERTIFICATE_POLICIES = Extension.certificatePolicies.getId();
|
||
|
public static final String POLICY_MAPPINGS = Extension.policyMappings.getId();
|
||
|
public static final String INHIBIT_ANY_POLICY = Extension.inhibitAnyPolicy.getId();
|
||
|
public static final String ISSUING_DISTRIBUTION_POINT = Extension.issuingDistributionPoint.getId();
|
||
|
public static final String FRESHEST_CRL = Extension.freshestCRL.getId();
|
||
|
public static final String DELTA_CRL_INDICATOR = Extension.deltaCRLIndicator.getId();
|
||
|
public static final String POLICY_CONSTRAINTS = Extension.policyConstraints.getId();
|
||
|
public static final String BASIC_CONSTRAINTS = Extension.basicConstraints.getId();
|
||
|
public static final String CRL_DISTRIBUTION_POINTS = Extension.cRLDistributionPoints.getId();
|
||
|
public static final String SUBJECT_ALTERNATIVE_NAME = Extension.subjectAlternativeName.getId();
|
||
|
public static final String NAME_CONSTRAINTS = Extension.nameConstraints.getId();
|
||
|
public static final String AUTHORITY_KEY_IDENTIFIER = Extension.authorityKeyIdentifier.getId();
|
||
|
public static final String KEY_USAGE = Extension.keyUsage.getId();
|
||
|
public static final String CRL_NUMBER = Extension.cRLNumber.getId();
|
||
|
protected static final String[] crlReasons = {"unspecified", "keyCompromise", "cACompromise", "affiliationChanged", "superseded", "cessationOfOperation", "certificateHold", SystemUtils.UNKNOWN, "removeFromCRL", "privilegeWithdrawn", "aACompromise"};
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static PKIXPolicyNode wrapupCertG(CertPath certPath, PKIXExtendedParameters pKIXExtendedParameters, Set set, int i, List[] listArr, PKIXPolicyNode pKIXPolicyNode, Set set2) throws CertPathValidatorException {
|
||
|
int size = certPath.getCertificates().size();
|
||
|
if (pKIXPolicyNode == null) {
|
||
|
if (pKIXExtendedParameters.isExplicitPolicyRequired()) {
|
||
|
throw new ExtCertPathValidatorException("Explicit policy requested but none available.", null, certPath, i);
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
if (!CertPathValidatorUtilities.isAnyPolicy(set)) {
|
||
|
HashSet<PKIXPolicyNode> hashSet = new HashSet();
|
||
|
for (List list : listArr) {
|
||
|
for (int i2 = 0; i2 < list.size(); i2++) {
|
||
|
PKIXPolicyNode pKIXPolicyNode2 = (PKIXPolicyNode) list.get(i2);
|
||
|
if (ANY_POLICY.equals(pKIXPolicyNode2.getValidPolicy())) {
|
||
|
Iterator children = pKIXPolicyNode2.getChildren();
|
||
|
while (children.hasNext()) {
|
||
|
PKIXPolicyNode pKIXPolicyNode3 = (PKIXPolicyNode) children.next();
|
||
|
if (!ANY_POLICY.equals(pKIXPolicyNode3.getValidPolicy())) {
|
||
|
hashSet.add(pKIXPolicyNode3);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
for (PKIXPolicyNode pKIXPolicyNode4 : hashSet) {
|
||
|
if (!set.contains(pKIXPolicyNode4.getValidPolicy())) {
|
||
|
pKIXPolicyNode = CertPathValidatorUtilities.removePolicyNode(pKIXPolicyNode, listArr, pKIXPolicyNode4);
|
||
|
}
|
||
|
}
|
||
|
if (pKIXPolicyNode != null) {
|
||
|
for (int i3 = size - 1; i3 >= 0; i3--) {
|
||
|
List list2 = listArr[i3];
|
||
|
for (int i4 = 0; i4 < list2.size(); i4++) {
|
||
|
PKIXPolicyNode pKIXPolicyNode5 = (PKIXPolicyNode) list2.get(i4);
|
||
|
if (!pKIXPolicyNode5.hasChildren()) {
|
||
|
pKIXPolicyNode = CertPathValidatorUtilities.removePolicyNode(pKIXPolicyNode, listArr, pKIXPolicyNode5);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} else if (pKIXExtendedParameters.isExplicitPolicyRequired()) {
|
||
|
if (set2.isEmpty()) {
|
||
|
throw new ExtCertPathValidatorException("Explicit policy requested but none available.", null, certPath, i);
|
||
|
}
|
||
|
HashSet hashSet2 = new HashSet();
|
||
|
for (List list3 : listArr) {
|
||
|
for (int i5 = 0; i5 < list3.size(); i5++) {
|
||
|
PKIXPolicyNode pKIXPolicyNode6 = (PKIXPolicyNode) list3.get(i5);
|
||
|
if (ANY_POLICY.equals(pKIXPolicyNode6.getValidPolicy())) {
|
||
|
Iterator children2 = pKIXPolicyNode6.getChildren();
|
||
|
while (children2.hasNext()) {
|
||
|
hashSet2.add(children2.next());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
Iterator it = hashSet2.iterator();
|
||
|
while (it.hasNext()) {
|
||
|
set2.contains(((PKIXPolicyNode) it.next()).getValidPolicy());
|
||
|
}
|
||
|
if (pKIXPolicyNode != null) {
|
||
|
for (int i6 = size - 1; i6 >= 0; i6--) {
|
||
|
List list4 = listArr[i6];
|
||
|
for (int i7 = 0; i7 < list4.size(); i7++) {
|
||
|
PKIXPolicyNode pKIXPolicyNode7 = (PKIXPolicyNode) list4.get(i7);
|
||
|
if (!pKIXPolicyNode7.hasChildren()) {
|
||
|
pKIXPolicyNode = CertPathValidatorUtilities.removePolicyNode(pKIXPolicyNode, listArr, pKIXPolicyNode7);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return pKIXPolicyNode;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void wrapupCertF(CertPath certPath, int i, List list, Set set) throws CertPathValidatorException {
|
||
|
X509Certificate x509Certificate = (X509Certificate) certPath.getCertificates().get(i);
|
||
|
Iterator it = list.iterator();
|
||
|
while (it.hasNext()) {
|
||
|
try {
|
||
|
((PKIXCertPathChecker) it.next()).check(x509Certificate, set);
|
||
|
} catch (CertPathValidatorException e) {
|
||
|
throw new ExtCertPathValidatorException("Additional certificate path checker failed.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
if (!set.isEmpty()) {
|
||
|
throw new ExtCertPathValidatorException("Certificate has unsupported critical extension: ".concat(String.valueOf(set)), null, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static int wrapupCertB(CertPath certPath, int i, int i2) throws CertPathValidatorException {
|
||
|
try {
|
||
|
ASN1Sequence dERSequence = DERSequence.getInstance(CertPathValidatorUtilities.getExtensionValue((X509Certificate) certPath.getCertificates().get(i), POLICY_CONSTRAINTS));
|
||
|
if (dERSequence != null) {
|
||
|
Enumeration objects = dERSequence.getObjects();
|
||
|
while (objects.hasMoreElements()) {
|
||
|
ASN1TaggedObject aSN1TaggedObject = (ASN1TaggedObject) objects.nextElement();
|
||
|
if (aSN1TaggedObject.getTagNo() == 0) {
|
||
|
try {
|
||
|
if (ASN1Integer.getInstance(aSN1TaggedObject, false).getValue().intValue() == 0) {
|
||
|
return 0;
|
||
|
}
|
||
|
} catch (Exception e) {
|
||
|
throw new ExtCertPathValidatorException("Policy constraints requireExplicitPolicy field could not be decoded.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return i2;
|
||
|
} catch (AnnotatedException e2) {
|
||
|
throw new ExtCertPathValidatorException("Policy constraints could not be decoded.", e2, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static int wrapupCertA(int i, X509Certificate x509Certificate) {
|
||
|
return (CertPathValidatorUtilities.isSelfIssued(x509Certificate) || i == 0) ? i : i - 1;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void processCertF(CertPath certPath, int i, PKIXPolicyNode pKIXPolicyNode, int i2) throws CertPathValidatorException {
|
||
|
if (i2 <= 0 && pKIXPolicyNode == null) {
|
||
|
throw new ExtCertPathValidatorException("No valid policy tree found when one expected.", null, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static PKIXPolicyNode processCertE(CertPath certPath, int i, PKIXPolicyNode pKIXPolicyNode) throws CertPathValidatorException {
|
||
|
try {
|
||
|
if (DERSequence.getInstance(CertPathValidatorUtilities.getExtensionValue((X509Certificate) certPath.getCertificates().get(i), CERTIFICATE_POLICIES)) == null) {
|
||
|
return null;
|
||
|
}
|
||
|
return pKIXPolicyNode;
|
||
|
} catch (AnnotatedException e) {
|
||
|
throw new ExtCertPathValidatorException("Could not read certificate policies extension from certificate.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static PKIXPolicyNode processCertD(CertPath certPath, int i, Set set, PKIXPolicyNode pKIXPolicyNode, List[] listArr, int i2) throws CertPathValidatorException {
|
||
|
String str;
|
||
|
int i3;
|
||
|
List<? extends Certificate> certificates = certPath.getCertificates();
|
||
|
X509Certificate x509Certificate = (X509Certificate) certificates.get(i);
|
||
|
int size = certificates.size();
|
||
|
int i4 = size - i;
|
||
|
try {
|
||
|
ASN1Sequence dERSequence = DERSequence.getInstance(CertPathValidatorUtilities.getExtensionValue(x509Certificate, CERTIFICATE_POLICIES));
|
||
|
if (dERSequence == null || pKIXPolicyNode == null) {
|
||
|
return null;
|
||
|
}
|
||
|
Enumeration objects = dERSequence.getObjects();
|
||
|
HashSet hashSet = new HashSet();
|
||
|
while (objects.hasMoreElements()) {
|
||
|
PolicyInformation policyInformation = PolicyInformation.getInstance(objects.nextElement());
|
||
|
ASN1ObjectIdentifier policyIdentifier = policyInformation.getPolicyIdentifier();
|
||
|
hashSet.add(policyIdentifier.getId());
|
||
|
if (!ANY_POLICY.equals(policyIdentifier.getId())) {
|
||
|
try {
|
||
|
Set qualifierSet = CertPathValidatorUtilities.getQualifierSet(policyInformation.getPolicyQualifiers());
|
||
|
if (!CertPathValidatorUtilities.processCertD1i(i4, listArr, policyIdentifier, qualifierSet)) {
|
||
|
CertPathValidatorUtilities.processCertD1ii(i4, listArr, policyIdentifier, qualifierSet);
|
||
|
}
|
||
|
} catch (CertPathValidatorException e) {
|
||
|
throw new ExtCertPathValidatorException("Policy qualifier info set could not be build.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (set.isEmpty() || set.contains(ANY_POLICY)) {
|
||
|
set.clear();
|
||
|
set.addAll(hashSet);
|
||
|
} else {
|
||
|
HashSet hashSet2 = new HashSet();
|
||
|
for (Object obj : set) {
|
||
|
if (hashSet.contains(obj)) {
|
||
|
hashSet2.add(obj);
|
||
|
}
|
||
|
}
|
||
|
set.clear();
|
||
|
set.addAll(hashSet2);
|
||
|
}
|
||
|
if (i2 > 0 || (i4 < size && CertPathValidatorUtilities.isSelfIssued(x509Certificate))) {
|
||
|
Enumeration objects2 = dERSequence.getObjects();
|
||
|
while (true) {
|
||
|
if (!objects2.hasMoreElements()) {
|
||
|
break;
|
||
|
}
|
||
|
PolicyInformation policyInformation2 = PolicyInformation.getInstance(objects2.nextElement());
|
||
|
if (ANY_POLICY.equals(policyInformation2.getPolicyIdentifier().getId())) {
|
||
|
Set qualifierSet2 = CertPathValidatorUtilities.getQualifierSet(policyInformation2.getPolicyQualifiers());
|
||
|
List list = listArr[i4 - 1];
|
||
|
for (int i5 = 0; i5 < list.size(); i5++) {
|
||
|
PKIXPolicyNode pKIXPolicyNode2 = (PKIXPolicyNode) list.get(i5);
|
||
|
for (Object obj2 : pKIXPolicyNode2.getExpectedPolicies()) {
|
||
|
if (obj2 instanceof String) {
|
||
|
str = (String) obj2;
|
||
|
} else if (obj2 instanceof ASN1ObjectIdentifier) {
|
||
|
str = ((ASN1ObjectIdentifier) obj2).getId();
|
||
|
}
|
||
|
String str2 = str;
|
||
|
Iterator children = pKIXPolicyNode2.getChildren();
|
||
|
boolean z = false;
|
||
|
while (children.hasNext()) {
|
||
|
if (str2.equals(((PKIXPolicyNode) children.next()).getValidPolicy())) {
|
||
|
z = true;
|
||
|
}
|
||
|
}
|
||
|
if (!z) {
|
||
|
HashSet hashSet3 = new HashSet();
|
||
|
hashSet3.add(str2);
|
||
|
PKIXPolicyNode pKIXPolicyNode3 = new PKIXPolicyNode(new ArrayList(), i4, hashSet3, pKIXPolicyNode2, qualifierSet2, str2, false);
|
||
|
pKIXPolicyNode2.addChild(pKIXPolicyNode3);
|
||
|
listArr[i4].add(pKIXPolicyNode3);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
PKIXPolicyNode pKIXPolicyNode4 = pKIXPolicyNode;
|
||
|
for (int i6 = i4 - 1; i6 >= 0; i6--) {
|
||
|
List list2 = listArr[i6];
|
||
|
while (i3 < list2.size()) {
|
||
|
PKIXPolicyNode pKIXPolicyNode5 = (PKIXPolicyNode) list2.get(i3);
|
||
|
i3 = (pKIXPolicyNode5.hasChildren() || (pKIXPolicyNode4 = CertPathValidatorUtilities.removePolicyNode(pKIXPolicyNode4, listArr, pKIXPolicyNode5)) != null) ? i3 + 1 : 0;
|
||
|
}
|
||
|
}
|
||
|
Set<String> criticalExtensionOIDs = x509Certificate.getCriticalExtensionOIDs();
|
||
|
if (criticalExtensionOIDs != null) {
|
||
|
boolean contains = criticalExtensionOIDs.contains(CERTIFICATE_POLICIES);
|
||
|
List list3 = listArr[i4];
|
||
|
for (int i7 = 0; i7 < list3.size(); i7++) {
|
||
|
((PKIXPolicyNode) list3.get(i7)).setCritical(contains);
|
||
|
}
|
||
|
}
|
||
|
return pKIXPolicyNode4;
|
||
|
} catch (AnnotatedException e2) {
|
||
|
throw new ExtCertPathValidatorException("Could not read certificate policies extension from certificate.", e2, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void processCertBC(CertPath certPath, int i, PKIXNameConstraintValidator pKIXNameConstraintValidator) throws CertPathValidatorException {
|
||
|
List<? extends Certificate> certificates = certPath.getCertificates();
|
||
|
X509Certificate x509Certificate = (X509Certificate) certificates.get(i);
|
||
|
int size = certificates.size();
|
||
|
if (!CertPathValidatorUtilities.isSelfIssued(x509Certificate) || size - i >= size) {
|
||
|
try {
|
||
|
ASN1Sequence dERSequence = DERSequence.getInstance(PrincipalUtils.getSubjectPrincipal(x509Certificate).getEncoded());
|
||
|
try {
|
||
|
pKIXNameConstraintValidator.checkPermittedDN(dERSequence);
|
||
|
pKIXNameConstraintValidator.checkExcludedDN(dERSequence);
|
||
|
try {
|
||
|
GeneralNames generalNames = GeneralNames.getInstance(CertPathValidatorUtilities.getExtensionValue(x509Certificate, SUBJECT_ALTERNATIVE_NAME));
|
||
|
RDN[] rDNs = X500Name.getInstance(dERSequence).getRDNs(BCStyle.EmailAddress);
|
||
|
for (int i2 = 0; i2 != rDNs.length; i2++) {
|
||
|
GeneralName generalName = new GeneralName(1, ((ASN1String) rDNs[i2].getFirst().getValue()).getString());
|
||
|
try {
|
||
|
pKIXNameConstraintValidator.checkPermitted(generalName);
|
||
|
pKIXNameConstraintValidator.checkExcluded(generalName);
|
||
|
} catch (PKIXNameConstraintValidatorException e) {
|
||
|
throw new CertPathValidatorException("Subtree check for certificate subject alternative email failed.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
if (generalNames != null) {
|
||
|
try {
|
||
|
GeneralName[] names = generalNames.getNames();
|
||
|
for (int i3 = 0; i3 < names.length; i3++) {
|
||
|
try {
|
||
|
pKIXNameConstraintValidator.checkPermitted(names[i3]);
|
||
|
pKIXNameConstraintValidator.checkExcluded(names[i3]);
|
||
|
} catch (PKIXNameConstraintValidatorException e2) {
|
||
|
throw new CertPathValidatorException("Subtree check for certificate subject alternative name failed.", e2, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
} catch (Exception e3) {
|
||
|
throw new CertPathValidatorException("Subject alternative name contents could not be decoded.", e3, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
} catch (Exception e4) {
|
||
|
throw new CertPathValidatorException("Subject alternative name extension could not be decoded.", e4, certPath, i);
|
||
|
}
|
||
|
} catch (PKIXNameConstraintValidatorException e5) {
|
||
|
throw new CertPathValidatorException("Subtree check for certificate subject failed.", e5, certPath, i);
|
||
|
}
|
||
|
} catch (Exception e6) {
|
||
|
throw new CertPathValidatorException("Exception extracting subject name when checking subtrees.", e6, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void processCertA(CertPath certPath, PKIXExtendedParameters pKIXExtendedParameters, int i, PublicKey publicKey, boolean z, X500Name x500Name, X509Certificate x509Certificate, JcaJceHelper jcaJceHelper) throws ExtCertPathValidatorException {
|
||
|
List<? extends Certificate> certificates = certPath.getCertificates();
|
||
|
X509Certificate x509Certificate2 = (X509Certificate) certificates.get(i);
|
||
|
if (!z) {
|
||
|
try {
|
||
|
CertPathValidatorUtilities.verifyX509Certificate(x509Certificate2, publicKey, pKIXExtendedParameters.getSigProvider());
|
||
|
} catch (GeneralSecurityException e) {
|
||
|
throw new ExtCertPathValidatorException("Could not validate certificate signature.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
try {
|
||
|
x509Certificate2.checkValidity(CertPathValidatorUtilities.getValidCertDateFromValidityModel(pKIXExtendedParameters, certPath, i));
|
||
|
if (pKIXExtendedParameters.isRevocationEnabled()) {
|
||
|
try {
|
||
|
checkCRLs(pKIXExtendedParameters, x509Certificate2, CertPathValidatorUtilities.getValidCertDateFromValidityModel(pKIXExtendedParameters, certPath, i), x509Certificate, publicKey, certificates, jcaJceHelper);
|
||
|
} catch (AnnotatedException e2) {
|
||
|
throw new ExtCertPathValidatorException(e2.getMessage(), e2.getCause() != null ? e2.getCause() : e2, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
if (PrincipalUtils.getEncodedIssuerPrincipal(x509Certificate2).equals(x500Name)) {
|
||
|
return;
|
||
|
}
|
||
|
StringBuilder sb = new StringBuilder("IssuerName(");
|
||
|
sb.append(PrincipalUtils.getEncodedIssuerPrincipal(x509Certificate2));
|
||
|
sb.append(") does not match SubjectName(");
|
||
|
sb.append(x500Name);
|
||
|
sb.append(") of signing certificate.");
|
||
|
throw new ExtCertPathValidatorException(sb.toString(), null, certPath, i);
|
||
|
} catch (CertificateExpiredException e3) {
|
||
|
StringBuilder sb2 = new StringBuilder("Could not validate certificate: ");
|
||
|
sb2.append(e3.getMessage());
|
||
|
throw new ExtCertPathValidatorException(sb2.toString(), e3, certPath, i);
|
||
|
} catch (CertificateNotYetValidException e4) {
|
||
|
StringBuilder sb3 = new StringBuilder("Could not validate certificate: ");
|
||
|
sb3.append(e4.getMessage());
|
||
|
throw new ExtCertPathValidatorException(sb3.toString(), e4, certPath, i);
|
||
|
} catch (AnnotatedException e5) {
|
||
|
throw new ExtCertPathValidatorException("Could not validate time of certificate.", e5, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void processCRLJ(Date date, X509CRL x509crl, Object obj, CertStatus certStatus) throws AnnotatedException {
|
||
|
if (certStatus.getCertStatus() == 11) {
|
||
|
CertPathValidatorUtilities.getCertStatus(date, x509crl, obj, certStatus);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void processCRLI(Date date, X509CRL x509crl, Object obj, CertStatus certStatus, PKIXExtendedParameters pKIXExtendedParameters) throws AnnotatedException {
|
||
|
if (!pKIXExtendedParameters.isUseDeltasEnabled() || x509crl == null) {
|
||
|
return;
|
||
|
}
|
||
|
CertPathValidatorUtilities.getCertStatus(date, x509crl, obj, certStatus);
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static X509CRL processCRLH(Set set, PublicKey publicKey) throws AnnotatedException {
|
||
|
Iterator it = set.iterator();
|
||
|
Exception e = null;
|
||
|
while (it.hasNext()) {
|
||
|
X509CRL x509crl = (X509CRL) it.next();
|
||
|
try {
|
||
|
x509crl.verify(publicKey);
|
||
|
return x509crl;
|
||
|
} catch (Exception e2) {
|
||
|
e = e2;
|
||
|
}
|
||
|
}
|
||
|
if (e == null) {
|
||
|
return null;
|
||
|
}
|
||
|
throw new AnnotatedException("Cannot verify delta CRL.", e);
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static PublicKey processCRLG(X509CRL x509crl, Set set) throws AnnotatedException {
|
||
|
Iterator it = set.iterator();
|
||
|
Exception e = null;
|
||
|
while (it.hasNext()) {
|
||
|
PublicKey publicKey = (PublicKey) it.next();
|
||
|
try {
|
||
|
x509crl.verify(publicKey);
|
||
|
return publicKey;
|
||
|
} catch (Exception e2) {
|
||
|
e = e2;
|
||
|
}
|
||
|
}
|
||
|
throw new AnnotatedException("Cannot verify CRL.", e);
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static Set processCRLF(X509CRL x509crl, Object obj, X509Certificate x509Certificate, PublicKey publicKey, PKIXExtendedParameters pKIXExtendedParameters, List list, JcaJceHelper jcaJceHelper) throws AnnotatedException {
|
||
|
int i;
|
||
|
X509CertSelector x509CertSelector = new X509CertSelector();
|
||
|
try {
|
||
|
x509CertSelector.setSubject(PrincipalUtils.getIssuerPrincipal(x509crl).getEncoded());
|
||
|
PKIXCertStoreSelector<? extends Certificate> build = new PKIXCertStoreSelector.Builder(x509CertSelector).build();
|
||
|
try {
|
||
|
Collection findCertificates = CertPathValidatorUtilities.findCertificates(build, pKIXExtendedParameters.getCertificateStores());
|
||
|
findCertificates.addAll(CertPathValidatorUtilities.findCertificates(build, pKIXExtendedParameters.getCertStores()));
|
||
|
findCertificates.add(x509Certificate);
|
||
|
Iterator it = findCertificates.iterator();
|
||
|
ArrayList arrayList = new ArrayList();
|
||
|
ArrayList arrayList2 = new ArrayList();
|
||
|
while (true) {
|
||
|
if (!it.hasNext()) {
|
||
|
break;
|
||
|
}
|
||
|
X509Certificate x509Certificate2 = (X509Certificate) it.next();
|
||
|
if (x509Certificate2.equals(x509Certificate)) {
|
||
|
arrayList.add(x509Certificate2);
|
||
|
arrayList2.add(publicKey);
|
||
|
} else {
|
||
|
try {
|
||
|
PKIXCertPathBuilderSpi pKIXCertPathBuilderSpi = new PKIXCertPathBuilderSpi();
|
||
|
X509CertSelector x509CertSelector2 = new X509CertSelector();
|
||
|
x509CertSelector2.setCertificate(x509Certificate2);
|
||
|
PKIXExtendedParameters.Builder targetConstraints = new PKIXExtendedParameters.Builder(pKIXExtendedParameters).setTargetConstraints(new PKIXCertStoreSelector.Builder(x509CertSelector2).build());
|
||
|
if (list.contains(x509Certificate2)) {
|
||
|
targetConstraints.setRevocationEnabled(false);
|
||
|
} else {
|
||
|
targetConstraints.setRevocationEnabled(true);
|
||
|
}
|
||
|
List<? extends Certificate> certificates = pKIXCertPathBuilderSpi.engineBuild(new PKIXExtendedBuilderParameters.Builder(targetConstraints.build()).build()).getCertPath().getCertificates();
|
||
|
arrayList.add(x509Certificate2);
|
||
|
arrayList2.add(CertPathValidatorUtilities.getNextWorkingKey(certificates, 0, jcaJceHelper));
|
||
|
} catch (CertPathBuilderException e) {
|
||
|
throw new AnnotatedException("CertPath for CRL signer failed to validate.", e);
|
||
|
} catch (CertPathValidatorException e2) {
|
||
|
throw new AnnotatedException("Public key of issuer certificate of CRL could not be retrieved.", e2);
|
||
|
} catch (Exception e3) {
|
||
|
throw new AnnotatedException(e3.getMessage());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
HashSet hashSet = new HashSet();
|
||
|
AnnotatedException annotatedException = null;
|
||
|
for (i = 0; i < arrayList.size(); i++) {
|
||
|
boolean[] keyUsage = ((X509Certificate) arrayList.get(i)).getKeyUsage();
|
||
|
if (keyUsage == null || (keyUsage.length >= 7 && keyUsage[6])) {
|
||
|
hashSet.add(arrayList2.get(i));
|
||
|
} else {
|
||
|
annotatedException = new AnnotatedException("Issuer certificate key usage extension does not permit CRL signing.");
|
||
|
}
|
||
|
}
|
||
|
if (hashSet.isEmpty() && annotatedException == null) {
|
||
|
throw new AnnotatedException("Cannot find a valid issuer certificate.");
|
||
|
}
|
||
|
if (!hashSet.isEmpty() || annotatedException == null) {
|
||
|
return hashSet;
|
||
|
}
|
||
|
throw annotatedException;
|
||
|
} catch (AnnotatedException e4) {
|
||
|
throw new AnnotatedException("Issuer certificate for CRL cannot be searched.", e4);
|
||
|
}
|
||
|
} catch (IOException e5) {
|
||
|
throw new AnnotatedException("Subject criteria for certificate selector to find issuer certificate for CRL could not be set.", e5);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static ReasonsMask processCRLD(X509CRL x509crl, DistributionPoint distributionPoint) throws AnnotatedException {
|
||
|
try {
|
||
|
IssuingDistributionPoint issuingDistributionPoint = IssuingDistributionPoint.getInstance(CertPathValidatorUtilities.getExtensionValue(x509crl, ISSUING_DISTRIBUTION_POINT));
|
||
|
if (issuingDistributionPoint != null && issuingDistributionPoint.getOnlySomeReasons() != null && distributionPoint.getReasons() != null) {
|
||
|
return new ReasonsMask(distributionPoint.getReasons()).intersect(new ReasonsMask(issuingDistributionPoint.getOnlySomeReasons()));
|
||
|
}
|
||
|
if ((issuingDistributionPoint == null || issuingDistributionPoint.getOnlySomeReasons() == null) && distributionPoint.getReasons() == null) {
|
||
|
return ReasonsMask.allReasons;
|
||
|
}
|
||
|
return (distributionPoint.getReasons() == null ? ReasonsMask.allReasons : new ReasonsMask(distributionPoint.getReasons())).intersect(issuingDistributionPoint == null ? ReasonsMask.allReasons : new ReasonsMask(issuingDistributionPoint.getOnlySomeReasons()));
|
||
|
} catch (Exception e) {
|
||
|
throw new AnnotatedException("Issuing distribution point extension could not be decoded.", e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void processCRLC(X509CRL x509crl, X509CRL x509crl2, PKIXExtendedParameters pKIXExtendedParameters) throws AnnotatedException {
|
||
|
if (x509crl == null) {
|
||
|
return;
|
||
|
}
|
||
|
try {
|
||
|
String str = ISSUING_DISTRIBUTION_POINT;
|
||
|
IssuingDistributionPoint issuingDistributionPoint = IssuingDistributionPoint.getInstance(CertPathValidatorUtilities.getExtensionValue(x509crl2, str));
|
||
|
if (pKIXExtendedParameters.isUseDeltasEnabled()) {
|
||
|
if (!PrincipalUtils.getIssuerPrincipal(x509crl).equals(PrincipalUtils.getIssuerPrincipal(x509crl2))) {
|
||
|
throw new AnnotatedException("Complete CRL issuer does not match delta CRL issuer.");
|
||
|
}
|
||
|
try {
|
||
|
IssuingDistributionPoint issuingDistributionPoint2 = IssuingDistributionPoint.getInstance(CertPathValidatorUtilities.getExtensionValue(x509crl, str));
|
||
|
if (issuingDistributionPoint != null ? !issuingDistributionPoint.equals(issuingDistributionPoint2) : issuingDistributionPoint2 != null) {
|
||
|
throw new AnnotatedException("Issuing distribution point extension from delta CRL and complete CRL does not match.");
|
||
|
}
|
||
|
try {
|
||
|
String str2 = AUTHORITY_KEY_IDENTIFIER;
|
||
|
ASN1Primitive extensionValue = CertPathValidatorUtilities.getExtensionValue(x509crl2, str2);
|
||
|
try {
|
||
|
ASN1Primitive extensionValue2 = CertPathValidatorUtilities.getExtensionValue(x509crl, str2);
|
||
|
if (extensionValue == null) {
|
||
|
throw new AnnotatedException("CRL authority key identifier is null.");
|
||
|
}
|
||
|
if (extensionValue2 == null) {
|
||
|
throw new AnnotatedException("Delta CRL authority key identifier is null.");
|
||
|
}
|
||
|
if (!extensionValue.equals(extensionValue2)) {
|
||
|
throw new AnnotatedException("Delta CRL authority key identifier does not match complete CRL authority key identifier.");
|
||
|
}
|
||
|
} catch (AnnotatedException e) {
|
||
|
throw new AnnotatedException("Authority key identifier extension could not be extracted from delta CRL.", e);
|
||
|
}
|
||
|
} catch (AnnotatedException e2) {
|
||
|
throw new AnnotatedException("Authority key identifier extension could not be extracted from complete CRL.", e2);
|
||
|
}
|
||
|
} catch (Exception e3) {
|
||
|
throw new AnnotatedException("Issuing distribution point extension from delta CRL could not be decoded.", e3);
|
||
|
}
|
||
|
}
|
||
|
} catch (Exception e4) {
|
||
|
throw new AnnotatedException("Issuing distribution point extension could not be decoded.", e4);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void processCRLB2(DistributionPoint distributionPoint, Object obj, X509CRL x509crl) throws AnnotatedException {
|
||
|
int i;
|
||
|
GeneralName[] generalNameArr;
|
||
|
try {
|
||
|
IssuingDistributionPoint issuingDistributionPoint = IssuingDistributionPoint.getInstance(CertPathValidatorUtilities.getExtensionValue(x509crl, ISSUING_DISTRIBUTION_POINT));
|
||
|
if (issuingDistributionPoint != null) {
|
||
|
if (issuingDistributionPoint.getDistributionPoint() != null) {
|
||
|
DistributionPointName distributionPoint2 = IssuingDistributionPoint.getInstance(issuingDistributionPoint).getDistributionPoint();
|
||
|
ArrayList arrayList = new ArrayList();
|
||
|
if (distributionPoint2.getType() == 0) {
|
||
|
for (GeneralName generalName : GeneralNames.getInstance(distributionPoint2.getName()).getNames()) {
|
||
|
arrayList.add(generalName);
|
||
|
}
|
||
|
}
|
||
|
if (distributionPoint2.getType() == 1) {
|
||
|
ASN1EncodableVector aSN1EncodableVector = new ASN1EncodableVector();
|
||
|
try {
|
||
|
Enumeration objects = ASN1Sequence.getInstance(PrincipalUtils.getIssuerPrincipal(x509crl)).getObjects();
|
||
|
while (objects.hasMoreElements()) {
|
||
|
aSN1EncodableVector.add((ASN1Encodable) objects.nextElement());
|
||
|
}
|
||
|
aSN1EncodableVector.add(distributionPoint2.getName());
|
||
|
arrayList.add(new GeneralName(X500Name.getInstance(new DERSequence(aSN1EncodableVector))));
|
||
|
} catch (Exception e) {
|
||
|
throw new AnnotatedException("Could not read CRL issuer.", e);
|
||
|
}
|
||
|
}
|
||
|
if (distributionPoint.getDistributionPoint() == null) {
|
||
|
if (distributionPoint.getCRLIssuer() == null) {
|
||
|
throw new AnnotatedException("Either the cRLIssuer or the distributionPoint field must be contained in DistributionPoint.");
|
||
|
}
|
||
|
GeneralName[] names = distributionPoint.getCRLIssuer().getNames();
|
||
|
while (i < names.length) {
|
||
|
i = arrayList.contains(names[i]) ? 0 : i + 1;
|
||
|
}
|
||
|
throw new AnnotatedException("No match for certificate CRL issuing distribution point name to cRLIssuer CRL distribution point.");
|
||
|
}
|
||
|
DistributionPointName distributionPoint3 = distributionPoint.getDistributionPoint();
|
||
|
GeneralName[] names2 = distributionPoint3.getType() == 0 ? GeneralNames.getInstance(distributionPoint3.getName()).getNames() : null;
|
||
|
if (distributionPoint3.getType() == 1) {
|
||
|
if (distributionPoint.getCRLIssuer() != null) {
|
||
|
generalNameArr = distributionPoint.getCRLIssuer().getNames();
|
||
|
} else {
|
||
|
generalNameArr = new GeneralName[1];
|
||
|
try {
|
||
|
generalNameArr[0] = new GeneralName(X500Name.getInstance(PrincipalUtils.getEncodedIssuerPrincipal(obj).getEncoded()));
|
||
|
} catch (Exception e2) {
|
||
|
throw new AnnotatedException("Could not read certificate issuer.", e2);
|
||
|
}
|
||
|
}
|
||
|
names2 = generalNameArr;
|
||
|
for (int i2 = 0; i2 < names2.length; i2++) {
|
||
|
Enumeration objects2 = ASN1Sequence.getInstance(names2[i2].getName().toASN1Primitive()).getObjects();
|
||
|
ASN1EncodableVector aSN1EncodableVector2 = new ASN1EncodableVector();
|
||
|
while (objects2.hasMoreElements()) {
|
||
|
aSN1EncodableVector2.add((ASN1Encodable) objects2.nextElement());
|
||
|
}
|
||
|
aSN1EncodableVector2.add(distributionPoint3.getName());
|
||
|
names2[i2] = new GeneralName(X500Name.getInstance(new DERSequence(aSN1EncodableVector2)));
|
||
|
}
|
||
|
}
|
||
|
if (names2 != null) {
|
||
|
while (i < names2.length) {
|
||
|
i = arrayList.contains(names2[i]) ? 0 : i + 1;
|
||
|
}
|
||
|
}
|
||
|
throw new AnnotatedException("No match for certificate CRL issuing distribution point name to cRLIssuer CRL distribution point.");
|
||
|
}
|
||
|
try {
|
||
|
BasicConstraints basicConstraints = BasicConstraints.getInstance(CertPathValidatorUtilities.getExtensionValue((X509Extension) obj, BASIC_CONSTRAINTS));
|
||
|
if (obj instanceof X509Certificate) {
|
||
|
if (issuingDistributionPoint.onlyContainsUserCerts() && basicConstraints != null && basicConstraints.isCA()) {
|
||
|
throw new AnnotatedException("CA Cert CRL only contains user certificates.");
|
||
|
}
|
||
|
if (issuingDistributionPoint.onlyContainsCACerts() && (basicConstraints == null || !basicConstraints.isCA())) {
|
||
|
throw new AnnotatedException("End CRL only contains CA certificates.");
|
||
|
}
|
||
|
}
|
||
|
if (issuingDistributionPoint.onlyContainsAttributeCerts()) {
|
||
|
throw new AnnotatedException("onlyContainsAttributeCerts boolean is asserted.");
|
||
|
}
|
||
|
} catch (Exception e3) {
|
||
|
throw new AnnotatedException("Basic constraints extension could not be decoded.", e3);
|
||
|
}
|
||
|
}
|
||
|
} catch (Exception e4) {
|
||
|
throw new AnnotatedException("Issuing distribution point extension could not be decoded.", e4);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void processCRLB1(DistributionPoint distributionPoint, Object obj, X509CRL x509crl) throws AnnotatedException {
|
||
|
ASN1Primitive extensionValue = CertPathValidatorUtilities.getExtensionValue(x509crl, ISSUING_DISTRIBUTION_POINT);
|
||
|
boolean z = extensionValue != null && IssuingDistributionPoint.getInstance(extensionValue).isIndirectCRL();
|
||
|
try {
|
||
|
byte[] encoded = PrincipalUtils.getIssuerPrincipal(x509crl).getEncoded();
|
||
|
if (distributionPoint.getCRLIssuer() != null) {
|
||
|
GeneralName[] names = distributionPoint.getCRLIssuer().getNames();
|
||
|
boolean z2 = false;
|
||
|
for (int i = 0; i < names.length; i++) {
|
||
|
if (names[i].getTagNo() == 4) {
|
||
|
try {
|
||
|
if (Arrays.areEqual(names[i].getName().toASN1Primitive().getEncoded(), encoded)) {
|
||
|
z2 = true;
|
||
|
}
|
||
|
} catch (IOException e) {
|
||
|
throw new AnnotatedException("CRL issuer information from distribution point cannot be decoded.", e);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (z2 && !z) {
|
||
|
throw new AnnotatedException("Distribution point contains cRLIssuer field but CRL is not indirect.");
|
||
|
}
|
||
|
if (!z2) {
|
||
|
throw new AnnotatedException("CRL issuer of CRL does not match CRL issuer of distribution point.");
|
||
|
}
|
||
|
if (z2) {
|
||
|
return;
|
||
|
}
|
||
|
} else if (PrincipalUtils.getIssuerPrincipal(x509crl).equals(PrincipalUtils.getEncodedIssuerPrincipal(obj))) {
|
||
|
return;
|
||
|
}
|
||
|
throw new AnnotatedException("Cannot find matching CRL issuer for certificate.");
|
||
|
} catch (IOException e2) {
|
||
|
StringBuilder sb = new StringBuilder("Exception encoding CRL issuer: ");
|
||
|
sb.append(e2.getMessage());
|
||
|
throw new AnnotatedException(sb.toString(), e2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected static Set[] processCRLA1ii(Date date, PKIXExtendedParameters pKIXExtendedParameters, X509Certificate x509Certificate, X509CRL x509crl) throws AnnotatedException {
|
||
|
HashSet hashSet = new HashSet();
|
||
|
X509CRLSelector x509CRLSelector = new X509CRLSelector();
|
||
|
x509CRLSelector.setCertificateChecking(x509Certificate);
|
||
|
try {
|
||
|
x509CRLSelector.addIssuerName(PrincipalUtils.getIssuerPrincipal(x509crl).getEncoded());
|
||
|
PKIXCRLStoreSelector<? extends CRL> build = new PKIXCRLStoreSelector.Builder(x509CRLSelector).setCompleteCRLEnabled(true).build();
|
||
|
if (pKIXExtendedParameters.getDate() != null) {
|
||
|
date = pKIXExtendedParameters.getDate();
|
||
|
}
|
||
|
Set findCRLs = CRL_UTIL.findCRLs(build, date, pKIXExtendedParameters.getCertStores(), pKIXExtendedParameters.getCRLStores());
|
||
|
if (pKIXExtendedParameters.isUseDeltasEnabled()) {
|
||
|
try {
|
||
|
hashSet.addAll(CertPathValidatorUtilities.getDeltaCRLs(date, x509crl, pKIXExtendedParameters.getCertStores(), pKIXExtendedParameters.getCRLStores()));
|
||
|
} catch (AnnotatedException e) {
|
||
|
throw new AnnotatedException("Exception obtaining delta CRLs.", e);
|
||
|
}
|
||
|
}
|
||
|
return new Set[]{findCRLs, hashSet};
|
||
|
} catch (IOException e2) {
|
||
|
throw new AnnotatedException("Cannot extract issuer from CRL.".concat(String.valueOf(e2)), e2);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected static Set processCRLA1i(Date date, PKIXExtendedParameters pKIXExtendedParameters, X509Certificate x509Certificate, X509CRL x509crl) throws AnnotatedException {
|
||
|
HashSet hashSet = new HashSet();
|
||
|
if (pKIXExtendedParameters.isUseDeltasEnabled()) {
|
||
|
try {
|
||
|
String str = FRESHEST_CRL;
|
||
|
CRLDistPoint cRLDistPoint = CRLDistPoint.getInstance(CertPathValidatorUtilities.getExtensionValue(x509Certificate, str));
|
||
|
if (cRLDistPoint == null) {
|
||
|
try {
|
||
|
cRLDistPoint = CRLDistPoint.getInstance(CertPathValidatorUtilities.getExtensionValue(x509crl, str));
|
||
|
} catch (AnnotatedException e) {
|
||
|
throw new AnnotatedException("Freshest CRL extension could not be decoded from CRL.", e);
|
||
|
}
|
||
|
}
|
||
|
if (cRLDistPoint != null) {
|
||
|
ArrayList arrayList = new ArrayList();
|
||
|
arrayList.addAll(pKIXExtendedParameters.getCRLStores());
|
||
|
try {
|
||
|
arrayList.addAll(CertPathValidatorUtilities.getAdditionalStoresFromCRLDistributionPoint(cRLDistPoint, pKIXExtendedParameters.getNamedCRLStoreMap()));
|
||
|
try {
|
||
|
hashSet.addAll(CertPathValidatorUtilities.getDeltaCRLs(date, x509crl, pKIXExtendedParameters.getCertStores(), arrayList));
|
||
|
} catch (AnnotatedException e2) {
|
||
|
throw new AnnotatedException("Exception obtaining delta CRLs.", e2);
|
||
|
}
|
||
|
} catch (AnnotatedException e3) {
|
||
|
throw new AnnotatedException("No new delta CRL locations could be added from Freshest CRL extension.", e3);
|
||
|
}
|
||
|
}
|
||
|
} catch (AnnotatedException e4) {
|
||
|
throw new AnnotatedException("Freshest CRL extension could not be decoded from certificate.", e4);
|
||
|
}
|
||
|
}
|
||
|
return hashSet;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void prepareNextCertO(CertPath certPath, int i, Set set, List list) throws CertPathValidatorException {
|
||
|
X509Certificate x509Certificate = (X509Certificate) certPath.getCertificates().get(i);
|
||
|
Iterator it = list.iterator();
|
||
|
while (it.hasNext()) {
|
||
|
try {
|
||
|
((PKIXCertPathChecker) it.next()).check(x509Certificate, set);
|
||
|
} catch (CertPathValidatorException e) {
|
||
|
throw new CertPathValidatorException(e.getMessage(), e.getCause(), certPath, i);
|
||
|
}
|
||
|
}
|
||
|
if (!set.isEmpty()) {
|
||
|
throw new ExtCertPathValidatorException("Certificate has unsupported critical extension: ".concat(String.valueOf(set)), null, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void prepareNextCertN(CertPath certPath, int i) throws CertPathValidatorException {
|
||
|
boolean[] keyUsage = ((X509Certificate) certPath.getCertificates().get(i)).getKeyUsage();
|
||
|
if (keyUsage != null && !keyUsage[5]) {
|
||
|
throw new ExtCertPathValidatorException("Issuer certificate keyusage extension is critical and does not permit key signing.", null, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static int prepareNextCertM(CertPath certPath, int i, int i2) throws CertPathValidatorException {
|
||
|
BigInteger pathLenConstraint;
|
||
|
int intValue;
|
||
|
try {
|
||
|
BasicConstraints basicConstraints = BasicConstraints.getInstance(CertPathValidatorUtilities.getExtensionValue((X509Certificate) certPath.getCertificates().get(i), BASIC_CONSTRAINTS));
|
||
|
return (basicConstraints == null || (pathLenConstraint = basicConstraints.getPathLenConstraint()) == null || (intValue = pathLenConstraint.intValue()) >= i2) ? i2 : intValue;
|
||
|
} catch (Exception e) {
|
||
|
throw new ExtCertPathValidatorException("Basic constraints extension cannot be decoded.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static int prepareNextCertL(CertPath certPath, int i, int i2) throws CertPathValidatorException {
|
||
|
if (CertPathValidatorUtilities.isSelfIssued((X509Certificate) certPath.getCertificates().get(i))) {
|
||
|
return i2;
|
||
|
}
|
||
|
if (i2 > 0) {
|
||
|
return i2 - 1;
|
||
|
}
|
||
|
throw new ExtCertPathValidatorException("Max path length not greater than zero", null, certPath, i);
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void prepareNextCertK(CertPath certPath, int i) throws CertPathValidatorException {
|
||
|
try {
|
||
|
BasicConstraints basicConstraints = BasicConstraints.getInstance(CertPathValidatorUtilities.getExtensionValue((X509Certificate) certPath.getCertificates().get(i), BASIC_CONSTRAINTS));
|
||
|
if (basicConstraints == null) {
|
||
|
throw new CertPathValidatorException("Intermediate certificate lacks BasicConstraints");
|
||
|
}
|
||
|
if (!basicConstraints.isCA()) {
|
||
|
throw new CertPathValidatorException("Not a CA certificate");
|
||
|
}
|
||
|
} catch (Exception e) {
|
||
|
throw new ExtCertPathValidatorException("Basic constraints extension cannot be decoded.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static int prepareNextCertJ(CertPath certPath, int i, int i2) throws CertPathValidatorException {
|
||
|
int intValue;
|
||
|
try {
|
||
|
ASN1Integer aSN1Integer = ASN1Integer.getInstance(CertPathValidatorUtilities.getExtensionValue((X509Certificate) certPath.getCertificates().get(i), INHIBIT_ANY_POLICY));
|
||
|
return (aSN1Integer == null || (intValue = aSN1Integer.getValue().intValue()) >= i2) ? i2 : intValue;
|
||
|
} catch (Exception e) {
|
||
|
throw new ExtCertPathValidatorException("Inhibit any-policy extension cannot be decoded.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:12:0x002f, code lost:
|
||
|
|
||
|
r4 = org.bouncycastle.asn1.ASN1Integer.getInstance(r1, false).getValue().intValue();
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:13:0x003c, code lost:
|
||
|
|
||
|
if (r4 >= r6) goto L16;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:14:0x003e, code lost:
|
||
|
|
||
|
return r4;
|
||
|
*/
|
||
|
/*
|
||
|
Code decompiled incorrectly, please refer to instructions dump.
|
||
|
To view partially-correct add '--show-bad-code' argument
|
||
|
*/
|
||
|
public static int prepareNextCertI2(java.security.cert.CertPath r4, int r5, int r6) throws java.security.cert.CertPathValidatorException {
|
||
|
/*
|
||
|
java.util.List r0 = r4.getCertificates()
|
||
|
java.lang.Object r0 = r0.get(r5)
|
||
|
java.security.cert.X509Certificate r0 = (java.security.cert.X509Certificate) r0
|
||
|
java.lang.String r1 = org.bouncycastle.jce.provider.RFC3280CertPathUtilities.POLICY_CONSTRAINTS // Catch: java.lang.Exception -> L49
|
||
|
org.bouncycastle.asn1.ASN1Primitive r0 = org.bouncycastle.jce.provider.CertPathValidatorUtilities.getExtensionValue(r0, r1) // Catch: java.lang.Exception -> L49
|
||
|
org.bouncycastle.asn1.ASN1Sequence r0 = org.bouncycastle.asn1.DERSequence.getInstance(r0) // Catch: java.lang.Exception -> L49
|
||
|
if (r0 == 0) goto L48
|
||
|
java.util.Enumeration r0 = r0.getObjects()
|
||
|
L1a:
|
||
|
boolean r1 = r0.hasMoreElements()
|
||
|
if (r1 == 0) goto L48
|
||
|
java.lang.Object r1 = r0.nextElement() // Catch: java.lang.IllegalArgumentException -> L3f
|
||
|
org.bouncycastle.asn1.ASN1TaggedObject r1 = org.bouncycastle.asn1.ASN1TaggedObject.getInstance(r1) // Catch: java.lang.IllegalArgumentException -> L3f
|
||
|
int r2 = r1.getTagNo() // Catch: java.lang.IllegalArgumentException -> L3f
|
||
|
r3 = 1
|
||
|
if (r2 != r3) goto L1a
|
||
|
r0 = 0
|
||
|
org.bouncycastle.asn1.ASN1Integer r0 = org.bouncycastle.asn1.ASN1Integer.getInstance(r1, r0) // Catch: java.lang.IllegalArgumentException -> L3f
|
||
|
java.math.BigInteger r0 = r0.getValue() // Catch: java.lang.IllegalArgumentException -> L3f
|
||
|
int r4 = r0.intValue() // Catch: java.lang.IllegalArgumentException -> L3f
|
||
|
if (r4 >= r6) goto L48
|
||
|
return r4
|
||
|
L3f:
|
||
|
r6 = move-exception
|
||
|
org.bouncycastle.jce.exception.ExtCertPathValidatorException r0 = new org.bouncycastle.jce.exception.ExtCertPathValidatorException
|
||
|
java.lang.String r1 = "Policy constraints extension contents cannot be decoded."
|
||
|
r0.<init>(r1, r6, r4, r5)
|
||
|
throw r0
|
||
|
L48:
|
||
|
return r6
|
||
|
L49:
|
||
|
r6 = move-exception
|
||
|
org.bouncycastle.jce.exception.ExtCertPathValidatorException r0 = new org.bouncycastle.jce.exception.ExtCertPathValidatorException
|
||
|
java.lang.String r1 = "Policy constraints extension cannot be decoded."
|
||
|
r0.<init>(r1, r6, r4, r5)
|
||
|
throw r0
|
||
|
*/
|
||
|
throw new UnsupportedOperationException("Method not decompiled: org.bouncycastle.jce.provider.RFC3280CertPathUtilities.prepareNextCertI2(java.security.cert.CertPath, int, int):int");
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:12:0x002e, code lost:
|
||
|
|
||
|
r3 = org.bouncycastle.asn1.ASN1Integer.getInstance(r1, false).getValue().intValue();
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:13:0x003b, code lost:
|
||
|
|
||
|
if (r3 >= r5) goto L16;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:14:0x003d, code lost:
|
||
|
|
||
|
return r3;
|
||
|
*/
|
||
|
/*
|
||
|
Code decompiled incorrectly, please refer to instructions dump.
|
||
|
To view partially-correct add '--show-bad-code' argument
|
||
|
*/
|
||
|
public static int prepareNextCertI1(java.security.cert.CertPath r3, int r4, int r5) throws java.security.cert.CertPathValidatorException {
|
||
|
/*
|
||
|
java.util.List r0 = r3.getCertificates()
|
||
|
java.lang.Object r0 = r0.get(r4)
|
||
|
java.security.cert.X509Certificate r0 = (java.security.cert.X509Certificate) r0
|
||
|
java.lang.String r1 = org.bouncycastle.jce.provider.RFC3280CertPathUtilities.POLICY_CONSTRAINTS // Catch: java.lang.Exception -> L48
|
||
|
org.bouncycastle.asn1.ASN1Primitive r0 = org.bouncycastle.jce.provider.CertPathValidatorUtilities.getExtensionValue(r0, r1) // Catch: java.lang.Exception -> L48
|
||
|
org.bouncycastle.asn1.ASN1Sequence r0 = org.bouncycastle.asn1.DERSequence.getInstance(r0) // Catch: java.lang.Exception -> L48
|
||
|
if (r0 == 0) goto L47
|
||
|
java.util.Enumeration r0 = r0.getObjects()
|
||
|
L1a:
|
||
|
boolean r1 = r0.hasMoreElements()
|
||
|
if (r1 == 0) goto L47
|
||
|
java.lang.Object r1 = r0.nextElement() // Catch: java.lang.IllegalArgumentException -> L3e
|
||
|
org.bouncycastle.asn1.ASN1TaggedObject r1 = org.bouncycastle.asn1.ASN1TaggedObject.getInstance(r1) // Catch: java.lang.IllegalArgumentException -> L3e
|
||
|
int r2 = r1.getTagNo() // Catch: java.lang.IllegalArgumentException -> L3e
|
||
|
if (r2 != 0) goto L1a
|
||
|
r0 = 0
|
||
|
org.bouncycastle.asn1.ASN1Integer r0 = org.bouncycastle.asn1.ASN1Integer.getInstance(r1, r0) // Catch: java.lang.IllegalArgumentException -> L3e
|
||
|
java.math.BigInteger r0 = r0.getValue() // Catch: java.lang.IllegalArgumentException -> L3e
|
||
|
int r3 = r0.intValue() // Catch: java.lang.IllegalArgumentException -> L3e
|
||
|
if (r3 >= r5) goto L47
|
||
|
return r3
|
||
|
L3e:
|
||
|
r5 = move-exception
|
||
|
org.bouncycastle.jce.exception.ExtCertPathValidatorException r0 = new org.bouncycastle.jce.exception.ExtCertPathValidatorException
|
||
|
java.lang.String r1 = "Policy constraints extension contents cannot be decoded."
|
||
|
r0.<init>(r1, r5, r3, r4)
|
||
|
throw r0
|
||
|
L47:
|
||
|
return r5
|
||
|
L48:
|
||
|
r5 = move-exception
|
||
|
org.bouncycastle.jce.exception.ExtCertPathValidatorException r0 = new org.bouncycastle.jce.exception.ExtCertPathValidatorException
|
||
|
java.lang.String r1 = "Policy constraints extension cannot be decoded."
|
||
|
r0.<init>(r1, r5, r3, r4)
|
||
|
throw r0
|
||
|
*/
|
||
|
throw new UnsupportedOperationException("Method not decompiled: org.bouncycastle.jce.provider.RFC3280CertPathUtilities.prepareNextCertI1(java.security.cert.CertPath, int, int):int");
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static int prepareNextCertH3(CertPath certPath, int i, int i2) {
|
||
|
return (CertPathValidatorUtilities.isSelfIssued((X509Certificate) certPath.getCertificates().get(i)) || i2 == 0) ? i2 : i2 - 1;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static int prepareNextCertH2(CertPath certPath, int i, int i2) {
|
||
|
return (CertPathValidatorUtilities.isSelfIssued((X509Certificate) certPath.getCertificates().get(i)) || i2 == 0) ? i2 : i2 - 1;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static int prepareNextCertH1(CertPath certPath, int i, int i2) {
|
||
|
return (CertPathValidatorUtilities.isSelfIssued((X509Certificate) certPath.getCertificates().get(i)) || i2 == 0) ? i2 : i2 - 1;
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void prepareNextCertG(CertPath certPath, int i, PKIXNameConstraintValidator pKIXNameConstraintValidator) throws CertPathValidatorException {
|
||
|
try {
|
||
|
ASN1Sequence dERSequence = DERSequence.getInstance(CertPathValidatorUtilities.getExtensionValue((X509Certificate) certPath.getCertificates().get(i), NAME_CONSTRAINTS));
|
||
|
NameConstraints nameConstraints = dERSequence != null ? NameConstraints.getInstance(dERSequence) : null;
|
||
|
if (nameConstraints != null) {
|
||
|
GeneralSubtree[] permittedSubtrees = nameConstraints.getPermittedSubtrees();
|
||
|
if (permittedSubtrees != null) {
|
||
|
try {
|
||
|
pKIXNameConstraintValidator.intersectPermittedSubtree(permittedSubtrees);
|
||
|
} catch (Exception e) {
|
||
|
throw new ExtCertPathValidatorException("Permitted subtrees cannot be build from name constraints extension.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
GeneralSubtree[] excludedSubtrees = nameConstraints.getExcludedSubtrees();
|
||
|
if (excludedSubtrees != null) {
|
||
|
for (int i2 = 0; i2 != excludedSubtrees.length; i2++) {
|
||
|
try {
|
||
|
pKIXNameConstraintValidator.addExcludedSubtree(excludedSubtrees[i2]);
|
||
|
} catch (Exception e2) {
|
||
|
throw new ExtCertPathValidatorException("Excluded subtrees cannot be build from name constraints extension.", e2, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} catch (Exception e3) {
|
||
|
throw new ExtCertPathValidatorException("Name constraints extension could not be decoded.", e3, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
public static void prepareNextCertA(CertPath certPath, int i) throws CertPathValidatorException {
|
||
|
try {
|
||
|
ASN1Sequence dERSequence = DERSequence.getInstance(CertPathValidatorUtilities.getExtensionValue((X509Certificate) certPath.getCertificates().get(i), POLICY_MAPPINGS));
|
||
|
if (dERSequence != null) {
|
||
|
for (int i2 = 0; i2 < dERSequence.size(); i2++) {
|
||
|
try {
|
||
|
ASN1Sequence dERSequence2 = DERSequence.getInstance(dERSequence.getObjectAt(i2));
|
||
|
ASN1ObjectIdentifier aSN1ObjectIdentifier = ASN1ObjectIdentifier.getInstance(dERSequence2.getObjectAt(0));
|
||
|
ASN1ObjectIdentifier aSN1ObjectIdentifier2 = ASN1ObjectIdentifier.getInstance(dERSequence2.getObjectAt(1));
|
||
|
if (ANY_POLICY.equals(aSN1ObjectIdentifier.getId())) {
|
||
|
throw new CertPathValidatorException("IssuerDomainPolicy is anyPolicy", null, certPath, i);
|
||
|
}
|
||
|
if (ANY_POLICY.equals(aSN1ObjectIdentifier2.getId())) {
|
||
|
throw new CertPathValidatorException("SubjectDomainPolicy is anyPolicy,", null, certPath, i);
|
||
|
}
|
||
|
} catch (Exception e) {
|
||
|
throw new ExtCertPathValidatorException("Policy mappings extension contents could not be decoded.", e, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} catch (AnnotatedException e2) {
|
||
|
throw new ExtCertPathValidatorException("Policy mappings extension could not be decoded.", e2, certPath, i);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* JADX INFO: Access modifiers changed from: protected */
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:32:0x00aa, code lost:
|
||
|
|
||
|
r5 = r20[r3].iterator();
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:34:0x00b4, code lost:
|
||
|
|
||
|
if (r5.hasNext() == false) goto L92;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:35:0x00b6, code lost:
|
||
|
|
||
|
r6 = (org.bouncycastle.jce.provider.PKIXPolicyNode) r5.next();
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:36:0x00c6, code lost:
|
||
|
|
||
|
if (org.bouncycastle.jce.provider.RFC3280CertPathUtilities.ANY_POLICY.equals(r6.getValidPolicy()) == false) goto L100;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:39:0x00d0, code lost:
|
||
|
|
||
|
r5 = ((org.bouncycastle.asn1.ASN1Sequence) org.bouncycastle.jce.provider.CertPathValidatorUtilities.getExtensionValue(r4, org.bouncycastle.jce.provider.RFC3280CertPathUtilities.CERTIFICATE_POLICIES)).getObjects();
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:41:0x00d8, code lost:
|
||
|
|
||
|
if (r5.hasMoreElements() == false) goto L101;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:43:0x00da, code lost:
|
||
|
|
||
|
r7 = org.bouncycastle.asn1.x509.PolicyInformation.getInstance(r5.nextElement());
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:45:0x00ee, code lost:
|
||
|
|
||
|
if (org.bouncycastle.jce.provider.RFC3280CertPathUtilities.ANY_POLICY.equals(r7.getPolicyIdentifier().getId()) == false) goto L102;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:47:0x00f0, code lost:
|
||
|
|
||
|
r5 = org.bouncycastle.jce.provider.CertPathValidatorUtilities.getQualifierSet(r7.getPolicyQualifiers());
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:48:0x010c, code lost:
|
||
|
|
||
|
r10 = r5;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:49:0x0111, code lost:
|
||
|
|
||
|
if (r4.getCriticalExtensionOIDs() == null) goto L48;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:50:0x0113, code lost:
|
||
|
|
||
|
r12 = r4.getCriticalExtensionOIDs().contains(org.bouncycastle.jce.provider.RFC3280CertPathUtilities.CERTIFICATE_POLICIES);
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:51:0x0120, code lost:
|
||
|
|
||
|
r9 = (org.bouncycastle.jce.provider.PKIXPolicyNode) r6.getParent();
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:52:0x012f, code lost:
|
||
|
|
||
|
if (org.bouncycastle.jce.provider.RFC3280CertPathUtilities.ANY_POLICY.equals(r9.getValidPolicy()) == false) goto L93;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:53:0x0131, code lost:
|
||
|
|
||
|
r8 = new org.bouncycastle.jce.provider.PKIXPolicyNode(new java.util.ArrayList(), r3, (java.util.Set) r13.get(r11), r9, r10, r11, r12);
|
||
|
r9.addChild(r8);
|
||
|
r20[r3].add(r8);
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:56:0x011f, code lost:
|
||
|
|
||
|
r12 = r14;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:58:0x00f9, code lost:
|
||
|
|
||
|
r0 = move-exception;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:60:0x0101, code lost:
|
||
|
|
||
|
throw new org.bouncycastle.jce.exception.ExtCertPathValidatorException("Policy qualifier info set could not be decoded.", r0, r18, r19);
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:64:0x0102, code lost:
|
||
|
|
||
|
r0 = move-exception;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:66:0x010a, code lost:
|
||
|
|
||
|
throw new java.security.cert.CertPathValidatorException("Policy information could not be decoded.", r0, r18, r19);
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:68:0x010b, code lost:
|
||
|
|
||
|
r5 = null;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:70:0x0155, code lost:
|
||
|
|
||
|
r0 = move-exception;
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:72:0x015d, code lost:
|
||
|
|
||
|
throw new org.bouncycastle.jce.exception.ExtCertPathValidatorException("Certificate policies extension could not be decoded.", r0, r18, r19);
|
||
|
*/
|
||
|
/* JADX WARN: Code restructure failed: missing block: B:74:0x01b2, code lost:
|
||
|
|
||
|
continue;
|
||
|
*/
|
||
|
/*
|
||
|
Code decompiled incorrectly, please refer to instructions dump.
|
||
|
To view partially-correct add '--show-bad-code' argument
|
||
|
*/
|
||
|
public static org.bouncycastle.jce.provider.PKIXPolicyNode prepareCertB(java.security.cert.CertPath r18, int r19, java.util.List[] r20, org.bouncycastle.jce.provider.PKIXPolicyNode r21, int r22) throws java.security.cert.CertPathValidatorException {
|
||
|
/*
|
||
|
Method dump skipped, instructions count: 449
|
||
|
To view this dump add '--comments-level debug' option
|
||
|
*/
|
||
|
throw new UnsupportedOperationException("Method not decompiled: org.bouncycastle.jce.provider.RFC3280CertPathUtilities.prepareCertB(java.security.cert.CertPath, int, java.util.List[], org.bouncycastle.jce.provider.PKIXPolicyNode, int):org.bouncycastle.jce.provider.PKIXPolicyNode");
|
||
|
}
|
||
|
|
||
|
/* JADX WARN: Removed duplicated region for block: B:21:0x00fc */
|
||
|
/* JADX WARN: Removed duplicated region for block: B:27:0x0109 */
|
||
|
/*
|
||
|
Code decompiled incorrectly, please refer to instructions dump.
|
||
|
To view partially-correct add '--show-bad-code' argument
|
||
|
*/
|
||
|
protected static void checkCRLs(org.bouncycastle.jcajce.PKIXExtendedParameters r20, java.security.cert.X509Certificate r21, java.util.Date r22, java.security.cert.X509Certificate r23, java.security.PublicKey r24, java.util.List r25, org.bouncycastle.jcajce.util.JcaJceHelper r26) throws org.bouncycastle.jce.provider.AnnotatedException {
|
||
|
/*
|
||
|
Method dump skipped, instructions count: 393
|
||
|
To view this dump add '--comments-level debug' option
|
||
|
*/
|
||
|
throw new UnsupportedOperationException("Method not decompiled: org.bouncycastle.jce.provider.RFC3280CertPathUtilities.checkCRLs(org.bouncycastle.jcajce.PKIXExtendedParameters, java.security.cert.X509Certificate, java.util.Date, java.security.cert.X509Certificate, java.security.PublicKey, java.util.List, org.bouncycastle.jcajce.util.JcaJceHelper):void");
|
||
|
}
|
||
|
|
||
|
private static void checkCRL(DistributionPoint distributionPoint, PKIXExtendedParameters pKIXExtendedParameters, X509Certificate x509Certificate, Date date, X509Certificate x509Certificate2, PublicKey publicKey, CertStatus certStatus, ReasonsMask reasonsMask, List list, JcaJceHelper jcaJceHelper) throws AnnotatedException {
|
||
|
Date date2;
|
||
|
Iterator it;
|
||
|
Set<String> criticalExtensionOIDs;
|
||
|
Date date3 = new Date(System.currentTimeMillis());
|
||
|
if (date.getTime() > date3.getTime()) {
|
||
|
throw new AnnotatedException("Validation time is in future.");
|
||
|
}
|
||
|
Iterator it2 = CertPathValidatorUtilities.getCompleteCRLs(distributionPoint, x509Certificate, date3, pKIXExtendedParameters).iterator();
|
||
|
boolean z = false;
|
||
|
AnnotatedException e = null;
|
||
|
while (it2.hasNext() && certStatus.getCertStatus() == 11 && !reasonsMask.isAllReasons()) {
|
||
|
try {
|
||
|
X509CRL x509crl = (X509CRL) it2.next();
|
||
|
ReasonsMask processCRLD = processCRLD(x509crl, distributionPoint);
|
||
|
if (processCRLD.hasNewReasons(reasonsMask)) {
|
||
|
date2 = date3;
|
||
|
it = it2;
|
||
|
AnnotatedException annotatedException = e;
|
||
|
try {
|
||
|
X509CRL processCRLH = pKIXExtendedParameters.isUseDeltasEnabled() ? processCRLH(CertPathValidatorUtilities.getDeltaCRLs(pKIXExtendedParameters.getDate() != null ? pKIXExtendedParameters.getDate() : date2, x509crl, pKIXExtendedParameters.getCertStores(), pKIXExtendedParameters.getCRLStores()), processCRLG(x509crl, processCRLF(x509crl, x509Certificate, x509Certificate2, publicKey, pKIXExtendedParameters, list, jcaJceHelper))) : null;
|
||
|
if (pKIXExtendedParameters.getValidityModel() != 1 && x509Certificate.getNotAfter().getTime() < x509crl.getThisUpdate().getTime()) {
|
||
|
throw new AnnotatedException("No valid CRL for current time found.");
|
||
|
}
|
||
|
processCRLB1(distributionPoint, x509Certificate, x509crl);
|
||
|
processCRLB2(distributionPoint, x509Certificate, x509crl);
|
||
|
processCRLC(processCRLH, x509crl, pKIXExtendedParameters);
|
||
|
processCRLI(date, processCRLH, x509Certificate, certStatus, pKIXExtendedParameters);
|
||
|
processCRLJ(date, x509crl, x509Certificate, certStatus);
|
||
|
if (certStatus.getCertStatus() == 8) {
|
||
|
certStatus.setCertStatus(11);
|
||
|
}
|
||
|
reasonsMask.addReasons(processCRLD);
|
||
|
Set<String> criticalExtensionOIDs2 = x509crl.getCriticalExtensionOIDs();
|
||
|
if (criticalExtensionOIDs2 != null) {
|
||
|
HashSet hashSet = new HashSet(criticalExtensionOIDs2);
|
||
|
hashSet.remove(Extension.issuingDistributionPoint.getId());
|
||
|
hashSet.remove(Extension.deltaCRLIndicator.getId());
|
||
|
if (!hashSet.isEmpty()) {
|
||
|
throw new AnnotatedException("CRL contains unsupported critical extensions.");
|
||
|
}
|
||
|
}
|
||
|
if (processCRLH != null && (criticalExtensionOIDs = processCRLH.getCriticalExtensionOIDs()) != null) {
|
||
|
HashSet hashSet2 = new HashSet(criticalExtensionOIDs);
|
||
|
hashSet2.remove(Extension.issuingDistributionPoint.getId());
|
||
|
hashSet2.remove(Extension.deltaCRLIndicator.getId());
|
||
|
if (!hashSet2.isEmpty()) {
|
||
|
throw new AnnotatedException("Delta CRL contains unsupported critical extension.");
|
||
|
}
|
||
|
}
|
||
|
z = true;
|
||
|
date3 = date2;
|
||
|
it2 = it;
|
||
|
e = annotatedException;
|
||
|
} catch (AnnotatedException e2) {
|
||
|
e = e2;
|
||
|
date3 = date2;
|
||
|
it2 = it;
|
||
|
}
|
||
|
}
|
||
|
} catch (AnnotatedException e3) {
|
||
|
e = e3;
|
||
|
date2 = date3;
|
||
|
it = it2;
|
||
|
}
|
||
|
}
|
||
|
AnnotatedException annotatedException2 = e;
|
||
|
if (!z) {
|
||
|
throw annotatedException2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
RFC3280CertPathUtilities() {
|
||
|
}
|
||
|
}
|