public class org.postgresql.ssl.LazyKeyManager implements javax.net.ssl.X509KeyManager
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.postgresql.ssl.LazyKeyManager
  super_class: java.lang.Object
{
  private java.security.cert.X509Certificate[] cert;
    descriptor: [Ljava/security/cert/X509Certificate;
    flags: (0x0002) ACC_PRIVATE

  private java.security.PrivateKey key;
    descriptor: Ljava/security/PrivateKey;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String certfile;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String keyfile;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private javax.security.auth.callback.CallbackHandler cbh;
    descriptor: Ljavax/security/auth/callback/CallbackHandler;
    flags: (0x0002) ACC_PRIVATE

  private boolean defaultfile;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private org.postgresql.util.PSQLException error;
    descriptor: Lorg/postgresql/util/PSQLException;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(java.lang.String, java.lang.String, javax.security.auth.callback.CallbackHandler, boolean);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljavax/security/auth/callback/CallbackHandler;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // org.postgresql.ssl.LazyKeyManager this
        start local 1 // java.lang.String certfile
        start local 2 // java.lang.String keyfile
        start local 3 // javax.security.auth.callback.CallbackHandler cbh
        start local 4 // boolean defaultfile
         0: .line 66
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            aload 0 /* this */
            aconst_null
            putfield org.postgresql.ssl.LazyKeyManager.cert:[Ljava/security/cert/X509Certificate;
         2: .line 50
            aload 0 /* this */
            aconst_null
            putfield org.postgresql.ssl.LazyKeyManager.key:Ljava/security/PrivateKey;
         3: .line 55
            aload 0 /* this */
            aconst_null
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
         4: .line 67
            aload 0 /* this */
            aload 1 /* certfile */
            putfield org.postgresql.ssl.LazyKeyManager.certfile:Ljava/lang/String;
         5: .line 68
            aload 0 /* this */
            aload 2 /* keyfile */
            putfield org.postgresql.ssl.LazyKeyManager.keyfile:Ljava/lang/String;
         6: .line 69
            aload 0 /* this */
            aload 3 /* cbh */
            putfield org.postgresql.ssl.LazyKeyManager.cbh:Ljavax/security/auth/callback/CallbackHandler;
         7: .line 70
            aload 0 /* this */
            iload 4 /* defaultfile */
            putfield org.postgresql.ssl.LazyKeyManager.defaultfile:Z
         8: .line 71
            return
        end local 4 // boolean defaultfile
        end local 3 // javax.security.auth.callback.CallbackHandler cbh
        end local 2 // java.lang.String keyfile
        end local 1 // java.lang.String certfile
        end local 0 // org.postgresql.ssl.LazyKeyManager this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lorg/postgresql/ssl/LazyKeyManager;
            0    9     1     certfile  Ljava/lang/String;
            0    9     2      keyfile  Ljava/lang/String;
            0    9     3          cbh  Ljavax/security/auth/callback/CallbackHandler;
            0    9     4  defaultfile  Z
    MethodParameters:
             Name  Flags
      certfile     
      keyfile      
      cbh          
      defaultfile  

  public void throwKeyManagerException();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.postgresql.ssl.LazyKeyManager this
         0: .line 80
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
            ifnull 2
         1: .line 81
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
            athrow
         2: .line 83
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.postgresql.ssl.LazyKeyManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/postgresql/ssl/LazyKeyManager;
    Exceptions:
      throws org.postgresql.util.PSQLException

  public java.lang.String chooseClientAlias(java.lang.String[], java.security.Principal[], java.net.Socket);
    descriptor: ([Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=11, args_size=4
        start local 0 // org.postgresql.ssl.LazyKeyManager this
        start local 1 // java.lang.String[] keyType
        start local 2 // java.security.Principal[] issuers
        start local 3 // java.net.Socket socket
         0: .line 87
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.certfile:Ljava/lang/String;
            ifnonnull 2
         1: .line 88
            aconst_null
            areturn
         2: .line 90
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            ifnull 3
            aload 2 /* issuers */
            arraylength
            ifne 4
         3: .line 93
      StackMap locals:
      StackMap stack:
            ldc "user"
            areturn
         4: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "user"
            invokevirtual org.postgresql.ssl.LazyKeyManager.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
            astore 4 /* certchain */
        start local 4 // java.security.cert.X509Certificate[] certchain
         5: .line 99
            aload 4 /* certchain */
            ifnonnull 7
         6: .line 100
            aconst_null
            areturn
         7: .line 102
      StackMap locals: java.security.cert.X509Certificate[]
      StackMap stack:
            aload 4 /* certchain */
            aload 4 /* certchain */
            arraylength
            iconst_1
            isub
            aaload
            invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
            astore 5 /* ourissuer */
        start local 5 // javax.security.auth.x500.X500Principal ourissuer
         8: .line 103
            iconst_0
            istore 6 /* found */
        start local 6 // boolean found
         9: .line 104
            aload 2 /* issuers */
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 14
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String[] java.security.Principal[] java.net.Socket java.security.cert.X509Certificate[] javax.security.auth.x500.X500Principal int top int int java.security.Principal[]
      StackMap stack:
        10: aload 10
            iload 8
            aaload
            astore 7 /* issuer */
        start local 7 // java.security.Principal issuer
        11: .line 105
            aload 5 /* ourissuer */
            aload 7 /* issuer */
            invokevirtual javax.security.auth.x500.X500Principal.equals:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 106
            iconst_1
            istore 6 /* found */
        end local 7 // java.security.Principal issuer
        13: .line 104
      StackMap locals:
      StackMap stack:
            iinc 8 1
      StackMap locals:
      StackMap stack:
        14: iload 8
            iload 9
            if_icmplt 10
        15: .line 109
            iload 6 /* found */
            ifeq 16
            ldc "user"
            goto 17
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String[] java.security.Principal[] java.net.Socket java.security.cert.X509Certificate[] javax.security.auth.x500.X500Principal int
      StackMap stack:
        16: aconst_null
      StackMap locals:
      StackMap stack: java.lang.String
        17: areturn
        end local 6 // boolean found
        end local 5 // javax.security.auth.x500.X500Principal ourissuer
        end local 4 // java.security.cert.X509Certificate[] certchain
        end local 3 // java.net.Socket socket
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String[] keyType
        end local 0 // org.postgresql.ssl.LazyKeyManager this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Lorg/postgresql/ssl/LazyKeyManager;
            0   18     1    keyType  [Ljava/lang/String;
            0   18     2    issuers  [Ljava/security/Principal;
            0   18     3     socket  Ljava/net/Socket;
            5   18     4  certchain  [Ljava/security/cert/X509Certificate;
            8   18     5  ourissuer  Ljavax/security/auth/x500/X500Principal;
            9   18     6      found  Z
           11   13     7     issuer  Ljava/security/Principal;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  
      socket   

  public java.lang.String chooseServerAlias(java.lang.String, java.security.Principal[], java.net.Socket);
    descriptor: (Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // org.postgresql.ssl.LazyKeyManager this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
        start local 3 // java.net.Socket socket
         0: .line 117
            aconst_null
            areturn
        end local 3 // java.net.Socket socket
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String keyType
        end local 0 // org.postgresql.ssl.LazyKeyManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/postgresql/ssl/LazyKeyManager;
            0    1     1  keyType  Ljava/lang/String;
            0    1     2  issuers  [Ljava/security/Principal;
            0    1     3   socket  Ljava/net/Socket;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  
      socket   

  public java.security.cert.X509Certificate[] getCertificateChain(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=5, args_size=2
        start local 0 // org.postgresql.ssl.LazyKeyManager this
        start local 1 // java.lang.String alias
         0: .line 122
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.cert:[Ljava/security/cert/X509Certificate;
            ifnonnull 27
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.certfile:Ljava/lang/String;
            ifnull 27
         1: .line 127
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 2 /* cf */
        start local 2 // java.security.cert.CertificateFactory cf
         2: .line 128
            goto 10
        end local 2 // java.security.cert.CertificateFactory cf
      StackMap locals:
      StackMap stack: java.security.cert.CertificateException
         3: astore 3 /* ex */
        start local 3 // java.security.cert.CertificateException ex
         4: .line 131
            aload 0 /* this */
            new org.postgresql.util.PSQLException
            dup
         5: .line 132
            ldc "Could not find a java cryptographic algorithm: X.509 CertificateFactory not available."
            iconst_0
            anewarray java.lang.Object
         6: .line 131
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         7: .line 133
            getstatic org.postgresql.util.PSQLState.CONNECTION_FAILURE:Lorg/postgresql/util/PSQLState;
            aload 3 /* ex */
            invokespecial org.postgresql.util.PSQLException.<init>:(Ljava/lang/String;Lorg/postgresql/util/PSQLState;Ljava/lang/Throwable;)V
         8: .line 131
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
         9: .line 134
            aconst_null
            areturn
        end local 3 // java.security.cert.CertificateException ex
        start local 2 // java.security.cert.CertificateFactory cf
        10: .line 138
      StackMap locals: java.security.cert.CertificateFactory
      StackMap stack:
            aload 2 /* cf */
            new java.io.FileInputStream
            dup
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.certfile:Ljava/lang/String;
            invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
            invokevirtual java.security.cert.CertificateFactory.generateCertificates:(Ljava/io/InputStream;)Ljava/util/Collection;
            astore 3 /* certs */
        start local 3 // java.util.Collection certs
        11: .line 139
            goto 26
        end local 3 // java.util.Collection certs
      StackMap locals:
      StackMap stack: java.io.FileNotFoundException
        12: astore 4 /* ioex */
        start local 4 // java.io.FileNotFoundException ioex
        13: .line 140
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.defaultfile:Z
            ifne 18
        14: .line 141
            aload 0 /* this */
            new org.postgresql.util.PSQLException
            dup
        15: .line 142
            ldc "Could not open SSL certificate file {0}."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.certfile:Ljava/lang/String;
            aastore
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        16: .line 143
            getstatic org.postgresql.util.PSQLState.CONNECTION_FAILURE:Lorg/postgresql/util/PSQLState;
            aload 4 /* ioex */
            invokespecial org.postgresql.util.PSQLException.<init>:(Ljava/lang/String;Lorg/postgresql/util/PSQLState;Ljava/lang/Throwable;)V
        17: .line 141
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
        18: .line 145
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String java.security.cert.CertificateFactory top java.io.FileNotFoundException
      StackMap stack:
            aconst_null
            areturn
        end local 4 // java.io.FileNotFoundException ioex
        19: .line 146
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String java.security.cert.CertificateFactory
      StackMap stack: java.security.cert.CertificateException
            astore 4 /* gsex */
        start local 4 // java.security.cert.CertificateException gsex
        20: .line 147
            aload 0 /* this */
            new org.postgresql.util.PSQLException
            dup
            ldc "Loading the SSL certificate {0} into a KeyManager failed."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        21: .line 148
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.certfile:Ljava/lang/String;
            aastore
        22: .line 147
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        23: .line 148
            getstatic org.postgresql.util.PSQLState.CONNECTION_FAILURE:Lorg/postgresql/util/PSQLState;
            aload 4 /* gsex */
            invokespecial org.postgresql.util.PSQLException.<init>:(Ljava/lang/String;Lorg/postgresql/util/PSQLState;Ljava/lang/Throwable;)V
        24: .line 147
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
        25: .line 149
            aconst_null
            areturn
        end local 4 // java.security.cert.CertificateException gsex
        start local 3 // java.util.Collection certs
        26: .line 151
      StackMap locals: java.util.Collection
      StackMap stack:
            aload 0 /* this */
            aload 3 /* certs */
            iconst_0
            anewarray java.security.cert.X509Certificate
            invokeinterface java.util.Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate[]
            putfield org.postgresql.ssl.LazyKeyManager.cert:[Ljava/security/cert/X509Certificate;
        end local 3 // java.util.Collection certs
        end local 2 // java.security.cert.CertificateFactory cf
        27: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.cert:[Ljava/security/cert/X509Certificate;
            areturn
        end local 1 // java.lang.String alias
        end local 0 // org.postgresql.ssl.LazyKeyManager this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   28     0   this  Lorg/postgresql/ssl/LazyKeyManager;
            0   28     1  alias  Ljava/lang/String;
            2    3     2     cf  Ljava/security/cert/CertificateFactory;
           10   27     2     cf  Ljava/security/cert/CertificateFactory;
            4   10     3     ex  Ljava/security/cert/CertificateException;
           11   12     3  certs  Ljava/util/Collection<+Ljava/security/cert/Certificate;>;
           26   27     3  certs  Ljava/util/Collection<+Ljava/security/cert/Certificate;>;
           13   19     4   ioex  Ljava/io/FileNotFoundException;
           20   26     4   gsex  Ljava/security/cert/CertificateException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.security.cert.CertificateException
          10    11      12  Class java.io.FileNotFoundException
          10    11      19  Class java.security.cert.CertificateException
    MethodParameters:
       Name  Flags
      alias  

  public java.lang.String[] getClientAliases(java.lang.String, java.security.Principal[]);
    descriptor: (Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.postgresql.ssl.LazyKeyManager this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
         0: .line 158
            aload 0 /* this */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 1 /* keyType */
            aastore
            aload 2 /* issuers */
            aconst_null
            invokevirtual org.postgresql.ssl.LazyKeyManager.chooseClientAlias:([Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;
            astore 3 /* alias */
        start local 3 // java.lang.String alias
         1: .line 159
            aload 3 /* alias */
            ifnonnull 2
            iconst_0
            anewarray java.lang.String
            goto 3
      StackMap locals: java.lang.String
      StackMap stack:
         2: iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 3 /* alias */
            aastore
      StackMap locals:
      StackMap stack: java.lang.String[]
         3: areturn
        end local 3 // java.lang.String alias
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String keyType
        end local 0 // org.postgresql.ssl.LazyKeyManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/postgresql/ssl/LazyKeyManager;
            0    4     1  keyType  Ljava/lang/String;
            0    4     2  issuers  [Ljava/security/Principal;
            1    4     3    alias  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  

  private static byte[] readFileFully(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // java.lang.String path
         0: .line 163
            new java.io.RandomAccessFile
            dup
            aload 0 /* path */
            ldc "r"
            invokespecial java.io.RandomAccessFile.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 1 /* raf */
        start local 1 // java.io.RandomAccessFile raf
         1: .line 165
            aload 1 /* raf */
            invokevirtual java.io.RandomAccessFile.length:()J
            l2i
            newarray 8
            astore 2 /* ret */
        start local 2 // byte[] ret
         2: .line 166
            aload 1 /* raf */
            aload 2 /* ret */
            invokevirtual java.io.RandomAccessFile.readFully:([B)V
         3: .line 167
            aload 2 /* ret */
            astore 4
         4: .line 169
            aload 1 /* raf */
            invokevirtual java.io.RandomAccessFile.close:()V
         5: .line 167
            aload 4
            areturn
        end local 2 // byte[] ret
         6: .line 168
      StackMap locals: java.lang.String java.io.RandomAccessFile
      StackMap stack: java.lang.Throwable
            astore 3
         7: .line 169
            aload 1 /* raf */
            invokevirtual java.io.RandomAccessFile.close:()V
         8: .line 170
            aload 3
            athrow
        end local 1 // java.io.RandomAccessFile raf
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  path  Ljava/lang/String;
            1    9     1   raf  Ljava/io/RandomAccessFile;
            2    6     2   ret  [B
      Exception table:
        from    to  target  type
           1     4       6  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      path  

  public java.security.PrivateKey getPrivateKey(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/PrivateKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=12, args_size=2
        start local 0 // org.postgresql.ssl.LazyKeyManager this
        start local 1 // java.lang.String alias
         0: .line 176
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.key:Ljava/security/PrivateKey;
            ifnonnull 67
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.keyfile:Ljava/lang/String;
            ifnull 67
         1: .line 179
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.cert:[Ljava/security/cert/X509Certificate;
            ifnonnull 4
         2: .line 180
            aload 0 /* this */
            ldc "user"
            invokevirtual org.postgresql.ssl.LazyKeyManager.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
            ifnonnull 4
         3: .line 181
            aconst_null
            areturn
         4: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.keyfile:Ljava/lang/String;
            invokestatic org.postgresql.ssl.LazyKeyManager.readFileFully:(Ljava/lang/String;)[B
            astore 2 /* keydata */
        start local 2 // byte[] keydata
         5: .line 188
            goto 10
        end local 2 // byte[] keydata
      StackMap locals:
      StackMap stack: java.io.FileNotFoundException
         6: astore 3 /* ex */
        start local 3 // java.io.FileNotFoundException ex
         7: .line 189
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.defaultfile:Z
            ifne 9
         8: .line 191
            aload 3 /* ex */
            athrow
         9: .line 193
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String top java.io.FileNotFoundException
      StackMap stack:
            aconst_null
            areturn
        end local 3 // java.io.FileNotFoundException ex
        start local 2 // byte[] keydata
        10: .line 196
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String byte[]
      StackMap stack:
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.cert:[Ljava/security/cert/X509Certificate;
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
            astore 3 /* kf */
        start local 3 // java.security.KeyFactory kf
        11: .line 198
            new java.security.spec.PKCS8EncodedKeySpec
            dup
            aload 2 /* keydata */
            invokespecial java.security.spec.PKCS8EncodedKeySpec.<init>:([B)V
            astore 4 /* pkcs8KeySpec */
        start local 4 // java.security.spec.KeySpec pkcs8KeySpec
        12: .line 199
            aload 0 /* this */
            aload 3 /* kf */
            aload 4 /* pkcs8KeySpec */
            invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
            putfield org.postgresql.ssl.LazyKeyManager.key:Ljava/security/PrivateKey;
        end local 4 // java.security.spec.KeySpec pkcs8KeySpec
        13: .line 200
            goto 67
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String byte[] java.security.KeyFactory
      StackMap stack: java.security.spec.InvalidKeySpecException
        14: pop
        15: .line 202
            new javax.crypto.EncryptedPrivateKeyInfo
            dup
            aload 2 /* keydata */
            invokespecial javax.crypto.EncryptedPrivateKeyInfo.<init>:([B)V
            astore 4 /* ePKInfo */
        start local 4 // javax.crypto.EncryptedPrivateKeyInfo ePKInfo
        16: .line 205
            aload 4 /* ePKInfo */
            invokevirtual javax.crypto.EncryptedPrivateKeyInfo.getAlgName:()Ljava/lang/String;
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 5 /* cipher */
        start local 5 // javax.crypto.Cipher cipher
        17: .line 206
            goto 20
        end local 5 // javax.crypto.Cipher cipher
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String byte[] java.security.KeyFactory javax.crypto.EncryptedPrivateKeyInfo
      StackMap stack: javax.crypto.NoSuchPaddingException
        18: astore 6 /* npex */
        start local 6 // javax.crypto.NoSuchPaddingException npex
        19: .line 208
            new java.security.NoSuchAlgorithmException
            dup
            aload 6 /* npex */
            invokevirtual javax.crypto.NoSuchPaddingException.getMessage:()Ljava/lang/String;
            aload 6 /* npex */
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // javax.crypto.NoSuchPaddingException npex
        start local 5 // javax.crypto.Cipher cipher
        20: .line 211
      StackMap locals: javax.crypto.Cipher
      StackMap stack:
            new javax.security.auth.callback.PasswordCallback
            dup
            ldc "Enter SSL password: "
            iconst_0
            anewarray java.lang.Object
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            iconst_0
            invokespecial javax.security.auth.callback.PasswordCallback.<init>:(Ljava/lang/String;Z)V
            astore 6 /* pwdcb */
        start local 6 // javax.security.auth.callback.PasswordCallback pwdcb
        21: .line 213
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.cbh:Ljavax/security/auth/callback/CallbackHandler;
            iconst_1
            anewarray javax.security.auth.callback.Callback
            dup
            iconst_0
            aload 6 /* pwdcb */
            aastore
            invokeinterface javax.security.auth.callback.CallbackHandler.handle:([Ljavax/security/auth/callback/Callback;)V
        22: .line 214
            goto 40
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String byte[] java.security.KeyFactory javax.crypto.EncryptedPrivateKeyInfo javax.crypto.Cipher javax.security.auth.callback.PasswordCallback
      StackMap stack: javax.security.auth.callback.UnsupportedCallbackException
        23: astore 7 /* ucex */
        start local 7 // javax.security.auth.callback.UnsupportedCallbackException ucex
        24: .line 215
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.cbh:Ljavax/security/auth/callback/CallbackHandler;
            instanceof org.postgresql.ssl.LibPQFactory$ConsoleCallbackHandler
            ifeq 31
        25: .line 216
            ldc "Console is not available"
            aload 7 /* ucex */
            invokevirtual javax.security.auth.callback.UnsupportedCallbackException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 31
        26: .line 217
            aload 0 /* this */
            new org.postgresql.util.PSQLException
            dup
        27: .line 218
            ldc "Could not read password for SSL key file, console is not available."
            iconst_0
            anewarray java.lang.Object
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        28: .line 219
            getstatic org.postgresql.util.PSQLState.CONNECTION_FAILURE:Lorg/postgresql/util/PSQLState;
            aload 7 /* ucex */
            invokespecial org.postgresql.util.PSQLException.<init>:(Ljava/lang/String;Lorg/postgresql/util/PSQLState;Ljava/lang/Throwable;)V
        29: .line 217
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
        30: .line 220
            goto 39
        31: .line 221
      StackMap locals: javax.security.auth.callback.UnsupportedCallbackException
      StackMap stack:
            aload 0 /* this */
        32: .line 222
            new org.postgresql.util.PSQLException
            dup
        33: .line 223
            ldc "Could not read password for SSL key file by callbackhandler {0}."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        34: .line 224
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.cbh:Ljavax/security/auth/callback/CallbackHandler;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
        35: .line 223
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        36: .line 225
            getstatic org.postgresql.util.PSQLState.CONNECTION_FAILURE:Lorg/postgresql/util/PSQLState;
            aload 7 /* ucex */
        37: .line 222
            invokespecial org.postgresql.util.PSQLException.<init>:(Ljava/lang/String;Lorg/postgresql/util/PSQLState;Ljava/lang/Throwable;)V
        38: .line 221
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
        39: .line 227
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 7 // javax.security.auth.callback.UnsupportedCallbackException ucex
        40: .line 230
      StackMap locals:
      StackMap stack:
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 6 /* pwdcb */
            invokevirtual javax.security.auth.callback.PasswordCallback.getPassword:()[C
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C)V
            astore 7 /* pbeKeySpec */
        start local 7 // javax.crypto.spec.PBEKeySpec pbeKeySpec
        41: .line 231
            aload 6 /* pwdcb */
            invokevirtual javax.security.auth.callback.PasswordCallback.clearPassword:()V
        42: .line 233
            aload 4 /* ePKInfo */
            invokevirtual javax.crypto.EncryptedPrivateKeyInfo.getAlgName:()Ljava/lang/String;
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
            astore 8 /* skFac */
        start local 8 // javax.crypto.SecretKeyFactory skFac
        43: .line 234
            aload 8 /* skFac */
            aload 7 /* pbeKeySpec */
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 9 /* pbeKey */
        start local 9 // java.security.Key pbeKey
        44: .line 236
            aload 4 /* ePKInfo */
            invokevirtual javax.crypto.EncryptedPrivateKeyInfo.getAlgParameters:()Ljava/security/AlgorithmParameters;
            astore 10 /* algParams */
        start local 10 // java.security.AlgorithmParameters algParams
        45: .line 237
            aload 5 /* cipher */
            iconst_2
            aload 9 /* pbeKey */
            aload 10 /* algParams */
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/AlgorithmParameters;)V
        46: .line 239
            aload 4 /* ePKInfo */
            aload 5 /* cipher */
            invokevirtual javax.crypto.EncryptedPrivateKeyInfo.getKeySpec:(Ljavax/crypto/Cipher;)Ljava/security/spec/PKCS8EncodedKeySpec;
            astore 11 /* pkcs8KeySpec */
        start local 11 // java.security.spec.KeySpec pkcs8KeySpec
        47: .line 240
            aload 0 /* this */
            aload 3 /* kf */
            aload 11 /* pkcs8KeySpec */
            invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
            putfield org.postgresql.ssl.LazyKeyManager.key:Ljava/security/PrivateKey;
        end local 11 // java.security.spec.KeySpec pkcs8KeySpec
        end local 10 // java.security.AlgorithmParameters algParams
        end local 9 // java.security.Key pbeKey
        end local 8 // javax.crypto.SecretKeyFactory skFac
        end local 7 // javax.crypto.spec.PBEKeySpec pbeKeySpec
        48: .line 241
            goto 67
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
        49: astore 7 /* ikex */
        start local 7 // java.security.GeneralSecurityException ikex
        50: .line 242
            aload 0 /* this */
            new org.postgresql.util.PSQLException
            dup
        51: .line 243
            ldc "Could not decrypt SSL key file {0}."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.keyfile:Ljava/lang/String;
            aastore
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        52: .line 244
            getstatic org.postgresql.util.PSQLState.CONNECTION_FAILURE:Lorg/postgresql/util/PSQLState;
            aload 7 /* ikex */
            invokespecial org.postgresql.util.PSQLException.<init>:(Ljava/lang/String;Lorg/postgresql/util/PSQLState;Ljava/lang/Throwable;)V
        53: .line 242
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
        54: .line 245
            aconst_null
            areturn
        end local 7 // java.security.GeneralSecurityException ikex
        end local 6 // javax.security.auth.callback.PasswordCallback pwdcb
        end local 5 // javax.crypto.Cipher cipher
        end local 4 // javax.crypto.EncryptedPrivateKeyInfo ePKInfo
        end local 3 // java.security.KeyFactory kf
        end local 2 // byte[] keydata
        55: .line 249
      StackMap locals: org.postgresql.ssl.LazyKeyManager java.lang.String
      StackMap stack: java.io.IOException
            astore 2 /* ioex */
        start local 2 // java.io.IOException ioex
        56: .line 250
            aload 0 /* this */
            new org.postgresql.util.PSQLException
            dup
            ldc "Could not read SSL key file {0}."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.keyfile:Ljava/lang/String;
            aastore
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        57: .line 251
            getstatic org.postgresql.util.PSQLState.CONNECTION_FAILURE:Lorg/postgresql/util/PSQLState;
            aload 2 /* ioex */
            invokespecial org.postgresql.util.PSQLException.<init>:(Ljava/lang/String;Lorg/postgresql/util/PSQLState;Ljava/lang/Throwable;)V
        58: .line 250
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
        end local 2 // java.io.IOException ioex
        59: goto 67
        60: .line 252
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            astore 2 /* ex */
        start local 2 // java.security.NoSuchAlgorithmException ex
        61: .line 253
            aload 0 /* this */
            new org.postgresql.util.PSQLException
            dup
            ldc "Could not find a java cryptographic algorithm: {0}."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        62: .line 254
            aload 2 /* ex */
            invokevirtual java.security.NoSuchAlgorithmException.getMessage:()Ljava/lang/String;
            aastore
        63: .line 253
            invokestatic org.postgresql.util.GT.tr:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        64: .line 254
            getstatic org.postgresql.util.PSQLState.CONNECTION_FAILURE:Lorg/postgresql/util/PSQLState;
            aload 2 /* ex */
            invokespecial org.postgresql.util.PSQLException.<init>:(Ljava/lang/String;Lorg/postgresql/util/PSQLState;Ljava/lang/Throwable;)V
        65: .line 253
            putfield org.postgresql.ssl.LazyKeyManager.error:Lorg/postgresql/util/PSQLException;
        66: .line 255
            aconst_null
            areturn
        end local 2 // java.security.NoSuchAlgorithmException ex
        67: .line 258
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.postgresql.ssl.LazyKeyManager.key:Ljava/security/PrivateKey;
            areturn
        end local 1 // java.lang.String alias
        end local 0 // org.postgresql.ssl.LazyKeyManager this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   68     0          this  Lorg/postgresql/ssl/LazyKeyManager;
            0   68     1         alias  Ljava/lang/String;
            5    6     2       keydata  [B
           10   55     2       keydata  [B
            7   10     3            ex  Ljava/io/FileNotFoundException;
           11   55     3            kf  Ljava/security/KeyFactory;
           12   13     4  pkcs8KeySpec  Ljava/security/spec/KeySpec;
           16   55     4       ePKInfo  Ljavax/crypto/EncryptedPrivateKeyInfo;
           17   18     5        cipher  Ljavax/crypto/Cipher;
           20   55     5        cipher  Ljavax/crypto/Cipher;
           19   20     6          npex  Ljavax/crypto/NoSuchPaddingException;
           21   55     6         pwdcb  Ljavax/security/auth/callback/PasswordCallback;
           24   40     7          ucex  Ljavax/security/auth/callback/UnsupportedCallbackException;
           41   48     7    pbeKeySpec  Ljavax/crypto/spec/PBEKeySpec;
           43   48     8         skFac  Ljavax/crypto/SecretKeyFactory;
           44   48     9        pbeKey  Ljava/security/Key;
           45   48    10     algParams  Ljava/security/AlgorithmParameters;
           47   48    11  pkcs8KeySpec  Ljava/security/spec/KeySpec;
           50   55     7          ikex  Ljava/security/GeneralSecurityException;
           56   59     2          ioex  Ljava/io/IOException;
           61   67     2            ex  Ljava/security/NoSuchAlgorithmException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.io.FileNotFoundException
          11    13      14  Class java.security.spec.InvalidKeySpecException
          16    17      18  Class javax.crypto.NoSuchPaddingException
          21    22      23  Class javax.security.auth.callback.UnsupportedCallbackException
          40    48      49  Class java.security.GeneralSecurityException
           0     3      55  Class java.io.IOException
           4     9      55  Class java.io.IOException
          10    39      55  Class java.io.IOException
          40    54      55  Class java.io.IOException
           0     3      60  Class java.security.NoSuchAlgorithmException
           4     9      60  Class java.security.NoSuchAlgorithmException
          10    39      60  Class java.security.NoSuchAlgorithmException
          40    54      60  Class java.security.NoSuchAlgorithmException
    MethodParameters:
       Name  Flags
      alias  

  public java.lang.String[] getServerAliases(java.lang.String, java.security.Principal[]);
    descriptor: (Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.postgresql.ssl.LazyKeyManager this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
         0: .line 263
            iconst_0
            anewarray java.lang.String
            areturn
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String keyType
        end local 0 // org.postgresql.ssl.LazyKeyManager this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/postgresql/ssl/LazyKeyManager;
            0    1     1  keyType  Ljava/lang/String;
            0    1     2  issuers  [Ljava/security/Principal;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  
}
SourceFile: "LazyKeyManager.java"
InnerClasses:
  public ConsoleCallbackHandler = org.postgresql.ssl.LibPQFactory$ConsoleCallbackHandler of org.postgresql.ssl.LibPQFactory