public class org.bouncycastle.jce.provider.X509CertParser extends org.bouncycastle.x509.X509StreamParserSpi
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.jce.provider.X509CertParser
  super_class: org.bouncycastle.x509.X509StreamParserSpi
{
  private static final org.bouncycastle.jce.provider.PEMUtil PEM_PARSER;
    descriptor: Lorg/bouncycastle/jce/provider/PEMUtil;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private org.bouncycastle.asn1.ASN1Set sData;
    descriptor: Lorg/bouncycastle/asn1/ASN1Set;
    flags: (0x0002) ACC_PRIVATE

  private int sDataObjectCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.io.InputStream currentStream;
    descriptor: Ljava/io/InputStream;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 26
            new org.bouncycastle.jce.provider.PEMUtil
            dup
            ldc "CERTIFICATE"
            invokespecial org.bouncycastle.jce.provider.PEMUtil.<init>:(Ljava/lang/String;)V
            putstatic org.bouncycastle.jce.provider.X509CertParser.PEM_PARSER:Lorg/bouncycastle/jce/provider/PEMUtil;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.bouncycastle.jce.provider.X509CertParser this
         0: .line 23
            aload 0 /* this */
            invokespecial org.bouncycastle.x509.X509StreamParserSpi.<init>:()V
         1: .line 28
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
         2: .line 29
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.X509CertParser.sDataObjectCount:I
         3: .line 30
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
         4: .line 23
            return
        end local 0 // org.bouncycastle.jce.provider.X509CertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bouncycastle/jce/provider/X509CertParser;

  private java.security.cert.Certificate readDERCertificate(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/security/cert/Certificate;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.bouncycastle.jce.provider.X509CertParser this
        start local 1 // java.io.InputStream in
         0: .line 36
            new org.bouncycastle.asn1.ASN1InputStream
            dup
            aload 1 /* in */
            aload 1 /* in */
            invokestatic org.bouncycastle.jce.provider.ProviderUtil.getReadLimit:(Ljava/io/InputStream;)I
            invokespecial org.bouncycastle.asn1.ASN1InputStream.<init>:(Ljava/io/InputStream;I)V
            astore 2 /* dIn */
        start local 2 // org.bouncycastle.asn1.ASN1InputStream dIn
         1: .line 37
            aload 2 /* dIn */
            invokevirtual org.bouncycastle.asn1.ASN1InputStream.readObject:()Lorg/bouncycastle/asn1/DERObject;
            checkcast org.bouncycastle.asn1.ASN1Sequence
            astore 3 /* seq */
        start local 3 // org.bouncycastle.asn1.ASN1Sequence seq
         2: .line 39
            aload 3 /* seq */
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.size:()I
            iconst_1
            if_icmple 11
         3: .line 40
            aload 3 /* seq */
            iconst_0
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getObjectAt:(I)Lorg/bouncycastle/asn1/DEREncodable;
            instanceof org.bouncycastle.asn1.DERObjectIdentifier
            ifeq 11
         4: .line 42
            aload 3 /* seq */
            iconst_0
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getObjectAt:(I)Lorg/bouncycastle/asn1/DEREncodable;
            getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.signedData:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 11
         5: .line 44
            aload 0 /* this */
            new org.bouncycastle.asn1.pkcs.SignedData
            dup
         6: .line 45
            aload 3 /* seq */
            iconst_1
            invokevirtual org.bouncycastle.asn1.ASN1Sequence.getObjectAt:(I)Lorg/bouncycastle/asn1/DEREncodable;
            checkcast org.bouncycastle.asn1.ASN1TaggedObject
            iconst_1
         7: .line 44
            invokestatic org.bouncycastle.asn1.ASN1Sequence.getInstance:(Lorg/bouncycastle/asn1/ASN1TaggedObject;Z)Lorg/bouncycastle/asn1/ASN1Sequence;
            invokespecial org.bouncycastle.asn1.pkcs.SignedData.<init>:(Lorg/bouncycastle/asn1/ASN1Sequence;)V
         8: .line 45
            invokevirtual org.bouncycastle.asn1.pkcs.SignedData.getCertificates:()Lorg/bouncycastle/asn1/ASN1Set;
         9: .line 44
            putfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
        10: .line 47
            aload 0 /* this */
            invokevirtual org.bouncycastle.jce.provider.X509CertParser.getCertificate:()Ljava/security/cert/Certificate;
            areturn
        11: .line 51
      StackMap locals: org.bouncycastle.asn1.ASN1InputStream org.bouncycastle.asn1.ASN1Sequence
      StackMap stack:
            new org.bouncycastle.jce.provider.X509CertificateObject
            dup
        12: .line 52
            aload 3 /* seq */
            invokestatic org.bouncycastle.asn1.x509.X509CertificateStructure.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/X509CertificateStructure;
        13: .line 51
            invokespecial org.bouncycastle.jce.provider.X509CertificateObject.<init>:(Lorg/bouncycastle/asn1/x509/X509CertificateStructure;)V
            areturn
        end local 3 // org.bouncycastle.asn1.ASN1Sequence seq
        end local 2 // org.bouncycastle.asn1.ASN1InputStream dIn
        end local 1 // java.io.InputStream in
        end local 0 // org.bouncycastle.jce.provider.X509CertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Lorg/bouncycastle/jce/provider/X509CertParser;
            0   14     1    in  Ljava/io/InputStream;
            1   14     2   dIn  Lorg/bouncycastle/asn1/ASN1InputStream;
            2   14     3   seq  Lorg/bouncycastle/asn1/ASN1Sequence;
    Exceptions:
      throws java.io.IOException, java.security.cert.CertificateParsingException
    MethodParameters:
      Name  Flags
      in    

  private java.security.cert.Certificate getCertificate();
    descriptor: ()Ljava/security/cert/Certificate;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.bouncycastle.jce.provider.X509CertParser this
         0: .line 58
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            ifnull 8
         1: .line 60
            goto 7
         2: .line 62
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            aload 0 /* this */
            dup
            getfield org.bouncycastle.jce.provider.X509CertParser.sDataObjectCount:I
            dup_x1
            iconst_1
            iadd
            putfield org.bouncycastle.jce.provider.X509CertParser.sDataObjectCount:I
            invokevirtual org.bouncycastle.asn1.ASN1Set.getObjectAt:(I)Lorg/bouncycastle/asn1/DEREncodable;
            astore 1 /* obj */
        start local 1 // java.lang.Object obj
         3: .line 64
            aload 1 /* obj */
            instanceof org.bouncycastle.asn1.ASN1Sequence
            ifeq 7
         4: .line 66
            new org.bouncycastle.jce.provider.X509CertificateObject
            dup
         5: .line 67
            aload 1 /* obj */
            invokestatic org.bouncycastle.asn1.x509.X509CertificateStructure.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/X509CertificateStructure;
         6: .line 66
            invokespecial org.bouncycastle.jce.provider.X509CertificateObject.<init>:(Lorg/bouncycastle/asn1/x509/X509CertificateStructure;)V
            areturn
        end local 1 // java.lang.Object obj
         7: .line 60
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.sDataObjectCount:I
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            invokevirtual org.bouncycastle.asn1.ASN1Set.size:()I
            if_icmplt 2
         8: .line 72
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // org.bouncycastle.jce.provider.X509CertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/bouncycastle/jce/provider/X509CertParser;
            3    7     1   obj  Ljava/lang/Object;
    Exceptions:
      throws java.security.cert.CertificateParsingException

  private java.security.cert.Certificate readPEMCertificate(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/security/cert/Certificate;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.bouncycastle.jce.provider.X509CertParser this
        start local 1 // java.io.InputStream in
         0: .line 79
            getstatic org.bouncycastle.jce.provider.X509CertParser.PEM_PARSER:Lorg/bouncycastle/jce/provider/PEMUtil;
            aload 1 /* in */
            invokevirtual org.bouncycastle.jce.provider.PEMUtil.readPEMObject:(Ljava/io/InputStream;)Lorg/bouncycastle/asn1/ASN1Sequence;
            astore 2 /* seq */
        start local 2 // org.bouncycastle.asn1.ASN1Sequence seq
         1: .line 81
            aload 2 /* seq */
            ifnull 5
         2: .line 83
            new org.bouncycastle.jce.provider.X509CertificateObject
            dup
         3: .line 84
            aload 2 /* seq */
            invokestatic org.bouncycastle.asn1.x509.X509CertificateStructure.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/x509/X509CertificateStructure;
         4: .line 83
            invokespecial org.bouncycastle.jce.provider.X509CertificateObject.<init>:(Lorg/bouncycastle/asn1/x509/X509CertificateStructure;)V
            areturn
         5: .line 87
      StackMap locals: org.bouncycastle.asn1.ASN1Sequence
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.bouncycastle.asn1.ASN1Sequence seq
        end local 1 // java.io.InputStream in
        end local 0 // org.bouncycastle.jce.provider.X509CertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/bouncycastle/jce/provider/X509CertParser;
            0    6     1    in  Ljava/io/InputStream;
            1    6     2   seq  Lorg/bouncycastle/asn1/ASN1Sequence;
    Exceptions:
      throws java.io.IOException, java.security.cert.CertificateParsingException
    MethodParameters:
      Name  Flags
      in    

  public void engineInit(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.jce.provider.X509CertParser this
        start local 1 // java.io.InputStream in
         0: .line 92
            aload 0 /* this */
            aload 1 /* in */
            putfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
         1: .line 93
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
         2: .line 94
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.X509CertParser.sDataObjectCount:I
         3: .line 96
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.markSupported:()Z
            ifne 5
         4: .line 98
            aload 0 /* this */
            new java.io.BufferedInputStream
            dup
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            putfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
         5: .line 100
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.InputStream in
        end local 0 // org.bouncycastle.jce.provider.X509CertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/bouncycastle/jce/provider/X509CertParser;
            0    6     1    in  Ljava/io/InputStream;
    MethodParameters:
      Name  Flags
      in    

  public java.lang.Object engineRead();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.bouncycastle.jce.provider.X509CertParser this
         0: .line 107
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            ifnull 7
         1: .line 109
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.sDataObjectCount:I
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
            invokevirtual org.bouncycastle.asn1.ASN1Set.size:()I
            if_icmpeq 4
         2: .line 111
            aload 0 /* this */
            invokevirtual org.bouncycastle.jce.provider.X509CertParser.getCertificate:()Ljava/security/cert/Certificate;
         3: areturn
         4: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.jce.provider.X509CertParser.sData:Lorg/bouncycastle/asn1/ASN1Set;
         5: .line 116
            aload 0 /* this */
            iconst_0
            putfield org.bouncycastle.jce.provider.X509CertParser.sDataObjectCount:I
         6: .line 117
            aconst_null
            areturn
         7: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
            bipush 10
            invokevirtual java.io.InputStream.mark:(I)V
         8: .line 122
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.read:()I
            istore 1 /* tag */
        start local 1 // int tag
         9: .line 124
            iload 1 /* tag */
            iconst_m1
            if_icmpne 11
        10: .line 126
            aconst_null
            areturn
        11: .line 129
      StackMap locals: int
      StackMap stack:
            iload 1 /* tag */
            bipush 48
            if_icmpeq 15
        12: .line 131
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.reset:()V
        13: .line 132
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
            invokevirtual org.bouncycastle.jce.provider.X509CertParser.readPEMCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
        14: areturn
        15: .line 136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
            invokevirtual java.io.InputStream.reset:()V
        16: .line 137
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.jce.provider.X509CertParser.currentStream:Ljava/io/InputStream;
            invokevirtual org.bouncycastle.jce.provider.X509CertParser.readDERCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
        17: areturn
        end local 1 // int tag
        18: .line 140
      StackMap locals: org.bouncycastle.jce.provider.X509CertParser
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        19: .line 142
            new org.bouncycastle.x509.util.StreamParsingException
            dup
            aload 1 /* e */
            invokevirtual java.lang.Exception.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial org.bouncycastle.x509.util.StreamParsingException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // org.bouncycastle.jce.provider.X509CertParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lorg/bouncycastle/jce/provider/X509CertParser;
            9   18     1   tag  I
           19   20     1     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     3      18  Class java.lang.Exception
           4     6      18  Class java.lang.Exception
           7    10      18  Class java.lang.Exception
          11    14      18  Class java.lang.Exception
          15    17      18  Class java.lang.Exception
    Exceptions:
      throws org.bouncycastle.x509.util.StreamParsingException

  public java.util.Collection engineReadAll();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.bouncycastle.jce.provider.X509CertParser this
         0: .line 150
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* certs */
        start local 2 // java.util.List certs
         1: .line 152
            goto 3
        start local 1 // java.security.cert.Certificate cert
         2: .line 154
      StackMap locals: java.security.cert.Certificate java.util.List
      StackMap stack:
            aload 2 /* certs */
            aload 1 /* cert */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 1 // java.security.cert.Certificate cert
         3: .line 152
      StackMap locals: org.bouncycastle.jce.provider.X509CertParser top java.util.List
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.bouncycastle.jce.provider.X509CertParser.engineRead:()Ljava/lang/Object;
            checkcast java.security.cert.Certificate
            dup
            astore 1 /* cert */
        start local 1 // java.security.cert.Certificate cert
         4: ifnonnull 2
         5: .line 157
            aload 2 /* certs */
            areturn
        end local 2 // java.util.List certs
        end local 1 // java.security.cert.Certificate cert
        end local 0 // org.bouncycastle.jce.provider.X509CertParser this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/bouncycastle/jce/provider/X509CertParser;
            2    3     1   cert  Ljava/security/cert/Certificate;
            4    6     1   cert  Ljava/security/cert/Certificate;
            1    6     2  certs  Ljava/util/List;
    Exceptions:
      throws org.bouncycastle.x509.util.StreamParsingException
}
SourceFile: "X509CertParser.java"