public class org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder
  super_class: java.lang.Object
{
  private org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter keyConverter;
    descriptor: Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.cert.jcajce.JcaX509CertificateConverter certConverter;
    descriptor: Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
         0: .line 31
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 28
            aload 0 /* this */
            new org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter
            dup
            invokespecial org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter.<init>:()V
            putfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.keyConverter:Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
         2: .line 29
            aload 0 /* this */
            new org.bouncycastle.cert.jcajce.JcaX509CertificateConverter
            dup
            invokespecial org.bouncycastle.cert.jcajce.JcaX509CertificateConverter.<init>:()V
            putfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.certConverter:Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
         3: .line 34
            return
        end local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder;

  public org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder setProvider(java.security.Provider);
    descriptor: (Ljava/security/Provider;)Lorg/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
        start local 1 // java.security.Provider provider
         0: .line 38
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.keyConverter:Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
            aload 1 /* provider */
            invokevirtual org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter.setProvider:(Ljava/security/Provider;)Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
            putfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.keyConverter:Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
         1: .line 39
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.certConverter:Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
            aload 1 /* provider */
            invokevirtual org.bouncycastle.cert.jcajce.JcaX509CertificateConverter.setProvider:(Ljava/security/Provider;)Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
            putfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.certConverter:Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
         2: .line 41
            aload 0 /* this */
            areturn
        end local 1 // java.security.Provider provider
        end local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder;
            0    3     1  provider  Ljava/security/Provider;
    MethodParameters:
          Name  Flags
      provider  

  public org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder setProvider(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
        start local 1 // java.lang.String providerName
         0: .line 46
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.keyConverter:Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
            aload 1 /* providerName */
            invokevirtual org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter.setProvider:(Ljava/lang/String;)Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
            putfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.keyConverter:Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
         1: .line 47
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.certConverter:Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
            aload 1 /* providerName */
            invokevirtual org.bouncycastle.cert.jcajce.JcaX509CertificateConverter.setProvider:(Ljava/lang/String;)Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
            putfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.certConverter:Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
         2: .line 49
            aload 0 /* this */
            areturn
        end local 1 // java.lang.String providerName
        end local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lorg/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder;
            0    3     1  providerName  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      providerName  

  public org.bouncycastle.pkix.jcajce.JcaPKIXIdentity build(java.io.File, java.io.File);
    descriptor: (Ljava/io/File;Ljava/io/File;)Lorg/bouncycastle/pkix/jcajce/JcaPKIXIdentity;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
        start local 1 // java.io.File keyFile
        start local 2 // java.io.File certificateFile
         0: .line 64
            aload 0 /* this */
            aload 1 /* keyFile */
            invokevirtual org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.checkFile:(Ljava/io/File;)V
         1: .line 65
            aload 0 /* this */
            aload 2 /* certificateFile */
            invokevirtual org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.checkFile:(Ljava/io/File;)V
         2: .line 67
            new java.io.FileInputStream
            dup
            aload 1 /* keyFile */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 3 /* keyStream */
        start local 3 // java.io.FileInputStream keyStream
         3: .line 68
            new java.io.FileInputStream
            dup
            aload 2 /* certificateFile */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 4 /* certificateStream */
        start local 4 // java.io.FileInputStream certificateStream
         4: .line 70
            aload 0 /* this */
            aload 3 /* keyStream */
            aload 4 /* certificateStream */
            invokevirtual org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.build:(Ljava/io/InputStream;Ljava/io/InputStream;)Lorg/bouncycastle/pkix/jcajce/JcaPKIXIdentity;
            astore 5 /* rv */
        start local 5 // org.bouncycastle.pkix.jcajce.JcaPKIXIdentity rv
         5: .line 72
            aload 3 /* keyStream */
            invokevirtual java.io.FileInputStream.close:()V
         6: .line 73
            aload 4 /* certificateStream */
            invokevirtual java.io.FileInputStream.close:()V
         7: .line 75
            aload 5 /* rv */
            areturn
        end local 5 // org.bouncycastle.pkix.jcajce.JcaPKIXIdentity rv
        end local 4 // java.io.FileInputStream certificateStream
        end local 3 // java.io.FileInputStream keyStream
        end local 2 // java.io.File certificateFile
        end local 1 // java.io.File keyFile
        end local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    8     0               this  Lorg/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder;
            0    8     1            keyFile  Ljava/io/File;
            0    8     2    certificateFile  Ljava/io/File;
            3    8     3          keyStream  Ljava/io/FileInputStream;
            4    8     4  certificateStream  Ljava/io/FileInputStream;
            5    8     5                 rv  Lorg/bouncycastle/pkix/jcajce/JcaPKIXIdentity;
    Exceptions:
      throws java.io.IOException, java.security.cert.CertificateException
    MethodParameters:
                 Name  Flags
      keyFile          
      certificateFile  

  public org.bouncycastle.pkix.jcajce.JcaPKIXIdentity build(java.io.InputStream, java.io.InputStream);
    descriptor: (Ljava/io/InputStream;Ljava/io/InputStream;)Lorg/bouncycastle/pkix/jcajce/JcaPKIXIdentity;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
        start local 1 // java.io.InputStream keyStream
        start local 2 // java.io.InputStream certificateStream
         0: .line 90
            new org.bouncycastle.openssl.PEMParser
            dup
            new java.io.InputStreamReader
            dup
            aload 1 /* keyStream */
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokespecial org.bouncycastle.openssl.PEMParser.<init>:(Ljava/io/Reader;)V
            astore 3 /* keyParser */
        start local 3 // org.bouncycastle.openssl.PEMParser keyParser
         1: .line 94
            aload 3 /* keyParser */
            invokevirtual org.bouncycastle.openssl.PEMParser.readObject:()Ljava/lang/Object;
            astore 5 /* keyObj */
        start local 5 // java.lang.Object keyObj
         2: .line 95
            aload 5 /* keyObj */
            instanceof org.bouncycastle.openssl.PEMKeyPair
            ifeq 6
         3: .line 97
            aload 5 /* keyObj */
            checkcast org.bouncycastle.openssl.PEMKeyPair
            astore 6 /* kp */
        start local 6 // org.bouncycastle.openssl.PEMKeyPair kp
         4: .line 99
            aload 0 /* this */
            getfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.keyConverter:Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
            aload 6 /* kp */
            invokevirtual org.bouncycastle.openssl.PEMKeyPair.getPrivateKeyInfo:()Lorg/bouncycastle/asn1/pkcs/PrivateKeyInfo;
            invokevirtual org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter.getPrivateKey:(Lorg/bouncycastle/asn1/pkcs/PrivateKeyInfo;)Ljava/security/PrivateKey;
            astore 4 /* privKey */
        end local 6 // org.bouncycastle.openssl.PEMKeyPair kp
        start local 4 // java.security.PrivateKey privKey
         5: .line 100
            goto 10
        end local 4 // java.security.PrivateKey privKey
         6: .line 101
      StackMap locals: org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder java.io.InputStream java.io.InputStream org.bouncycastle.openssl.PEMParser top java.lang.Object
      StackMap stack:
            aload 5 /* keyObj */
            instanceof org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            ifeq 9
         7: .line 103
            aload 0 /* this */
            getfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.keyConverter:Lorg/bouncycastle/openssl/jcajce/JcaPEMKeyConverter;
            aload 5 /* keyObj */
            checkcast org.bouncycastle.asn1.pkcs.PrivateKeyInfo
            invokevirtual org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter.getPrivateKey:(Lorg/bouncycastle/asn1/pkcs/PrivateKeyInfo;)Ljava/security/PrivateKey;
            astore 4 /* privKey */
        start local 4 // java.security.PrivateKey privKey
         8: .line 104
            goto 10
        end local 4 // java.security.PrivateKey privKey
         9: .line 107
      StackMap locals:
      StackMap stack:
            new java.io.IOException
            dup
            ldc "unrecognised private key file"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        start local 4 // java.security.PrivateKey privKey
        10: .line 110
      StackMap locals: org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder java.io.InputStream java.io.InputStream org.bouncycastle.openssl.PEMParser java.security.PrivateKey java.lang.Object
      StackMap stack:
            new org.bouncycastle.openssl.PEMParser
            dup
            new java.io.InputStreamReader
            dup
            aload 2 /* certificateStream */
            invokespecial java.io.InputStreamReader.<init>:(Ljava/io/InputStream;)V
            invokespecial org.bouncycastle.openssl.PEMParser.<init>:(Ljava/io/Reader;)V
            astore 6 /* certParser */
        start local 6 // org.bouncycastle.openssl.PEMParser certParser
        11: .line 112
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 7 /* certs */
        start local 7 // java.util.List certs
        12: .line 114
            goto 14
        start local 8 // java.lang.Object certObj
        13: .line 116
      StackMap locals: org.bouncycastle.openssl.PEMParser java.util.List java.lang.Object
      StackMap stack:
            aload 7 /* certs */
            aload 0 /* this */
            getfield org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder.certConverter:Lorg/bouncycastle/cert/jcajce/JcaX509CertificateConverter;
            aload 8 /* certObj */
            checkcast org.bouncycastle.cert.X509CertificateHolder
            invokevirtual org.bouncycastle.cert.jcajce.JcaX509CertificateConverter.getCertificate:(Lorg/bouncycastle/cert/X509CertificateHolder;)Ljava/security/cert/X509Certificate;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // java.lang.Object certObj
        14: .line 114
      StackMap locals:
      StackMap stack:
            aload 6 /* certParser */
            invokevirtual org.bouncycastle.openssl.PEMParser.readObject:()Ljava/lang/Object;
            dup
            astore 8 /* certObj */
        start local 8 // java.lang.Object certObj
        15: ifnonnull 13
        16: .line 119
            new org.bouncycastle.pkix.jcajce.JcaPKIXIdentity
            dup
            aload 4 /* privKey */
            aload 7 /* certs */
            aload 7 /* certs */
            invokeinterface java.util.List.size:()I
            anewarray java.security.cert.X509Certificate
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate[]
            invokespecial org.bouncycastle.pkix.jcajce.JcaPKIXIdentity.<init>:(Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;)V
            areturn
        end local 8 // java.lang.Object certObj
        end local 7 // java.util.List certs
        end local 6 // org.bouncycastle.openssl.PEMParser certParser
        end local 5 // java.lang.Object keyObj
        end local 4 // java.security.PrivateKey privKey
        end local 3 // org.bouncycastle.openssl.PEMParser keyParser
        end local 2 // java.io.InputStream certificateStream
        end local 1 // java.io.InputStream keyStream
        end local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   17     0               this  Lorg/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder;
            0   17     1          keyStream  Ljava/io/InputStream;
            0   17     2  certificateStream  Ljava/io/InputStream;
            1   17     3          keyParser  Lorg/bouncycastle/openssl/PEMParser;
            5    6     4            privKey  Ljava/security/PrivateKey;
            8    9     4            privKey  Ljava/security/PrivateKey;
           10   17     4            privKey  Ljava/security/PrivateKey;
            2   17     5             keyObj  Ljava/lang/Object;
            4    5     6                 kp  Lorg/bouncycastle/openssl/PEMKeyPair;
           11   17     6         certParser  Lorg/bouncycastle/openssl/PEMParser;
           12   17     7              certs  Ljava/util/List;
           13   14     8            certObj  Ljava/lang/Object;
           15   17     8            certObj  Ljava/lang/Object;
    Exceptions:
      throws java.io.IOException, java.security.cert.CertificateException
    MethodParameters:
                   Name  Flags
      keyStream          
      certificateStream  

  private void checkFile(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
        start local 1 // java.io.File file
         0: .line 125
            aload 1 /* file */
            invokevirtual java.io.File.canRead:()Z
            ifeq 4
         1: .line 127
            aload 1 /* file */
            invokevirtual java.io.File.exists:()Z
            ifeq 3
         2: .line 129
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to open file "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* file */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " for reading."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 131
      StackMap locals:
      StackMap stack:
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to open "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* file */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ": it does not exist."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 133
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.File file
        end local 0 // org.bouncycastle.openssl.jcajce.JcaPKIXIdentityBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder;
            0    5     1  file  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      file  
}
SourceFile: "JcaPKIXIdentityBuilder.java"