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 java.util.Map<java.lang.String, java.lang.String[]> serverAliasCache;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    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 119
            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 120
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield sun.security.ssl.SunX509KeyManagerImpl.serverAliasCache:Ljava/util/Map;
         3: .line 121
            aload 1 /* ks */
            ifnonnull 5
         4: .line 122
            return
         5: .line 125
      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
         6: .line 126
            goto 36
         7: .line 127
      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
         8: .line 128
            aload 1 /* ks */
            aload 4 /* alias */
            invokevirtual java.security.KeyStore.isKeyEntry:(Ljava/lang/String;)Z
            ifne 10
         9: .line 129
            goto 36
        10: .line 131
      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
        11: .line 132
            aload 5 /* key */
            instanceof java.security.PrivateKey
            ifne 13
        12: .line 133
            goto 36
        13: .line 135
      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
        14: .line 136
            aload 6 /* certs */
            ifnull 36
            aload 6 /* certs */
            arraylength
            ifeq 36
        15: .line 137
            aload 6 /* certs */
            iconst_0
            aaload
            instanceof java.security.cert.X509Certificate
            ifne 17
        16: .line 138
            goto 36
        17: .line 140
      StackMap locals: java.security.cert.Certificate[]
      StackMap stack:
            aload 6 /* certs */
            instanceof java.security.cert.X509Certificate[]
            ifne 21
        18: .line 141
            aload 6 /* certs */
            arraylength
            anewarray java.security.cert.X509Certificate
            astore 7 /* tmp */
        start local 7 // java.security.cert.Certificate[] tmp
        19: .line 142
            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
        20: .line 143
            aload 7 /* tmp */
            astore 6 /* certs */
        end local 7 // java.security.cert.Certificate[] tmp
        21: .line 146
      StackMap locals:
      StackMap stack:
            new sun.security.ssl.SunX509KeyManagerImpl$X509Credentials
            dup
            aload 5 /* key */
            checkcast java.security.PrivateKey
        22: .line 147
            aload 6 /* certs */
            checkcast java.security.cert.X509Certificate[]
        23: .line 146
            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
        24: .line 148
            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
        25: .line 149
            getstatic sun.security.ssl.SunX509KeyManagerImpl.debug:Lsun/security/ssl/Debug;
            ifnull 36
            ldc "keymanager"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 36
        26: .line 150
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "***"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        27: .line 151
            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
        28: .line 152
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        29: goto 34
        30: .line 153
      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;
        31: .line 154
            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;
        32: .line 153
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        33: .line 152
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        34: iload 8 /* i */
            aload 6 /* certs */
            arraylength
            if_icmplt 30
        end local 8 // int i
        35: .line 156
            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
        36: .line 126
      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 7
        end local 3 // java.util.Enumeration aliases
        37: .line 159
            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   38     0      this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0   38     1        ks  Ljava/security/KeyStore;
            0   38     2  password  [C
            6   37     3   aliases  Ljava/util/Enumeration<Ljava/lang/String;>;
            8   36     4     alias  Ljava/lang/String;
           11   36     5       key  Ljava/security/Key;
           14   36     6     certs  [Ljava/security/cert/Certificate;
           19   21     7       tmp  [Ljava/security/cert/Certificate;
           24   36     7      cred  Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;
           29   35     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 168
            aload 1 /* alias */
            ifnonnull 2
         1: .line 169
            aconst_null
            areturn
         2: .line 171
      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 172
            aload 2 /* cred */
            ifnonnull 5
         4: .line 173
            aconst_null
            areturn
         5: .line 175
      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 183
            aload 1 /* alias */
            ifnonnull 2
         1: .line 184
            aconst_null
            areturn
         2: .line 186
      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 187
            aload 2 /* cred */
            ifnonnull 5
         4: .line 188
            aconst_null
            areturn
         5: .line 190
      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 208
            aload 1 /* keyTypes */
            ifnonnull 2
         1: .line 209
            aconst_null
            areturn
         2: .line 212
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 8
         4: .line 213
      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 214
            aload 5 /* aliases */
            ifnull 7
            aload 5 /* aliases */
            arraylength
            ifle 7
         6: .line 215
            aload 5 /* aliases */
            iconst_0
            aaload
            areturn
        end local 5 // java.lang.String[] aliases
         7: .line 212
      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 218
            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 235
            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 251
            aload 1 /* keyType */
            ifnonnull 2
         1: .line 252
            aconst_null
            areturn
         2: .line 257
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            ifnull 3
            aload 2 /* issuers */
            arraylength
            ifne 10
         3: .line 258
      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 259
            aload 4 /* aliases */
            ifnonnull 11
         5: .line 260
            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 262
            aload 4 /* aliases */
            ifnonnull 8
         7: .line 263
            getstatic sun.security.ssl.SunX509KeyManagerImpl.STRING0:[Ljava/lang/String;
            astore 4 /* aliases */
         8: .line 265
      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 267
            goto 11
        end local 4 // java.lang.String[] aliases
        10: .line 268
      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 270
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 4 /* aliases */
            ifnull 13
            aload 4 /* aliases */
            arraylength
            ifle 13
        12: .line 271
            aload 4 /* aliases */
            iconst_0
            aaload
            areturn
        13: .line 273
      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 290
            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 299
            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 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  

  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 319
            aload 1 /* keyType */
            ifnonnull 2
         1: .line 320
            aconst_null
            areturn
         2: .line 322
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            ifnonnull 4
         3: .line 323
            iconst_0
            anewarray javax.security.auth.x500.X500Principal
            astore 2 /* issuers */
         4: .line 325
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            instanceof javax.security.auth.x500.X500Principal[]
            ifne 6
         5: .line 327
            aload 2 /* issuers */
            invokestatic sun.security.ssl.SunX509KeyManagerImpl.convertPrincipals:([Ljava/security/Principal;)[Ljavax/security/auth/x500/X500Principal;
            astore 2 /* issuers */
         6: .line 330
      StackMap locals:
      StackMap stack:
            aload 1 /* keyType */
            ldc "_"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 11
         7: .line 331
            aload 1 /* keyType */
            ldc "_"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 4 /* k */
        start local 4 // int k
         8: .line 332
            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 333
            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 334
            goto 12
        end local 3 // java.lang.String sigType
        11: .line 335
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* sigType */
        start local 3 // java.lang.String sigType
        12: .line 338
      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 340
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* aliases */
        start local 5 // java.util.List aliases
        14: .line 343
            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 46
      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 345
            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 346
            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 347
            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 349
            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 350
            goto 46
        21: .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 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 30
        22: .line 353
            aload 10 /* certs */
            arraylength
            iconst_1
            if_icmple 25
        23: .line 355
            aload 3 /* sigType */
            aload 10 /* certs */
            iconst_1
            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 30
        24: .line 356
            goto 46
        25: .line 362
      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;
        26: .line 361
            astore 11 /* sigAlgName */
        start local 11 // java.lang.String sigAlgName
        27: .line 363
            new java.lang.StringBuilder
            dup
            ldc "WITH"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            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;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 12 /* pattern */
        start local 12 // java.lang.String pattern
        28: .line 364
            aload 11 /* sigAlgName */
            aload 12 /* pattern */
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 30
        29: .line 365
            goto 46
        end local 12 // java.lang.String pattern
        end local 11 // java.lang.String sigAlgName
        30: .line 370
      StackMap locals:
      StackMap stack:
            aload 2 /* issuers */
            arraylength
            ifne 35
        31: .line 372
            aload 5 /* aliases */
            aload 8 /* alias */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        32: .line 373
            getstatic sun.security.ssl.SunX509KeyManagerImpl.debug:Lsun/security/ssl/Debug;
            ifnull 46
            ldc "keymanager"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 46
        33: .line 374
            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
        34: .line 376
            goto 46
        35: .line 378
      StackMap locals:
      StackMap stack:
            aload 9 /* credentials */
            invokevirtual sun.security.ssl.SunX509KeyManagerImpl$X509Credentials.getIssuerX500Principals:()Ljava/util/Set;
        36: .line 377
            astore 11 /* certIssuers */
        start local 11 // java.util.Set certIssuers
        37: .line 379
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        38: goto 45
        39: .line 380
      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 44
        40: .line 381
            aload 5 /* aliases */
            aload 8 /* alias */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        41: .line 382
            getstatic sun.security.ssl.SunX509KeyManagerImpl.debug:Lsun/security/ssl/Debug;
            ifnull 46
            ldc "keymanager"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 46
        42: .line 383
            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
        43: .line 385
            goto 46
        44: .line 379
      StackMap locals:
      StackMap stack:
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        45: iload 12 /* i */
            aload 4 /* x500Issuers */
            arraylength
            if_icmplt 39
        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
        46: .line 342
      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
        47: .line 391
            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
        48: .line 392
            aload 6 /* aliasStrings */
            arraylength
            ifne 49
            aconst_null
            goto 50
      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:
        49: aload 6 /* aliasStrings */
      StackMap locals:
      StackMap stack: java.lang.String[]
        50: 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   51     0          this  Lsun/security/ssl/SunX509KeyManagerImpl;
            0   51     1       keyType  Ljava/lang/String;
            0   51     2       issuers  [Ljava/security/Principal;
            9   11     3       sigType  Ljava/lang/String;
           12   51     3       sigType  Ljava/lang/String;
            8   10     4             k  I
           13   51     4   x500Issuers  [Ljavax/security/auth/x500/X500Principal;
           14   51     5       aliases  Ljava/util/List<Ljava/lang/String;>;
           16   46     6         entry  Ljava/util/Map$Entry<Ljava/lang/String;Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;>;
           17   46     8         alias  Ljava/lang/String;
           18   46     9   credentials  Lsun/security/ssl/SunX509KeyManagerImpl$X509Credentials;
           19   46    10         certs  [Ljava/security/cert/X509Certificate;
           27   30    11    sigAlgName  Ljava/lang/String;
           28   30    12       pattern  Ljava/lang/String;
           37   46    11   certIssuers  Ljava/util/Set<Ljavax/security/auth/x500/X500Principal;>;
           38   46    12             i  I
           48   51     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 400
            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 401
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 11
         3: .line 402
      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 403
            aload 3 /* p */
            instanceof javax.security.auth.x500.X500Principal
            ifeq 7
         5: .line 404
            aload 1 /* list */
            aload 3 /* p */
            checkcast javax.security.auth.x500.X500Principal
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 405
            goto 10
         7: .line 407
      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 408
            goto 10
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
         9: pop
        end local 3 // java.security.Principal p
        10: .line 401
      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 413
            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