RFC3280CertPathUtilities.smali
.class Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;
.super Ljava/lang/Object;
.source "RFC3280CertPathUtilities.java"
# static fields
.field public static final ANY_POLICY:Ljava/lang/String; = "2.5.29.32.0"
.field public static final AUTHORITY_KEY_IDENTIFIER:Ljava/lang/String;
.field public static final BASIC_CONSTRAINTS:Ljava/lang/String;
.field public static final CERTIFICATE_POLICIES:Ljava/lang/String;
.field public static final CRL_DISTRIBUTION_POINTS:Ljava/lang/String;
.field public static final CRL_NUMBER:Ljava/lang/String;
.field protected static final CRL_SIGN:I = 0x6
.field private static final CRL_UTIL:Lorg/spongycastle/jce/provider/PKIXCRLUtil;
.field public static final DELTA_CRL_INDICATOR:Ljava/lang/String;
.field public static final FRESHEST_CRL:Ljava/lang/String;
.field public static final INHIBIT_ANY_POLICY:Ljava/lang/String;
.field public static final ISSUING_DISTRIBUTION_POINT:Ljava/lang/String;
.field protected static final KEY_CERT_SIGN:I = 0x5
.field public static final KEY_USAGE:Ljava/lang/String;
.field public static final NAME_CONSTRAINTS:Ljava/lang/String;
.field public static final POLICY_CONSTRAINTS:Ljava/lang/String;
.field public static final POLICY_MAPPINGS:Ljava/lang/String;
.field public static final SUBJECT_ALTERNATIVE_NAME:Ljava/lang/String;
.field protected static final crlReasons:[Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 3
.prologue
.line 68
new-instance v0, Lorg/spongycastle/jce/provider/PKIXCRLUtil;
invoke-direct {v0}, Lorg/spongycastle/jce/provider/PKIXCRLUtil;-><init>()V
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CRL_UTIL:Lorg/spongycastle/jce/provider/PKIXCRLUtil;
.line 390
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->certificatePolicies:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CERTIFICATE_POLICIES:Ljava/lang/String;
.line 392
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->policyMappings:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->POLICY_MAPPINGS:Ljava/lang/String;
.line 394
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->inhibitAnyPolicy:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->INHIBIT_ANY_POLICY:Ljava/lang/String;
.line 396
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->issuingDistributionPoint:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->ISSUING_DISTRIBUTION_POINT:Ljava/lang/String;
.line 398
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->freshestCRL:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->FRESHEST_CRL:Ljava/lang/String;
.line 400
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->deltaCRLIndicator:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->DELTA_CRL_INDICATOR:Ljava/lang/String;
.line 402
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->policyConstraints:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->POLICY_CONSTRAINTS:Ljava/lang/String;
.line 404
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->basicConstraints:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->BASIC_CONSTRAINTS:Ljava/lang/String;
.line 406
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->cRLDistributionPoints:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CRL_DISTRIBUTION_POINTS:Ljava/lang/String;
.line 408
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->subjectAlternativeName:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->SUBJECT_ALTERNATIVE_NAME:Ljava/lang/String;
.line 410
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->nameConstraints:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->NAME_CONSTRAINTS:Ljava/lang/String;
.line 412
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->authorityKeyIdentifier:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->AUTHORITY_KEY_IDENTIFIER:Ljava/lang/String;
.line 414
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->keyUsage:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->KEY_USAGE:Ljava/lang/String;
.line 416
sget-object v0, Lorg/spongycastle/asn1/x509/Extension;->cRLNumber:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CRL_NUMBER:Ljava/lang/String;
.line 2324
const/16 v0, 0xb
new-array v0, v0, [Ljava/lang/String;
const/4 v1, 0x0
const-string v2, "unspecified"
aput-object v2, v0, v1
const/4 v1, 0x1
const-string v2, "keyCompromise"
aput-object v2, v0, v1
const/4 v1, 0x2
const-string v2, "cACompromise"
aput-object v2, v0, v1
const/4 v1, 0x3
const-string v2, "affiliationChanged"
aput-object v2, v0, v1
const/4 v1, 0x4
const-string v2, "superseded"
aput-object v2, v0, v1
const/4 v1, 0x5
const-string v2, "cessationOfOperation"
aput-object v2, v0, v1
const/4 v1, 0x6
const-string v2, "certificateHold"
aput-object v2, v0, v1
const/4 v1, 0x7
const-string v2, "unknown"
aput-object v2, v0, v1
const/16 v1, 0x8
const-string v2, "removeFromCRL"
aput-object v2, v0, v1
const/16 v1, 0x9
const-string v2, "privilegeWithdrawn"
aput-object v2, v0, v1
const/16 v1, 0xa
const-string v2, "aACompromise"
aput-object v2, v0, v1
sput-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->crlReasons:[Ljava/lang/String;
return-void
.end method
.method constructor <init>()V
.registers 1
.prologue
.line 66
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static checkCRL(Lorg/spongycastle/asn1/x509/DistributionPoint;Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/X509Certificate;Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/security/PublicKey;Lorg/spongycastle/jce/provider/CertStatus;Lorg/spongycastle/jce/provider/ReasonsMask;Ljava/util/List;Lorg/spongycastle/jcajce/util/JcaJceHelper;)V
.registers 26
.prologue
.line 1768
new-instance v13, Ljava/util/Date;
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
invoke-direct {v13, v4, v5}, Ljava/util/Date;-><init>(J)V
.line 1769
invoke-virtual/range {p3 .. p3}, Ljava/util/Date;->getTime()J
move-result-wide v4
invoke-virtual {v13}, Ljava/util/Date;->getTime()J
move-result-wide v6
cmp-long v4, v4, v6
if-lez v4, :cond_1d
.line 1771
new-instance v4, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v5, "Validation time is in future."
invoke-direct {v4, v5}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v4
.line 1782
:cond_1d
move-object/from16 v0, p0
move-object/from16 v1, p2
move-object/from16 v2, p1
invoke-static {v0, v1, v13, v2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getCompleteCRLs(Lorg/spongycastle/asn1/x509/DistributionPoint;Ljava/lang/Object;Ljava/util/Date;Lorg/spongycastle/jcajce/PKIXExtendedParameters;)Ljava/util/Set;
move-result-object v6
.line 1783
const/4 v5, 0x0
.line 1784
const/4 v4, 0x0
.line 1785
invoke-interface {v6}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v14
move-object v11, v4
move v12, v5
.line 1787
:cond_2f
:goto_2f
invoke-interface {v14}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_14a
invoke-virtual/range {p6 .. p6}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v4
const/16 v5, 0xb
if-ne v4, v5, :cond_14a
invoke-virtual/range {p7 .. p7}, Lorg/spongycastle/jce/provider/ReasonsMask;->isAllReasons()Z
move-result v4
if-nez v4, :cond_14a
.line 1791
:try_start_43
invoke-interface {v14}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/security/cert/X509CRL;
.line 1794
move-object/from16 v0, p0
invoke-static {v4, v0}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLD(Ljava/security/cert/X509CRL;Lorg/spongycastle/asn1/x509/DistributionPoint;)Lorg/spongycastle/jce/provider/ReasonsMask;
move-result-object v15
.line 1802
move-object/from16 v0, p7
invoke-virtual {v15, v0}, Lorg/spongycastle/jce/provider/ReasonsMask;->hasNewReasons(Lorg/spongycastle/jce/provider/ReasonsMask;)Z
move-result v5
if-eqz v5, :cond_2f
move-object/from16 v5, p2
move-object/from16 v6, p4
move-object/from16 v7, p5
move-object/from16 v8, p1
move-object/from16 v9, p8
move-object/from16 v10, p9
.line 1808
invoke-static/range {v4 .. v10}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLF(Ljava/security/cert/X509CRL;Ljava/lang/Object;Ljava/security/cert/X509Certificate;Ljava/security/PublicKey;Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/util/List;Lorg/spongycastle/jcajce/util/JcaJceHelper;)Ljava/util/Set;
move-result-object v5
.line 1811
invoke-static {v4, v5}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLG(Ljava/security/cert/X509CRL;Ljava/util/Set;)Ljava/security/PublicKey;
move-result-object v7
.line 1813
const/4 v5, 0x0
.line 1817
invoke-virtual/range {p1 .. p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getDate()Ljava/util/Date;
move-result-object v6
if-eqz v6, :cond_14e
.line 1819
invoke-virtual/range {p1 .. p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getDate()Ljava/util/Date;
move-result-object v6
.line 1822
:goto_76
invoke-virtual/range {p1 .. p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->isUseDeltasEnabled()Z
move-result v8
if-eqz v8, :cond_8c
.line 1825
invoke-virtual/range {p1 .. p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCertStores()Ljava/util/List;
move-result-object v5
invoke-virtual/range {p1 .. p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCRLStores()Ljava/util/List;
move-result-object v8
invoke-static {v6, v4, v5, v8}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getDeltaCRLs(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/util/List;Ljava/util/List;)Ljava/util/Set;
move-result-object v5
.line 1828
invoke-static {v5, v7}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLH(Ljava/util/Set;Ljava/security/PublicKey;)Ljava/security/cert/X509CRL;
move-result-object v5
.line 1844
:cond_8c
invoke-virtual/range {p1 .. p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getValidityModel()I
move-result v6
const/4 v7, 0x1
if-eq v6, v7, :cond_b3
.line 1851
invoke-virtual/range {p2 .. p2}, Ljava/security/cert/X509Certificate;->getNotAfter()Ljava/util/Date;
move-result-object v6
invoke-virtual {v6}, Ljava/util/Date;->getTime()J
move-result-wide v6
invoke-virtual {v4}, Ljava/security/cert/X509CRL;->getThisUpdate()Ljava/util/Date;
move-result-object v8
invoke-virtual {v8}, Ljava/util/Date;->getTime()J
move-result-wide v8
cmp-long v6, v6, v8
if-gez v6, :cond_b3
.line 1853
new-instance v4, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v5, "No valid CRL for current time found."
invoke-direct {v4, v5}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v4
.line 1912
:catch_af
move-exception v4
move-object v11, v4
.line 1913
goto/16 :goto_2f
.line 1857
:cond_b3
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-static {v0, v1, v4}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLB1(Lorg/spongycastle/asn1/x509/DistributionPoint;Ljava/lang/Object;Ljava/security/cert/X509CRL;)V
.line 1860
move-object/from16 v0, p0
move-object/from16 v1, p2
invoke-static {v0, v1, v4}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLB2(Lorg/spongycastle/asn1/x509/DistributionPoint;Ljava/lang/Object;Ljava/security/cert/X509CRL;)V
.line 1863
move-object/from16 v0, p1
invoke-static {v5, v4, v0}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLC(Ljava/security/cert/X509CRL;Ljava/security/cert/X509CRL;Lorg/spongycastle/jcajce/PKIXExtendedParameters;)V
.line 1866
move-object/from16 v0, p3
move-object/from16 v1, p2
move-object/from16 v2, p6
move-object/from16 v3, p1
invoke-static {v0, v5, v1, v2, v3}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLI(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/lang/Object;Lorg/spongycastle/jce/provider/CertStatus;Lorg/spongycastle/jcajce/PKIXExtendedParameters;)V
.line 1869
move-object/from16 v0, p3
move-object/from16 v1, p2
move-object/from16 v2, p6
invoke-static {v0, v4, v1, v2}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->processCRLJ(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/lang/Object;Lorg/spongycastle/jce/provider/CertStatus;)V
.line 1872
invoke-virtual/range {p6 .. p6}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v6
const/16 v7, 0x8
if-ne v6, v7, :cond_e9
.line 1874
const/16 v6, 0xb
move-object/from16 v0, p6
invoke-virtual {v0, v6}, Lorg/spongycastle/jce/provider/CertStatus;->setCertStatus(I)V
.line 1878
:cond_e9
move-object/from16 v0, p7
invoke-virtual {v0, v15}, Lorg/spongycastle/jce/provider/ReasonsMask;->addReasons(Lorg/spongycastle/jce/provider/ReasonsMask;)V
.line 1880
invoke-virtual {v4}, Ljava/security/cert/X509CRL;->getCriticalExtensionOIDs()Ljava/util/Set;
move-result-object v4
.line 1881
if-eqz v4, :cond_119
.line 1883
new-instance v6, Ljava/util/HashSet;
invoke-direct {v6, v4}, Ljava/util/HashSet;-><init>(Ljava/util/Collection;)V
.line 1884
sget-object v4, Lorg/spongycastle/asn1/x509/Extension;->issuingDistributionPoint:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v4}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v4
invoke-interface {v6, v4}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 1885
sget-object v4, Lorg/spongycastle/asn1/x509/Extension;->deltaCRLIndicator:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v4}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v4
invoke-interface {v6, v4}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 1887
invoke-interface {v6}, Ljava/util/Set;->isEmpty()Z
move-result v4
if-nez v4, :cond_119
.line 1889
new-instance v4, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v5, "CRL contains unsupported critical extensions."
invoke-direct {v4, v5}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v4
.line 1893
:cond_119
if-eqz v5, :cond_146
.line 1895
invoke-virtual {v5}, Ljava/security/cert/X509CRL;->getCriticalExtensionOIDs()Ljava/util/Set;
move-result-object v4
.line 1896
if-eqz v4, :cond_146
.line 1898
new-instance v5, Ljava/util/HashSet;
invoke-direct {v5, v4}, Ljava/util/HashSet;-><init>(Ljava/util/Collection;)V
.line 1899
sget-object v4, Lorg/spongycastle/asn1/x509/Extension;->issuingDistributionPoint:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v4}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v4
invoke-interface {v5, v4}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 1900
sget-object v4, Lorg/spongycastle/asn1/x509/Extension;->deltaCRLIndicator:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v4}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v4
invoke-interface {v5, v4}, Ljava/util/Set;->remove(Ljava/lang/Object;)Z
.line 1901
invoke-interface {v5}, Ljava/util/Set;->isEmpty()Z
move-result v4
if-nez v4, :cond_146
.line 1903
new-instance v4, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v5, "Delta CRL contains unsupported critical extension."
invoke-direct {v4, v5}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v4
:try_end_146
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_43 .. :try_end_146} :catch_af
.line 1908
:cond_146
const/4 v4, 0x1
move v12, v4
.line 1913
goto/16 :goto_2f
.line 1915
:cond_14a
if-nez v12, :cond_14d
.line 1917
throw v11
.line 1919
:cond_14d
return-void
:cond_14e
move-object v6, v13
goto/16 :goto_76
.end method
.method protected static checkCRLs(Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/X509Certificate;Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/security/PublicKey;Ljava/util/List;Lorg/spongycastle/jcajce/util/JcaJceHelper;)V
.registers 21
.prologue
.line 1944
const/4 v11, 0x0
.line 1948
:try_start_1
sget-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CRL_DISTRIBUTION_POINTS:Ljava/lang/String;
invoke-static {p1, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/CRLDistPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/CRLDistPoint;
:try_end_a
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_a} :catch_35
move-result-object v2
.line 1956
new-instance v1, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;
invoke-direct {v1, p0}, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;-><init>(Lorg/spongycastle/jcajce/PKIXExtendedParameters;)V
.line 1959
:try_start_10
invoke-virtual {p0}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getNamedCRLStoreMap()Ljava/util/Map;
move-result-object v0
invoke-static {v2, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getAdditionalStoresFromCRLDistributionPoint(Lorg/spongycastle/asn1/x509/CRLDistPoint;Ljava/util/Map;)Ljava/util/List;
move-result-object v0
.line 1960
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_1c
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_3e
.line 1962
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jcajce/PKIXCRLStore;
invoke-virtual {v1, v0}, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;->addCRLStore(Lorg/spongycastle/jcajce/PKIXCRLStore;)Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;
:try_end_2b
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_10 .. :try_end_2b} :catch_2c
goto :goto_1c
.line 1965
:catch_2c
move-exception v0
.line 1967
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "No additional CRL locations could be decoded from CRL distribution point extension."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 1951
:catch_35
move-exception v0
.line 1953
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "CRL distribution point extension could not be read."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 1970
:cond_3e
new-instance v6, Lorg/spongycastle/jce/provider/CertStatus;
invoke-direct {v6}, Lorg/spongycastle/jce/provider/CertStatus;-><init>()V
.line 1971
new-instance v7, Lorg/spongycastle/jce/provider/ReasonsMask;
invoke-direct {v7}, Lorg/spongycastle/jce/provider/ReasonsMask;-><init>()V
.line 1972
invoke-virtual {v1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;->build()Lorg/spongycastle/jcajce/PKIXExtendedParameters;
move-result-object v1
.line 1974
const/4 v10, 0x0
.line 1976
if-eqz v2, :cond_8d
.line 1981
:try_start_4f
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/CRLDistPoint;->getDistributionPoints()[Lorg/spongycastle/asn1/x509/DistributionPoint;
:try_end_52
.catch Ljava/lang/Exception; {:try_start_4f .. :try_end_52} :catch_80
move-result-object v13
.line 1987
if-eqz v13, :cond_8d
.line 1989
const/4 v0, 0x0
move v12, v0
:goto_57
array-length v0, v13
if-ge v12, v0, :cond_8d
invoke-virtual {v6}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v0
const/16 v2, 0xb
if-ne v0, v2, :cond_8d
invoke-virtual {v7}, Lorg/spongycastle/jce/provider/ReasonsMask;->isAllReasons()Z
move-result v0
if-nez v0, :cond_8d
.line 1993
:try_start_68
aget-object v0, v13, v12
move-object v2, p1
move-object/from16 v3, p2
move-object/from16 v4, p3
move-object/from16 v5, p4
move-object/from16 v8, p5
move-object/from16 v9, p6
invoke-static/range {v0 .. v9}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->checkCRL(Lorg/spongycastle/asn1/x509/DistributionPoint;Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/X509Certificate;Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/security/PublicKey;Lorg/spongycastle/jce/provider/CertStatus;Lorg/spongycastle/jce/provider/ReasonsMask;Ljava/util/List;Lorg/spongycastle/jcajce/util/JcaJceHelper;)V
:try_end_78
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_68 .. :try_end_78} :catch_89
.line 1994
const/4 v0, 0x1
move-object v2, v11
.line 1989
:goto_7a
add-int/lit8 v3, v12, 0x1
move v12, v3
move v10, v0
move-object v11, v2
goto :goto_57
.line 1983
:catch_80
move-exception v0
.line 1985
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Distribution points could not be read."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 1998
:catch_89
move-exception v0
move-object v2, v0
move v0, v10
goto :goto_7a
.line 2010
:cond_8d
invoke-virtual {v6}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v0
const/16 v1, 0xb
if-ne v0, v1, :cond_d9
invoke-virtual {v7}, Lorg/spongycastle/jce/provider/ReasonsMask;->isAllReasons()Z
move-result v0
if-nez v0, :cond_d9
.line 2022
:try_start_9b
new-instance v0, Lorg/spongycastle/asn1/ASN1InputStream;
invoke-static {p1}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getEncodedIssuerPrincipal(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x500/X500Name;->getEncoded()[B
move-result-object v1
invoke-direct {v0, v1}, Lorg/spongycastle/asn1/ASN1InputStream;-><init>([B)V
.line 2023
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1InputStream;->readObject()Lorg/spongycastle/asn1/ASN1Primitive;
:try_end_ab
.catch Ljava/lang/Exception; {:try_start_9b .. :try_end_ab} :catch_e0
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_9b .. :try_end_ab} :catch_e9
move-result-object v1
.line 2029
:try_start_ac
new-instance v0, Lorg/spongycastle/asn1/x509/DistributionPoint;
new-instance v2, Lorg/spongycastle/asn1/x509/DistributionPointName;
const/4 v3, 0x0
new-instance v4, Lorg/spongycastle/asn1/x509/GeneralNames;
new-instance v5, Lorg/spongycastle/asn1/x509/GeneralName;
const/4 v8, 0x4
invoke-direct {v5, v8, v1}, Lorg/spongycastle/asn1/x509/GeneralName;-><init>(ILorg/spongycastle/asn1/ASN1Encodable;)V
invoke-direct {v4, v5}, Lorg/spongycastle/asn1/x509/GeneralNames;-><init>(Lorg/spongycastle/asn1/x509/GeneralName;)V
invoke-direct {v2, v3, v4}, Lorg/spongycastle/asn1/x509/DistributionPointName;-><init>(ILorg/spongycastle/asn1/ASN1Encodable;)V
const/4 v1, 0x0
const/4 v3, 0x0
invoke-direct {v0, v2, v1, v3}, Lorg/spongycastle/asn1/x509/DistributionPoint;-><init>(Lorg/spongycastle/asn1/x509/DistributionPointName;Lorg/spongycastle/asn1/x509/ReasonFlags;Lorg/spongycastle/asn1/x509/GeneralNames;)V
.line 2031
invoke-virtual {p0}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->clone()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/jcajce/PKIXExtendedParameters;
move-object v2, p1
move-object/from16 v3, p2
move-object/from16 v4, p3
move-object/from16 v5, p4
move-object/from16 v8, p5
move-object/from16 v9, p6
.line 2032
invoke-static/range {v0 .. v9}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->checkCRL(Lorg/spongycastle/asn1/x509/DistributionPoint;Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/X509Certificate;Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/security/PublicKey;Lorg/spongycastle/jce/provider/CertStatus;Lorg/spongycastle/jce/provider/ReasonsMask;Ljava/util/List;Lorg/spongycastle/jcajce/util/JcaJceHelper;)V
:try_end_d8
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_ac .. :try_end_d8} :catch_e9
.line 2034
const/4 v10, 0x1
.line 2042
:cond_d9
:goto_d9
if-nez v10, :cond_f4
.line 2044
instance-of v0, v11, Lorg/spongycastle/jce/provider/AnnotatedException;
if-eqz v0, :cond_ec
.line 2046
throw v11
.line 2025
:catch_e0
move-exception v0
.line 2027
:try_start_e1
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Issuer from certificate for CRL could not be reencoded."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
:try_end_e9
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_e1 .. :try_end_e9} :catch_e9
.line 2038
:catch_e9
move-exception v0
move-object v11, v0
goto :goto_d9
.line 2049
:cond_ec
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "No valid CRL found."
invoke-direct {v0, v1, v11}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v0
.line 2051
:cond_f4
invoke-virtual {v6}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v0
const/16 v1, 0xb
if-eq v0, v1, :cond_148
.line 2053
new-instance v0, Ljava/text/SimpleDateFormat;
const-string v1, "yyyy-MM-dd HH:mm:ss Z"
invoke-direct {v0, v1}, Ljava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V
.line 2054
const-string v1, "UTC"
invoke-static {v1}, Ljava/util/TimeZone;->getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/text/SimpleDateFormat;->setTimeZone(Ljava/util/TimeZone;)V
.line 2055
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Certificate revocation after "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v6}, Lorg/spongycastle/jce/provider/CertStatus;->getRevocationDate()Ljava/util/Date;
move-result-object v2
invoke-virtual {v0, v2}, Ljava/text/SimpleDateFormat;->format(Ljava/util/Date;)Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 2056
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
const-string v1, ", reason: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->crlReasons:[Ljava/lang/String;
invoke-virtual {v6}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v2
aget-object v1, v1, v2
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 2057
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
invoke-direct {v1, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v1
.line 2059
:cond_148
invoke-virtual {v7}, Lorg/spongycastle/jce/provider/ReasonsMask;->isAllReasons()Z
move-result v0
if-nez v0, :cond_15b
invoke-virtual {v6}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v0
const/16 v1, 0xb
if-ne v0, v1, :cond_15b
.line 2061
const/16 v0, 0xc
invoke-virtual {v6, v0}, Lorg/spongycastle/jce/provider/CertStatus;->setCertStatus(I)V
.line 2063
:cond_15b
invoke-virtual {v6}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v0
const/16 v1, 0xc
if-ne v0, v1, :cond_16b
.line 2065
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Certificate status could not be determined."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 2067
:cond_16b
return-void
.end method
.method protected static prepareCertB(Ljava/security/cert/CertPath;I[Ljava/util/List;Lorg/spongycastle/jce/provider/PKIXPolicyNode;I)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.registers 17
.prologue
.line 896
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v1
.line 897
invoke-interface {v1, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
move-object v8, v0
check-cast v8, Ljava/security/cert/X509Certificate;
.line 898
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v0
.line 900
sub-int v2, v0, p1
.line 906
:try_start_11
sget-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->POLICY_MAPPINGS:Ljava/lang/String;
invoke-static {v8, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_1a
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_11 .. :try_end_1a} :catch_63
move-result-object v4
.line 915
if-eqz v4, :cond_1ba
.line 918
new-instance v10, Ljava/util/HashMap;
invoke-direct {v10}, Ljava/util/HashMap;-><init>()V
.line 919
new-instance v5, Ljava/util/HashSet;
invoke-direct {v5}, Ljava/util/HashSet;-><init>()V
.line 921
const/4 v0, 0x0
move v3, v0
:goto_29
invoke-virtual {v4}, Lorg/spongycastle/asn1/ASN1Sequence;->size()I
move-result v0
if-ge v3, v0, :cond_76
.line 923
invoke-virtual {v4, v3}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v0
check-cast v0, Lorg/spongycastle/asn1/ASN1Sequence;
.line 924
const/4 v1, 0x0
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
check-cast v1, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v1
.line 925
const/4 v6, 0x1
invoke-virtual {v0, v6}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v0
check-cast v0, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v6
.line 928
invoke-interface {v10, v1}, Ljava/util/Map;->containsKey(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_6c
.line 930
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 931
invoke-interface {v0, v6}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 932
invoke-interface {v10, v1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 933
invoke-interface {v5, v1}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 921
:goto_5f
add-int/lit8 v0, v3, 0x1
move v3, v0
goto :goto_29
.line 909
:catch_63
move-exception v0
.line 911
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy mappings extension could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 937
:cond_6c
invoke-interface {v10, v1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/Set;
.line 938
invoke-interface {v0, v6}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_5f
.line 942
:cond_76
invoke-interface {v5}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v11
move-object v9, p3
.line 943
:cond_7b
:goto_7b
invoke-interface {v11}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1bb
.line 945
invoke-interface {v11}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v6
check-cast v6, Ljava/lang/String;
.line 950
if-lez p4, :cond_15c
.line 952
const/4 v1, 0x0
.line 953
aget-object v0, p2, v2
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
.line 954
:cond_90
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1bc
.line 956
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 957
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v4
invoke-virtual {v4, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_90
.line 959
const/4 v3, 0x1
.line 960
invoke-interface {v10, v6}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/util/Set;
iput-object v1, v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->expectedPolicies:Ljava/util/Set;
move v0, v3
.line 965
:goto_b0
if-nez v0, :cond_7b
.line 967
aget-object v0, p2, v2
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
.line 968
:cond_b8
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_7b
.line 970
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
move-object v1, v0
check-cast v1, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 971
const-string v0, "2.5.29.32.0"
invoke-virtual {v1}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v4
invoke-virtual {v0, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_b8
.line 973
const/4 v5, 0x0
.line 977
:try_start_d2
sget-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CERTIFICATE_POLICIES:Ljava/lang/String;
invoke-static {v8, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
check-cast v0, Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_da
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_d2 .. :try_end_da} :catch_141
.line 985
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v0
.line 986
:cond_de
invoke-interface {v0}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v3
if-eqz v3, :cond_104
.line 991
:try_start_e4
invoke-interface {v0}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/PolicyInformation;
:try_end_eb
.catch Ljava/lang/Exception; {:try_start_e4 .. :try_end_eb} :catch_14a
move-result-object v3
.line 998
const-string v4, "2.5.29.32.0"
invoke-virtual {v3}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getPolicyIdentifier()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v7
invoke-virtual {v7}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v7
invoke-virtual {v4, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_de
.line 1003
:try_start_fc
invoke-virtual {v3}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getPolicyQualifiers()Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getQualifierSet(Lorg/spongycastle/asn1/ASN1Sequence;)Ljava/util/Set;
:try_end_103
.catch Ljava/security/cert/CertPathValidatorException; {:try_start_fc .. :try_end_103} :catch_153
move-result-object v5
.line 1015
:cond_104
const/4 v7, 0x0
.line 1016
invoke-virtual {v8}, Ljava/security/cert/X509Certificate;->getCriticalExtensionOIDs()Ljava/util/Set;
move-result-object v0
if-eqz v0, :cond_115
.line 1018
invoke-virtual {v8}, Ljava/security/cert/X509Certificate;->getCriticalExtensionOIDs()Ljava/util/Set;
move-result-object v0
sget-object v3, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CERTIFICATE_POLICIES:Ljava/lang/String;
invoke-interface {v0, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v7
.line 1022
:cond_115
invoke-virtual {v1}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getParent()Ljava/security/cert/PolicyNode;
move-result-object v4
check-cast v4, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 1023
const-string v0, "2.5.29.32.0"
invoke-virtual {v4}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_7b
.line 1025
new-instance v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 1026
invoke-interface {v10, v6}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/util/Set;
invoke-direct/range {v0 .. v7}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;-><init>(Ljava/util/List;ILjava/util/Set;Ljava/security/cert/PolicyNode;Ljava/util/Set;Ljava/lang/String;Z)V
.line 1027
invoke-virtual {v4, v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->addChild(Lorg/spongycastle/jce/provider/PKIXPolicyNode;)V
.line 1028
aget-object v1, p2, v2
invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto/16 :goto_7b
.line 980
:catch_141
move-exception v0
.line 982
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Certificate policies extension could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 993
:catch_14a
move-exception v0
.line 995
new-instance v1, Ljava/security/cert/CertPathValidatorException;
const-string v2, "Policy information could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1005
:catch_153
move-exception v0
.line 1008
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy qualifier info set could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1039
:cond_15c
if-gtz p4, :cond_1b6
.line 1041
aget-object v0, p2, v2
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
move-object v3, v9
.line 1042
:goto_165
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1b7
.line 1044
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 1045
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_1b3
.line 1047
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getParent()Ljava/security/cert/PolicyNode;
move-result-object v1
check-cast v1, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 1048
invoke-virtual {v1, v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->removeChild(Lorg/spongycastle/jce/provider/PKIXPolicyNode;)V
.line 1049
invoke-interface {v5}, Ljava/util/Iterator;->remove()V
.line 1050
add-int/lit8 v0, v2, -0x1
move v4, v0
move-object v1, v3
:goto_18b
if-ltz v4, :cond_1b4
.line 1052
aget-object v7, p2, v4
.line 1053
const/4 v0, 0x0
move-object v3, v1
move v1, v0
:goto_192
invoke-interface {v7}, Ljava/util/List;->size()I
move-result v0
if-ge v1, v0, :cond_1ae
.line 1055
invoke-interface {v7, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 1056
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->hasChildren()Z
move-result v9
if-nez v9, :cond_1aa
.line 1058
invoke-static {v3, p2, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->removePolicyNode(Lorg/spongycastle/jce/provider/PKIXPolicyNode;[Ljava/util/List;Lorg/spongycastle/jce/provider/PKIXPolicyNode;)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
move-result-object v3
.line 1060
if-eqz v3, :cond_1ae
.line 1053
:cond_1aa
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_192
.line 1050
:cond_1ae
add-int/lit8 v0, v4, -0x1
move v4, v0
move-object v1, v3
goto :goto_18b
:cond_1b3
move-object v1, v3
:cond_1b4
move-object v3, v1
.line 1068
goto :goto_165
:cond_1b6
move-object v3, v9
:cond_1b7
move-object v9, v3
.line 1070
goto/16 :goto_7b
:cond_1ba
move-object v9, p3
.line 1072
:cond_1bb
return-object v9
:cond_1bc
move v0, v1
goto/16 :goto_b0
.end method
.method protected static prepareNextCertA(Ljava/security/cert/CertPath;I)V
.registers 8
.prologue
const/4 v5, 0x0
const/4 v1, 0x0
.line 1080
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 1081
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 1089
:try_start_c
sget-object v2, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->POLICY_MAPPINGS:Ljava/lang/String;
invoke-static {v0, v2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_15
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_c .. :try_end_15} :catch_4d
move-result-object v2
.line 1097
if-eqz v2, :cond_76
move v0, v1
.line 1101
:goto_19
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1Sequence;->size()I
move-result v1
if-ge v0, v1, :cond_76
.line 1107
:try_start_1f
invoke-virtual {v2, v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v1
.line 1109
const/4 v3, 0x0
invoke-virtual {v1, v3}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v3
invoke-static {v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v3
.line 1110
const/4 v4, 0x1
invoke-virtual {v1, v4}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjectAt(I)Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
:try_end_38
.catch Ljava/lang/Exception; {:try_start_1f .. :try_end_38} :catch_56
move-result-object v1
.line 1118
const-string v4, "2.5.29.32.0"
invoke-virtual {v3}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v3
invoke-virtual {v4, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_5f
.line 1121
new-instance v0, Ljava/security/cert/CertPathValidatorException;
const-string v1, "IssuerDomainPolicy is anyPolicy"
invoke-direct {v0, v1, v5, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 1092
:catch_4d
move-exception v0
.line 1094
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy mappings extension could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1112
:catch_56
move-exception v0
.line 1114
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy mappings extension contents could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1124
:cond_5f
const-string v3, "2.5.29.32.0"
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_73
.line 1127
new-instance v0, Ljava/security/cert/CertPathValidatorException;
const-string v1, "SubjectDomainPolicy is anyPolicy,"
invoke-direct {v0, v1, v5, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 1101
:cond_73
add-int/lit8 v0, v0, 0x1
goto :goto_19
.line 1131
:cond_76
return-void
.end method
.method protected static prepareNextCertG(Ljava/security/cert/CertPath;ILorg/spongycastle/jce/provider/PKIXNameConstraintValidator;)V
.registers 6
.prologue
.line 1677
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 1678
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 1682
const/4 v1, 0x0
.line 1685
:try_start_b
sget-object v2, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->NAME_CONSTRAINTS:Ljava/lang/String;
invoke-static {v0, v2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v0
.line 1687
if-eqz v0, :cond_54
.line 1689
invoke-static {v0}, Lorg/spongycastle/asn1/x509/NameConstraints;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/NameConstraints;
:try_end_1a
.catch Ljava/lang/Exception; {:try_start_b .. :try_end_1a} :catch_38
move-result-object v0
.line 1697
:goto_1b
if-eqz v0, :cond_53
.line 1703
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/NameConstraints;->getPermittedSubtrees()[Lorg/spongycastle/asn1/x509/GeneralSubtree;
move-result-object v1
.line 1704
if-eqz v1, :cond_26
.line 1708
:try_start_23
invoke-virtual {p2, v1}, Lorg/spongycastle/jce/provider/PKIXNameConstraintValidator;->intersectPermittedSubtree([Lorg/spongycastle/asn1/x509/GeneralSubtree;)V
:try_end_26
.catch Ljava/lang/Exception; {:try_start_23 .. :try_end_26} :catch_41
.line 1720
:cond_26
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/NameConstraints;->getExcludedSubtrees()[Lorg/spongycastle/asn1/x509/GeneralSubtree;
move-result-object v1
.line 1721
if-eqz v1, :cond_53
.line 1723
const/4 v0, 0x0
:goto_2d
array-length v2, v1
if-eq v0, v2, :cond_53
.line 1726
:try_start_30
aget-object v2, v1, v0
invoke-virtual {p2, v2}, Lorg/spongycastle/jce/provider/PKIXNameConstraintValidator;->addExcludedSubtree(Lorg/spongycastle/asn1/x509/GeneralSubtree;)V
:try_end_35
.catch Ljava/lang/Exception; {:try_start_30 .. :try_end_35} :catch_4a
.line 1723
add-int/lit8 v0, v0, 0x1
goto :goto_2d
.line 1692
:catch_38
move-exception v0
.line 1694
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Name constraints extension could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1710
:catch_41
move-exception v0
.line 1712
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Permitted subtrees cannot be build from name constraints extension."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1728
:catch_4a
move-exception v0
.line 1730
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Excluded subtrees cannot be build from name constraints extension."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1735
:cond_53
return-void
:cond_54
move-object v0, v1
goto :goto_1b
.end method
.method protected static prepareNextCertH1(Ljava/security/cert/CertPath;II)I
.registers 4
.prologue
.line 2260
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2261
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2265
invoke-static {v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z
move-result v0
if-nez v0, :cond_14
.line 2270
if-eqz p2, :cond_14
.line 2272
add-int/lit8 p2, p2, -0x1
.line 2275
:cond_14
return p2
.end method
.method protected static prepareNextCertH2(Ljava/security/cert/CertPath;II)I
.registers 4
.prologue
.line 2283
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2284
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2288
invoke-static {v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z
move-result v0
if-nez v0, :cond_14
.line 2293
if-eqz p2, :cond_14
.line 2295
add-int/lit8 p2, p2, -0x1
.line 2298
:cond_14
return p2
.end method
.method protected static prepareNextCertH3(Ljava/security/cert/CertPath;II)I
.registers 4
.prologue
.line 2306
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2307
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2311
invoke-static {v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z
move-result v0
if-nez v0, :cond_14
.line 2316
if-eqz p2, :cond_14
.line 2318
add-int/lit8 p2, p2, -0x1
.line 2321
:cond_14
return p2
.end method
.method protected static prepareNextCertI1(Ljava/security/cert/CertPath;II)I
.registers 6
.prologue
.line 1568
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 1569
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 1576
:try_start_a
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->POLICY_CONSTRAINTS:Ljava/lang/String;
invoke-static {v0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_13
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_13} :catch_3f
move-result-object v0
.line 1587
if-eqz v0, :cond_3e
.line 1589
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v0
.line 1591
:cond_1a
invoke-interface {v0}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_3e
.line 1596
:try_start_20
invoke-interface {v0}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/ASN1TaggedObject;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1TaggedObject;
move-result-object v1
.line 1597
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1TaggedObject;->getTagNo()I
move-result v2
if-nez v2, :cond_1a
.line 1599
const/4 v0, 0x0
invoke-static {v1, v0}, Lorg/spongycastle/asn1/ASN1Integer;->getInstance(Lorg/spongycastle/asn1/ASN1TaggedObject;Z)Lorg/spongycastle/asn1/ASN1Integer;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0}, Ljava/math/BigInteger;->intValue()I
:try_end_3a
.catch Ljava/lang/IllegalArgumentException; {:try_start_20 .. :try_end_3a} :catch_48
move-result v0
.line 1600
if-ge v0, p2, :cond_3e
move p2, v0
.line 1614
:cond_3e
return p2
.line 1579
:catch_3f
move-exception v0
.line 1581
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy constraints extension cannot be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1607
:catch_48
move-exception v0
.line 1609
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy constraints extension contents cannot be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.end method
.method protected static prepareNextCertI2(Ljava/security/cert/CertPath;II)I
.registers 7
.prologue
.line 1623
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 1624
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 1631
:try_start_a
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->POLICY_CONSTRAINTS:Ljava/lang/String;
invoke-static {v0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_13
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_13} :catch_40
move-result-object v0
.line 1642
if-eqz v0, :cond_3f
.line 1644
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v0
.line 1646
:cond_1a
invoke-interface {v0}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_3f
.line 1650
:try_start_20
invoke-interface {v0}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/ASN1TaggedObject;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1TaggedObject;
move-result-object v1
.line 1651
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1TaggedObject;->getTagNo()I
move-result v2
const/4 v3, 0x1
if-ne v2, v3, :cond_1a
.line 1653
const/4 v0, 0x0
invoke-static {v1, v0}, Lorg/spongycastle/asn1/ASN1Integer;->getInstance(Lorg/spongycastle/asn1/ASN1TaggedObject;Z)Lorg/spongycastle/asn1/ASN1Integer;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0}, Ljava/math/BigInteger;->intValue()I
:try_end_3b
.catch Ljava/lang/IllegalArgumentException; {:try_start_20 .. :try_end_3b} :catch_49
move-result v0
.line 1654
if-ge v0, p2, :cond_3f
move p2, v0
.line 1668
:cond_3f
return p2
.line 1634
:catch_40
move-exception v0
.line 1636
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy constraints extension cannot be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1661
:catch_49
move-exception v0
.line 1663
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy constraints extension contents cannot be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.end method
.method protected static prepareNextCertJ(Ljava/security/cert/CertPath;II)I
.registers 6
.prologue
.line 2075
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2076
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2083
:try_start_a
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->INHIBIT_ANY_POLICY:Ljava/lang/String;
invoke-static {v0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/ASN1Integer;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Integer;
:try_end_13
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_13} :catch_22
move-result-object v0
.line 2092
if-eqz v0, :cond_21
.line 2094
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0}, Ljava/math/BigInteger;->intValue()I
move-result v0
.line 2096
if-ge v0, p2, :cond_21
move p2, v0
.line 2101
:cond_21
return p2
.line 2086
:catch_22
move-exception v0
.line 2088
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Inhibit any-policy extension cannot be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.end method
.method protected static prepareNextCertK(Ljava/security/cert/CertPath;I)V
.registers 5
.prologue
.line 2109
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2110
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2117
:try_start_a
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->BASIC_CONSTRAINTS:Ljava/lang/String;
invoke-static {v0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/BasicConstraints;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/BasicConstraints;
:try_end_13
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_13} :catch_24
move-result-object v0
.line 2125
if-eqz v0, :cond_2d
.line 2127
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/BasicConstraints;->isCA()Z
move-result v0
if-nez v0, :cond_35
.line 2129
new-instance v0, Ljava/security/cert/CertPathValidatorException;
const-string v1, "Not a CA certificate"
invoke-direct {v0, v1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;)V
throw v0
.line 2120
:catch_24
move-exception v0
.line 2122
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Basic constraints extension cannot be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 2134
:cond_2d
new-instance v0, Ljava/security/cert/CertPathValidatorException;
const-string v1, "Intermediate certificate lacks BasicConstraints"
invoke-direct {v0, v1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;)V
throw v0
.line 2136
:cond_35
return-void
.end method
.method protected static prepareNextCertL(Ljava/security/cert/CertPath;II)I
.registers 6
.prologue
.line 2144
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2145
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2149
invoke-static {v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z
move-result v0
if-nez v0, :cond_1d
.line 2151
if-gtz p2, :cond_1b
.line 2153
new-instance v0, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v1, "Max path length not greater than zero"
const/4 v2, 0x0
invoke-direct {v0, v1, v2, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 2156
:cond_1b
add-int/lit8 p2, p2, -0x1
.line 2158
:cond_1d
return p2
.end method
.method protected static prepareNextCertM(Ljava/security/cert/CertPath;II)I
.registers 6
.prologue
.line 2167
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2168
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2176
:try_start_a
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->BASIC_CONSTRAINTS:Ljava/lang/String;
invoke-static {v0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/BasicConstraints;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/BasicConstraints;
:try_end_13
.catch Ljava/lang/Exception; {:try_start_a .. :try_end_13} :catch_24
move-result-object v0
.line 2184
if-eqz v0, :cond_23
.line 2186
invoke-virtual {v0}, Lorg/spongycastle/asn1/x509/BasicConstraints;->getPathLenConstraint()Ljava/math/BigInteger;
move-result-object v0
.line 2188
if-eqz v0, :cond_23
.line 2190
invoke-virtual {v0}, Ljava/math/BigInteger;->intValue()I
move-result v0
.line 2192
if-ge v0, p2, :cond_23
move p2, v0
.line 2198
:cond_23
return p2
.line 2179
:catch_24
move-exception v0
.line 2181
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Basic constraints extension cannot be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.end method
.method protected static prepareNextCertN(Ljava/security/cert/CertPath;I)V
.registers 5
.prologue
.line 2206
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2207
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2212
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getKeyUsage()[Z
move-result-object v0
.line 2214
if-eqz v0, :cond_1e
const/4 v1, 0x5
aget-boolean v0, v0, v1
if-nez v0, :cond_1e
.line 2216
new-instance v0, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v1, "Issuer certificate keyusage extension is critical and does not permit key signing."
const/4 v2, 0x0
invoke-direct {v0, v1, v2, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 2220
:cond_1e
return-void
.end method
.method protected static prepareNextCertO(Ljava/security/cert/CertPath;ILjava/util/Set;Ljava/util/List;)V
.registers 7
.prologue
.line 2229
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2230
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2236
invoke-interface {p3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
.line 2237
:goto_e
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_2d
.line 2241
:try_start_14
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/security/cert/PKIXCertPathChecker;
invoke-virtual {v1, v0, p2}, Ljava/security/cert/PKIXCertPathChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V
:try_end_1d
.catch Ljava/security/cert/CertPathValidatorException; {:try_start_14 .. :try_end_1d} :catch_1e
goto :goto_e
.line 2243
:catch_1e
move-exception v0
.line 2245
new-instance v1, Ljava/security/cert/CertPathValidatorException;
invoke-virtual {v0}, Ljava/security/cert/CertPathValidatorException;->getMessage()Ljava/lang/String;
move-result-object v2
invoke-virtual {v0}, Ljava/security/cert/CertPathValidatorException;->getCause()Ljava/lang/Throwable;
move-result-object v0
invoke-direct {v1, v2, v0, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 2248
:cond_2d
invoke-interface {p2}, Ljava/util/Set;->isEmpty()Z
move-result v0
if-nez v0, :cond_49
.line 2250
new-instance v0, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Certificate has unsupported critical extension: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const/4 v2, 0x0
invoke-direct {v0, v1, v2, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 2253
:cond_49
return-void
.end method
.method protected static processCRLA1i(Ljava/util/Date;Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/X509Certificate;Ljava/security/cert/X509CRL;)Ljava/util/Set;
.registers 8
.prologue
.line 641
new-instance v1, Ljava/util/HashSet;
invoke-direct {v1}, Ljava/util/HashSet;-><init>()V
.line 642
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->isUseDeltasEnabled()Z
move-result v0
if-eqz v0, :cond_45
.line 647
:try_start_b
sget-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->FRESHEST_CRL:Ljava/lang/String;
.line 648
invoke-static {p2, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/CRLDistPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/CRLDistPoint;
:try_end_14
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_b .. :try_end_14} :catch_46
move-result-object v0
.line 654
if-nez v0, :cond_21
.line 658
:try_start_17
sget-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->FRESHEST_CRL:Ljava/lang/String;
invoke-static {p3, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/CRLDistPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/CRLDistPoint;
:try_end_20
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_17 .. :try_end_20} :catch_4f
move-result-object v0
.line 666
:cond_21
if-eqz v0, :cond_45
.line 668
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 670
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCRLStores()Ljava/util/List;
move-result-object v3
invoke-interface {v2, v3}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
.line 674
:try_start_2f
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getNamedCRLStoreMap()Ljava/util/Map;
move-result-object v3
invoke-static {v0, v3}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getAdditionalStoresFromCRLDistributionPoint(Lorg/spongycastle/asn1/x509/CRLDistPoint;Ljava/util/Map;)Ljava/util/List;
move-result-object v0
invoke-interface {v2, v0}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
:try_end_3a
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_2f .. :try_end_3a} :catch_58
.line 685
:try_start_3a
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCertStores()Ljava/util/List;
move-result-object v0
invoke-static {p0, p3, v0, v2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getDeltaCRLs(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/util/List;Ljava/util/List;)Ljava/util/Set;
move-result-object v0
invoke-interface {v1, v0}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
:try_end_45
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_3a .. :try_end_45} :catch_61
.line 693
:cond_45
return-object v1
.line 650
:catch_46
move-exception v0
.line 652
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Freshest CRL extension could not be decoded from certificate."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 661
:catch_4f
move-exception v0
.line 663
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Freshest CRL extension could not be decoded from CRL."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 676
:catch_58
move-exception v0
.line 678
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "No new delta CRL locations could be added from Freshest CRL extension."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 687
:catch_61
move-exception v0
.line 689
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Exception obtaining delta CRLs."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.end method
.method protected static processCRLA1ii(Ljava/util/Date;Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/X509Certificate;Ljava/security/cert/X509CRL;)[Ljava/util/Set;
.registers 10
.prologue
const/4 v5, 0x1
.line 703
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
.line 704
new-instance v1, Ljava/security/cert/X509CRLSelector;
invoke-direct {v1}, Ljava/security/cert/X509CRLSelector;-><init>()V
.line 705
invoke-virtual {v1, p2}, Ljava/security/cert/X509CRLSelector;->setCertificateChecking(Ljava/security/cert/X509Certificate;)V
.line 709
:try_start_e
invoke-static {p3}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getIssuerPrincipal(Ljava/security/cert/X509CRL;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/x500/X500Name;->getEncoded()[B
move-result-object v2
invoke-virtual {v1, v2}, Ljava/security/cert/X509CRLSelector;->addIssuerName([B)V
:try_end_19
.catch Ljava/io/IOException; {:try_start_e .. :try_end_19} :catch_5c
.line 716
new-instance v2, Lorg/spongycastle/jcajce/PKIXCRLStoreSelector$Builder;
invoke-direct {v2, v1}, Lorg/spongycastle/jcajce/PKIXCRLStoreSelector$Builder;-><init>(Ljava/security/cert/CRLSelector;)V
invoke-virtual {v2, v5}, Lorg/spongycastle/jcajce/PKIXCRLStoreSelector$Builder;->setCompleteCRLEnabled(Z)Lorg/spongycastle/jcajce/PKIXCRLStoreSelector$Builder;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/jcajce/PKIXCRLStoreSelector$Builder;->build()Lorg/spongycastle/jcajce/PKIXCRLStoreSelector;
move-result-object v1
.line 720
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getDate()Ljava/util/Date;
move-result-object v2
if-eqz v2, :cond_30
.line 722
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getDate()Ljava/util/Date;
move-result-object p0
.line 725
:cond_30
sget-object v2, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CRL_UTIL:Lorg/spongycastle/jce/provider/PKIXCRLUtil;
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCertStores()Ljava/util/List;
move-result-object v3
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCRLStores()Ljava/util/List;
move-result-object v4
invoke-virtual {v2, v1, p0, v3, v4}, Lorg/spongycastle/jce/provider/PKIXCRLUtil;->findCRLs(Lorg/spongycastle/jcajce/PKIXCRLStoreSelector;Ljava/util/Date;Ljava/util/List;Ljava/util/List;)Ljava/util/Set;
move-result-object v1
.line 727
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->isUseDeltasEnabled()Z
move-result v2
if-eqz v2, :cond_53
.line 732
:try_start_44
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCertStores()Ljava/util/List;
move-result-object v2
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCRLStores()Ljava/util/List;
move-result-object v3
invoke-static {p0, p3, v2, v3}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getDeltaCRLs(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/util/List;Ljava/util/List;)Ljava/util/Set;
move-result-object v2
invoke-interface {v0, v2}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
:try_end_53
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_44 .. :try_end_53} :catch_72
.line 739
:cond_53
const/4 v2, 0x2
new-array v2, v2, [Ljava/util/Set;
const/4 v3, 0x0
aput-object v1, v2, v3
aput-object v0, v2, v5
return-object v2
.line 711
:catch_5c
move-exception v0
.line 713
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Cannot extract issuer from CRL."
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 734
:catch_72
move-exception v0
.line 736
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Exception obtaining delta CRLs."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.end method
.method protected static processCRLB1(Lorg/spongycastle/asn1/x509/DistributionPoint;Ljava/lang/Object;Ljava/security/cert/X509CRL;)V
.registers 11
.prologue
const/4 v2, 0x1
const/4 v0, 0x0
.line 291
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->ISSUING_DISTRIBUTION_POINT:Ljava/lang/String;
invoke-static {p2, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v1
.line 293
if-eqz v1, :cond_a3
.line 295
invoke-static {v1}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->isIndirectCRL()Z
move-result v1
if-eqz v1, :cond_a3
move v3, v2
.line 304
:goto_15
:try_start_15
invoke-static {p2}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getIssuerPrincipal(Ljava/security/cert/X509CRL;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x500/X500Name;->getEncoded()[B
:try_end_1c
.catch Ljava/io/IOException; {:try_start_15 .. :try_end_1c} :catch_50
move-result-object v4
.line 312
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getCRLIssuer()Lorg/spongycastle/asn1/x509/GeneralNames;
move-result-object v1
if-eqz v1, :cond_89
.line 314
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getCRLIssuer()Lorg/spongycastle/asn1/x509/GeneralNames;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/GeneralNames;->getNames()[Lorg/spongycastle/asn1/x509/GeneralName;
move-result-object v5
move v1, v0
.line 315
:goto_2c
array-length v6, v5
if-ge v1, v6, :cond_73
.line 317
aget-object v6, v5, v1
invoke-virtual {v6}, Lorg/spongycastle/asn1/x509/GeneralName;->getTagNo()I
move-result v6
const/4 v7, 0x4
if-ne v6, v7, :cond_4d
.line 321
:try_start_38
aget-object v6, v5, v1
invoke-virtual {v6}, Lorg/spongycastle/asn1/x509/GeneralName;->getName()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v6
invoke-interface {v6}, Lorg/spongycastle/asn1/ASN1Encodable;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v6
invoke-virtual {v6}, Lorg/spongycastle/asn1/ASN1Primitive;->getEncoded()[B
move-result-object v6
invoke-static {v6, v4}, Lorg/spongycastle/util/Arrays;->areEqual([B[B)Z
:try_end_49
.catch Ljava/io/IOException; {:try_start_38 .. :try_end_49} :catch_6a
move-result v6
if-eqz v6, :cond_4d
move v0, v2
.line 315
:cond_4d
add-int/lit8 v1, v1, 0x1
goto :goto_2c
.line 306
:catch_50
move-exception v0
.line 308
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Exception encoding CRL issuer: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/io/IOException;->getMessage()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 326
:catch_6a
move-exception v0
.line 328
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "CRL issuer information from distribution point cannot be decoded."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 333
:cond_73
if-eqz v0, :cond_7f
if-nez v3, :cond_7f
.line 335
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Distribution point contains cRLIssuer field but CRL is not indirect."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 337
:cond_7f
if-nez v0, :cond_98
.line 339
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "CRL issuer of CRL does not match CRL issuer of distribution point."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 344
:cond_89
invoke-static {p2}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getIssuerPrincipal(Ljava/security/cert/X509CRL;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v1
.line 345
invoke-static {p1}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getEncodedIssuerPrincipal(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v3
.line 344
invoke-virtual {v1, v3}, Lorg/spongycastle/asn1/x500/X500Name;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_98
move v0, v2
.line 350
:cond_98
if-nez v0, :cond_a2
.line 352
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Cannot find matching CRL issuer for certificate."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 354
:cond_a2
return-void
:cond_a3
move v3, v0
goto/16 :goto_15
.end method
.method protected static processCRLB2(Lorg/spongycastle/asn1/x509/DistributionPoint;Ljava/lang/Object;Ljava/security/cert/X509CRL;)V
.registers 14
.prologue
const/4 v5, 0x1
const/4 v2, 0x0
.line 110
:try_start_2
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->ISSUING_DISTRIBUTION_POINT:Ljava/lang/String;
invoke-static {p2, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;
:try_end_b
.catch Ljava/lang/Exception; {:try_start_2 .. :try_end_b} :catch_3f
move-result-object v6
.line 119
if-eqz v6, :cond_1cb
.line 121
invoke-virtual {v6}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getDistributionPoint()Lorg/spongycastle/asn1/x509/DistributionPointName;
move-result-object v1
if-eqz v1, :cond_176
.line 124
invoke-static {v6}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getDistributionPoint()Lorg/spongycastle/asn1/x509/DistributionPointName;
move-result-object v3
.line 125
new-instance v7, Ljava/util/ArrayList;
invoke-direct {v7}, Ljava/util/ArrayList;-><init>()V
.line 127
invoke-virtual {v3}, Lorg/spongycastle/asn1/x509/DistributionPointName;->getType()I
move-result v1
if-nez v1, :cond_48
.line 129
invoke-virtual {v3}, Lorg/spongycastle/asn1/x509/DistributionPointName;->getName()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/x509/GeneralNames;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/GeneralNames;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/GeneralNames;->getNames()[Lorg/spongycastle/asn1/x509/GeneralName;
move-result-object v4
move v1, v2
.line 130
:goto_34
array-length v8, v4
if-ge v1, v8, :cond_48
.line 132
aget-object v8, v4, v1
invoke-interface {v7, v8}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 130
add-int/lit8 v1, v1, 0x1
goto :goto_34
.line 113
:catch_3f
move-exception v1
.line 115
new-instance v2, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v3, "Issuing distribution point extension could not be decoded."
invoke-direct {v2, v3, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v2
.line 135
:cond_48
invoke-virtual {v3}, Lorg/spongycastle/asn1/x509/DistributionPointName;->getType()I
move-result v1
if-ne v1, v5, :cond_90
.line 137
new-instance v4, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v4}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 140
:try_start_53
invoke-static {p2}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getIssuerPrincipal(Ljava/security/cert/X509CRL;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/ASN1Sequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v8
.line 141
:goto_5f
invoke-interface {v8}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_78
.line 143
invoke-interface {v8}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/asn1/ASN1Encodable;
invoke-virtual {v4, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
:try_end_6e
.catch Ljava/lang/Exception; {:try_start_53 .. :try_end_6e} :catch_6f
goto :goto_5f
.line 146
:catch_6f
move-exception v1
.line 148
new-instance v2, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v3, "Could not read CRL issuer."
invoke-direct {v2, v3, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v2
.line 150
:cond_78
invoke-virtual {v3}, Lorg/spongycastle/asn1/x509/DistributionPointName;->getName()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-virtual {v4, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 151
new-instance v1, Lorg/spongycastle/asn1/x509/GeneralName;
new-instance v3, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v3, v4}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-static {v3}, Lorg/spongycastle/asn1/x500/X500Name;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v3
invoke-direct {v1, v3}, Lorg/spongycastle/asn1/x509/GeneralName;-><init>(Lorg/spongycastle/asn1/x500/X500Name;)V
invoke-interface {v7, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 156
:cond_90
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getDistributionPoint()Lorg/spongycastle/asn1/x509/DistributionPointName;
move-result-object v1
if-eqz v1, :cond_146
.line 158
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getDistributionPoint()Lorg/spongycastle/asn1/x509/DistributionPointName;
move-result-object v8
.line 159
const/4 v1, 0x0
.line 160
invoke-virtual {v8}, Lorg/spongycastle/asn1/x509/DistributionPointName;->getType()I
move-result v3
if-nez v3, :cond_ad
.line 162
invoke-virtual {v8}, Lorg/spongycastle/asn1/x509/DistributionPointName;->getName()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/x509/GeneralNames;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/GeneralNames;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/GeneralNames;->getNames()[Lorg/spongycastle/asn1/x509/GeneralName;
move-result-object v1
.line 164
:cond_ad
invoke-virtual {v8}, Lorg/spongycastle/asn1/x509/DistributionPointName;->getType()I
move-result v3
if-ne v3, v5, :cond_129
.line 166
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getCRLIssuer()Lorg/spongycastle/asn1/x509/GeneralNames;
move-result-object v1
if-eqz v1, :cond_ed
.line 168
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getCRLIssuer()Lorg/spongycastle/asn1/x509/GeneralNames;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/GeneralNames;->getNames()[Lorg/spongycastle/asn1/x509/GeneralName;
move-result-object v1
move-object v3, v1
:goto_c2
move v4, v2
.line 183
:goto_c3
array-length v1, v3
if-ge v4, v1, :cond_12a
.line 185
aget-object v1, v3, v4
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/GeneralName;->getName()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-interface {v1}, Lorg/spongycastle/asn1/ASN1Encodable;->toASN1Primitive()Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/ASN1Sequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v9
.line 186
new-instance v10, Lorg/spongycastle/asn1/ASN1EncodableVector;
invoke-direct {v10}, Lorg/spongycastle/asn1/ASN1EncodableVector;-><init>()V
.line 187
:goto_dd
invoke-interface {v9}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v1
if-eqz v1, :cond_10e
.line 189
invoke-interface {v9}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/asn1/ASN1Encodable;
invoke-virtual {v10, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
goto :goto_dd
.line 172
:cond_ed
new-array v1, v5, [Lorg/spongycastle/asn1/x509/GeneralName;
.line 175
const/4 v3, 0x0
:try_start_f0
new-instance v4, Lorg/spongycastle/asn1/x509/GeneralName;
.line 176
invoke-static {p1}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getEncodedIssuerPrincipal(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v9
invoke-virtual {v9}, Lorg/spongycastle/asn1/x500/X500Name;->getEncoded()[B
move-result-object v9
.line 175
invoke-static {v9}, Lorg/spongycastle/asn1/x500/X500Name;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v9
invoke-direct {v4, v9}, Lorg/spongycastle/asn1/x509/GeneralName;-><init>(Lorg/spongycastle/asn1/x500/X500Name;)V
aput-object v4, v1, v3
:try_end_103
.catch Ljava/lang/Exception; {:try_start_f0 .. :try_end_103} :catch_105
move-object v3, v1
.line 181
goto :goto_c2
.line 178
:catch_105
move-exception v1
.line 180
new-instance v2, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v3, "Could not read certificate issuer."
invoke-direct {v2, v3, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v2
.line 191
:cond_10e
invoke-virtual {v8}, Lorg/spongycastle/asn1/x509/DistributionPointName;->getName()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v1
invoke-virtual {v10, v1}, Lorg/spongycastle/asn1/ASN1EncodableVector;->add(Lorg/spongycastle/asn1/ASN1Encodable;)V
.line 192
new-instance v1, Lorg/spongycastle/asn1/x509/GeneralName;
new-instance v9, Lorg/spongycastle/asn1/DERSequence;
invoke-direct {v9, v10}, Lorg/spongycastle/asn1/DERSequence;-><init>(Lorg/spongycastle/asn1/ASN1EncodableVector;)V
invoke-static {v9}, Lorg/spongycastle/asn1/x500/X500Name;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v9
invoke-direct {v1, v9}, Lorg/spongycastle/asn1/x509/GeneralName;-><init>(Lorg/spongycastle/asn1/x500/X500Name;)V
aput-object v1, v3, v4
.line 183
add-int/lit8 v1, v4, 0x1
move v4, v1
goto :goto_c3
:cond_129
move-object v3, v1
.line 195
:cond_12a
if-eqz v3, :cond_139
move v1, v2
.line 197
:goto_12d
array-length v4, v3
if-ge v1, v4, :cond_139
.line 199
aget-object v4, v3, v1
invoke-interface {v7, v4}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_143
move v2, v5
.line 206
:cond_139
if-nez v2, :cond_176
.line 208
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "No match for certificate CRL issuing distribution point name to cRLIssuer CRL distribution point."
invoke-direct {v1, v2}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v1
.line 197
:cond_143
add-int/lit8 v1, v1, 0x1
goto :goto_12d
.line 217
:cond_146
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getCRLIssuer()Lorg/spongycastle/asn1/x509/GeneralNames;
move-result-object v1
if-nez v1, :cond_154
.line 219
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Either the cRLIssuer or the distributionPoint field must be contained in DistributionPoint."
invoke-direct {v1, v2}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v1
.line 222
:cond_154
invoke-virtual {p0}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getCRLIssuer()Lorg/spongycastle/asn1/x509/GeneralNames;
move-result-object v1
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/GeneralNames;->getNames()[Lorg/spongycastle/asn1/x509/GeneralName;
move-result-object v3
move v1, v2
.line 223
:goto_15d
array-length v4, v3
if-ge v1, v4, :cond_169
.line 225
aget-object v4, v3, v1
invoke-interface {v7, v4}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_173
move v2, v5
.line 231
:cond_169
if-nez v2, :cond_176
.line 233
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "No match for certificate CRL issuing distribution point name to cRLIssuer CRL distribution point."
invoke-direct {v1, v2}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v1
.line 223
:cond_173
add-int/lit8 v1, v1, 0x1
goto :goto_15d
.line 241
:cond_176
:try_start_176
move-object v0, p1
check-cast v0, Ljava/security/cert/X509Extension;
move-object v1, v0
sget-object v2, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->BASIC_CONSTRAINTS:Ljava/lang/String;
invoke-static {v1, v2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/x509/BasicConstraints;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/BasicConstraints;
:try_end_183
.catch Ljava/lang/Exception; {:try_start_176 .. :try_end_183} :catch_19e
move-result-object v1
.line 249
instance-of v2, p1, Ljava/security/cert/X509Certificate;
if-eqz v2, :cond_1bd
.line 252
invoke-virtual {v6}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->onlyContainsUserCerts()Z
move-result v2
if-eqz v2, :cond_1a7
if-eqz v1, :cond_1a7
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/BasicConstraints;->isCA()Z
move-result v2
if-eqz v2, :cond_1a7
.line 254
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "CA Cert CRL only contains user certificates."
invoke-direct {v1, v2}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v1
.line 244
:catch_19e
move-exception v1
.line 246
new-instance v2, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v3, "Basic constraints extension could not be decoded."
invoke-direct {v2, v3, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v2
.line 258
:cond_1a7
invoke-virtual {v6}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->onlyContainsCACerts()Z
move-result v2
if-eqz v2, :cond_1bd
if-eqz v1, :cond_1b5
invoke-virtual {v1}, Lorg/spongycastle/asn1/x509/BasicConstraints;->isCA()Z
move-result v1
if-nez v1, :cond_1bd
.line 260
:cond_1b5
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "End CRL only contains CA certificates."
invoke-direct {v1, v2}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v1
.line 265
:cond_1bd
invoke-virtual {v6}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->onlyContainsAttributeCerts()Z
move-result v1
if-eqz v1, :cond_1cb
.line 267
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "onlyContainsAttributeCerts boolean is asserted."
invoke-direct {v1, v2}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v1
.line 270
:cond_1cb
return-void
.end method
.method protected static processCRLC(Ljava/security/cert/X509CRL;Ljava/security/cert/X509CRL;Lorg/spongycastle/jcajce/PKIXExtendedParameters;)V
.registers 7
.prologue
const/4 v0, 0x1
.line 761
if-nez p0, :cond_4
.line 859
:cond_3
return-void
.line 768
:cond_4
:try_start_4
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->ISSUING_DISTRIBUTION_POINT:Ljava/lang/String;
invoke-static {p1, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;
:try_end_d
.catch Ljava/lang/Exception; {:try_start_4 .. :try_end_d} :catch_2a
move-result-object v2
.line 776
invoke-virtual {p2}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->isUseDeltasEnabled()Z
move-result v1
if-eqz v1, :cond_3
.line 779
invoke-static {p0}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getIssuerPrincipal(Ljava/security/cert/X509CRL;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v1
invoke-static {p1}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getIssuerPrincipal(Ljava/security/cert/X509CRL;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v3
invoke-virtual {v1, v3}, Lorg/spongycastle/asn1/x500/X500Name;->equals(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_33
.line 781
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Complete CRL issuer does not match delta CRL issuer."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 771
:catch_2a
move-exception v0
.line 773
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Issuing distribution point extension could not be decoded."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 788
:cond_33
:try_start_33
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->ISSUING_DISTRIBUTION_POINT:Ljava/lang/String;
invoke-static {p0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;
:try_end_3c
.catch Ljava/lang/Exception; {:try_start_33 .. :try_end_3c} :catch_4c
move-result-object v3
.line 797
const/4 v1, 0x0
.line 798
if-nez v2, :cond_55
.line 800
if-nez v3, :cond_5b
.line 812
:cond_42
:goto_42
if-nez v0, :cond_5d
.line 814
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Issuing distribution point extension from delta CRL and complete CRL does not match."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 791
:catch_4c
move-exception v0
.line 793
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Issuing distribution point extension from delta CRL could not be decoded."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 807
:cond_55
invoke-virtual {v2, v3}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_42
:cond_5b
move v0, v1
goto :goto_42
.line 822
:cond_5d
:try_start_5d
sget-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->AUTHORITY_KEY_IDENTIFIER:Ljava/lang/String;
invoke-static {p1, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
:try_end_62
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_5d .. :try_end_62} :catch_73
move-result-object v0
.line 834
:try_start_63
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->AUTHORITY_KEY_IDENTIFIER:Ljava/lang/String;
invoke-static {p0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
:try_end_68
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_63 .. :try_end_68} :catch_7c
move-result-object v1
.line 843
if-nez v0, :cond_85
.line 845
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "CRL authority key identifier is null."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 825
:catch_73
move-exception v0
.line 827
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Authority key identifier extension could not be extracted from complete CRL."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 837
:catch_7c
move-exception v0
.line 839
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Authority key identifier extension could not be extracted from delta CRL."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 848
:cond_85
if-nez v1, :cond_8f
.line 850
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Delta CRL authority key identifier is null."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 853
:cond_8f
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/ASN1Primitive;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_3
.line 855
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Delta CRL authority key identifier does not match complete CRL authority key identifier."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method protected static processCRLD(Ljava/security/cert/X509CRL;Lorg/spongycastle/asn1/x509/DistributionPoint;)Lorg/spongycastle/jce/provider/ReasonsMask;
.registers 5
.prologue
.line 364
:try_start_0
sget-object v0, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->ISSUING_DISTRIBUTION_POINT:Ljava/lang/String;
invoke-static {p0, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;
:try_end_9
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_9} :catch_2f
move-result-object v2
.line 372
if-eqz v2, :cond_38
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getOnlySomeReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v0
if-eqz v0, :cond_38
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v0
if-eqz v0, :cond_38
.line 374
new-instance v0, Lorg/spongycastle/jce/provider/ReasonsMask;
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v1
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/ReasonsMask;-><init>(Lorg/spongycastle/asn1/x509/ReasonFlags;)V
new-instance v1, Lorg/spongycastle/jce/provider/ReasonsMask;
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getOnlySomeReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v2
invoke-direct {v1, v2}, Lorg/spongycastle/jce/provider/ReasonsMask;-><init>(Lorg/spongycastle/asn1/x509/ReasonFlags;)V
invoke-virtual {v0, v1}, Lorg/spongycastle/jce/provider/ReasonsMask;->intersect(Lorg/spongycastle/jce/provider/ReasonsMask;)Lorg/spongycastle/jce/provider/ReasonsMask;
move-result-object v0
.line 384
:goto_2e
return-object v0
.line 367
:catch_2f
move-exception v0
.line 369
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Issuing distribution point extension could not be decoded."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 377
:cond_38
if-eqz v2, :cond_40
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getOnlySomeReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v0
if-nez v0, :cond_49
:cond_40
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v0
if-nez v0, :cond_49
.line 379
sget-object v0, Lorg/spongycastle/jce/provider/ReasonsMask;->allReasons:Lorg/spongycastle/jce/provider/ReasonsMask;
goto :goto_2e
.line 382
:cond_49
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v0
if-nez v0, :cond_5b
sget-object v0, Lorg/spongycastle/jce/provider/ReasonsMask;->allReasons:Lorg/spongycastle/jce/provider/ReasonsMask;
move-object v1, v0
.line 384
:goto_52
if-nez v2, :cond_66
sget-object v0, Lorg/spongycastle/jce/provider/ReasonsMask;->allReasons:Lorg/spongycastle/jce/provider/ReasonsMask;
:goto_56
invoke-virtual {v1, v0}, Lorg/spongycastle/jce/provider/ReasonsMask;->intersect(Lorg/spongycastle/jce/provider/ReasonsMask;)Lorg/spongycastle/jce/provider/ReasonsMask;
move-result-object v0
goto :goto_2e
.line 382
:cond_5b
new-instance v0, Lorg/spongycastle/jce/provider/ReasonsMask;
.line 384
invoke-virtual {p1}, Lorg/spongycastle/asn1/x509/DistributionPoint;->getReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v1
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/ReasonsMask;-><init>(Lorg/spongycastle/asn1/x509/ReasonFlags;)V
move-object v1, v0
goto :goto_52
:cond_66
new-instance v0, Lorg/spongycastle/jce/provider/ReasonsMask;
.line 386
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/IssuingDistributionPoint;->getOnlySomeReasons()Lorg/spongycastle/asn1/x509/ReasonFlags;
move-result-object v2
invoke-direct {v0, v2}, Lorg/spongycastle/jce/provider/ReasonsMask;-><init>(Lorg/spongycastle/asn1/x509/ReasonFlags;)V
goto :goto_56
.end method
.method protected static processCRLF(Ljava/security/cert/X509CRL;Ljava/lang/Object;Ljava/security/cert/X509Certificate;Ljava/security/PublicKey;Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/util/List;Lorg/spongycastle/jcajce/util/JcaJceHelper;)Ljava/util/Set;
.registers 16
.prologue
const/4 v1, 0x0
.line 459
new-instance v0, Ljava/security/cert/X509CertSelector;
invoke-direct {v0}, Ljava/security/cert/X509CertSelector;-><init>()V
.line 462
:try_start_6
invoke-static {p0}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getIssuerPrincipal(Ljava/security/cert/X509CRL;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v2
invoke-virtual {v2}, Lorg/spongycastle/asn1/x500/X500Name;->getEncoded()[B
move-result-object v2
.line 463
invoke-virtual {v0, v2}, Ljava/security/cert/X509CertSelector;->setSubject([B)V
:try_end_11
.catch Ljava/io/IOException; {:try_start_6 .. :try_end_11} :catch_57
.line 471
new-instance v2, Lorg/spongycastle/jcajce/PKIXCertStoreSelector$Builder;
invoke-direct {v2, v0}, Lorg/spongycastle/jcajce/PKIXCertStoreSelector$Builder;-><init>(Ljava/security/cert/CertSelector;)V
invoke-virtual {v2}, Lorg/spongycastle/jcajce/PKIXCertStoreSelector$Builder;->build()Lorg/spongycastle/jcajce/PKIXCertStoreSelector;
move-result-object v0
.line 477
:try_start_1a
invoke-virtual {p4}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCertificateStores()Ljava/util/List;
move-result-object v2
invoke-static {v0, v2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->findCertificates(Lorg/spongycastle/jcajce/PKIXCertStoreSelector;Ljava/util/List;)Ljava/util/Collection;
move-result-object v2
.line 478
invoke-virtual {p4}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getCertStores()Ljava/util/List;
move-result-object v3
invoke-static {v0, v3}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->findCertificates(Lorg/spongycastle/jcajce/PKIXCertStoreSelector;Ljava/util/List;)Ljava/util/Collection;
move-result-object v0
invoke-interface {v2, v0}, Ljava/util/Collection;->addAll(Ljava/util/Collection;)Z
:try_end_2d
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_1a .. :try_end_2d} :catch_60
.line 485
invoke-interface {v2, p2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z
.line 487
invoke-interface {v2}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v2
.line 489
new-instance v3, Ljava/util/ArrayList;
invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
.line 490
new-instance v4, Ljava/util/ArrayList;
invoke-direct {v4}, Ljava/util/ArrayList;-><init>()V
.line 492
:goto_3e
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_d9
.line 494
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 500
invoke-virtual {v0, p2}, Ljava/security/cert/X509Certificate;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_69
.line 502
invoke-interface {v3, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 503
invoke-interface {v4, p3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_3e
.line 465
:catch_57
move-exception v0
.line 467
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Subject criteria for certificate selector to find issuer certificate for CRL could not be set."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 480
:catch_60
move-exception v0
.line 482
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Issuer certificate for CRL cannot be searched."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 508
:cond_69
:try_start_69
new-instance v5, Lorg/spongycastle/jce/provider/PKIXCertPathBuilderSpi;
invoke-direct {v5}, Lorg/spongycastle/jce/provider/PKIXCertPathBuilderSpi;-><init>()V
.line 509
new-instance v6, Ljava/security/cert/X509CertSelector;
invoke-direct {v6}, Ljava/security/cert/X509CertSelector;-><init>()V
.line 510
invoke-virtual {v6, v0}, Ljava/security/cert/X509CertSelector;->setCertificate(Ljava/security/cert/X509Certificate;)V
.line 512
new-instance v7, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;
invoke-direct {v7, p4}, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;-><init>(Lorg/spongycastle/jcajce/PKIXExtendedParameters;)V
new-instance v8, Lorg/spongycastle/jcajce/PKIXCertStoreSelector$Builder;
invoke-direct {v8, v6}, Lorg/spongycastle/jcajce/PKIXCertStoreSelector$Builder;-><init>(Ljava/security/cert/CertSelector;)V
.line 513
invoke-virtual {v8}, Lorg/spongycastle/jcajce/PKIXCertStoreSelector$Builder;->build()Lorg/spongycastle/jcajce/PKIXCertStoreSelector;
move-result-object v6
invoke-virtual {v7, v6}, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;->setTargetConstraints(Lorg/spongycastle/jcajce/PKIXCertStoreSelector;)Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;
move-result-object v6
.line 524
invoke-interface {p5, v0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v7
if-eqz v7, :cond_c0
.line 526
const/4 v7, 0x0
invoke-virtual {v6, v7}, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;->setRevocationEnabled(Z)V
.line 533
:goto_92
new-instance v7, Lorg/spongycastle/jcajce/PKIXExtendedBuilderParameters$Builder;
invoke-virtual {v6}, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;->build()Lorg/spongycastle/jcajce/PKIXExtendedParameters;
move-result-object v6
invoke-direct {v7, v6}, Lorg/spongycastle/jcajce/PKIXExtendedBuilderParameters$Builder;-><init>(Lorg/spongycastle/jcajce/PKIXExtendedParameters;)V
invoke-virtual {v7}, Lorg/spongycastle/jcajce/PKIXExtendedBuilderParameters$Builder;->build()Lorg/spongycastle/jcajce/PKIXExtendedBuilderParameters;
move-result-object v6
.line 535
invoke-virtual {v5, v6}, Lorg/spongycastle/jce/provider/PKIXCertPathBuilderSpi;->engineBuild(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;
move-result-object v5
invoke-interface {v5}, Ljava/security/cert/CertPathBuilderResult;->getCertPath()Ljava/security/cert/CertPath;
move-result-object v5
invoke-virtual {v5}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v5
.line 536
invoke-interface {v3, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 537
const/4 v0, 0x0
invoke-static {v5, v0, p6}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getNextWorkingKey(Ljava/util/List;ILorg/spongycastle/jcajce/util/JcaJceHelper;)Ljava/security/PublicKey;
move-result-object v0
invoke-interface {v4, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
:try_end_b6
.catch Ljava/security/cert/CertPathBuilderException; {:try_start_69 .. :try_end_b6} :catch_b7
.catch Ljava/security/cert/CertPathValidatorException; {:try_start_69 .. :try_end_b6} :catch_c5
.catch Ljava/lang/Exception; {:try_start_69 .. :try_end_b6} :catch_ce
goto :goto_3e
.line 539
:catch_b7
move-exception v0
.line 541
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "CertPath for CRL signer failed to validate."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 530
:cond_c0
const/4 v7, 0x1
:try_start_c1
invoke-virtual {v6, v7}, Lorg/spongycastle/jcajce/PKIXExtendedParameters$Builder;->setRevocationEnabled(Z)V
:try_end_c4
.catch Ljava/security/cert/CertPathBuilderException; {:try_start_c1 .. :try_end_c4} :catch_b7
.catch Ljava/security/cert/CertPathValidatorException; {:try_start_c1 .. :try_end_c4} :catch_c5
.catch Ljava/lang/Exception; {:try_start_c1 .. :try_end_c4} :catch_ce
goto :goto_92
.line 543
:catch_c5
move-exception v0
.line 545
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Public key of issuer certificate of CRL could not be retrieved."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 547
:catch_ce
move-exception v0
.line 549
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v1
.line 553
:cond_d9
new-instance v5, Ljava/util/HashSet;
invoke-direct {v5}, Ljava/util/HashSet;-><init>()V
.line 555
const/4 v0, 0x0
move v2, v1
move-object v1, v0
.line 556
:goto_e1
invoke-interface {v3}, Ljava/util/List;->size()I
move-result v0
if-ge v2, v0, :cond_111
.line 558
invoke-interface {v3, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 559
invoke-virtual {v0}, Ljava/security/cert/X509Certificate;->getKeyUsage()[Z
move-result-object v0
.line 561
if-eqz v0, :cond_108
array-length v6, v0
const/4 v7, 0x7
if-lt v6, v7, :cond_fc
const/4 v6, 0x6
aget-boolean v0, v0, v6
if-nez v0, :cond_108
.line 563
:cond_fc
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Issuer certificate key usage extension does not permit CRL signing."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
.line 556
:goto_103
add-int/lit8 v1, v2, 0x1
move v2, v1
move-object v1, v0
goto :goto_e1
.line 568
:cond_108
invoke-interface {v4, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
invoke-interface {v5, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
move-object v0, v1
goto :goto_103
.line 572
:cond_111
invoke-interface {v5}, Ljava/util/Set;->isEmpty()Z
move-result v0
if-eqz v0, :cond_121
if-nez v1, :cond_121
.line 574
new-instance v0, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v1, "Cannot find a valid issuer certificate."
invoke-direct {v0, v1}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;)V
throw v0
.line 576
:cond_121
invoke-interface {v5}, Ljava/util/Set;->isEmpty()Z
move-result v0
if-eqz v0, :cond_12a
if-eqz v1, :cond_12a
.line 578
throw v1
.line 581
:cond_12a
return-object v5
.end method
.method protected static processCRLG(Ljava/security/cert/X509CRL;Ljava/util/Set;)Ljava/security/PublicKey;
.registers 5
.prologue
.line 589
const/4 v0, 0x0
.line 590
invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_5
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_15
.line 592
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/PublicKey;
.line 595
:try_start_11
invoke-virtual {p0, v0}, Ljava/security/cert/X509CRL;->verify(Ljava/security/PublicKey;)V
:try_end_14
.catch Ljava/lang/Exception; {:try_start_11 .. :try_end_14} :catch_1d
.line 596
return-object v0
.line 603
:cond_15
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Cannot verify CRL."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
.line 600
:catch_1d
move-exception v0
goto :goto_5
.end method
.method protected static processCRLH(Ljava/util/Set;Ljava/security/PublicKey;)Ljava/security/cert/X509CRL;
.registers 6
.prologue
const/4 v1, 0x0
.line 611
.line 613
invoke-interface {p0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v2
move-object v0, v1
:goto_6
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_16
.line 615
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509CRL;
.line 618
:try_start_12
invoke-virtual {v0, p1}, Ljava/security/cert/X509CRL;->verify(Ljava/security/PublicKey;)V
:try_end_15
.catch Ljava/lang/Exception; {:try_start_12 .. :try_end_15} :catch_22
.line 631
:goto_15
return-object v0
.line 627
:cond_16
if-eqz v0, :cond_20
.line 629
new-instance v1, Lorg/spongycastle/jce/provider/AnnotatedException;
const-string v2, "Cannot verify delta CRL."
invoke-direct {v1, v2, v0}, Lorg/spongycastle/jce/provider/AnnotatedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
:cond_20
move-object v0, v1
.line 631
goto :goto_15
.line 623
:catch_22
move-exception v0
goto :goto_6
.end method
.method protected static processCRLI(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/lang/Object;Lorg/spongycastle/jce/provider/CertStatus;Lorg/spongycastle/jcajce/PKIXExtendedParameters;)V
.registers 6
.prologue
.line 869
invoke-virtual {p4}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->isUseDeltasEnabled()Z
move-result v0
if-eqz v0, :cond_b
if-eqz p1, :cond_b
.line 871
invoke-static {p0, p1, p2, p3}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getCertStatus(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/lang/Object;Lorg/spongycastle/jce/provider/CertStatus;)V
.line 873
:cond_b
return-void
.end method
.method protected static processCRLJ(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/lang/Object;Lorg/spongycastle/jce/provider/CertStatus;)V
.registers 6
.prologue
.line 882
invoke-virtual {p3}, Lorg/spongycastle/jce/provider/CertStatus;->getCertStatus()I
move-result v0
const/16 v1, 0xb
if-ne v0, v1, :cond_b
.line 884
invoke-static {p0, p1, p2, p3}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getCertStatus(Ljava/util/Date;Ljava/security/cert/X509CRL;Ljava/lang/Object;Lorg/spongycastle/jce/provider/CertStatus;)V
.line 886
:cond_b
return-void
.end method
.method protected static processCertA(Ljava/security/cert/CertPath;Lorg/spongycastle/jcajce/PKIXExtendedParameters;ILjava/security/PublicKey;ZLorg/spongycastle/asn1/x500/X500Name;Ljava/security/cert/X509Certificate;Lorg/spongycastle/jcajce/util/JcaJceHelper;)V
.registers 15
.prologue
.line 1490
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v5
.line 1491
invoke-interface {v5, p2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/security/cert/X509Certificate;
.line 1495
if-nez p4, :cond_13
.line 1502
:try_start_c
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->getSigProvider()Ljava/lang/String;
move-result-object v0
.line 1501
invoke-static {v1, p3, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->verifyX509Certificate(Ljava/security/cert/X509Certificate;Ljava/security/PublicKey;Ljava/lang/String;)V
:try_end_13
.catch Ljava/security/GeneralSecurityException; {:try_start_c .. :try_end_13} :catch_5f
.line 1515
:cond_13
:try_start_13
invoke-static {p1, p0, p2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getValidCertDateFromValidityModel(Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/CertPath;I)Ljava/util/Date;
move-result-object v0
.line 1514
invoke-virtual {v1, v0}, Ljava/security/cert/X509Certificate;->checkValidity(Ljava/util/Date;)V
:try_end_1a
.catch Ljava/security/cert/CertificateExpiredException; {:try_start_13 .. :try_end_1a} :catch_68
.catch Ljava/security/cert/CertificateNotYetValidException; {:try_start_13 .. :try_end_1a} :catch_82
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_13 .. :try_end_1a} :catch_9c
.line 1533
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->isRevocationEnabled()Z
move-result v0
if-eqz v0, :cond_2b
.line 1537
:try_start_20
invoke-static {p1, p0, p2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getValidCertDateFromValidityModel(Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/CertPath;I)Ljava/util/Date;
move-result-object v2
move-object v0, p1
move-object v3, p6
move-object v4, p3
move-object v6, p7
invoke-static/range {v0 .. v6}, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->checkCRLs(Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/security/cert/X509Certificate;Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/security/PublicKey;Ljava/util/List;Lorg/spongycastle/jcajce/util/JcaJceHelper;)V
:try_end_2b
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_20 .. :try_end_2b} :catch_a5
.line 1554
:cond_2b
invoke-static {v1}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getEncodedIssuerPrincipal(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v0
invoke-virtual {v0, p5}, Lorg/spongycastle/asn1/x500/X500Name;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_ba
.line 1556
new-instance v0, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "IssuerName("
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-static {v1}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getEncodedIssuerPrincipal(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v1
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ") does not match SubjectName("
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p5}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, ") of signing certificate."
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const/4 v2, 0x0
invoke-direct {v0, v1, v2, p0, p2}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 1504
:catch_5f
move-exception v0
.line 1506
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Could not validate certificate signature."
invoke-direct {v1, v2, v0, p0, p2}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1517
:catch_68
move-exception v0
.line 1519
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Could not validate certificate: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/security/cert/CertificateExpiredException;->getMessage()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, v0, p0, p2}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1521
:catch_82
move-exception v0
.line 1523
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "Could not validate certificate: "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/security/cert/CertificateNotYetValidException;->getMessage()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2, v0, p0, p2}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1525
:catch_9c
move-exception v0
.line 1527
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Could not validate time of certificate."
invoke-direct {v1, v2, v0, p0, p2}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1540
:catch_a5
move-exception v1
.line 1543
invoke-virtual {v1}, Lorg/spongycastle/jce/provider/AnnotatedException;->getCause()Ljava/lang/Throwable;
move-result-object v0
if-eqz v0, :cond_bb
.line 1545
invoke-virtual {v1}, Lorg/spongycastle/jce/provider/AnnotatedException;->getCause()Ljava/lang/Throwable;
move-result-object v0
.line 1547
:goto_b0
new-instance v2, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
invoke-virtual {v1}, Lorg/spongycastle/jce/provider/AnnotatedException;->getMessage()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1, v0, p0, p2}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v2
.line 1560
:cond_ba
return-void
:cond_bb
move-object v0, v1
goto :goto_b0
.end method
.method protected static processCertBC(Ljava/security/cert/CertPath;ILorg/spongycastle/jce/provider/PKIXNameConstraintValidator;)V
.registers 10
.prologue
const/4 v2, 0x0
.line 1185
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v1
.line 1186
invoke-interface {v1, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 1187
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
.line 1189
sub-int v3, v1, p1
.line 1193
invoke-static {v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z
move-result v4
if-eqz v4, :cond_19
if-lt v3, v1, :cond_af
.line 1195
:cond_19
invoke-static {v0}, Lorg/spongycastle/jce/provider/PrincipalUtils;->getSubjectPrincipal(Ljava/security/cert/X509Certificate;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v1
.line 1200
:try_start_1d
invoke-virtual {v1}, Lorg/spongycastle/asn1/x500/X500Name;->getEncoded()[B
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_24
.catch Ljava/lang/Exception; {:try_start_1d .. :try_end_24} :catch_63
move-result-object v1
.line 1210
:try_start_25
invoke-virtual {p2, v1}, Lorg/spongycastle/jce/provider/PKIXNameConstraintValidator;->checkPermittedDN(Lorg/spongycastle/asn1/ASN1Sequence;)V
.line 1211
invoke-virtual {p2, v1}, Lorg/spongycastle/jce/provider/PKIXNameConstraintValidator;->checkExcludedDN(Lorg/spongycastle/asn1/ASN1Sequence;)V
:try_end_2b
.catch Lorg/spongycastle/jce/provider/PKIXNameConstraintValidatorException; {:try_start_25 .. :try_end_2b} :catch_6c
.line 1222
:try_start_2b
sget-object v3, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->SUBJECT_ALTERNATIVE_NAME:Ljava/lang/String;
invoke-static {v0, v3}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/x509/GeneralNames;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/GeneralNames;
:try_end_34
.catch Ljava/lang/Exception; {:try_start_2b .. :try_end_34} :catch_75
move-result-object v3
.line 1230
invoke-static {v1}, Lorg/spongycastle/asn1/x500/X500Name;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x500/X500Name;
move-result-object v0
sget-object v1, Lorg/spongycastle/asn1/x500/style/BCStyle;->EmailAddress:Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v0, v1}, Lorg/spongycastle/asn1/x500/X500Name;->getRDNs(Lorg/spongycastle/asn1/ASN1ObjectIdentifier;)[Lorg/spongycastle/asn1/x500/RDN;
move-result-object v4
move v1, v2
.line 1231
:goto_40
array-length v0, v4
if-eq v1, v0, :cond_87
.line 1234
aget-object v0, v4, v1
invoke-virtual {v0}, Lorg/spongycastle/asn1/x500/RDN;->getFirst()Lorg/spongycastle/asn1/x500/AttributeTypeAndValue;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/x500/AttributeTypeAndValue;->getValue()Lorg/spongycastle/asn1/ASN1Encodable;
move-result-object v0
check-cast v0, Lorg/spongycastle/asn1/ASN1String;
invoke-interface {v0}, Lorg/spongycastle/asn1/ASN1String;->getString()Ljava/lang/String;
move-result-object v0
.line 1235
new-instance v5, Lorg/spongycastle/asn1/x509/GeneralName;
const/4 v6, 0x1
invoke-direct {v5, v6, v0}, Lorg/spongycastle/asn1/x509/GeneralName;-><init>(ILjava/lang/String;)V
.line 1238
:try_start_59
invoke-virtual {p2, v5}, Lorg/spongycastle/jce/provider/PKIXNameConstraintValidator;->checkPermitted(Lorg/spongycastle/asn1/x509/GeneralName;)V
.line 1239
invoke-virtual {p2, v5}, Lorg/spongycastle/jce/provider/PKIXNameConstraintValidator;->checkExcluded(Lorg/spongycastle/asn1/x509/GeneralName;)V
:try_end_5f
.catch Lorg/spongycastle/jce/provider/PKIXNameConstraintValidatorException; {:try_start_59 .. :try_end_5f} :catch_7e
.line 1231
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_40
.line 1202
:catch_63
move-exception v0
.line 1204
new-instance v1, Ljava/security/cert/CertPathValidatorException;
const-string v2, "Exception extracting subject name when checking subtrees."
invoke-direct {v1, v2, v0, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1213
:catch_6c
move-exception v0
.line 1215
new-instance v1, Ljava/security/cert/CertPathValidatorException;
const-string v2, "Subtree check for certificate subject failed."
invoke-direct {v1, v2, v0, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1225
:catch_75
move-exception v0
.line 1227
new-instance v1, Ljava/security/cert/CertPathValidatorException;
const-string v2, "Subject alternative name extension could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1241
:catch_7e
move-exception v0
.line 1243
new-instance v1, Ljava/security/cert/CertPathValidatorException;
const-string v2, "Subtree check for certificate subject alternative email failed."
invoke-direct {v1, v2, v0, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1247
:cond_87
if-eqz v3, :cond_af
.line 1252
:try_start_89
invoke-virtual {v3}, Lorg/spongycastle/asn1/x509/GeneralNames;->getNames()[Lorg/spongycastle/asn1/x509/GeneralName;
:try_end_8c
.catch Ljava/lang/Exception; {:try_start_89 .. :try_end_8c} :catch_9d
move-result-object v0
.line 1259
:goto_8d
array-length v1, v0
if-ge v2, v1, :cond_af
.line 1264
:try_start_90
aget-object v1, v0, v2
invoke-virtual {p2, v1}, Lorg/spongycastle/jce/provider/PKIXNameConstraintValidator;->checkPermitted(Lorg/spongycastle/asn1/x509/GeneralName;)V
.line 1265
aget-object v1, v0, v2
invoke-virtual {p2, v1}, Lorg/spongycastle/jce/provider/PKIXNameConstraintValidator;->checkExcluded(Lorg/spongycastle/asn1/x509/GeneralName;)V
:try_end_9a
.catch Lorg/spongycastle/jce/provider/PKIXNameConstraintValidatorException; {:try_start_90 .. :try_end_9a} :catch_a6
.line 1259
add-int/lit8 v2, v2, 0x1
goto :goto_8d
.line 1254
:catch_9d
move-exception v0
.line 1256
new-instance v1, Ljava/security/cert/CertPathValidatorException;
const-string v2, "Subject alternative name contents could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1267
:catch_a6
move-exception v0
.line 1269
new-instance v1, Ljava/security/cert/CertPathValidatorException;
const-string v2, "Subtree check for certificate subject alternative name failed."
invoke-direct {v1, v2, v0, p0, p1}, Ljava/security/cert/CertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 1275
:cond_af
return-void
.end method
.method protected static processCertD(Ljava/security/cert/CertPath;ILjava/util/Set;Lorg/spongycastle/jce/provider/PKIXPolicyNode;[Ljava/util/List;I)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.registers 19
.prologue
.line 1286
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v2
.line 1287
invoke-interface {v2, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
move-object v9, v1
check-cast v9, Ljava/security/cert/X509Certificate;
.line 1288
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v1
.line 1290
sub-int v3, v1, p1
.line 1298
:try_start_11
sget-object v2, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CERTIFICATE_POLICIES:Ljava/lang/String;
invoke-static {v9, v2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_1a
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_11 .. :try_end_1a} :catch_63
move-result-object v2
.line 1306
if-eqz v2, :cond_1ac
if-eqz p3, :cond_1ac
.line 1311
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v4
.line 1312
new-instance v5, Ljava/util/HashSet;
invoke-direct {v5}, Ljava/util/HashSet;-><init>()V
.line 1314
:cond_28
:goto_28
invoke-interface {v4}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v6
if-eqz v6, :cond_75
.line 1316
invoke-interface {v4}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v6
invoke-static {v6}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/PolicyInformation;
move-result-object v6
.line 1317
invoke-virtual {v6}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getPolicyIdentifier()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v7
.line 1319
invoke-virtual {v7}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v8
invoke-interface {v5, v8}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 1321
const-string v8, "2.5.29.32.0"
invoke-virtual {v7}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v10
invoke-virtual {v8, v10}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v8
if-nez v8, :cond_28
.line 1326
:try_start_4d
invoke-virtual {v6}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getPolicyQualifiers()Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v6
invoke-static {v6}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getQualifierSet(Lorg/spongycastle/asn1/ASN1Sequence;)Ljava/util/Set;
:try_end_54
.catch Ljava/security/cert/CertPathValidatorException; {:try_start_4d .. :try_end_54} :catch_6c
move-result-object v6
.line 1334
move-object/from16 v0, p4
invoke-static {v3, v0, v7, v6}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->processCertD1i(I[Ljava/util/List;Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Ljava/util/Set;)Z
move-result v8
.line 1336
if-nez v8, :cond_28
.line 1338
move-object/from16 v0, p4
invoke-static {v3, v0, v7, v6}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->processCertD1ii(I[Ljava/util/List;Lorg/spongycastle/asn1/ASN1ObjectIdentifier;Ljava/util/Set;)V
goto :goto_28
.line 1301
:catch_63
move-exception v1
.line 1303
new-instance v2, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v3, "Could not read certificate policies extension from certificate."
invoke-direct {v2, v3, v1, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v2
.line 1328
:catch_6c
move-exception v1
.line 1330
new-instance v2, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v3, "Policy qualifier info set could not be build."
invoke-direct {v2, v3, v1, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v2
.line 1343
:cond_75
invoke-interface {p2}, Ljava/util/Set;->isEmpty()Z
move-result v4
if-nez v4, :cond_83
const-string v4, "2.5.29.32.0"
invoke-interface {p2, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_106
.line 1345
:cond_83
invoke-interface {p2}, Ljava/util/Set;->clear()V
.line 1346
invoke-interface {p2, v5}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
.line 1369
:goto_89
if-gtz p5, :cond_93
if-ge v3, v1, :cond_159
invoke-static {v9}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z
move-result v1
if-eqz v1, :cond_159
.line 1371
:cond_93
invoke-virtual {v2}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v1
.line 1373
:cond_97
invoke-interface {v1}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v2
if-eqz v2, :cond_159
.line 1375
invoke-interface {v1}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v2
invoke-static {v2}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/x509/PolicyInformation;
move-result-object v2
.line 1377
const-string v4, "2.5.29.32.0"
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getPolicyIdentifier()Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
move-result-object v5
invoke-virtual {v5}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_97
.line 1379
invoke-virtual {v2}, Lorg/spongycastle/asn1/x509/PolicyInformation;->getPolicyQualifiers()Lorg/spongycastle/asn1/ASN1Sequence;
move-result-object v1
invoke-static {v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getQualifierSet(Lorg/spongycastle/asn1/ASN1Sequence;)Ljava/util/Set;
move-result-object v6
.line 1380
add-int/lit8 v1, v3, -0x1
aget-object v11, p4, v1
.line 1382
const/4 v1, 0x0
move v10, v1
:goto_c3
invoke-interface {v11}, Ljava/util/List;->size()I
move-result v1
if-ge v10, v1, :cond_159
.line 1384
invoke-interface {v11, v10}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 1386
invoke-virtual {v5}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getExpectedPolicies()Ljava/util/Set;
move-result-object v1
invoke-interface {v1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v12
.line 1387
:cond_d7
:goto_d7
invoke-interface {v12}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_154
.line 1389
invoke-interface {v12}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
.line 1392
instance-of v2, v1, Ljava/lang/String;
if-eqz v2, :cond_12b
.line 1394
check-cast v1, Ljava/lang/String;
move-object v7, v1
.line 1405
:goto_e8
const/4 v2, 0x0
.line 1406
invoke-virtual {v5}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getChildren()Ljava/util/Iterator;
move-result-object v4
.line 1408
:goto_ed
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_136
.line 1410
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 1412
invoke-virtual {v1}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v1
invoke-virtual {v7, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_1b0
.line 1414
const/4 v1, 0x1
:goto_104
move v2, v1
.line 1416
goto :goto_ed
.line 1350
:cond_106
invoke-interface {p2}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v4
.line 1351
new-instance v6, Ljava/util/HashSet;
invoke-direct {v6}, Ljava/util/HashSet;-><init>()V
.line 1353
:cond_10f
:goto_10f
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v7
if-eqz v7, :cond_123
.line 1355
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v7
.line 1357
invoke-interface {v5, v7}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_10f
.line 1359
invoke-interface {v6, v7}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_10f
.line 1362
:cond_123
invoke-interface {p2}, Ljava/util/Set;->clear()V
.line 1363
invoke-interface {p2, v6}, Ljava/util/Set;->addAll(Ljava/util/Collection;)Z
goto/16 :goto_89
.line 1396
:cond_12b
instance-of v2, v1, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
if-eqz v2, :cond_d7
.line 1398
check-cast v1, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;
invoke-virtual {v1}, Lorg/spongycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
move-result-object v7
goto :goto_e8
.line 1418
:cond_136
if-nez v2, :cond_d7
.line 1420
new-instance v4, Ljava/util/HashSet;
invoke-direct {v4}, Ljava/util/HashSet;-><init>()V
.line 1421
invoke-interface {v4, v7}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 1423
new-instance v1, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
const/4 v8, 0x0
invoke-direct/range {v1 .. v8}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;-><init>(Ljava/util/List;ILjava/util/Set;Ljava/security/cert/PolicyNode;Ljava/util/Set;Ljava/lang/String;Z)V
.line 1425
invoke-virtual {v5, v1}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->addChild(Lorg/spongycastle/jce/provider/PKIXPolicyNode;)V
.line 1426
aget-object v2, p4, v3
invoke-interface {v2, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_d7
.line 1382
:cond_154
add-int/lit8 v1, v10, 0x1
move v10, v1
goto/16 :goto_c3
.line 1439
:cond_159
add-int/lit8 v1, v3, -0x1
move v5, v1
move-object/from16 v2, p3
:goto_15e
if-ltz v5, :cond_189
.line 1441
aget-object v6, p4, v5
.line 1443
const/4 v1, 0x0
move v4, v1
:goto_164
invoke-interface {v6}, Ljava/util/List;->size()I
move-result v1
if-ge v4, v1, :cond_183
.line 1445
invoke-interface {v6, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 1446
invoke-virtual {v1}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->hasChildren()Z
move-result v7
if-nez v7, :cond_1ae
.line 1448
move-object/from16 v0, p4
invoke-static {v2, v0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->removePolicyNode(Lorg/spongycastle/jce/provider/PKIXPolicyNode;[Ljava/util/List;Lorg/spongycastle/jce/provider/PKIXPolicyNode;)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
move-result-object v1
.line 1450
if-eqz v1, :cond_184
.line 1443
:goto_17e
add-int/lit8 v2, v4, 0x1
move v4, v2
move-object v2, v1
goto :goto_164
:cond_183
move-object v1, v2
.line 1439
:cond_184
add-int/lit8 v2, v5, -0x1
move v5, v2
move-object v2, v1
goto :goto_15e
.line 1461
:cond_189
invoke-virtual {v9}, Ljava/security/cert/X509Certificate;->getCriticalExtensionOIDs()Ljava/util/Set;
move-result-object v1
.line 1463
if-eqz v1, :cond_1ad
.line 1465
sget-object v4, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CERTIFICATE_POLICIES:Ljava/lang/String;
invoke-interface {v1, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v4
.line 1467
aget-object v5, p4, v3
.line 1468
const/4 v1, 0x0
move v3, v1
:goto_199
invoke-interface {v5}, Ljava/util/List;->size()I
move-result v1
if-ge v3, v1, :cond_1ad
.line 1470
invoke-interface {v5, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 1471
invoke-virtual {v1, v4}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->setCritical(Z)V
.line 1468
add-int/lit8 v1, v3, 0x1
move v3, v1
goto :goto_199
.line 1476
:cond_1ac
const/4 v2, 0x0
:cond_1ad
return-object v2
:cond_1ae
move-object v1, v2
goto :goto_17e
:cond_1b0
move v1, v2
goto/16 :goto_104
.end method
.method protected static processCertE(Ljava/security/cert/CertPath;ILorg/spongycastle/jce/provider/PKIXPolicyNode;)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.registers 6
.prologue
.line 1156
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 1157
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 1164
:try_start_a
sget-object v1, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->CERTIFICATE_POLICIES:Ljava/lang/String;
invoke-static {v0, v1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_13
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_a .. :try_end_13} :catch_18
move-result-object v0
.line 1172
if-nez v0, :cond_17
.line 1174
const/4 p2, 0x0
.line 1176
:cond_17
return-object p2
.line 1167
:catch_18
move-exception v0
.line 1169
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Could not read certificate policies extension from certificate."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.end method
.method protected static processCertF(Ljava/security/cert/CertPath;ILorg/spongycastle/jce/provider/PKIXPolicyNode;I)V
.registers 7
.prologue
.line 1143
if-gtz p3, :cond_d
if-nez p2, :cond_d
.line 1145
new-instance v0, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v1, "No valid policy tree found when one expected."
const/4 v2, 0x0
invoke-direct {v0, v1, v2, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 1148
:cond_d
return-void
.end method
.method protected static wrapupCertA(ILjava/security/cert/X509Certificate;)I
.registers 3
.prologue
.line 2345
invoke-static {p1}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z
move-result v0
if-nez v0, :cond_a
if-eqz p0, :cond_a
.line 2347
add-int/lit8 p0, p0, -0x1
.line 2349
:cond_a
return p0
.end method
.method protected static wrapupCertB(Ljava/security/cert/CertPath;II)I
.registers 7
.prologue
const/4 v1, 0x0
.line 2358
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2359
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2367
:try_start_b
sget-object v2, Lorg/spongycastle/jce/provider/RFC3280CertPathUtilities;->POLICY_CONSTRAINTS:Ljava/lang/String;
invoke-static {v0, v2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->getExtensionValue(Ljava/security/cert/X509Extension;Ljava/lang/String;)Lorg/spongycastle/asn1/ASN1Primitive;
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/asn1/DERSequence;->getInstance(Ljava/lang/Object;)Lorg/spongycastle/asn1/ASN1Sequence;
:try_end_14
.catch Lorg/spongycastle/jce/provider/AnnotatedException; {:try_start_b .. :try_end_14} :catch_40
move-result-object v0
.line 2374
if-eqz v0, :cond_3f
.line 2376
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
move-result-object v2
.line 2378
:cond_1b
:goto_1b
invoke-interface {v2}, Ljava/util/Enumeration;->hasMoreElements()Z
move-result v0
if-eqz v0, :cond_3f
.line 2380
invoke-interface {v2}, Ljava/util/Enumeration;->nextElement()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/asn1/ASN1TaggedObject;
.line 2381
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1TaggedObject;->getTagNo()I
move-result v3
packed-switch v3, :pswitch_data_52
goto :goto_1b
.line 2386
:pswitch_2f
const/4 v3, 0x0
:try_start_30
invoke-static {v0, v3}, Lorg/spongycastle/asn1/ASN1Integer;->getInstance(Lorg/spongycastle/asn1/ASN1TaggedObject;Z)Lorg/spongycastle/asn1/ASN1Integer;
move-result-object v0
invoke-virtual {v0}, Lorg/spongycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger;
move-result-object v0
invoke-virtual {v0}, Ljava/math/BigInteger;->intValue()I
:try_end_3b
.catch Ljava/lang/Exception; {:try_start_30 .. :try_end_3b} :catch_49
move-result v0
.line 2394
if-nez v0, :cond_1b
move p2, v1
.line 2402
:cond_3f
return p2
.line 2370
:catch_40
move-exception v0
.line 2372
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy constraints could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 2388
:catch_49
move-exception v0
.line 2390
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Policy constraints requireExplicitPolicy field could not be decoded."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 2381
:pswitch_data_52
.packed-switch 0x0
:pswitch_2f
.end packed-switch
.end method
.method protected static wrapupCertF(Ljava/security/cert/CertPath;ILjava/util/List;Ljava/util/Set;)V
.registers 7
.prologue
.line 2412
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
.line 2413
invoke-interface {v0, p1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/cert/X509Certificate;
.line 2415
invoke-interface {p2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
.line 2416
:goto_e
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_27
.line 2420
:try_start_14
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/security/cert/PKIXCertPathChecker;
invoke-virtual {v1, v0, p3}, Ljava/security/cert/PKIXCertPathChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V
:try_end_1d
.catch Ljava/security/cert/CertPathValidatorException; {:try_start_14 .. :try_end_1d} :catch_1e
goto :goto_e
.line 2422
:catch_1e
move-exception v0
.line 2424
new-instance v1, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v2, "Additional certificate path checker failed."
invoke-direct {v1, v2, v0, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v1
.line 2429
:cond_27
invoke-interface {p3}, Ljava/util/Set;->isEmpty()Z
move-result v0
if-nez v0, :cond_43
.line 2431
new-instance v0, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Certificate has unsupported critical extension: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
const/4 v2, 0x0
invoke-direct {v0, v1, v2, p0, p1}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 2434
:cond_43
return-void
.end method
.method protected static wrapupCertG(Ljava/security/cert/CertPath;Lorg/spongycastle/jcajce/PKIXExtendedParameters;Ljava/util/Set;I[Ljava/util/List;Lorg/spongycastle/jce/provider/PKIXPolicyNode;Ljava/util/Set;)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.registers 16
.prologue
.line 2446
invoke-virtual {p0}, Ljava/security/cert/CertPath;->getCertificates()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v3
.line 2455
if-nez p5, :cond_1b
.line 2457
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->isExplicitPolicyRequired()Z
move-result v0
if-eqz v0, :cond_19
.line 2459
new-instance v0, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v1, "Explicit policy requested but none available."
const/4 v2, 0x0
invoke-direct {v0, v1, v2, p0, p3}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 2462
:cond_19
const/4 p5, 0x0
.line 2610
:cond_1a
:goto_1a
return-object p5
.line 2464
:cond_1b
invoke-static {p2}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->isAnyPolicy(Ljava/util/Set;)Z
move-result v0
if-eqz v0, :cond_ba
.line 2467
invoke-virtual {p1}, Lorg/spongycastle/jcajce/PKIXExtendedParameters;->isExplicitPolicyRequired()Z
move-result v0
if-eqz v0, :cond_1a
.line 2469
invoke-interface {p6}, Ljava/util/Set;->isEmpty()Z
move-result v0
if-eqz v0, :cond_36
.line 2471
new-instance v0, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;
const-string v1, "Explicit policy requested but none available."
const/4 v2, 0x0
invoke-direct {v0, v1, v2, p0, p3}, Lorg/spongycastle/jce/exception/ExtCertPathValidatorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V
throw v0
.line 2476
:cond_36
new-instance v4, Ljava/util/HashSet;
invoke-direct {v4}, Ljava/util/HashSet;-><init>()V
.line 2478
const/4 v0, 0x0
move v2, v0
:goto_3d
array-length v0, p4
if-ge v2, v0, :cond_76
.line 2480
aget-object v5, p4, v2
.line 2482
const/4 v0, 0x0
move v1, v0
:goto_44
invoke-interface {v5}, Ljava/util/List;->size()I
move-result v0
if-ge v1, v0, :cond_72
.line 2484
invoke-interface {v5, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 2486
const-string v6, "2.5.29.32.0"
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v7
invoke-virtual {v6, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_6e
.line 2488
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getChildren()Ljava/util/Iterator;
move-result-object v0
.line 2489
:goto_60
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v6
if-eqz v6, :cond_6e
.line 2491
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v6
invoke-interface {v4, v6}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_60
.line 2482
:cond_6e
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_44
.line 2478
:cond_72
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_3d
.line 2497
:cond_76
invoke-interface {v4}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
.line 2498
:goto_7a
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_8e
.line 2500
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 2501
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v0
.line 2503
invoke-interface {p6, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
goto :goto_7a
.line 2510
:cond_8e
if-eqz p5, :cond_1a
.line 2512
add-int/lit8 v0, v3, -0x1
move-object v1, p5
move v3, v0
:goto_94
if-ltz v3, :cond_157
.line 2514
aget-object v4, p4, v3
.line 2516
const/4 v0, 0x0
move-object v2, v1
move v1, v0
:goto_9b
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v0
if-ge v1, v0, :cond_b5
.line 2518
invoke-interface {v4, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 2519
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->hasChildren()Z
move-result v5
if-nez v5, :cond_b1
.line 2521
invoke-static {v2, p4, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->removePolicyNode(Lorg/spongycastle/jce/provider/PKIXPolicyNode;[Ljava/util/List;Lorg/spongycastle/jce/provider/PKIXPolicyNode;)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
move-result-object v2
.line 2516
:cond_b1
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_9b
.line 2512
:cond_b5
add-int/lit8 v0, v3, -0x1
move-object v1, v2
move v3, v0
goto :goto_94
.line 2547
:cond_ba
new-instance v4, Ljava/util/HashSet;
invoke-direct {v4}, Ljava/util/HashSet;-><init>()V
.line 2549
const/4 v0, 0x0
move v2, v0
:goto_c1
array-length v0, p4
if-ge v2, v0, :cond_108
.line 2551
aget-object v5, p4, v2
.line 2553
const/4 v0, 0x0
move v1, v0
:goto_c8
invoke-interface {v5}, Ljava/util/List;->size()I
move-result v0
if-ge v1, v0, :cond_104
.line 2555
invoke-interface {v5, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 2557
const-string v6, "2.5.29.32.0"
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v7
invoke-virtual {v6, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_100
.line 2559
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getChildren()Ljava/util/Iterator;
move-result-object v6
.line 2560
:cond_e4
:goto_e4
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_100
.line 2562
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 2563
const-string v7, "2.5.29.32.0"
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v8
invoke-virtual {v7, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v7
if-nez v7, :cond_e4
.line 2565
invoke-interface {v4, v0}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
goto :goto_e4
.line 2553
:cond_100
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_c8
.line 2549
:cond_104
add-int/lit8 v0, v2, 0x1
move v2, v0
goto :goto_c1
.line 2575
:cond_108
invoke-interface {v4}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v1
.line 2576
:cond_10c
:goto_10c
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_127
.line 2578
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 2579
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->getValidPolicy()Ljava/lang/String;
move-result-object v2
.line 2581
invoke-interface {p2, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_10c
.line 2583
invoke-static {p5, p4, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->removePolicyNode(Lorg/spongycastle/jce/provider/PKIXPolicyNode;[Ljava/util/List;Lorg/spongycastle/jce/provider/PKIXPolicyNode;)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
move-result-object p5
goto :goto_10c
.line 2590
:cond_127
if-eqz p5, :cond_153
.line 2592
add-int/lit8 v0, v3, -0x1
move-object v1, p5
move v3, v0
:goto_12d
if-ltz v3, :cond_154
.line 2594
aget-object v4, p4, v3
.line 2596
const/4 v0, 0x0
move-object v2, v1
move v1, v0
:goto_134
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v0
if-ge v1, v0, :cond_14e
.line 2598
invoke-interface {v4, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/spongycastle/jce/provider/PKIXPolicyNode;
.line 2599
invoke-virtual {v0}, Lorg/spongycastle/jce/provider/PKIXPolicyNode;->hasChildren()Z
move-result v5
if-nez v5, :cond_14a
.line 2601
invoke-static {v2, p4, v0}, Lorg/spongycastle/jce/provider/CertPathValidatorUtilities;->removePolicyNode(Lorg/spongycastle/jce/provider/PKIXPolicyNode;[Ljava/util/List;Lorg/spongycastle/jce/provider/PKIXPolicyNode;)Lorg/spongycastle/jce/provider/PKIXPolicyNode;
move-result-object v2
.line 2596
:cond_14a
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_134
.line 2592
:cond_14e
add-int/lit8 v0, v3, -0x1
move-object v1, v2
move v3, v0
goto :goto_12d
:cond_153
move-object v1, p5
:cond_154
move-object p5, v1
.line 2608
goto/16 :goto_1a
:cond_157
move-object p5, v1
goto/16 :goto_1a
.end method