class org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate implements javax.net.ssl.X509KeyManager
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate
  super_class: java.lang.Object
{
  private final javax.net.ssl.X509KeyManager keyManager;
    descriptor: Ljavax/net/ssl/X509KeyManager;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.http.conn.ssl.PrivateKeyStrategy aliasStrategy;
    descriptor: Lorg/apache/http/conn/ssl/PrivateKeyStrategy;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(javax.net.ssl.X509KeyManager, org.apache.http.conn.ssl.PrivateKeyStrategy);
    descriptor: (Ljavax/net/ssl/X509KeyManager;Lorg/apache/http/conn/ssl/PrivateKeyStrategy;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
        start local 1 // javax.net.ssl.X509KeyManager keyManager
        start local 2 // org.apache.http.conn.ssl.PrivateKeyStrategy aliasStrategy
         0: .line 209
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 210
            aload 0 /* this */
            aload 1 /* keyManager */
            putfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
         2: .line 211
            aload 0 /* this */
            aload 2 /* aliasStrategy */
            putfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.aliasStrategy:Lorg/apache/http/conn/ssl/PrivateKeyStrategy;
         3: .line 212
            return
        end local 2 // org.apache.http.conn.ssl.PrivateKeyStrategy aliasStrategy
        end local 1 // javax.net.ssl.X509KeyManager keyManager
        end local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/apache/http/conn/ssl/SSLContextBuilder$KeyManagerDelegate;
            0    4     1     keyManager  Ljavax/net/ssl/X509KeyManager;
            0    4     2  aliasStrategy  Lorg/apache/http/conn/ssl/PrivateKeyStrategy;
    MethodParameters:
               Name  Flags
      keyManager     final
      aliasStrategy  final

  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 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
         0: .line 217
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
            aload 1 /* keyType */
            aload 2 /* issuers */
            invokeinterface javax.net.ssl.X509KeyManager.getClientAliases:(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 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/http/conn/ssl/SSLContextBuilder$KeyManagerDelegate;
            0    1     1  keyType  Ljava/lang/String;
            0    1     2  issuers  [Ljava/security/Principal;
    MethodParameters:
         Name  Flags
      keyType  final
      issuers  final

  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=7, locals=14, args_size=4
        start local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
        start local 1 // java.lang.String[] keyTypes
        start local 2 // java.security.Principal[] issuers
        start local 3 // java.net.Socket socket
         0: .line 223
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 4 /* validAliases */
        start local 4 // java.util.Map validAliases
         1: .line 224
            aload 1 /* keyTypes */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 13
      StackMap locals: org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate java.lang.String[] java.security.Principal[] java.net.Socket java.util.Map top int int java.lang.String[]
      StackMap stack:
         2: aload 8
            iload 6
            aaload
            astore 5 /* keyType */
        start local 5 // java.lang.String keyType
         3: .line 225
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
            aload 5 /* keyType */
            aload 2 /* issuers */
            invokeinterface javax.net.ssl.X509KeyManager.getClientAliases:(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
            astore 9 /* aliases */
        start local 9 // java.lang.String[] aliases
         4: .line 226
            aload 9 /* aliases */
            ifnull 12
         5: .line 227
            aload 9 /* aliases */
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 11
      StackMap locals: org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate java.lang.String[] java.security.Principal[] java.net.Socket java.util.Map java.lang.String int int java.lang.String[] java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         6: aload 13
            iload 11
            aaload
            astore 10 /* alias */
        start local 10 // java.lang.String alias
         7: .line 228
            aload 4 /* validAliases */
            aload 10 /* alias */
         8: .line 229
            new org.apache.http.conn.ssl.PrivateKeyDetails
            dup
            aload 5 /* keyType */
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
            aload 10 /* alias */
            invokeinterface javax.net.ssl.X509KeyManager.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
            invokespecial org.apache.http.conn.ssl.PrivateKeyDetails.<init>:(Ljava/lang/String;[Ljava/security/cert/X509Certificate;)V
         9: .line 228
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 10 // java.lang.String alias
        10: .line 227
            iinc 11 1
      StackMap locals:
      StackMap stack:
        11: iload 11
            iload 12
            if_icmplt 6
        end local 9 // java.lang.String[] aliases
        end local 5 // java.lang.String keyType
        12: .line 224
      StackMap locals: org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate java.lang.String[] java.security.Principal[] java.net.Socket java.util.Map top int int java.lang.String[]
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        13: iload 6
            iload 7
            if_icmplt 2
        14: .line 233
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.aliasStrategy:Lorg/apache/http/conn/ssl/PrivateKeyStrategy;
            aload 4 /* validAliases */
            aload 3 /* socket */
            invokeinterface org.apache.http.conn.ssl.PrivateKeyStrategy.chooseAlias:(Ljava/util/Map;Ljava/net/Socket;)Ljava/lang/String;
            areturn
        end local 4 // java.util.Map validAliases
        end local 3 // java.net.Socket socket
        end local 2 // java.security.Principal[] issuers
        end local 1 // java.lang.String[] keyTypes
        end local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lorg/apache/http/conn/ssl/SSLContextBuilder$KeyManagerDelegate;
            0   15     1      keyTypes  [Ljava/lang/String;
            0   15     2       issuers  [Ljava/security/Principal;
            0   15     3        socket  Ljava/net/Socket;
            1   15     4  validAliases  Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/conn/ssl/PrivateKeyDetails;>;
            3   12     5       keyType  Ljava/lang/String;
            4   12     9       aliases  [Ljava/lang/String;
            7   10    10         alias  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      keyTypes  final
      issuers   final
      socket    final

  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 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
         0: .line 239
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
            aload 1 /* keyType */
            aload 2 /* issuers */
            invokeinterface javax.net.ssl.X509KeyManager.getServerAliases:(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 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/http/conn/ssl/SSLContextBuilder$KeyManagerDelegate;
            0    1     1  keyType  Ljava/lang/String;
            0    1     2  issuers  [Ljava/security/Principal;
    MethodParameters:
         Name  Flags
      keyType  final
      issuers  final

  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=7, locals=10, args_size=4
        start local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
        start local 1 // java.lang.String keyType
        start local 2 // java.security.Principal[] issuers
        start local 3 // java.net.Socket socket
         0: .line 245
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 4 /* validAliases */
        start local 4 // java.util.Map validAliases
         1: .line 246
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
            aload 1 /* keyType */
            aload 2 /* issuers */
            invokeinterface javax.net.ssl.X509KeyManager.getServerAliases:(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;
            astore 5 /* aliases */
        start local 5 // java.lang.String[] aliases
         2: .line 247
            aload 5 /* aliases */
            ifnull 10
         3: .line 248
            aload 5 /* aliases */
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 9
      StackMap locals: org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate java.lang.String java.security.Principal[] java.net.Socket java.util.Map java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         4: aload 9
            iload 7
            aaload
            astore 6 /* alias */
        start local 6 // java.lang.String alias
         5: .line 249
            aload 4 /* validAliases */
            aload 6 /* alias */
         6: .line 250
            new org.apache.http.conn.ssl.PrivateKeyDetails
            dup
            aload 1 /* keyType */
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
            aload 6 /* alias */
            invokeinterface javax.net.ssl.X509KeyManager.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
            invokespecial org.apache.http.conn.ssl.PrivateKeyDetails.<init>:(Ljava/lang/String;[Ljava/security/cert/X509Certificate;)V
         7: .line 249
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // java.lang.String alias
         8: .line 248
            iinc 7 1
      StackMap locals:
      StackMap stack:
         9: iload 7
            iload 8
            if_icmplt 4
        10: .line 253
      StackMap locals: org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate java.lang.String java.security.Principal[] java.net.Socket java.util.Map java.lang.String[]
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.aliasStrategy:Lorg/apache/http/conn/ssl/PrivateKeyStrategy;
            aload 4 /* validAliases */
            aload 3 /* socket */
            invokeinterface org.apache.http.conn.ssl.PrivateKeyStrategy.chooseAlias:(Ljava/util/Map;Ljava/net/Socket;)Ljava/lang/String;
            areturn
        end local 5 // java.lang.String[] aliases
        end local 4 // java.util.Map validAliases
        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.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0          this  Lorg/apache/http/conn/ssl/SSLContextBuilder$KeyManagerDelegate;
            0   11     1       keyType  Ljava/lang/String;
            0   11     2       issuers  [Ljava/security/Principal;
            0   11     3        socket  Ljava/net/Socket;
            1   11     4  validAliases  Ljava/util/Map<Ljava/lang/String;Lorg/apache/http/conn/ssl/PrivateKeyDetails;>;
            2   11     5       aliases  [Ljava/lang/String;
            5    8     6         alias  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      keyType  final
      issuers  final
      socket   final

  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=2, args_size=2
        start local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
        start local 1 // java.lang.String alias
         0: .line 258
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
            aload 1 /* alias */
            invokeinterface javax.net.ssl.X509KeyManager.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
            areturn
        end local 1 // java.lang.String alias
        end local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/apache/http/conn/ssl/SSLContextBuilder$KeyManagerDelegate;
            0    1     1  alias  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      alias  final

  public java.security.PrivateKey getPrivateKey(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/PrivateKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
        start local 1 // java.lang.String alias
         0: .line 263
            aload 0 /* this */
            getfield org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate.keyManager:Ljavax/net/ssl/X509KeyManager;
            aload 1 /* alias */
            invokeinterface javax.net.ssl.X509KeyManager.getPrivateKey:(Ljava/lang/String;)Ljava/security/PrivateKey;
            areturn
        end local 1 // java.lang.String alias
        end local 0 // org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/apache/http/conn/ssl/SSLContextBuilder$KeyManagerDelegate;
            0    1     1  alias  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      alias  final
}
SourceFile: "SSLContextBuilder.java"
NestHost: org.apache.http.conn.ssl.SSLContextBuilder
InnerClasses:
  KeyManagerDelegate = org.apache.http.conn.ssl.SSLContextBuilder$KeyManagerDelegate of org.apache.http.conn.ssl.SSLContextBuilder