public class org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi extends java.security.cert.CertPathBuilderSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi
  super_class: java.security.cert.CertPathBuilderSpi
{
  private java.lang.Exception certPathException;
    descriptor: Ljava/lang/Exception;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi this
         0: .line 34
            aload 0 /* this */
            invokespecial java.security.cert.CertPathBuilderSpi.<init>:()V
            return
        end local 0 // org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/jce/provider/PKIXAttrCertPathBuilderSpi;

  public java.security.cert.CertPathBuilderResult engineBuild(java.security.cert.CertPathParameters);
    descriptor: (Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=14, args_size=2
        start local 0 // org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi this
        start local 1 // java.security.cert.CertPathParameters params
         0: .line 47
            aload 1 /* params */
            instanceof java.security.cert.PKIXBuilderParameters
            ifne 9
         1: .line 48
            aload 1 /* params */
            instanceof org.bouncycastle.x509.ExtendedPKIXBuilderParameters
            ifne 9
         2: .line 50
            new java.security.InvalidAlgorithmParameterException
            dup
         3: .line 51
            new java.lang.StringBuilder
            dup
            ldc "Parameters must be an instance of "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 52
            ldc Ljava/security/cert/PKIXBuilderParameters;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " or "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         5: .line 53
            ldc Lorg/bouncycastle/x509/ExtendedPKIXBuilderParameters;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 54
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 51
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 50
            invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 58
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            instanceof org.bouncycastle.x509.ExtendedPKIXBuilderParameters
            ifeq 12
        10: .line 60
            aload 1 /* params */
            checkcast org.bouncycastle.x509.ExtendedPKIXBuilderParameters
            astore 2 /* pkixParams */
        start local 2 // org.bouncycastle.x509.ExtendedPKIXBuilderParameters pkixParams
        11: .line 61
            goto 14
        end local 2 // org.bouncycastle.x509.ExtendedPKIXBuilderParameters pkixParams
        12: .line 65
      StackMap locals:
      StackMap stack:
            aload 1 /* params */
            checkcast java.security.cert.PKIXBuilderParameters
            invokestatic org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getInstance:(Ljava/security/cert/PKIXParameters;)Lorg/bouncycastle/x509/ExtendedPKIXParameters;
        13: .line 64
            checkcast org.bouncycastle.x509.ExtendedPKIXBuilderParameters
            astore 2 /* pkixParams */
        start local 2 // org.bouncycastle.x509.ExtendedPKIXBuilderParameters pkixParams
        14: .line 70
      StackMap locals: org.bouncycastle.x509.ExtendedPKIXBuilderParameters
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* certPathList */
        start local 5 // java.util.List certPathList
        15: .line 75
            aload 2 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getTargetConstraints:()Lorg/bouncycastle/util/Selector;
            astore 7 /* certSelect */
        start local 7 // org.bouncycastle.util.Selector certSelect
        16: .line 76
            aload 7 /* certSelect */
            instanceof org.bouncycastle.x509.X509AttributeCertStoreSelector
            ifne 23
        17: .line 78
            new java.security.cert.CertPathBuilderException
            dup
        18: .line 79
            new java.lang.StringBuilder
            dup
            ldc "TargetConstraints must be an instance of "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        19: .line 80
            ldc Lorg/bouncycastle/x509/X509AttributeCertStoreSelector;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        20: .line 81
            ldc " for "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " class."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 79
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        22: .line 78
            invokespecial java.security.cert.CertPathBuilderException.<init>:(Ljava/lang/String;)V
            athrow
        23: .line 86
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi java.security.cert.CertPathParameters org.bouncycastle.x509.ExtendedPKIXBuilderParameters top top java.util.List top org.bouncycastle.util.Selector
      StackMap stack:
            aload 7 /* certSelect */
            checkcast org.bouncycastle.x509.X509AttributeCertStoreSelector
            aload 2 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getStores:()Ljava/util/List;
            invokestatic org.bouncycastle.jce.provider.CertPathValidatorUtilities.findCertificates:(Lorg/bouncycastle/x509/X509AttributeCertStoreSelector;Ljava/util/List;)Ljava/util/Collection;
            astore 3 /* targets */
        start local 3 // java.util.Collection targets
        24: .line 87
            goto 27
        end local 3 // java.util.Collection targets
        25: .line 88
      StackMap locals:
      StackMap stack: org.bouncycastle.jce.provider.AnnotatedException
            astore 8 /* e */
        start local 8 // org.bouncycastle.jce.provider.AnnotatedException e
        26: .line 90
            new org.bouncycastle.jce.exception.ExtCertPathBuilderException
            dup
            ldc "Error finding target attribute certificate."
            aload 8 /* e */
            invokespecial org.bouncycastle.jce.exception.ExtCertPathBuilderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 8 // org.bouncycastle.jce.provider.AnnotatedException e
        start local 3 // java.util.Collection targets
        27: .line 93
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi java.security.cert.CertPathParameters org.bouncycastle.x509.ExtendedPKIXBuilderParameters java.util.Collection top java.util.List top org.bouncycastle.util.Selector
      StackMap stack:
            aload 3 /* targets */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 31
        28: .line 95
            new java.security.cert.CertPathBuilderException
            dup
        29: .line 96
            ldc "No attribute certificate found matching targetContraints."
        30: .line 95
            invokespecial java.security.cert.CertPathBuilderException.<init>:(Ljava/lang/String;)V
            athrow
        31: .line 99
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* result */
        start local 8 // java.security.cert.CertPathBuilderResult result
        32: .line 102
            aload 3 /* targets */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4 /* targetIter */
        start local 4 // java.util.Iterator targetIter
        33: .line 103
            goto 65
        34: .line 105
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi java.security.cert.CertPathParameters org.bouncycastle.x509.ExtendedPKIXBuilderParameters java.util.Collection java.util.Iterator java.util.List top org.bouncycastle.util.Selector java.security.cert.CertPathBuilderResult
      StackMap stack:
            aload 4 /* targetIter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.bouncycastle.x509.X509AttributeCertificate
            astore 6 /* cert */
        start local 6 // org.bouncycastle.x509.X509AttributeCertificate cert
        35: .line 107
            new org.bouncycastle.x509.X509CertStoreSelector
            dup
            invokespecial org.bouncycastle.x509.X509CertStoreSelector.<init>:()V
            astore 9 /* selector */
        start local 9 // org.bouncycastle.x509.X509CertStoreSelector selector
        36: .line 108
            aload 6 /* cert */
            invokeinterface org.bouncycastle.x509.X509AttributeCertificate.getIssuer:()Lorg/bouncycastle/x509/AttributeCertificateIssuer;
            invokevirtual org.bouncycastle.x509.AttributeCertificateIssuer.getPrincipals:()[Ljava/security/Principal;
            astore 10 /* principals */
        start local 10 // java.security.Principal[] principals
        37: .line 109
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 11 /* issuers */
        start local 11 // java.util.Set issuers
        38: .line 110
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        39: goto 56
        40: .line 114
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi java.security.cert.CertPathParameters org.bouncycastle.x509.ExtendedPKIXBuilderParameters java.util.Collection java.util.Iterator java.util.List org.bouncycastle.x509.X509AttributeCertificate org.bouncycastle.util.Selector java.security.cert.CertPathBuilderResult org.bouncycastle.x509.X509CertStoreSelector java.security.Principal[] java.util.Set int
      StackMap stack:
            aload 10 /* principals */
            iload 12 /* i */
            aaload
            instanceof javax.security.auth.x500.X500Principal
            ifeq 42
        41: .line 116
            aload 9 /* selector */
            aload 10 /* principals */
            iload 12 /* i */
            aaload
            checkcast javax.security.auth.x500.X500Principal
            invokevirtual javax.security.auth.x500.X500Principal.getEncoded:()[B
            invokevirtual org.bouncycastle.x509.X509CertStoreSelector.setSubject:([B)V
        42: .line 118
      StackMap locals:
      StackMap stack:
            aload 11 /* issuers */
            aload 9 /* selector */
            aload 2 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getStores:()Ljava/util/List;
            invokestatic org.bouncycastle.jce.provider.CertPathValidatorUtilities.findCertificates:(Lorg/bouncycastle/x509/X509CertStoreSelector;Ljava/util/List;)Ljava/util/Collection;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        43: .line 119
            aload 11 /* issuers */
            aload 9 /* selector */
            aload 2 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getCertStores:()Ljava/util/List;
            invokestatic org.bouncycastle.jce.provider.CertPathValidatorUtilities.findCertificates:(Lorg/bouncycastle/x509/X509CertStoreSelector;Ljava/util/List;)Ljava/util/Collection;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        44: .line 120
            goto 55
        45: .line 121
      StackMap locals:
      StackMap stack: org.bouncycastle.jce.provider.AnnotatedException
            astore 13 /* e */
        start local 13 // org.bouncycastle.jce.provider.AnnotatedException e
        46: .line 123
            new org.bouncycastle.jce.exception.ExtCertPathBuilderException
            dup
        47: .line 124
            ldc "Public key certificate for attribute certificate cannot be searched."
        48: .line 125
            aload 13 /* e */
        49: .line 123
            invokespecial org.bouncycastle.jce.exception.ExtCertPathBuilderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 13 // org.bouncycastle.jce.provider.AnnotatedException e
        50: .line 127
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 13 /* e */
        start local 13 // java.io.IOException e
        51: .line 129
            new org.bouncycastle.jce.exception.ExtCertPathBuilderException
            dup
        52: .line 130
            ldc "cannot encode X500Principal."
        53: .line 131
            aload 13 /* e */
        54: .line 129
            invokespecial org.bouncycastle.jce.exception.ExtCertPathBuilderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 13 // java.io.IOException e
        55: .line 110
      StackMap locals:
      StackMap stack:
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        56: iload 12 /* i */
            aload 10 /* principals */
            arraylength
            if_icmplt 40
        end local 12 // int i
        57: .line 134
            aload 11 /* issuers */
            invokeinterface java.util.Set.isEmpty:()Z
            ifeq 61
        58: .line 136
            new java.security.cert.CertPathBuilderException
            dup
        59: .line 137
            ldc "Public key certificate for attribute certificate cannot be found."
        60: .line 136
            invokespecial java.security.cert.CertPathBuilderException.<init>:(Ljava/lang/String;)V
            athrow
        61: .line 139
      StackMap locals:
      StackMap stack:
            aload 11 /* issuers */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 12 /* it */
        start local 12 // java.util.Iterator it
        62: .line 140
            goto 64
        63: .line 142
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            aload 6 /* cert */
            aload 12 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate
            aload 2 /* pkixParams */
            aload 5 /* certPathList */
            invokevirtual org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi.build:(Lorg/bouncycastle/x509/X509AttributeCertificate;Ljava/security/cert/X509Certificate;Lorg/bouncycastle/x509/ExtendedPKIXBuilderParameters;Ljava/util/List;)Ljava/security/cert/CertPathBuilderResult;
            astore 8 /* result */
        64: .line 140
      StackMap locals:
      StackMap stack:
            aload 12 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 65
            aload 8 /* result */
            ifnull 63
        end local 12 // java.util.Iterator it
        end local 11 // java.util.Set issuers
        end local 10 // java.security.Principal[] principals
        end local 9 // org.bouncycastle.x509.X509CertStoreSelector selector
        end local 6 // org.bouncycastle.x509.X509AttributeCertificate cert
        65: .line 103
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi java.security.cert.CertPathParameters org.bouncycastle.x509.ExtendedPKIXBuilderParameters java.util.Collection java.util.Iterator java.util.List top org.bouncycastle.util.Selector java.security.cert.CertPathBuilderResult
      StackMap stack:
            aload 4 /* targetIter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 66
            aload 8 /* result */
            ifnull 34
        66: .line 146
      StackMap locals:
      StackMap stack:
            aload 8 /* result */
            ifnonnull 71
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi.certPathException:Ljava/lang/Exception;
            ifnull 71
        67: .line 148
            new org.bouncycastle.jce.exception.ExtCertPathBuilderException
            dup
        68: .line 149
            ldc "Possible certificate chain could not be validated."
        69: .line 150
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi.certPathException:Ljava/lang/Exception;
        70: .line 148
            invokespecial org.bouncycastle.jce.exception.ExtCertPathBuilderException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        71: .line 153
      StackMap locals:
      StackMap stack:
            aload 8 /* result */
            ifnonnull 75
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi.certPathException:Ljava/lang/Exception;
            ifnonnull 75
        72: .line 155
            new java.security.cert.CertPathBuilderException
            dup
        73: .line 156
            ldc "Unable to find certificate chain."
        74: .line 155
            invokespecial java.security.cert.CertPathBuilderException.<init>:(Ljava/lang/String;)V
            athrow
        75: .line 159
      StackMap locals:
      StackMap stack:
            aload 8 /* result */
            areturn
        end local 8 // java.security.cert.CertPathBuilderResult result
        end local 7 // org.bouncycastle.util.Selector certSelect
        end local 5 // java.util.List certPathList
        end local 4 // java.util.Iterator targetIter
        end local 3 // java.util.Collection targets
        end local 2 // org.bouncycastle.x509.ExtendedPKIXBuilderParameters pkixParams
        end local 1 // java.security.cert.CertPathParameters params
        end local 0 // org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   76     0          this  Lorg/bouncycastle/jce/provider/PKIXAttrCertPathBuilderSpi;
            0   76     1        params  Ljava/security/cert/CertPathParameters;
           11   12     2    pkixParams  Lorg/bouncycastle/x509/ExtendedPKIXBuilderParameters;
           14   76     2    pkixParams  Lorg/bouncycastle/x509/ExtendedPKIXBuilderParameters;
           24   25     3       targets  Ljava/util/Collection;
           27   76     3       targets  Ljava/util/Collection;
           33   76     4    targetIter  Ljava/util/Iterator;
           15   76     5  certPathList  Ljava/util/List;
           35   65     6          cert  Lorg/bouncycastle/x509/X509AttributeCertificate;
           16   76     7    certSelect  Lorg/bouncycastle/util/Selector;
           26   27     8             e  Lorg/bouncycastle/jce/provider/AnnotatedException;
           32   76     8        result  Ljava/security/cert/CertPathBuilderResult;
           36   65     9      selector  Lorg/bouncycastle/x509/X509CertStoreSelector;
           37   65    10    principals  [Ljava/security/Principal;
           38   65    11       issuers  Ljava/util/Set;
           39   57    12             i  I
           46   50    13             e  Lorg/bouncycastle/jce/provider/AnnotatedException;
           51   55    13             e  Ljava/io/IOException;
           62   65    12            it  Ljava/util/Iterator;
      Exception table:
        from    to  target  type
          23    24      25  Class org.bouncycastle.jce.provider.AnnotatedException
          40    44      45  Class org.bouncycastle.jce.provider.AnnotatedException
          40    44      50  Class java.io.IOException
    Exceptions:
      throws java.security.cert.CertPathBuilderException, java.security.InvalidAlgorithmParameterException
    MethodParameters:
        Name  Flags
      params  

  private java.security.cert.CertPathBuilderResult build(org.bouncycastle.x509.X509AttributeCertificate, java.security.cert.X509Certificate, org.bouncycastle.x509.ExtendedPKIXBuilderParameters, java.util.List);
    descriptor: (Lorg/bouncycastle/x509/X509AttributeCertificate;Ljava/security/cert/X509Certificate;Lorg/bouncycastle/x509/ExtendedPKIXBuilderParameters;Ljava/util/List;)Ljava/security/cert/CertPathBuilderResult;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=11, args_size=5
        start local 0 // org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi this
        start local 1 // org.bouncycastle.x509.X509AttributeCertificate attrCert
        start local 2 // java.security.cert.X509Certificate tbvCert
        start local 3 // org.bouncycastle.x509.ExtendedPKIXBuilderParameters pkixParams
        start local 4 // java.util.List tbvPath
         0: .line 171
            aload 4 /* tbvPath */
            aload 2 /* tbvCert */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 173
            aconst_null
            areturn
         2: .line 177
      StackMap locals:
      StackMap stack:
            aload 3 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getExcludedCerts:()Ljava/util/Set;
            aload 2 /* tbvCert */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 179
            aconst_null
            areturn
         4: .line 182
      StackMap locals:
      StackMap stack:
            aload 3 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getMaxPathLength:()I
            iconst_m1
            if_icmpeq 7
         5: .line 184
            aload 4 /* tbvPath */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            aload 3 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getMaxPathLength:()I
            if_icmple 7
         6: .line 186
            aconst_null
            areturn
         7: .line 190
      StackMap locals:
      StackMap stack:
            aload 4 /* tbvPath */
            aload 2 /* tbvCert */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 194
            aconst_null
            astore 7 /* builderResult */
        start local 7 // java.security.cert.CertPathBuilderResult builderResult
         9: .line 198
            ldc "X.509"
            getstatic org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME:Ljava/lang/String;
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 5 /* cFact */
        start local 5 // java.security.cert.CertificateFactory cFact
        10: .line 199
            ldc "RFC3281"
            getstatic org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME:Ljava/lang/String;
            invokestatic java.security.cert.CertPathValidator.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertPathValidator;
            astore 6 /* validator */
        start local 6 // java.security.cert.CertPathValidator validator
        11: .line 200
            goto 16
        end local 6 // java.security.cert.CertPathValidator validator
        end local 5 // java.security.cert.CertificateFactory cFact
        12: .line 201
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi org.bouncycastle.x509.X509AttributeCertificate java.security.cert.X509Certificate org.bouncycastle.x509.ExtendedPKIXBuilderParameters java.util.List top top java.security.cert.CertPathBuilderResult
      StackMap stack: java.lang.Exception
            pop
        13: .line 204
            new java.lang.RuntimeException
            dup
        14: .line 205
            ldc "Exception creating support classes."
        15: .line 204
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        start local 5 // java.security.cert.CertificateFactory cFact
        start local 6 // java.security.cert.CertPathValidator validator
        16: .line 211
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi org.bouncycastle.x509.X509AttributeCertificate java.security.cert.X509Certificate org.bouncycastle.x509.ExtendedPKIXBuilderParameters java.util.List java.security.cert.CertificateFactory java.security.cert.CertPathValidator java.security.cert.CertPathBuilderResult
      StackMap stack:
            aload 2 /* tbvCert */
            aload 3 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getTrustAnchors:()Ljava/util/Set;
        17: .line 212
            aload 3 /* pkixParams */
            invokevirtual org.bouncycastle.x509.ExtendedPKIXBuilderParameters.getSigProvider:()Ljava/lang/String;
        18: .line 211
            invokestatic org.bouncycastle.jce.provider.CertPathValidatorUtilities.findTrustAnchor:(Ljava/security/cert/X509Certificate;Ljava/util/Set;Ljava/lang/String;)Ljava/security/cert/TrustAnchor;
            ifnull 40
        19: .line 218
            aload 5 /* cFact */
            aload 4 /* tbvPath */
            invokevirtual java.security.cert.CertificateFactory.generateCertPath:(Ljava/util/List;)Ljava/security/cert/CertPath;
            astore 8 /* certPath */
        start local 8 // java.security.cert.CertPath certPath
        20: .line 219
            goto 26
        end local 8 // java.security.cert.CertPath certPath
        21: .line 220
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 10 /* e */
        start local 10 // java.lang.Exception e
        22: .line 222
            new org.bouncycastle.jce.provider.AnnotatedException
            dup
        23: .line 223
            ldc "Certification path could not be constructed from certificate list."
        24: .line 224
            aload 10 /* e */
        25: .line 222
            invokespecial org.bouncycastle.jce.provider.AnnotatedException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 10 // java.lang.Exception e
        start local 8 // java.security.cert.CertPath certPath
        26: .line 229
      StackMap locals: java.security.cert.CertPath
      StackMap stack:
            aload 6 /* validator */
        27: .line 230
            aload 8 /* certPath */
            aload 3 /* pkixParams */
        28: .line 229
            invokevirtual java.security.cert.CertPathValidator.validate:(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;
            checkcast java.security.cert.PKIXCertPathValidatorResult
            astore 9 /* result */
        start local 9 // java.security.cert.PKIXCertPathValidatorResult result
        29: .line 231
            goto 35
        end local 9 // java.security.cert.PKIXCertPathValidatorResult result
        30: .line 232
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 10 /* e */
        start local 10 // java.lang.Exception e
        31: .line 234
            new org.bouncycastle.jce.provider.AnnotatedException
            dup
        32: .line 235
            ldc "Certification path could not be validated."
        33: .line 236
            aload 10 /* e */
        34: .line 234
            invokespecial org.bouncycastle.jce.provider.AnnotatedException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 10 // java.lang.Exception e
        start local 9 // java.security.cert.PKIXCertPathValidatorResult result
        35: .line 239
      StackMap locals: java.security.cert.PKIXCertPathValidatorResult
      StackMap stack:
            new java.security.cert.PKIXCertPathBuilderResult
            dup
            aload 8 /* certPath */
            aload 9 /* result */
        36: .line 240
            invokevirtual java.security.cert.PKIXCertPathValidatorResult.getTrustAnchor:()Ljava/security/cert/TrustAnchor;
            aload 9 /* result */
            invokevirtual java.security.cert.PKIXCertPathValidatorResult.getPolicyTree:()Ljava/security/cert/PolicyNode;
            aload 9 /* result */
        37: .line 241
            invokevirtual java.security.cert.PKIXCertPathValidatorResult.getPublicKey:()Ljava/security/PublicKey;
        38: .line 239
            invokespecial java.security.cert.PKIXCertPathBuilderResult.<init>:(Ljava/security/cert/CertPath;Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V
        39: areturn
        end local 9 // java.security.cert.PKIXCertPathValidatorResult result
        end local 8 // java.security.cert.CertPath certPath
        40: .line 249
      StackMap locals:
      StackMap stack:
            aload 2 /* tbvCert */
            aload 3 /* pkixParams */
            invokestatic org.bouncycastle.jce.provider.CertPathValidatorUtilities.addAdditionalStoresFromAltNames:(Ljava/security/cert/X509Certificate;Lorg/bouncycastle/x509/ExtendedPKIXParameters;)V
        41: .line 250
            goto 47
        42: .line 251
      StackMap locals:
      StackMap stack: java.security.cert.CertificateParsingException
            astore 8 /* e */
        start local 8 // java.security.cert.CertificateParsingException e
        43: .line 253
            new org.bouncycastle.jce.provider.AnnotatedException
            dup
        44: .line 254
            ldc "No additional X.509 stores can be added from certificate locations."
        45: .line 255
            aload 8 /* e */
        46: .line 253
            invokespecial org.bouncycastle.jce.provider.AnnotatedException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 8 // java.security.cert.CertificateParsingException e
        47: .line 257
      StackMap locals:
      StackMap stack:
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 8 /* issuers */
        start local 8 // java.util.Collection issuers
        48: .line 262
            aload 8 /* issuers */
            aload 2 /* tbvCert */
            aload 3 /* pkixParams */
            invokestatic org.bouncycastle.jce.provider.CertPathValidatorUtilities.findIssuerCerts:(Ljava/security/cert/X509Certificate;Lorg/bouncycastle/x509/ExtendedPKIXBuilderParameters;)Ljava/util/Collection;
            invokeinterface java.util.Collection.addAll:(Ljava/util/Collection;)Z
            pop
        49: .line 263
            goto 55
        50: .line 264
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi org.bouncycastle.x509.X509AttributeCertificate java.security.cert.X509Certificate org.bouncycastle.x509.ExtendedPKIXBuilderParameters java.util.List java.security.cert.CertificateFactory java.security.cert.CertPathValidator java.security.cert.CertPathBuilderResult java.util.Collection
      StackMap stack: org.bouncycastle.jce.provider.AnnotatedException
            astore 9 /* e */
        start local 9 // org.bouncycastle.jce.provider.AnnotatedException e
        51: .line 266
            new org.bouncycastle.jce.provider.AnnotatedException
            dup
        52: .line 267
            ldc "Cannot find issuer certificate for certificate in certification path."
        53: .line 268
            aload 9 /* e */
        54: .line 266
            invokespecial org.bouncycastle.jce.provider.AnnotatedException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 9 // org.bouncycastle.jce.provider.AnnotatedException e
        55: .line 270
      StackMap locals:
      StackMap stack:
            aload 8 /* issuers */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 59
        56: .line 272
            new org.bouncycastle.jce.provider.AnnotatedException
            dup
        57: .line 273
            ldc "No issuer certificate for certificate in certification path found."
        58: .line 272
            invokespecial org.bouncycastle.jce.provider.AnnotatedException.<init>:(Ljava/lang/String;)V
            athrow
        59: .line 275
      StackMap locals:
      StackMap stack:
            aload 8 /* issuers */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 9 /* it */
        start local 9 // java.util.Iterator it
        60: .line 277
            goto 68
        61: .line 279
      StackMap locals: java.util.Iterator
      StackMap stack:
            aload 9 /* it */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate
            astore 10 /* issuer */
        start local 10 // java.security.cert.X509Certificate issuer
        62: .line 282
            aload 10 /* issuer */
            invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
        63: .line 283
            aload 10 /* issuer */
            invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
        64: .line 282
            invokevirtual javax.security.auth.x500.X500Principal.equals:(Ljava/lang/Object;)Z
        65: .line 283
            ifeq 67
        66: .line 285
            goto 68
        67: .line 287
      StackMap locals: java.security.cert.X509Certificate
      StackMap stack:
            aload 0 /* this */
            aload 1 /* attrCert */
            aload 10 /* issuer */
            aload 3 /* pkixParams */
            aload 4 /* tbvPath */
            invokevirtual org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi.build:(Lorg/bouncycastle/x509/X509AttributeCertificate;Ljava/security/cert/X509Certificate;Lorg/bouncycastle/x509/ExtendedPKIXBuilderParameters;Ljava/util/List;)Ljava/security/cert/CertPathBuilderResult;
            astore 7 /* builderResult */
        end local 10 // java.security.cert.X509Certificate issuer
        68: .line 277
      StackMap locals:
      StackMap stack:
            aload 9 /* it */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifeq 74
            aload 7 /* builderResult */
            ifnull 61
        end local 9 // java.util.Iterator it
        end local 8 // java.util.Collection issuers
        69: .line 290
            goto 74
        70: .line 291
      StackMap locals: org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi org.bouncycastle.x509.X509AttributeCertificate java.security.cert.X509Certificate org.bouncycastle.x509.ExtendedPKIXBuilderParameters java.util.List java.security.cert.CertificateFactory java.security.cert.CertPathValidator java.security.cert.CertPathBuilderResult
      StackMap stack: org.bouncycastle.jce.provider.AnnotatedException
            astore 8 /* e */
        start local 8 // org.bouncycastle.jce.provider.AnnotatedException e
        71: .line 293
            aload 0 /* this */
            new org.bouncycastle.jce.provider.AnnotatedException
            dup
        72: .line 294
            ldc "No valid certification path could be build."
            aload 8 /* e */
            invokespecial org.bouncycastle.jce.provider.AnnotatedException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
        73: .line 293
            putfield org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi.certPathException:Ljava/lang/Exception;
        end local 8 // org.bouncycastle.jce.provider.AnnotatedException e
        74: .line 296
      StackMap locals:
      StackMap stack:
            aload 7 /* builderResult */
            ifnonnull 76
        75: .line 298
            aload 4 /* tbvPath */
            aload 2 /* tbvCert */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
        76: .line 300
      StackMap locals:
      StackMap stack:
            aload 7 /* builderResult */
            areturn
        end local 7 // java.security.cert.CertPathBuilderResult builderResult
        end local 6 // java.security.cert.CertPathValidator validator
        end local 5 // java.security.cert.CertificateFactory cFact
        end local 4 // java.util.List tbvPath
        end local 3 // org.bouncycastle.x509.ExtendedPKIXBuilderParameters pkixParams
        end local 2 // java.security.cert.X509Certificate tbvCert
        end local 1 // org.bouncycastle.x509.X509AttributeCertificate attrCert
        end local 0 // org.bouncycastle.jce.provider.PKIXAttrCertPathBuilderSpi this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   77     0           this  Lorg/bouncycastle/jce/provider/PKIXAttrCertPathBuilderSpi;
            0   77     1       attrCert  Lorg/bouncycastle/x509/X509AttributeCertificate;
            0   77     2        tbvCert  Ljava/security/cert/X509Certificate;
            0   77     3     pkixParams  Lorg/bouncycastle/x509/ExtendedPKIXBuilderParameters;
            0   77     4        tbvPath  Ljava/util/List;
           10   12     5          cFact  Ljava/security/cert/CertificateFactory;
           16   77     5          cFact  Ljava/security/cert/CertificateFactory;
           11   12     6      validator  Ljava/security/cert/CertPathValidator;
           16   77     6      validator  Ljava/security/cert/CertPathValidator;
            9   77     7  builderResult  Ljava/security/cert/CertPathBuilderResult;
           20   21     8       certPath  Ljava/security/cert/CertPath;
           26   40     8       certPath  Ljava/security/cert/CertPath;
           29   30     9         result  Ljava/security/cert/PKIXCertPathValidatorResult;
           35   40     9         result  Ljava/security/cert/PKIXCertPathValidatorResult;
           22   26    10              e  Ljava/lang/Exception;
           31   35    10              e  Ljava/lang/Exception;
           43   47     8              e  Ljava/security/cert/CertificateParsingException;
           48   69     8        issuers  Ljava/util/Collection;
           51   55     9              e  Lorg/bouncycastle/jce/provider/AnnotatedException;
           60   69     9             it  Ljava/util/Iterator;
           62   68    10         issuer  Ljava/security/cert/X509Certificate;
           71   74     8              e  Lorg/bouncycastle/jce/provider/AnnotatedException;
      Exception table:
        from    to  target  type
           9    11      12  Class java.lang.Exception
          19    20      21  Class java.lang.Exception
          26    29      30  Class java.lang.Exception
          40    41      42  Class java.security.cert.CertificateParsingException
          48    49      50  Class org.bouncycastle.jce.provider.AnnotatedException
          16    39      70  Class org.bouncycastle.jce.provider.AnnotatedException
          40    69      70  Class org.bouncycastle.jce.provider.AnnotatedException
    MethodParameters:
            Name  Flags
      attrCert    
      tbvCert     
      pkixParams  
      tbvPath     
}
SourceFile: "PKIXAttrCertPathBuilderSpi.java"