final class sun.security.ssl.X509Authentication$X509PossessionGenerator implements sun.security.ssl.SSLPossessionGenerator
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.X509Authentication$X509PossessionGenerator
  super_class: java.lang.Object
{
  private final java.lang.String[] keyTypes;
    descriptor: [Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private void <init>(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.ssl.X509Authentication$X509PossessionGenerator this
        start local 1 // java.lang.String[] keyTypes
         0: .line 198
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 199
            aload 0 /* this */
            aload 1 /* keyTypes */
            putfield sun.security.ssl.X509Authentication$X509PossessionGenerator.keyTypes:[Ljava/lang/String;
         2: .line 200
            return
        end local 1 // java.lang.String[] keyTypes
        end local 0 // sun.security.ssl.X509Authentication$X509PossessionGenerator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lsun/security/ssl/X509Authentication$X509PossessionGenerator;
            0    3     1  keyTypes  [Ljava/lang/String;
    MethodParameters:
          Name  Flags
      keyTypes  

  public sun.security.ssl.SSLPossession createPossession(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLPossession;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // sun.security.ssl.X509Authentication$X509PossessionGenerator this
        start local 1 // sun.security.ssl.HandshakeContext context
         0: .line 204
            aload 1 /* context */
            getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
            getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
            ifeq 11
         1: .line 205
            aload 0 /* this */
            getfield sun.security.ssl.X509Authentication$X509PossessionGenerator.keyTypes:[Ljava/lang/String;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 9
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.HandshakeContext top int int java.lang.String[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* keyType */
        start local 2 // java.lang.String keyType
         3: .line 206
            aload 0 /* this */
         4: .line 207
            aload 1 /* context */
            checkcast sun.security.ssl.ClientHandshakeContext
            aload 2 /* keyType */
         5: .line 206
            invokevirtual sun.security.ssl.X509Authentication$X509PossessionGenerator.createClientPossession:(Lsun/security/ssl/ClientHandshakeContext;Ljava/lang/String;)Lsun/security/ssl/SSLPossession;
            astore 6 /* poss */
        start local 6 // sun.security.ssl.SSLPossession poss
         6: .line 208
            aload 6 /* poss */
            ifnull 8
         7: .line 209
            aload 6 /* poss */
            areturn
        end local 6 // sun.security.ssl.SSLPossession poss
        end local 2 // java.lang.String keyType
         8: .line 205
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         9: iload 3
            iload 4
            if_icmplt 2
        10: .line 212
            goto 20
        11: .line 213
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.HandshakeContext
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.X509Authentication$X509PossessionGenerator.keyTypes:[Ljava/lang/String;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 19
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.HandshakeContext top int int java.lang.String[]
      StackMap stack:
        12: aload 5
            iload 3
            aaload
            astore 2 /* keyType */
        start local 2 // java.lang.String keyType
        13: .line 214
            aload 0 /* this */
        14: .line 215
            aload 1 /* context */
            checkcast sun.security.ssl.ServerHandshakeContext
            aload 2 /* keyType */
        15: .line 214
            invokevirtual sun.security.ssl.X509Authentication$X509PossessionGenerator.createServerPossession:(Lsun/security/ssl/ServerHandshakeContext;Ljava/lang/String;)Lsun/security/ssl/SSLPossession;
            astore 6 /* poss */
        start local 6 // sun.security.ssl.SSLPossession poss
        16: .line 216
            aload 6 /* poss */
            ifnull 18
        17: .line 217
            aload 6 /* poss */
            areturn
        end local 6 // sun.security.ssl.SSLPossession poss
        end local 2 // java.lang.String keyType
        18: .line 213
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
        19: iload 3
            iload 4
            if_icmplt 12
        20: .line 222
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.HandshakeContext
      StackMap stack:
            aconst_null
            areturn
        end local 1 // sun.security.ssl.HandshakeContext context
        end local 0 // sun.security.ssl.X509Authentication$X509PossessionGenerator this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   21     0     this  Lsun/security/ssl/X509Authentication$X509PossessionGenerator;
            0   21     1  context  Lsun/security/ssl/HandshakeContext;
            3    8     2  keyType  Ljava/lang/String;
            6    8     6     poss  Lsun/security/ssl/SSLPossession;
           13   18     2  keyType  Ljava/lang/String;
           16   18     6     poss  Lsun/security/ssl/SSLPossession;
    MethodParameters:
         Name  Flags
      context  

  private sun.security.ssl.SSLPossession createClientPossession(sun.security.ssl.ClientHandshakeContext, java.lang.String);
    descriptor: (Lsun/security/ssl/ClientHandshakeContext;Ljava/lang/String;)Lsun/security/ssl/SSLPossession;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // sun.security.ssl.X509Authentication$X509PossessionGenerator this
        start local 1 // sun.security.ssl.ClientHandshakeContext chc
        start local 2 // java.lang.String keyType
         0: .line 228
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getX509KeyManager:()Ljavax/net/ssl/X509ExtendedKeyManager;
            astore 3 /* km */
        start local 3 // javax.net.ssl.X509ExtendedKeyManager km
         1: .line 229
            aconst_null
            astore 4 /* clientAlias */
        start local 4 // java.lang.String clientAlias
         2: .line 230
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
            instanceof sun.security.ssl.SSLSocketImpl
            ifeq 10
         3: .line 231
            aload 3 /* km */
         4: .line 232
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 2 /* keyType */
            aastore
         5: .line 233
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
            ifnonnull 6
            aconst_null
            goto 7
         6: .line 234
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.ClientHandshakeContext java.lang.String javax.net.ssl.X509ExtendedKeyManager java.lang.String
      StackMap stack: javax.net.ssl.X509ExtendedKeyManager java.lang.String[]
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
            invokevirtual javax.security.auth.x500.X500Principal[].clone:()Ljava/lang/Object;
            checkcast java.security.Principal[]
         7: .line 235
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.ClientHandshakeContext java.lang.String javax.net.ssl.X509ExtendedKeyManager java.lang.String
      StackMap stack: javax.net.ssl.X509ExtendedKeyManager java.lang.String[] java.security.Principal[]
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
            checkcast javax.net.ssl.SSLSocket
         8: .line 231
            invokevirtual javax.net.ssl.X509ExtendedKeyManager.chooseClientAlias:([Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;
            astore 4 /* clientAlias */
         9: .line 236
            goto 17
      StackMap locals:
      StackMap stack:
        10: aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
            instanceof sun.security.ssl.SSLEngineImpl
            ifeq 17
        11: .line 237
            aload 3 /* km */
        12: .line 238
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 2 /* keyType */
            aastore
        13: .line 239
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
            ifnonnull 14
            aconst_null
            goto 15
        14: .line 240
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.ClientHandshakeContext java.lang.String javax.net.ssl.X509ExtendedKeyManager java.lang.String
      StackMap stack: javax.net.ssl.X509ExtendedKeyManager java.lang.String[]
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
            invokevirtual javax.security.auth.x500.X500Principal[].clone:()Ljava/lang/Object;
            checkcast java.security.Principal[]
        15: .line 241
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.ClientHandshakeContext java.lang.String javax.net.ssl.X509ExtendedKeyManager java.lang.String
      StackMap stack: javax.net.ssl.X509ExtendedKeyManager java.lang.String[] java.security.Principal[]
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
            checkcast javax.net.ssl.SSLEngine
        16: .line 237
            invokevirtual javax.net.ssl.X509ExtendedKeyManager.chooseEngineClientAlias:([Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;
            astore 4 /* clientAlias */
        17: .line 244
      StackMap locals:
      StackMap stack:
            aload 4 /* clientAlias */
            ifnonnull 21
        18: .line 245
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 20
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 20
        19: .line 246
            new java.lang.StringBuilder
            dup
            ldc "No X.509 cert selected for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* keyType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        20: .line 248
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        21: .line 251
      StackMap locals:
      StackMap stack:
            aload 3 /* km */
            aload 4 /* clientAlias */
            invokevirtual javax.net.ssl.X509ExtendedKeyManager.getPrivateKey:(Ljava/lang/String;)Ljava/security/PrivateKey;
            astore 5 /* clientPrivateKey */
        start local 5 // java.security.PrivateKey clientPrivateKey
        22: .line 252
            aload 5 /* clientPrivateKey */
            ifnonnull 27
        23: .line 253
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 26
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 26
        24: .line 255
            new java.lang.StringBuilder
            dup
            aload 4 /* clientAlias */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a private key entry"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        25: .line 254
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        26: .line 257
      StackMap locals: java.security.PrivateKey
      StackMap stack:
            aconst_null
            areturn
        27: .line 260
      StackMap locals:
      StackMap stack:
            aload 3 /* km */
            aload 4 /* clientAlias */
            invokevirtual javax.net.ssl.X509ExtendedKeyManager.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
            astore 6 /* clientCerts */
        start local 6 // java.security.cert.X509Certificate[] clientCerts
        28: .line 261
            aload 6 /* clientCerts */
            ifnull 29
            aload 6 /* clientCerts */
            arraylength
            ifne 34
        29: .line 262
      StackMap locals: java.security.cert.X509Certificate[]
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 33
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 33
        30: .line 263
            new java.lang.StringBuilder
            dup
            aload 4 /* clientAlias */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        31: .line 264
            ldc " is a private key entry with no cert chain stored"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        32: .line 263
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        33: .line 266
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        34: .line 269
      StackMap locals:
      StackMap stack:
            aload 6 /* clientCerts */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            astore 7 /* clientPublicKey */
        start local 7 // java.security.PublicKey clientPublicKey
        35: .line 270
            aload 5 /* clientPrivateKey */
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
            aload 2 /* keyType */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 37
        36: .line 271
            aload 7 /* clientPublicKey */
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
            aload 2 /* keyType */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 43
        37: .line 272
      StackMap locals: java.security.PublicKey
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 42
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 42
        38: .line 274
            new java.lang.StringBuilder
            dup
            aload 4 /* clientAlias */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " private or public key is not of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        39: .line 275
            aload 2 /* keyType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " algorithm"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        40: .line 274
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        41: .line 273
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        42: .line 277
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        43: .line 280
      StackMap locals:
      StackMap stack:
            new sun.security.ssl.X509Authentication$X509Possession
            dup
            aload 5 /* clientPrivateKey */
            aload 6 /* clientCerts */
            invokespecial sun.security.ssl.X509Authentication$X509Possession.<init>:(Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;)V
            areturn
        end local 7 // java.security.PublicKey clientPublicKey
        end local 6 // java.security.cert.X509Certificate[] clientCerts
        end local 5 // java.security.PrivateKey clientPrivateKey
        end local 4 // java.lang.String clientAlias
        end local 3 // javax.net.ssl.X509ExtendedKeyManager km
        end local 2 // java.lang.String keyType
        end local 1 // sun.security.ssl.ClientHandshakeContext chc
        end local 0 // sun.security.ssl.X509Authentication$X509PossessionGenerator this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   44     0              this  Lsun/security/ssl/X509Authentication$X509PossessionGenerator;
            0   44     1               chc  Lsun/security/ssl/ClientHandshakeContext;
            0   44     2           keyType  Ljava/lang/String;
            1   44     3                km  Ljavax/net/ssl/X509ExtendedKeyManager;
            2   44     4       clientAlias  Ljava/lang/String;
           22   44     5  clientPrivateKey  Ljava/security/PrivateKey;
           28   44     6       clientCerts  [Ljava/security/cert/X509Certificate;
           35   44     7   clientPublicKey  Ljava/security/PublicKey;
    MethodParameters:
         Name  Flags
      chc      
      keyType  

  private sun.security.ssl.SSLPossession createServerPossession(sun.security.ssl.ServerHandshakeContext, java.lang.String);
    descriptor: (Lsun/security/ssl/ServerHandshakeContext;Ljava/lang/String;)Lsun/security/ssl/SSLPossession;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // sun.security.ssl.X509Authentication$X509PossessionGenerator this
        start local 1 // sun.security.ssl.ServerHandshakeContext shc
        start local 2 // java.lang.String keyType
         0: .line 285
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getX509KeyManager:()Ljavax/net/ssl/X509ExtendedKeyManager;
            astore 3 /* km */
        start local 3 // javax.net.ssl.X509ExtendedKeyManager km
         1: .line 286
            aconst_null
            astore 4 /* serverAlias */
        start local 4 // java.lang.String serverAlias
         2: .line 287
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
            instanceof sun.security.ssl.SSLSocketImpl
            ifeq 9
         3: .line 288
            aload 3 /* km */
            aload 2 /* keyType */
         4: .line 289
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
            ifnonnull 5
            aconst_null
            goto 6
         5: .line 290
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.ServerHandshakeContext java.lang.String javax.net.ssl.X509ExtendedKeyManager java.lang.String
      StackMap stack: javax.net.ssl.X509ExtendedKeyManager java.lang.String
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
            invokevirtual javax.security.auth.x500.X500Principal[].clone:()Ljava/lang/Object;
            checkcast java.security.Principal[]
         6: .line 291
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.ServerHandshakeContext java.lang.String javax.net.ssl.X509ExtendedKeyManager java.lang.String
      StackMap stack: javax.net.ssl.X509ExtendedKeyManager java.lang.String java.security.Principal[]
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
            checkcast javax.net.ssl.SSLSocket
         7: .line 288
            invokevirtual javax.net.ssl.X509ExtendedKeyManager.chooseServerAlias:(Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;
            astore 4 /* serverAlias */
         8: .line 292
            goto 15
      StackMap locals:
      StackMap stack:
         9: aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
            instanceof sun.security.ssl.SSLEngineImpl
            ifeq 15
        10: .line 293
            aload 3 /* km */
            aload 2 /* keyType */
        11: .line 294
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
            ifnonnull 12
            aconst_null
            goto 13
        12: .line 295
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.ServerHandshakeContext java.lang.String javax.net.ssl.X509ExtendedKeyManager java.lang.String
      StackMap stack: javax.net.ssl.X509ExtendedKeyManager java.lang.String
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
            invokevirtual javax.security.auth.x500.X500Principal[].clone:()Ljava/lang/Object;
            checkcast java.security.Principal[]
        13: .line 296
      StackMap locals: sun.security.ssl.X509Authentication$X509PossessionGenerator sun.security.ssl.ServerHandshakeContext java.lang.String javax.net.ssl.X509ExtendedKeyManager java.lang.String
      StackMap stack: javax.net.ssl.X509ExtendedKeyManager java.lang.String java.security.Principal[]
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
            checkcast javax.net.ssl.SSLEngine
        14: .line 293
            invokevirtual javax.net.ssl.X509ExtendedKeyManager.chooseEngineServerAlias:(Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;
            astore 4 /* serverAlias */
        15: .line 299
      StackMap locals:
      StackMap stack:
            aload 4 /* serverAlias */
            ifnonnull 19
        16: .line 300
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 18
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 18
        17: .line 301
            new java.lang.StringBuilder
            dup
            ldc "No X.509 cert selected for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* keyType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        18: .line 303
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        19: .line 306
      StackMap locals:
      StackMap stack:
            aload 3 /* km */
            aload 4 /* serverAlias */
            invokevirtual javax.net.ssl.X509ExtendedKeyManager.getPrivateKey:(Ljava/lang/String;)Ljava/security/PrivateKey;
            astore 5 /* serverPrivateKey */
        start local 5 // java.security.PrivateKey serverPrivateKey
        20: .line 307
            aload 5 /* serverPrivateKey */
            ifnonnull 25
        21: .line 308
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 24
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 24
        22: .line 310
            new java.lang.StringBuilder
            dup
            aload 4 /* serverAlias */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a private key entry"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        23: .line 309
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        24: .line 312
      StackMap locals: java.security.PrivateKey
      StackMap stack:
            aconst_null
            areturn
        25: .line 315
      StackMap locals:
      StackMap stack:
            aload 3 /* km */
            aload 4 /* serverAlias */
            invokevirtual javax.net.ssl.X509ExtendedKeyManager.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;
            astore 6 /* serverCerts */
        start local 6 // java.security.cert.X509Certificate[] serverCerts
        26: .line 316
            aload 6 /* serverCerts */
            ifnull 27
            aload 6 /* serverCerts */
            arraylength
            ifne 31
        27: .line 317
      StackMap locals: java.security.cert.X509Certificate[]
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 30
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 30
        28: .line 319
            new java.lang.StringBuilder
            dup
            aload 4 /* serverAlias */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a certificate entry"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        29: .line 318
            invokestatic sun.security.ssl.SSLLogger.finest:(Ljava/lang/String;[Ljava/lang/Object;)V
        30: .line 321
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        31: .line 324
      StackMap locals:
      StackMap stack:
            aload 6 /* serverCerts */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            astore 7 /* serverPublicKey */
        start local 7 // java.security.PublicKey serverPublicKey
        32: .line 325
            aload 5 /* serverPrivateKey */
            invokeinterface java.security.PrivateKey.getAlgorithm:()Ljava/lang/String;
            aload 2 /* keyType */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 34
        33: .line 326
            aload 7 /* serverPublicKey */
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
            aload 2 /* keyType */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 40
        34: .line 327
      StackMap locals: java.security.PublicKey
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 39
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 39
        35: .line 329
            new java.lang.StringBuilder
            dup
            aload 4 /* serverAlias */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " private or public key is not of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        36: .line 330
            aload 2 /* keyType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " algorithm"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        37: .line 329
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        38: .line 328
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        39: .line 332
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        40: .line 339
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.ProtocolVersion.useTLS13PlusSpec:()Z
            ifne 61
        41: .line 340
            aload 2 /* keyType */
            ldc "EC"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 61
        42: .line 341
            aload 7 /* serverPublicKey */
            instanceof java.security.interfaces.ECPublicKey
            ifne 48
        43: .line 342
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 47
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 47
        44: .line 343
            new java.lang.StringBuilder
            dup
            aload 4 /* serverAlias */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        45: .line 344
            ldc " public key is not an instance of ECPublicKey"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        46: .line 343
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        47: .line 346
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        48: .line 354
      StackMap locals:
      StackMap stack:
            aload 7 /* serverPublicKey */
            checkcast java.security.interfaces.ECPublicKey
            invokeinterface java.security.interfaces.ECPublicKey.getParams:()Ljava/security/spec/ECParameterSpec;
        49: .line 353
            astore 8 /* params */
        start local 8 // java.security.spec.ECParameterSpec params
        50: .line 355
            aload 8 /* params */
            invokestatic sun.security.ssl.NamedGroup.valueOf:(Ljava/security/spec/ECParameterSpec;)Lsun/security/ssl/NamedGroup;
            astore 9 /* namedGroup */
        start local 9 // sun.security.ssl.NamedGroup namedGroup
        51: .line 356
            aload 9 /* namedGroup */
            ifnull 55
        52: .line 357
            aload 9 /* namedGroup */
            invokestatic sun.security.ssl.SupportedGroupsExtension$SupportedGroups.isSupported:(Lsun/security/ssl/NamedGroup;)Z
            ifeq 55
        53: .line 358
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.clientRequestedNamedGroups:Ljava/util/List;
            ifnull 61
        54: .line 359
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.clientRequestedNamedGroups:Ljava/util/List;
            aload 9 /* namedGroup */
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 61
        55: .line 361
      StackMap locals: java.security.spec.ECParameterSpec sun.security.ssl.NamedGroup
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 60
            ldc "ssl"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 60
        56: .line 363
            new java.lang.StringBuilder
            dup
            ldc "Unsupported named group ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* namedGroup */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        57: .line 364
            ldc ") used in the "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* serverAlias */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " certificate"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        58: .line 363
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        59: .line 362
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        60: .line 367
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 9 // sun.security.ssl.NamedGroup namedGroup
        end local 8 // java.security.spec.ECParameterSpec params
        61: .line 371
      StackMap locals:
      StackMap stack:
            new sun.security.ssl.X509Authentication$X509Possession
            dup
            aload 5 /* serverPrivateKey */
            aload 6 /* serverCerts */
            invokespecial sun.security.ssl.X509Authentication$X509Possession.<init>:(Ljava/security/PrivateKey;[Ljava/security/cert/X509Certificate;)V
            areturn
        end local 7 // java.security.PublicKey serverPublicKey
        end local 6 // java.security.cert.X509Certificate[] serverCerts
        end local 5 // java.security.PrivateKey serverPrivateKey
        end local 4 // java.lang.String serverAlias
        end local 3 // javax.net.ssl.X509ExtendedKeyManager km
        end local 2 // java.lang.String keyType
        end local 1 // sun.security.ssl.ServerHandshakeContext shc
        end local 0 // sun.security.ssl.X509Authentication$X509PossessionGenerator this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   62     0              this  Lsun/security/ssl/X509Authentication$X509PossessionGenerator;
            0   62     1               shc  Lsun/security/ssl/ServerHandshakeContext;
            0   62     2           keyType  Ljava/lang/String;
            1   62     3                km  Ljavax/net/ssl/X509ExtendedKeyManager;
            2   62     4       serverAlias  Ljava/lang/String;
           20   62     5  serverPrivateKey  Ljava/security/PrivateKey;
           26   62     6       serverCerts  [Ljava/security/cert/X509Certificate;
           32   62     7   serverPublicKey  Ljava/security/PublicKey;
           50   61     8            params  Ljava/security/spec/ECParameterSpec;
           51   61     9        namedGroup  Lsun/security/ssl/NamedGroup;
    MethodParameters:
         Name  Flags
      shc      
      keyType  
}
SourceFile: "X509Authentication.java"
NestHost: sun.security.ssl.X509Authentication
InnerClasses:
  SupportedGroups = sun.security.ssl.SupportedGroupsExtension$SupportedGroups of sun.security.ssl.SupportedGroupsExtension
  final X509Possession = sun.security.ssl.X509Authentication$X509Possession of sun.security.ssl.X509Authentication
  private final X509PossessionGenerator = sun.security.ssl.X509Authentication$X509PossessionGenerator of sun.security.ssl.X509Authentication