final class sun.security.ssl.SunX509KeyManagerImpl extends javax.net.ssl.X509ExtendedKeyManager
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.SunX509KeyManagerImpl
  super_class: javax.net.ssl.X509ExtendedKeyManager
{
  private static final sun.security.ssl.Debug debug;
    descriptor: Lsun/security/ssl/Debug;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String[] STRING0;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.util.Map<java.lang.String, sun.security.ssl.SunX509KeyManagerImpl$X509Credentials> credentialsMap;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;>;

  private final java.util.Map<java.lang.String, java.lang.String[]> serverAliasCache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 70
            ldc "ssl"
            invokestatic sun.security.ssl.Debug.getInstance:(Ljava/lang/String;)Lsun/security/ssl/Debug;
            putstatic sun.security.ssl.SunX509KeyManagerImpl.debug:Lsun/security/ssl/Debug;
         1: .line 72
            iconst_0
            anewarray java.lang.String
            putstatic sun.security.ssl.SunX509KeyManagerImpl.STRING0:[Ljava/lang/String;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.security.KeyStore, char[]);
    descriptor: (Ljava/security/KeyStore;[C)V
    flags: (0x0000) 
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.security.KeyStore ks
        start local 2 // char[] password
         0: .line 116
            aload 0 /* this */
            invokespecial javax.net.ssl.X509ExtendedKeyManager.<init>:()V
         1: .line 120
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield sun.security.ssl.SunX509KeyManagerImpl.credentialsMap:Ljava/util/Map;
         2: .line 121
            aload 0 /* this */
         3: .line 122
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
         4: .line 121
            invokestatic java.util.Collections.synchronizedMap:(Ljava/util/Map;)Ljava/util/Map;
            putfield sun.security.ssl.SunX509KeyManagerImpl.serverAliasCache:Ljava/util/Map;
         5: .line 123
            aload 1 /* ks */
            ifnonnull 7
         6: .line 124
            return
         7: .line 127
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl java.security.KeyStore char[]
      StackMap stack:
            aload 1 /* ks */
            invokevirtual java.security.KeyStore.aliases:()Ljava/util/Enumeration;
            astore 3 /* aliases */
        start local 3 // java.util.Enumeration aliases
         8: .line 128
            goto 38
         9: .line 129
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 3 /* aliases */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* alias */
        start local 4 // java.lang.String alias
        10: .line 130
            aload 1 /* ks */
            aload 4 /* alias */
            invokevirtual java.security.KeyStore.isKeyEntry:(Ljava/lang/String;)Z
            ifne 12
        11: .line 131
            goto 38
        12: .line 133
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* ks */
            aload 4 /* alias */
            aload 2 /* password */
            invokevirtual java.security.KeyStore.getKey:(Ljava/lang/String;[C)Ljava/security/Key;
            astore 5 /* key */
        start local 5 // java.security.Key key
        13: .line 134
            aload 5 /* key */
            instanceof java.security.PrivateKey
            ifne 15
        14: .line 135
            goto 38
        15: .line 137
      StackMap locals: java.security.Key
      StackMap stack:
            aload 1 /* ks */
            aload 4 /* alias */
            invokevirtual java.security.KeyStore.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/Certificate;
            astore 6 /* certs */
        start local 6 // java.security.cert.Certificate[] certs
        16: .line 138
            aload 6 /* certs */
            ifnull 38
            aload 6 /* certs */
            arraylength
            ifeq 38
        17: .line 139
            aload 6 /* certs */
            iconst_0
            aaload
            instanceof java.security.cert.X509Certificate
            ifne 19
        18: .line 140
            goto 38
        19: .line 142
      StackMap locals: java.security.cert.Certificate[]
      StackMap stack:
            aload 6 /* certs */
            instanceof java.security.cert.X509Certificate[]
            ifne 23
        20: .line 143
            aload 6 /* certs */
            arraylength
            anewarray java.security.cert.X509Certificate
            astore 7 /* tmp */
        start local 7 // java.security.cert.Certificate[] tmp
        21: .line 144
            aload 6 /* certs */
            iconst_0
            aload 7 /* tmp */
            iconst_0
            aload 6 /* certs */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        22: .line 145
            aload 7 /* tmp */
            astore 6 /* certs */
        end local 7 // java.security.cert.Certificate[] tmp
        23: .line 148
      StackMap locals:
      StackMap stack:
            new sun.security.ssl.SunX509KeyManagerImpl$X509Credentials
            dup
            aload 5 /* key */
            checkcast java.security.PrivateKey
        24: .line 149
            aload 6 /* certs */
            checkcast java.security.cert.X509Certificate[]
        25: .line 148
            invokespecial sun.security.ssl.SunX509KeyManagerImpl$X509Credentials.<init>:(Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;)V
            astore 7 /* cred */
        start local 7 // sun.security.ssl.SunX509KeyManagerImpl$X509Credentials cred
        26: .line 150
            aload 0 /* this */
            getfield sun.security.ssl.SunX509KeyManagerImpl.credentialsMap:Ljava/util/Map;
            aload 4 /* alias */
            aload 7 /* cred */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        27: .line 151
            getstatic sun.security.ssl.SunX509KeyManagerImpl.debug:Lsun/security/ssl/Debug;
            ifnull 38
            ldc "keymanager"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 38
        28: .line 152
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "***"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        29: .line 153
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "found key for : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* alias */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        30: .line 154
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        31: goto 36
        32: .line 155
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl$X509Credentials int
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "chain ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 8 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "] = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        33: .line 156
            aload 6 /* certs */
            iload 8 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        34: .line 155
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        35: .line 154
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 8 /* i */
            aload 6 /* certs */
            arraylength
            if_icmplt 32
        end local 8 // int i
        37: .line 158
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "***"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 7 // sun.security.ssl.SunX509KeyManagerImpl$X509Credentials cred
        end local 6 // java.security.cert.Certificate[] certs
        end local 5 // java.security.Key key
        end local 4 // java.lang.String alias
        38: .line 128
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl java.security.KeyStore char[] java.util.Enumeration
      StackMap stack:
            aload 3 /* aliases */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 9
        end local 3 // java.util.Enumeration aliases
        39: .line 161
            return
        end local 2 // char[] password
        end local 1 // java.security.KeyStore ks
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   40     0      this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0   40     1        ks  Ljava/security/KeyStore;
            0   40     2  password  [C
            8   39     3   aliases  Ljava/util/Enumeration<Ljava/lang/String;>;
           10   38     4     alias  Ljava/lang/String;
           13   38     5       key  Ljava/security/Key;
           16   38     6     certs  [Ljava/security/cert/Certificate;
           21   23     7       tmp  [Ljava/security/cert/Certificate;
           26   38     7      cred  Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;
           31   37     8         i  I
    Exceptions:
      throws java.security.KeyStoreException, java.security.NoSuchAlgorithmException, java.security.UnrecoverableKeyException
    MethodParameters:
          Name  Flags
      ks        
      password  

  public java.security.cert.X509Certificate[] getCertificateChain(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String alias
         0: .line 171
            aload 1 /* alias */
            ifnonnull 2
         1: .line 172
            aconst_null
            areturn
         2: .line 174
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SunX509KeyManagerImpl.credentialsMap:Ljava/util/Map;
            aload 1 /* alias */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.SunX509KeyManagerImpl$X509Credentials
            astore 2 /* cred */
        start local 2 // sun.security.ssl.SunX509KeyManagerImpl$X509Credentials cred
         3: .line 175
            aload 2 /* cred */
            ifnonnull 5
         4: .line 176
            aconst_null
            areturn
         5: .line 178
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl$X509Credentials
      StackMap stack:
            aload 2 /* cred */
            getfield sun.security.ssl.SunX509KeyManagerImpl$X509Credentials.certificates:[Ljava/security/cert/X509Certificate;
            invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate[]
            areturn
        end local 2 // sun.security.ssl.SunX509KeyManagerImpl$X509Credentials cred
        end local 1 // java.lang.String alias
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0    6     1  alias  Ljava/lang/String;
            3    6     2   cred  Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;
    MethodParameters:
       Name  Flags
      alias  

  public java.security.PrivateKey getPrivateKey(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/PrivateKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String alias
         0: .line 187
            aload 1 /* alias */
            ifnonnull 2
         1: .line 188
            aconst_null
            areturn
         2: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SunX509KeyManagerImpl.credentialsMap:Ljava/util/Map;
            aload 1 /* alias */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.SunX509KeyManagerImpl$X509Credentials
            astore 2 /* cred */
        start local 2 // sun.security.ssl.SunX509KeyManagerImpl$X509Credentials cred
         3: .line 191
            aload 2 /* cred */
            ifnonnull 5
         4: .line 192
            aconst_null
            areturn
         5: .line 194
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl$X509Credentials
      StackMap stack:
            aload 2 /* cred */
            getfield sun.security.ssl.SunX509KeyManagerImpl$X509Credentials.privateKey:Ljava/security/PrivateKey;
            areturn
        end local 2 // sun.security.ssl.SunX509KeyManagerImpl$X509Credentials cred
        end local 1 // java.lang.String alias
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0    6     1  alias  Ljava/lang/String;
            3    6     2   cred  Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;
    MethodParameters:
       Name  Flags
      alias  

  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=6, args_size=4
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String[] keyTypes
        start local 2 // java.security.Principal[] issuers
        start local 3 // java.net.Socket socket
         0: .line 213
            aload 1 /* keyTypes */
            ifnonnull 2
         1: .line 214
            aconst_null
            areturn
         2: .line 217
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 8
         4: .line 218
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* keyTypes */
            iload 4 /* i */
            aaload
            aload 2 /* issuers */
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl.getClientAliases:(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
            astore 5 /* aliases */
        start local 5 // java.lang.String[] aliases
         5: .line 219
            aload 5 /* aliases */
            ifnull 7
            aload 5 /* aliases */
            arraylength
            ifle 7
         6: .line 220
            aload 5 /* aliases */
            iconst_0
            aaload
            areturn
        end local 5 // java.lang.String[] aliases
         7: .line 217
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 4 /* i */
            aload 1 /* keyTypes */
            arraylength
            if_icmplt 4
        end local 4 // int i
         9: .line 223
            aconst_null
            areturn
        end local 3 // java.net.Socket socket
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String[] keyTypes
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0   10     1  keyTypes  [Ljava/lang/String;
            0   10     2   issuers  [Ljava/security/Principal;
            0   10     3    socket  Ljava/net/Socket;
            3    9     4         i  I
            5    7     5   aliases  [Ljava/lang/String;
    MethodParameters:
          Name  Flags
      keyTypes  
      issuers   
      socket    

  public java.lang.String chooseEngineClientAlias(java.lang.String[], java.security.Principal[], javax.net.ssl.SSLEngine);
    descriptor: ([Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String[] keyType
        start local 2 // java.security.Principal[] issuers
        start local 3 // javax.net.ssl.SSLEngine engine
         0: .line 241
            aload 0 /* this */
            aload 1 /* keyType */
            aload 2 /* issuers */
            aconst_null
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl.chooseClientAlias:([Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;
            areturn
        end local 3 // javax.net.ssl.SSLEngine engine
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String[] keyType
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0    1     1  keyType  [Ljava/lang/String;
            0    1     2  issuers  [Ljava/security/Principal;
            0    1     3   engine  Ljavax/net/ssl/SSLEngine;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  
      engine   

  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=3, locals=5, args_size=4
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
        start local 3 // java.net.Socket socket
         0: .line 258
            aload 1 /* keyType */
            ifnonnull 2
         1: .line 259
            aconst_null
            areturn
         2: .line 264
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            ifnull 3
            aload 2 /* issuers */
            arraylength
            ifne 10
         3: .line 265
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SunX509KeyManagerImpl.serverAliasCache:Ljava/util/Map;
            aload 1 /* keyType */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 4 /* aliases */
        start local 4 // java.lang.String[] aliases
         4: .line 266
            aload 4 /* aliases */
            ifnonnull 11
         5: .line 267
            aload 0 /* this */
            aload 1 /* keyType */
            aload 2 /* issuers */
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl.getServerAliases:(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
            astore 4 /* aliases */
         6: .line 269
            aload 4 /* aliases */
            ifnonnull 8
         7: .line 270
            getstatic sun.security.ssl.SunX509KeyManagerImpl.STRING0:[Ljava/lang/String;
            astore 4 /* aliases */
         8: .line 272
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.SunX509KeyManagerImpl.serverAliasCache:Ljava/util/Map;
            aload 1 /* keyType */
            aload 4 /* aliases */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 274
            goto 11
        end local 4 // java.lang.String[] aliases
        10: .line 275
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* keyType */
            aload 2 /* issuers */
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl.getServerAliases:(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
            astore 4 /* aliases */
        start local 4 // java.lang.String[] aliases
        11: .line 277
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 4 /* aliases */
            ifnull 13
            aload 4 /* aliases */
            arraylength
            ifle 13
        12: .line 278
            aload 4 /* aliases */
            iconst_0
            aaload
            areturn
        13: .line 280
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // java.lang.String[] aliases
        end local 3 // java.net.Socket socket
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String keyType
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0     this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0   14     1  keyType  Ljava/lang/String;
            0   14     2  issuers  [Ljava/security/Principal;
            0   14     3   socket  Ljava/net/Socket;
            4   10     4  aliases  [Ljava/lang/String;
           11   14     4  aliases  [Ljava/lang/String;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  
      socket   

  public java.lang.String chooseEngineServerAlias(java.lang.String, java.security.Principal[], javax.net.ssl.SSLEngine);
    descriptor: (Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
        start local 3 // javax.net.ssl.SSLEngine engine
         0: .line 298
            aload 0 /* this */
            aload 1 /* keyType */
            aload 2 /* issuers */
            aconst_null
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl.chooseServerAlias:(Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;
            areturn
        end local 3 // javax.net.ssl.SSLEngine engine
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String keyType
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0    1     1  keyType  Ljava/lang/String;
            0    1     2  issuers  [Ljava/security/Principal;
            0    1     3   engine  Ljavax/net/ssl/SSLEngine;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  
      engine   

  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=3, locals=3, args_size=3
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
         0: .line 308
            aload 0 /* this */
            aload 1 /* keyType */
            aload 2 /* issuers */
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl.getAliases:(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
            areturn
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String keyType
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0    1     1  keyType  Ljava/lang/String;
            0    1     2  issuers  [Ljava/security/Principal;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  

  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=3, locals=3, args_size=3
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
         0: .line 318
            aload 0 /* this */
            aload 1 /* keyType */
            aload 2 /* issuers */
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl.getAliases:(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
            areturn
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String keyType
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0    1     1  keyType  Ljava/lang/String;
            0    1     2  issuers  [Ljava/security/Principal;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  

  private java.lang.String[] getAliases(java.lang.String, java.security.Principal[]);
    descriptor: (Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=13, args_size=3
        start local 0 // sun.security.ssl.SunX509KeyManagerImpl this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
         0: .line 329
            aload 1 /* keyType */
            ifnonnull 2
         1: .line 330
            aconst_null
            areturn
         2: .line 332
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            ifnonnull 4
         3: .line 333
            iconst_0
            anewarray javax.security.auth.x500.X500Principal
            astore 2 /* issuers */
         4: .line 335
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            instanceof javax.security.auth.x500.X500Principal[]
            ifne 6
         5: .line 337
            aload 2 /* issuers */
            invokestatic sun.security.ssl.SunX509KeyManagerImpl.convertPrincipals:([Ljava/security/Principal;)[Ljavax/security/auth/x500/X500Principal;
            astore 2 /* issuers */
         6: .line 340
      StackMap locals:
      StackMap stack:
            aload 1 /* keyType */
            ldc "_"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 11
         7: .line 341
            aload 1 /* keyType */
            bipush 95
            invokevirtual java.lang.String.indexOf:(I)I
            istore 4 /* k */
        start local 4 // int k
         8: .line 342
            aload 1 /* keyType */
            iload 4 /* k */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* sigType */
        start local 3 // java.lang.String sigType
         9: .line 343
            aload 1 /* keyType */
            iconst_0
            iload 4 /* k */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 1 /* keyType */
        end local 4 // int k
        10: .line 344
            goto 12
        end local 3 // java.lang.String sigType
        11: .line 345
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* sigType */
        start local 3 // java.lang.String sigType
        12: .line 348
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* issuers */
            checkcast javax.security.auth.x500.X500Principal[]
            astore 4 /* x500Issuers */
        start local 4 // javax.security.auth.x500.X500Principal[] x500Issuers
        13: .line 350
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* aliases */
        start local 5 // java.util.List aliases
        14: .line 353
            aload 0 /* this */
            getfield sun.security.ssl.SunX509KeyManagerImpl.credentialsMap:Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 51
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl java.lang.String java.security.Principal[] java.lang.String javax.security.auth.x500.X500Principal[] java.util.List top java.util.Iterator
      StackMap stack:
        15: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 6 /* entry */
        start local 6 // java.util.Map$Entry entry
        16: .line 355
            aload 6 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 8 /* alias */
        start local 8 // java.lang.String alias
        17: .line 356
            aload 6 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast sun.security.ssl.SunX509KeyManagerImpl$X509Credentials
            astore 9 /* credentials */
        start local 9 // sun.security.ssl.SunX509KeyManagerImpl$X509Credentials credentials
        18: .line 357
            aload 9 /* credentials */
            getfield sun.security.ssl.SunX509KeyManagerImpl$X509Credentials.certificates:[Ljava/security/cert/X509Certificate;
            astore 10 /* certs */
        start local 10 // java.security.cert.X509Certificate[] certs
        19: .line 359
            aload 1 /* keyType */
            aload 10 /* certs */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 21
        20: .line 360
            goto 51
        21: .line 362
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl java.lang.String java.security.Principal[] java.lang.String javax.security.auth.x500.X500Principal[] java.util.List java.util.Map$Entry java.util.Iterator java.lang.String sun.security.ssl.SunX509KeyManagerImpl$X509Credentials java.security.cert.X509Certificate[]
      StackMap stack:
            aload 3 /* sigType */
            ifnull 35
        22: .line 363
            aload 10 /* certs */
            arraylength
            iconst_1
            if_icmple 28
        23: .line 365
            aload 3 /* sigType */
        24: .line 366
            aload 10 /* certs */
            iconst_1
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
        25: .line 365
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
        26: .line 366
            ifne 35
        27: .line 367
            goto 51
        28: .line 373
      StackMap locals:
      StackMap stack:
            aload 10 /* certs */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getSigAlgName:()Ljava/lang/String;
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
        29: .line 372
            astore 11 /* sigAlgName */
        start local 11 // java.lang.String sigAlgName
        30: .line 374
            new java.lang.StringBuilder
            dup
            ldc "WITH"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        31: .line 375
            aload 3 /* sigType */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        32: .line 374
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 12 /* pattern */
        start local 12 // java.lang.String pattern
        33: .line 376
            aload 11 /* sigAlgName */
            aload 12 /* pattern */
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 35
        34: .line 377
            goto 51
        end local 12 // java.lang.String pattern
        end local 11 // java.lang.String sigAlgName
        35: .line 382
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            arraylength
            ifne 40
        36: .line 384
            aload 5 /* aliases */
            aload 8 /* alias */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        37: .line 385
            getstatic sun.security.ssl.SunX509KeyManagerImpl.debug:Lsun/security/ssl/Debug;
            ifnull 51
            ldc "keymanager"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 51
        38: .line 386
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "matching alias: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* alias */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        39: .line 388
            goto 51
        40: .line 390
      StackMap locals:
      StackMap stack:
            aload 9 /* credentials */
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl$X509Credentials.getIssuerX500Principals:()Ljava/util/Set;
        41: .line 389
            astore 11 /* certIssuers */
        start local 11 // java.util.Set certIssuers
        42: .line 391
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        43: goto 50
        44: .line 392
      StackMap locals: java.util.Set int
      StackMap stack:
            aload 11 /* certIssuers */
            aload 2 /* issuers */
            iload 12 /* i */
            aaload
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 49
        45: .line 393
            aload 5 /* aliases */
            aload 8 /* alias */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        46: .line 394
            getstatic sun.security.ssl.SunX509KeyManagerImpl.debug:Lsun/security/ssl/Debug;
            ifnull 51
            ldc "keymanager"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 51
        47: .line 395
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "matching alias: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* alias */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        48: .line 397
            goto 51
        49: .line 391
      StackMap locals:
      StackMap stack:
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        50: iload 12 /* i */
            aload 4 /* x500Issuers */
            arraylength
            if_icmplt 44
        end local 12 // int i
        end local 11 // java.util.Set certIssuers
        end local 10 // java.security.cert.X509Certificate[] certs
        end local 9 // sun.security.ssl.SunX509KeyManagerImpl$X509Credentials credentials
        end local 8 // java.lang.String alias
        end local 6 // java.util.Map$Entry entry
        51: .line 352
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl java.lang.String java.security.Principal[] java.lang.String javax.security.auth.x500.X500Principal[] java.util.List top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        52: .line 403
            aload 5 /* aliases */
            getstatic sun.security.ssl.SunX509KeyManagerImpl.STRING0:[Ljava/lang/String;
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 6 /* aliasStrings */
        start local 6 // java.lang.String[] aliasStrings
        53: .line 404
            aload 6 /* aliasStrings */
            arraylength
            ifne 54
            aconst_null
            goto 55
      StackMap locals: sun.security.ssl.SunX509KeyManagerImpl java.lang.String java.security.Principal[] java.lang.String javax.security.auth.x500.X500Principal[] java.util.List java.lang.String[]
      StackMap stack:
        54: aload 6 /* aliasStrings */
      StackMap locals:
      StackMap stack: java.lang.String[]
        55: areturn
        end local 6 // java.lang.String[] aliasStrings
        end local 5 // java.util.List aliases
        end local 4 // javax.security.auth.x500.X500Principal[] x500Issuers
        end local 3 // java.lang.String sigType
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String keyType
        end local 0 // sun.security.ssl.SunX509KeyManagerImpl this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   56     0          this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0   56     1       keyType  Ljava/lang/String;
            0   56     2       issuers  [Ljava/security/Principal;
            9   11     3       sigType  Ljava/lang/String;
           12   56     3       sigType  Ljava/lang/String;
            8   10     4             k  I
           13   56     4   x500Issuers  [Ljavax/security/auth/x500/X500Principal;
           14   56     5       aliases  Ljava/util/List<Ljava/lang/String;>;
           16   51     6         entry  Ljava/util/Map$Entry<Ljava/lang/String;Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;>;
           17   51     8         alias  Ljava/lang/String;
           18   51     9   credentials  Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;
           19   51    10         certs  [Ljava/security/cert/X509Certificate;
           30   35    11    sigAlgName  Ljava/lang/String;
           33   35    12       pattern  Ljava/lang/String;
           42   51    11   certIssuers  Ljava/util/Set<Ljavax/security/auth/x500/X500Principal;>;
           43   51    12             i  I
           53   56     6  aliasStrings  [Ljava/lang/String;
    MethodParameters:
         Name  Flags
      keyType  
      issuers  

  private static javax.security.auth.x500.X500Principal[] convertPrincipals(java.security.Principal[]);
    descriptor: ([Ljava/security/Principal;)[Ljavax/security/auth/x500/X500Principal;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // java.security.Principal[] principals
         0: .line 412
            new java.util.ArrayList
            dup
            aload 0 /* principals */
            arraylength
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 1 /* list */
        start local 1 // java.util.List list
         1: .line 413
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 11
         3: .line 414
      StackMap locals: java.util.List int
      StackMap stack:
            aload 0 /* principals */
            iload 2 /* i */
            aaload
            astore 3 /* p */
        start local 3 // java.security.Principal p
         4: .line 415
            aload 3 /* p */
            instanceof javax.security.auth.x500.X500Principal
            ifeq 7
         5: .line 416
            aload 1 /* list */
            aload 3 /* p */
            checkcast javax.security.auth.x500.X500Principal
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 417
            goto 10
         7: .line 419
      StackMap locals: java.security.Principal
      StackMap stack:
            aload 1 /* list */
            new javax.security.auth.x500.X500Principal
            dup
            aload 3 /* p */
            invokeinterface java.security.Principal.getName:()Ljava/lang/String;
            invokespecial javax.security.auth.x500.X500Principal.<init>:(Ljava/lang/String;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 420
            goto 10
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
         9: pop
        end local 3 // java.security.Principal p
        10: .line 413
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 2 /* i */
            aload 0 /* principals */
            arraylength
            if_icmplt 3
        end local 2 // int i
        12: .line 425
            aload 1 /* list */
            aload 1 /* list */
            invokeinterface java.util.List.size:()I
            anewarray javax.security.auth.x500.X500Principal
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.security.auth.x500.X500Principal[]
            areturn
        end local 1 // java.util.List list
        end local 0 // java.security.Principal[] principals
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0  principals  [Ljava/security/Principal;
            1   13     1        list  Ljava/util/List<Ljavax/security/auth/x500/X500Principal;>;
            2   12     2           i  I
            4   10     3           p  Ljava/security/Principal;
      Exception table:
        from    to  target  type
           7     8       9  Class java.lang.IllegalArgumentException
    MethodParameters:
            Name  Flags
      principals  
}
SourceFile: "SunX509KeyManagerImpl.java"
NestMembers:
  sun.security.ssl.SunX509KeyManagerImpl$X509Credentials
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  private X509Credentials = sun.security.ssl.SunX509KeyManagerImpl$X509Credentials of sun.security.ssl.SunX509KeyManagerImpl