public abstract class org.apache.tomcat.util.net.SSLUtilBase implements org.apache.tomcat.util.net.SSLUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.tomcat.util.net.SSLUtilBase
  super_class: java.lang.Object
{
  private static final org.apache.juli.logging.Log log;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected final org.apache.tomcat.util.net.SSLHostConfig sslHostConfig;
    descriptor: Lorg/apache/tomcat/util/net/SSLHostConfig;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final org.apache.tomcat.util.net.SSLHostConfigCertificate certificate;
    descriptor: Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final java.lang.String[] enabledProtocols;
    descriptor: [Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String[] enabledCiphers;
    descriptor: [Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 72
            ldc Lorg/apache/tomcat/util/net/SSLUtilBase;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
         1: .line 73
            ldc Lorg/apache/tomcat/util/net/SSLUtilBase;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(org.apache.tomcat.util.net.SSLHostConfigCertificate);
    descriptor: (Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
        start local 1 // org.apache.tomcat.util.net.SSLHostConfigCertificate certificate
         0: .line 83
            aload 0 /* this */
            aload 1 /* certificate */
            iconst_1
            invokespecial org.apache.tomcat.util.net.SSLUtilBase.<init>:(Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;Z)V
         1: .line 84
            return
        end local 1 // org.apache.tomcat.util.net.SSLHostConfigCertificate certificate
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            0    2     1  certificate  Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
    MethodParameters:
             Name  Flags
      certificate  

  protected void <init>(org.apache.tomcat.util.net.SSLHostConfigCertificate, boolean);
    descriptor: (Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
        start local 1 // org.apache.tomcat.util.net.SSLHostConfigCertificate certificate
        start local 2 // boolean warnTls13
         0: .line 87
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 88
            aload 0 /* this */
            aload 1 /* certificate */
            putfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
         2: .line 89
            aload 0 /* this */
            aload 1 /* certificate */
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getSSLHostConfig:()Lorg/apache/tomcat/util/net/SSLHostConfig;
            putfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
         3: .line 92
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getProtocols:()Ljava/util/Set;
            astore 3 /* configuredProtocols */
        start local 3 // java.util.Set configuredProtocols
         4: .line 93
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.getImplementedProtocols:()Ljava/util/Set;
            astore 4 /* implementedProtocols */
        start local 4 // java.util.Set implementedProtocols
         5: .line 96
            aload 4 /* implementedProtocols */
            ldc "TLSv1.3"
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 8
         6: .line 97
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            ldc "TLSv1.3"
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.isExplicitlyRequestedProtocol:(Ljava/lang/String;)Z
            ifne 8
         7: .line 98
            aload 3 /* configuredProtocols */
            ldc "TLSv1.3"
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         8: .line 103
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase org.apache.tomcat.util.net.SSLHostConfigCertificate int java.util.Set java.util.Set
      StackMap stack:
            aload 4 /* implementedProtocols */
            ldc "SSLv2Hello"
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 11
         9: .line 104
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            ldc "SSLv2Hello"
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.isExplicitlyRequestedProtocol:(Ljava/lang/String;)Z
            ifne 11
        10: .line 105
            aload 3 /* configuredProtocols */
            ldc "SSLv2Hello"
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        11: .line 109
      StackMap locals:
      StackMap stack:
            ldc "protocols"
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.getLog:()Lorg/apache/juli/logging/Log;
            iload 2 /* warnTls13 */
            aload 3 /* configuredProtocols */
            aload 4 /* implementedProtocols */
            invokestatic org.apache.tomcat.util.net.SSLUtilBase.getEnabled:(Ljava/lang/String;Lorg/apache/juli/logging/Log;ZLjava/util/Collection;Ljava/util/Collection;)Ljava/util/List;
        12: .line 108
            astore 5 /* enabledProtocols */
        start local 5 // java.util.List enabledProtocols
        13: .line 110
            aload 5 /* enabledProtocols */
            ldc "SSLv3"
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 15
        14: .line 111
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsse.ssl3"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        15: .line 113
      StackMap locals: java.util.List
      StackMap stack:
            aload 0 /* this */
            aload 5 /* enabledProtocols */
            aload 5 /* enabledProtocols */
            invokeinterface java.util.List.size:()I
            anewarray java.lang.String
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            putfield org.apache.tomcat.util.net.SSLUtilBase.enabledProtocols:[Ljava/lang/String;
        16: .line 115
            aload 5 /* enabledProtocols */
            ldc "TLSv1.3"
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifeq 20
        17: .line 116
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getCertificateVerification:()Lorg/apache/tomcat/util/net/SSLHostConfig$CertificateVerification;
            getstatic org.apache.tomcat.util.net.SSLHostConfig$CertificateVerification.OPTIONAL:Lorg/apache/tomcat/util/net/SSLHostConfig$CertificateVerification;
            if_acmpne 20
        18: .line 117
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.isTls13RenegAuthAvailable:()Z
            ifne 20
            iload 2 /* warnTls13 */
            ifeq 20
        19: .line 118
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsse.tls13.auth"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        20: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getJsseCipherNames:()Ljava/util/List;
            astore 6 /* configuredCiphers */
        start local 6 // java.util.List configuredCiphers
        21: .line 123
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.getImplementedCiphers:()Ljava/util/Set;
            astore 7 /* implementedCiphers */
        start local 7 // java.util.Set implementedCiphers
        22: .line 125
            ldc "ciphers"
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.getLog:()Lorg/apache/juli/logging/Log;
            iconst_0
            aload 6 /* configuredCiphers */
            aload 7 /* implementedCiphers */
            invokestatic org.apache.tomcat.util.net.SSLUtilBase.getEnabled:(Ljava/lang/String;Lorg/apache/juli/logging/Log;ZLjava/util/Collection;Ljava/util/Collection;)Ljava/util/List;
        23: .line 124
            astore 8 /* enabledCiphers */
        start local 8 // java.util.List enabledCiphers
        24: .line 126
            aload 0 /* this */
            aload 8 /* enabledCiphers */
            aload 8 /* enabledCiphers */
            invokeinterface java.util.List.size:()I
            anewarray java.lang.String
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            putfield org.apache.tomcat.util.net.SSLUtilBase.enabledCiphers:[Ljava/lang/String;
        25: .line 127
            return
        end local 8 // java.util.List enabledCiphers
        end local 7 // java.util.Set implementedCiphers
        end local 6 // java.util.List configuredCiphers
        end local 5 // java.util.List enabledProtocols
        end local 4 // java.util.Set implementedProtocols
        end local 3 // java.util.Set configuredProtocols
        end local 2 // boolean warnTls13
        end local 1 // org.apache.tomcat.util.net.SSLHostConfigCertificate certificate
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   26     0                  this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            0   26     1           certificate  Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            0   26     2             warnTls13  Z
            4   26     3   configuredProtocols  Ljava/util/Set<Ljava/lang/String;>;
            5   26     4  implementedProtocols  Ljava/util/Set<Ljava/lang/String;>;
           13   26     5      enabledProtocols  Ljava/util/List<Ljava/lang/String;>;
           21   26     6     configuredCiphers  Ljava/util/List<Ljava/lang/String;>;
           22   26     7    implementedCiphers  Ljava/util/Set<Ljava/lang/String;>;
           24   26     8        enabledCiphers  Ljava/util/List<Ljava/lang/String;>;
    MethodParameters:
             Name  Flags
      certificate  
      warnTls13    

  static <T> java.util.List<T> getEnabled(java.lang.String, org.apache.juli.logging.Log, boolean, java.util.Collection<T>, java.util.Collection<T>);
    descriptor: (Ljava/lang/String;Lorg/apache/juli/logging/Log;ZLjava/util/Collection;Ljava/util/Collection;)Ljava/util/List;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=8, args_size=5
        start local 0 // java.lang.String name
        start local 1 // org.apache.juli.logging.Log log
        start local 2 // boolean warnOnSkip
        start local 3 // java.util.Collection configured
        start local 4 // java.util.Collection implemented
         0: .line 133
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 5 /* enabled */
        start local 5 // java.util.List enabled
         1: .line 135
            aload 4 /* implemented */
            invokeinterface java.util.Collection.size:()I
            ifne 4
         2: .line 141
            aload 5 /* enabled */
            aload 3 /* configured */
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         3: .line 142
            goto 22
         4: .line 143
      StackMap locals: java.util.List
      StackMap stack:
            aload 5 /* enabled */
            aload 3 /* configured */
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
         5: .line 144
            aload 5 /* enabled */
            aload 4 /* implemented */
            invokeinterface java.util.List.retainAll:(Ljava/util/Collection;)Z
            pop
         6: .line 146
            aload 5 /* enabled */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 10
         7: .line 150
            new java.lang.IllegalArgumentException
            dup
         8: .line 151
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.noneSupported"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* name */
            aastore
            dup
            iconst_1
            aload 3 /* configured */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         9: .line 150
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 153
      StackMap locals:
      StackMap stack:
            aload 1 /* log */
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 12
        11: .line 154
            aload 1 /* log */
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.active"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* name */
            aastore
            dup
            iconst_1
            aload 5 /* enabled */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        12: .line 156
      StackMap locals:
      StackMap stack:
            aload 1 /* log */
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifne 13
            iload 2 /* warnOnSkip */
            ifeq 22
        13: .line 157
      StackMap locals:
      StackMap stack:
            aload 5 /* enabled */
            invokeinterface java.util.List.size:()I
            aload 3 /* configured */
            invokeinterface java.util.Collection.size:()I
            if_icmpeq 22
        14: .line 158
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 6 /* skipped */
        start local 6 // java.util.List skipped
        15: .line 159
            aload 6 /* skipped */
            aload 3 /* configured */
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        16: .line 160
            aload 6 /* skipped */
            aload 5 /* enabled */
            invokeinterface java.util.List.removeAll:(Ljava/util/Collection;)Z
            pop
        17: .line 161
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.skipped"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* name */
            aastore
            dup
            iconst_1
            aload 6 /* skipped */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 7 /* msg */
        start local 7 // java.lang.String msg
        18: .line 162
            iload 2 /* warnOnSkip */
            ifeq 21
        19: .line 163
            aload 1 /* log */
            aload 7 /* msg */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        20: .line 164
            goto 22
        21: .line 165
      StackMap locals: java.util.List java.lang.String
      StackMap stack:
            aload 1 /* log */
            aload 7 /* msg */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        end local 7 // java.lang.String msg
        end local 6 // java.util.List skipped
        22: .line 171
      StackMap locals:
      StackMap stack:
            aload 5 /* enabled */
            areturn
        end local 5 // java.util.List enabled
        end local 4 // java.util.Collection implemented
        end local 3 // java.util.Collection configured
        end local 2 // boolean warnOnSkip
        end local 1 // org.apache.juli.logging.Log log
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         name  Ljava/lang/String;
            0   23     1          log  Lorg/apache/juli/logging/Log;
            0   23     2   warnOnSkip  Z
            0   23     3   configured  Ljava/util/Collection<TT;>;
            0   23     4  implemented  Ljava/util/Collection<TT;>;
            1   23     5      enabled  Ljava/util/List<TT;>;
           15   22     6      skipped  Ljava/util/List<TT;>;
           18   22     7          msg  Ljava/lang/String;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;Lorg/apache/juli/logging/Log;ZLjava/util/Collection<TT;>;Ljava/util/Collection<TT;>;)Ljava/util/List<TT;>;
    MethodParameters:
             Name  Flags
      name         
      log          
      warnOnSkip   
      configured   
      implemented  

  static java.security.KeyStore getStore(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=9, args_size=4
        start local 0 // java.lang.String type
        start local 1 // java.lang.String provider
        start local 2 // java.lang.String path
        start local 3 // java.lang.String pass
         0: .line 181
            aconst_null
            astore 4 /* ks */
        start local 4 // java.security.KeyStore ks
         1: .line 182
            aconst_null
            astore 5 /* istream */
        start local 5 // java.io.InputStream istream
         2: .line 184
            aload 1 /* provider */
            ifnonnull 5
         3: .line 185
            aload 0 /* type */
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;)Ljava/security/KeyStore;
            astore 4 /* ks */
         4: .line 186
            goto 6
         5: .line 187
      StackMap locals: java.security.KeyStore java.io.InputStream
      StackMap stack:
            aload 0 /* type */
            aload 1 /* provider */
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;
            astore 4 /* ks */
         6: .line 189
      StackMap locals:
      StackMap stack:
            ldc "DKS"
            aload 0 /* type */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 10
         7: .line 190
            invokestatic org.apache.tomcat.util.file.ConfigFileLoader.getSource:()Lorg/apache/tomcat/util/file/ConfigurationSource;
            aload 2 /* path */
            invokeinterface org.apache.tomcat.util.file.ConfigurationSource.getURI:(Ljava/lang/String;)Ljava/net/URI;
            astore 6 /* uri */
        start local 6 // java.net.URI uri
         8: .line 191
            aload 4 /* ks */
            new java.security.DomainLoadStoreParameter
            dup
            aload 6 /* uri */
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            invokespecial java.security.DomainLoadStoreParameter.<init>:(Ljava/net/URI;Ljava/util/Map;)V
            invokevirtual java.security.KeyStore.load:(Ljava/security/KeyStore$LoadStoreParameter;)V
        end local 6 // java.net.URI uri
         9: .line 192
            goto 36
        10: .line 195
      StackMap locals:
      StackMap stack:
            ldc "PKCS11"
            aload 0 /* type */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 12
        11: .line 196
            ldc ""
            aload 2 /* path */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 13
        12: .line 197
      StackMap locals:
      StackMap stack:
            ldc "NONE"
            aload 2 /* path */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 14
        13: .line 198
      StackMap locals:
      StackMap stack:
            invokestatic org.apache.tomcat.util.file.ConfigFileLoader.getSource:()Lorg/apache/tomcat/util/file/ConfigurationSource;
            aload 2 /* path */
            invokeinterface org.apache.tomcat.util.file.ConfigurationSource.getResource:(Ljava/lang/String;)Lorg/apache/tomcat/util/file/ConfigurationSource$Resource;
            invokevirtual org.apache.tomcat.util.file.ConfigurationSource$Resource.getInputStream:()Ljava/io/InputStream;
            astore 5 /* istream */
        14: .line 212
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* storePass */
        start local 6 // char[] storePass
        15: .line 213
            aload 3 /* pass */
            ifnull 18
            ldc ""
            aload 3 /* pass */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        16: .line 214
            ldc "JKS"
            aload 0 /* type */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 17
            ldc "PKCS12"
            aload 0 /* type */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 18
        17: .line 215
      StackMap locals: char[]
      StackMap stack:
            aload 3 /* pass */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 6 /* storePass */
        18: .line 217
      StackMap locals:
      StackMap stack:
            aload 4 /* ks */
            aload 5 /* istream */
            aload 6 /* storePass */
            invokestatic org.apache.tomcat.util.security.KeyStoreUtil.load:(Ljava/security/KeyStore;Ljava/io/InputStream;[C)V
        end local 6 // char[] storePass
        19: .line 219
            goto 36
      StackMap locals: java.lang.String java.lang.String java.lang.String java.lang.String java.security.KeyStore java.io.InputStream
      StackMap stack: java.io.FileNotFoundException
        20: astore 6 /* fnfe */
        start local 6 // java.io.FileNotFoundException fnfe
        21: .line 220
            aload 6 /* fnfe */
            athrow
        end local 6 // java.io.FileNotFoundException fnfe
        22: .line 221
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 6 /* ioe */
        start local 6 // java.io.IOException ioe
        23: .line 224
            aload 6 /* ioe */
            athrow
        end local 6 // java.io.IOException ioe
        24: .line 225
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* ex */
        start local 6 // java.lang.Exception ex
        25: .line 226
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsse.keystore_load_failed"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* type */
            aastore
            dup
            iconst_1
            aload 2 /* path */
            aastore
            dup
            iconst_2
        26: .line 227
            aload 6 /* ex */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aastore
        27: .line 226
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 7 /* msg */
        start local 7 // java.lang.String msg
        28: .line 228
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            aload 7 /* msg */
            aload 6 /* ex */
            invokeinterface org.apache.juli.logging.Log.error:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        29: .line 229
            new java.io.IOException
            dup
            aload 7 /* msg */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // java.lang.String msg
        end local 6 // java.lang.Exception ex
        30: .line 230
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        31: .line 231
            aload 5 /* istream */
            ifnull 35
        32: .line 233
            aload 5 /* istream */
            invokevirtual java.io.InputStream.close:()V
        33: .line 234
            goto 35
      StackMap locals: java.lang.String java.lang.String java.lang.String java.lang.String java.security.KeyStore java.io.InputStream top top java.lang.Throwable
      StackMap stack: java.io.IOException
        34: pop
        35: .line 238
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        36: .line 231
      StackMap locals: java.lang.String java.lang.String java.lang.String java.lang.String java.security.KeyStore java.io.InputStream
      StackMap stack:
            aload 5 /* istream */
            ifnull 40
        37: .line 233
            aload 5 /* istream */
            invokevirtual java.io.InputStream.close:()V
        38: .line 234
            goto 40
      StackMap locals:
      StackMap stack: java.io.IOException
        39: pop
        40: .line 240
      StackMap locals:
      StackMap stack:
            aload 4 /* ks */
            areturn
        end local 5 // java.io.InputStream istream
        end local 4 // java.security.KeyStore ks
        end local 3 // java.lang.String pass
        end local 2 // java.lang.String path
        end local 1 // java.lang.String provider
        end local 0 // java.lang.String type
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   41     0       type  Ljava/lang/String;
            0   41     1   provider  Ljava/lang/String;
            0   41     2       path  Ljava/lang/String;
            0   41     3       pass  Ljava/lang/String;
            1   41     4         ks  Ljava/security/KeyStore;
            2   41     5    istream  Ljava/io/InputStream;
            8    9     6        uri  Ljava/net/URI;
           15   19     6  storePass  [C
           21   22     6       fnfe  Ljava/io/FileNotFoundException;
           23   24     6        ioe  Ljava/io/IOException;
           25   30     6         ex  Ljava/lang/Exception;
           28   30     7        msg  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2    19      20  Class java.io.FileNotFoundException
           2    19      22  Class java.io.IOException
           2    19      24  Class java.lang.Exception
           2    30      30  any
          32    33      34  Class java.io.IOException
          37    38      39  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      type      
      provider  
      path      
      pass      

  public final org.apache.tomcat.util.net.SSLContext createSSLContext(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)Lorg/apache/tomcat/util/net/SSLContext;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
        start local 1 // java.util.List negotiableProtocols
         0: .line 246
            aload 0 /* this */
            aload 1 /* negotiableProtocols */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.createSSLContextInternal:(Ljava/util/List;)Lorg/apache/tomcat/util/net/SSLContext;
            astore 2 /* sslContext */
        start local 2 // org.apache.tomcat.util.net.SSLContext sslContext
         1: .line 247
            aload 2 /* sslContext */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers:()[Ljavax/net/ssl/KeyManager;
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.getTrustManagers:()[Ljavax/net/ssl/TrustManager;
            aconst_null
            invokeinterface org.apache.tomcat.util.net.SSLContext.init:([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V
         2: .line 249
            aload 2 /* sslContext */
            invokeinterface org.apache.tomcat.util.net.SSLContext.getServerSessionContext:()Ljavax/net/ssl/SSLSessionContext;
            astore 3 /* sessionContext */
        start local 3 // javax.net.ssl.SSLSessionContext sessionContext
         3: .line 250
            aload 3 /* sessionContext */
            ifnull 5
         4: .line 251
            aload 0 /* this */
            aload 3 /* sessionContext */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.configureSessionContext:(Ljavax/net/ssl/SSLSessionContext;)V
         5: .line 254
      StackMap locals: org.apache.tomcat.util.net.SSLContext javax.net.ssl.SSLSessionContext
      StackMap stack:
            aload 2 /* sslContext */
            areturn
        end local 3 // javax.net.ssl.SSLSessionContext sessionContext
        end local 2 // org.apache.tomcat.util.net.SSLContext sslContext
        end local 1 // java.util.List negotiableProtocols
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    6     0                 this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            0    6     1  negotiableProtocols  Ljava/util/List<Ljava/lang/String;>;
            1    6     2           sslContext  Lorg/apache/tomcat/util/net/SSLContext;
            3    6     3       sessionContext  Ljavax/net/ssl/SSLSessionContext;
    Exceptions:
      throws java.lang.Exception
    Signature: (Ljava/util/List<Ljava/lang/String;>;)Lorg/apache/tomcat/util/net/SSLContext;
    MethodParameters:
                     Name  Flags
      negotiableProtocols  

  public void configureSessionContext(javax.net.ssl.SSLSessionContext);
    descriptor: (Ljavax/net/ssl/SSLSessionContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
        start local 1 // javax.net.ssl.SSLSessionContext sslSessionContext
         0: .line 261
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getSessionCacheSize:()I
            iflt 2
         1: .line 262
            aload 1 /* sslSessionContext */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getSessionCacheSize:()I
            invokeinterface javax.net.ssl.SSLSessionContext.setSessionCacheSize:(I)V
         2: .line 266
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getSessionTimeout:()I
            iflt 4
         3: .line 267
            aload 1 /* sslSessionContext */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getSessionTimeout:()I
            invokeinterface javax.net.ssl.SSLSessionContext.setSessionTimeout:(I)V
         4: .line 269
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.net.ssl.SSLSessionContext sslSessionContext
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            0    5     1  sslSessionContext  Ljavax/net/ssl/SSLSessionContext;
    MethodParameters:
                   Name  Flags
      sslSessionContext  

  public javax.net.ssl.KeyManager[] getKeyManagers();
    descriptor: ()[Ljavax/net/ssl/KeyManager;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=11, args_size=1
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
         0: .line 274
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeyAlias:()Ljava/lang/String;
            astore 1 /* keyAlias */
        start local 1 // java.lang.String keyAlias
         1: .line 275
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getKeyManagerAlgorithm:()Ljava/lang/String;
            astore 2 /* algorithm */
        start local 2 // java.lang.String algorithm
         2: .line 276
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeyPassword:()Ljava/lang/String;
            astore 3 /* keyPass */
        start local 3 // java.lang.String keyPass
         3: .line 279
            aload 3 /* keyPass */
            ifnonnull 5
         4: .line 280
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystorePassword:()Ljava/lang/String;
            astore 3 /* keyPass */
         5: .line 283
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystore:()Ljava/security/KeyStore;
            astore 4 /* ks */
        start local 4 // java.security.KeyStore ks
         6: .line 284
            aload 4 /* ks */
            astore 5 /* ksUsed */
        start local 5 // java.security.KeyStore ksUsed
         7: .line 298
            aload 3 /* keyPass */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 6 /* keyPassArray */
        start local 6 // char[] keyPassArray
         8: .line 300
            aload 4 /* ks */
            ifnonnull 30
         9: .line 301
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateFile:()Ljava/lang/String;
            ifnonnull 11
        10: .line 302
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsse.noCertFile"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 305
      StackMap locals: java.security.KeyStore java.security.KeyStore char[]
      StackMap stack:
            new org.apache.tomcat.util.net.jsse.PEMFile
            dup
        12: .line 306
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeyFile:()Ljava/lang/String;
            ifnull 13
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeyFile:()Ljava/lang/String;
            goto 14
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String java.lang.String java.lang.String java.security.KeyStore java.security.KeyStore char[]
      StackMap stack: new 11 new 11
        13: aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateFile:()Ljava/lang/String;
        14: .line 307
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String java.lang.String java.lang.String java.security.KeyStore java.security.KeyStore char[]
      StackMap stack: new 11 new 11 java.lang.String
            aload 3 /* keyPass */
        15: .line 305
            invokespecial org.apache.tomcat.util.net.jsse.PEMFile.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 7 /* privateKeyFile */
        start local 7 // org.apache.tomcat.util.net.jsse.PEMFile privateKeyFile
        16: .line 308
            new org.apache.tomcat.util.net.jsse.PEMFile
            dup
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateFile:()Ljava/lang/String;
            invokespecial org.apache.tomcat.util.net.jsse.PEMFile.<init>:(Ljava/lang/String;)V
            astore 8 /* certificateFile */
        start local 8 // org.apache.tomcat.util.net.jsse.PEMFile certificateFile
        17: .line 310
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 9 /* chain */
        start local 9 // java.util.Collection chain
        18: .line 311
            aload 9 /* chain */
            aload 8 /* certificateFile */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile.getCertificates:()Ljava/util/List;
            invokeinterface java.util.Collection.addAll:(Ljava/util/Collection;)Z
            pop
        19: .line 312
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateChainFile:()Ljava/lang/String;
            ifnull 22
        20: .line 313
            new org.apache.tomcat.util.net.jsse.PEMFile
            dup
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateChainFile:()Ljava/lang/String;
            invokespecial org.apache.tomcat.util.net.jsse.PEMFile.<init>:(Ljava/lang/String;)V
            astore 10 /* certificateChainFile */
        start local 10 // org.apache.tomcat.util.net.jsse.PEMFile certificateChainFile
        21: .line 314
            aload 9 /* chain */
            aload 10 /* certificateChainFile */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile.getCertificates:()Ljava/util/List;
            invokeinterface java.util.Collection.addAll:(Ljava/util/Collection;)Z
            pop
        end local 10 // org.apache.tomcat.util.net.jsse.PEMFile certificateChainFile
        22: .line 317
      StackMap locals: org.apache.tomcat.util.net.jsse.PEMFile org.apache.tomcat.util.net.jsse.PEMFile java.util.Collection
      StackMap stack:
            aload 1 /* keyAlias */
            ifnonnull 24
        23: .line 318
            ldc "tomcat"
            astore 1 /* keyAlias */
        24: .line 322
      StackMap locals:
      StackMap stack:
            ldc "JKS"
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;)Ljava/security/KeyStore;
            astore 5 /* ksUsed */
        25: .line 323
            aload 5 /* ksUsed */
            aconst_null
            aconst_null
            invokevirtual java.security.KeyStore.load:(Ljava/io/InputStream;[C)V
        26: .line 324
            aload 5 /* ksUsed */
            aload 1 /* keyAlias */
            aload 7 /* privateKeyFile */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile.getPrivateKey:()Ljava/security/PrivateKey;
            aload 3 /* keyPass */
            invokevirtual java.lang.String.toCharArray:()[C
        27: .line 325
            aload 9 /* chain */
            aload 9 /* chain */
            invokeinterface java.util.Collection.size:()I
            anewarray java.security.cert.Certificate
            invokeinterface java.util.Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.cert.Certificate[]
        28: .line 324
            invokevirtual java.security.KeyStore.setKeyEntry:(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V
        end local 9 // java.util.Collection chain
        end local 8 // org.apache.tomcat.util.net.jsse.PEMFile certificateFile
        end local 7 // org.apache.tomcat.util.net.jsse.PEMFile privateKeyFile
        29: .line 326
            goto 54
        30: .line 327
      StackMap locals:
      StackMap stack:
            aload 1 /* keyAlias */
            ifnull 32
            aload 4 /* ks */
            aload 1 /* keyAlias */
            invokevirtual java.security.KeyStore.isKeyEntry:(Ljava/lang/String;)Z
            ifne 32
        31: .line 328
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsse.alias_no_key_entry"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* keyAlias */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        32: .line 329
      StackMap locals:
      StackMap stack:
            aload 1 /* keyAlias */
            ifnonnull 42
        33: .line 330
            aload 4 /* ks */
            invokevirtual java.security.KeyStore.aliases:()Ljava/util/Enumeration;
            astore 7 /* aliases */
        start local 7 // java.util.Enumeration aliases
        34: .line 331
            aload 7 /* aliases */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 39
        35: .line 332
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsse.noKeys"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        36: .line 335
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 7 /* aliases */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* keyAlias */
        37: .line 336
            aload 4 /* ks */
            aload 1 /* keyAlias */
            invokevirtual java.security.KeyStore.isKeyEntry:(Ljava/lang/String;)Z
            ifne 39
        38: .line 337
            aconst_null
            astore 1 /* keyAlias */
        39: .line 334
      StackMap locals:
      StackMap stack:
            aload 7 /* aliases */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifeq 40
            aload 1 /* keyAlias */
            ifnull 36
        40: .line 340
      StackMap locals:
      StackMap stack:
            aload 1 /* keyAlias */
            ifnonnull 42
        41: .line 341
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsse.alias_no_key_entry"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aconst_null
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // java.util.Enumeration aliases
        42: .line 345
      StackMap locals:
      StackMap stack:
            aload 4 /* ks */
            aload 1 /* keyAlias */
            aload 6 /* keyPassArray */
            invokevirtual java.security.KeyStore.getKey:(Ljava/lang/String;[C)Ljava/security/Key;
            astore 7 /* k */
        start local 7 // java.security.Key k
        43: .line 346
            aload 7 /* k */
            ifnull 54
            ldc "DKS"
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystoreType:()Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 54
        44: .line 347
            ldc "PKCS#8"
            aload 7 /* k */
            invokeinterface java.security.Key.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 54
        45: .line 349
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystoreProvider:()Ljava/lang/String;
            astore 8 /* provider */
        start local 8 // java.lang.String provider
        46: .line 350
            aload 8 /* provider */
            ifnonnull 49
        47: .line 351
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystoreType:()Ljava/lang/String;
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;)Ljava/security/KeyStore;
            astore 5 /* ksUsed */
        48: .line 352
            goto 52
        49: .line 353
      StackMap locals: java.security.Key java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystoreType:()Ljava/lang/String;
        50: .line 354
            aload 8 /* provider */
        51: .line 353
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;
            astore 5 /* ksUsed */
        52: .line 356
      StackMap locals:
      StackMap stack:
            aload 5 /* ksUsed */
            aconst_null
            aconst_null
            invokevirtual java.security.KeyStore.load:(Ljava/io/InputStream;[C)V
        53: .line 357
            aload 5 /* ksUsed */
            aload 1 /* keyAlias */
            aload 7 /* k */
            aload 6 /* keyPassArray */
            aload 4 /* ks */
            aload 1 /* keyAlias */
            invokevirtual java.security.KeyStore.getCertificateChain:(Ljava/lang/String;)[Ljava/security/cert/Certificate;
            invokevirtual java.security.KeyStore.setKeyEntry:(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V
        end local 8 // java.lang.String provider
        end local 7 // java.security.Key k
        54: .line 363
      StackMap locals:
      StackMap stack:
            aload 2 /* algorithm */
            invokestatic javax.net.ssl.KeyManagerFactory.getInstance:(Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;
            astore 7 /* kmf */
        start local 7 // javax.net.ssl.KeyManagerFactory kmf
        55: .line 364
            aload 7 /* kmf */
            aload 5 /* ksUsed */
            aload 6 /* keyPassArray */
            invokevirtual javax.net.ssl.KeyManagerFactory.init:(Ljava/security/KeyStore;[C)V
        56: .line 366
            aload 7 /* kmf */
            invokevirtual javax.net.ssl.KeyManagerFactory.getKeyManagers:()[Ljavax/net/ssl/KeyManager;
            astore 8 /* kms */
        start local 8 // javax.net.ssl.KeyManager[] kms
        57: .line 371
            aload 8 /* kms */
            ifnull 66
            aload 5 /* ksUsed */
            aload 4 /* ks */
            if_acmpne 66
        58: .line 372
            aload 1 /* keyAlias */
            astore 9 /* alias */
        start local 9 // java.lang.String alias
        59: .line 374
            ldc "JKS"
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.certificate:Lorg/apache/tomcat/util/net/SSLHostConfigCertificate;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfigCertificate.getCertificateKeystoreType:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 61
        60: .line 375
            aload 9 /* alias */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 9 /* alias */
        61: .line 377
      StackMap locals: javax.net.ssl.KeyManagerFactory javax.net.ssl.KeyManager[] java.lang.String
      StackMap stack:
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        62: goto 65
        63: .line 378
      StackMap locals: int
      StackMap stack:
            aload 8 /* kms */
            iload 10 /* i */
            new org.apache.tomcat.util.net.jsse.JSSEKeyManager
            dup
            aload 8 /* kms */
            iload 10 /* i */
            aaload
            checkcast javax.net.ssl.X509KeyManager
            aload 9 /* alias */
            invokespecial org.apache.tomcat.util.net.jsse.JSSEKeyManager.<init>:(Ljavax/net/ssl/X509KeyManager;Ljava/lang/String;)V
            aastore
        64: .line 377
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        65: iload 10 /* i */
            aload 8 /* kms */
            arraylength
            if_icmplt 63
        end local 10 // int i
        end local 9 // java.lang.String alias
        66: .line 382
      StackMap locals:
      StackMap stack:
            aload 8 /* kms */
            areturn
        end local 8 // javax.net.ssl.KeyManager[] kms
        end local 7 // javax.net.ssl.KeyManagerFactory kmf
        end local 6 // char[] keyPassArray
        end local 5 // java.security.KeyStore ksUsed
        end local 4 // java.security.KeyStore ks
        end local 3 // java.lang.String keyPass
        end local 2 // java.lang.String algorithm
        end local 1 // java.lang.String keyAlias
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   67     0                  this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            1   67     1              keyAlias  Ljava/lang/String;
            2   67     2             algorithm  Ljava/lang/String;
            3   67     3               keyPass  Ljava/lang/String;
            6   67     4                    ks  Ljava/security/KeyStore;
            7   67     5                ksUsed  Ljava/security/KeyStore;
            8   67     6          keyPassArray  [C
           16   29     7        privateKeyFile  Lorg/apache/tomcat/util/net/jsse/PEMFile;
           17   29     8       certificateFile  Lorg/apache/tomcat/util/net/jsse/PEMFile;
           18   29     9                 chain  Ljava/util/Collection<Ljava/security/cert/Certificate;>;
           21   22    10  certificateChainFile  Lorg/apache/tomcat/util/net/jsse/PEMFile;
           34   42     7               aliases  Ljava/util/Enumeration<Ljava/lang/String;>;
           43   54     7                     k  Ljava/security/Key;
           46   54     8              provider  Ljava/lang/String;
           55   67     7                   kmf  Ljavax/net/ssl/KeyManagerFactory;
           57   67     8                   kms  [Ljavax/net/ssl/KeyManager;
           59   66     9                 alias  Ljava/lang/String;
           62   66    10                     i  I
    Exceptions:
      throws java.lang.Exception

  public java.lang.String[] getEnabledProtocols();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
         0: .line 388
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.enabledProtocols:[Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SSLUtilBase;

  public java.lang.String[] getEnabledCiphers();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
         0: .line 394
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.enabledCiphers:[Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/SSLUtilBase;

  public javax.net.ssl.TrustManager[] getTrustManagers();
    descriptor: ()[Ljavax/net/ssl/TrustManager;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=10, args_size=1
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
         0: .line 401
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getTrustManagerClassName:()Ljava/lang/String;
            astore 1 /* className */
        start local 1 // java.lang.String className
         1: .line 402
            aload 1 /* className */
            ifnull 11
            aload 1 /* className */
            invokevirtual java.lang.String.length:()I
            ifle 11
         2: .line 403
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 2 /* classLoader */
        start local 2 // java.lang.ClassLoader classLoader
         3: .line 404
            aload 2 /* classLoader */
            aload 1 /* className */
            invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
            astore 3 /* clazz */
        start local 3 // java.lang.Class clazz
         4: .line 405
            ldc Ljavax/net/ssl/TrustManager;
            aload 3 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 8
         5: .line 406
            new java.lang.InstantiationException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
         6: .line 407
            ldc "jsse.invalidTrustManagerClassName"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* className */
            aastore
         7: .line 406
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.InstantiationException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 409
      StackMap locals: java.lang.String java.lang.ClassLoader java.lang.Class
      StackMap stack:
            aload 3 /* clazz */
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* trustManagerObject */
        start local 4 // java.lang.Object trustManagerObject
         9: .line 410
            aload 4 /* trustManagerObject */
            checkcast javax.net.ssl.TrustManager
            astore 5 /* trustManager */
        start local 5 // javax.net.ssl.TrustManager trustManager
        10: .line 411
            iconst_1
            anewarray javax.net.ssl.TrustManager
            dup
            iconst_0
            aload 5 /* trustManager */
            aastore
            areturn
        end local 5 // javax.net.ssl.TrustManager trustManager
        end local 4 // java.lang.Object trustManagerObject
        end local 3 // java.lang.Class clazz
        end local 2 // java.lang.ClassLoader classLoader
        11: .line 414
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 2 /* tms */
        start local 2 // javax.net.ssl.TrustManager[] tms
        12: .line 416
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getTruststore:()Ljava/security/KeyStore;
            astore 3 /* trustStore */
        start local 3 // java.security.KeyStore trustStore
        13: .line 417
            aload 3 /* trustStore */
            ifnull 32
        14: .line 418
            aload 0 /* this */
            aload 3 /* trustStore */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.checkTrustStoreEntries:(Ljava/security/KeyStore;)V
        15: .line 419
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getTruststoreAlgorithm:()Ljava/lang/String;
            astore 4 /* algorithm */
        start local 4 // java.lang.String algorithm
        16: .line 420
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getCertificateRevocationListFile:()Ljava/lang/String;
            astore 5 /* crlf */
        start local 5 // java.lang.String crlf
        17: .line 421
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getRevocationEnabled:()Z
            istore 6 /* revocationEnabled */
        start local 6 // boolean revocationEnabled
        18: .line 423
            ldc "PKIX"
            aload 4 /* algorithm */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 25
        19: .line 424
            aload 4 /* algorithm */
            invokestatic javax.net.ssl.TrustManagerFactory.getInstance:(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;
            astore 7 /* tmf */
        start local 7 // javax.net.ssl.TrustManagerFactory tmf
        20: .line 425
            aload 0 /* this */
            aload 5 /* crlf */
            aload 3 /* trustStore */
            iload 6 /* revocationEnabled */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.getParameters:(Ljava/lang/String;Ljava/security/KeyStore;Z)Ljava/security/cert/CertPathParameters;
            astore 8 /* params */
        start local 8 // java.security.cert.CertPathParameters params
        21: .line 426
            new javax.net.ssl.CertPathTrustManagerParameters
            dup
            aload 8 /* params */
            invokespecial javax.net.ssl.CertPathTrustManagerParameters.<init>:(Ljava/security/cert/CertPathParameters;)V
            astore 9 /* mfp */
        start local 9 // javax.net.ssl.ManagerFactoryParameters mfp
        22: .line 427
            aload 7 /* tmf */
            aload 9 /* mfp */
            invokevirtual javax.net.ssl.TrustManagerFactory.init:(Ljavax/net/ssl/ManagerFactoryParameters;)V
        23: .line 428
            aload 7 /* tmf */
            invokevirtual javax.net.ssl.TrustManagerFactory.getTrustManagers:()[Ljavax/net/ssl/TrustManager;
            astore 2 /* tms */
        end local 9 // javax.net.ssl.ManagerFactoryParameters mfp
        end local 8 // java.security.cert.CertPathParameters params
        end local 7 // javax.net.ssl.TrustManagerFactory tmf
        24: .line 429
            goto 32
        25: .line 430
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String javax.net.ssl.TrustManager[] java.security.KeyStore java.lang.String java.lang.String int
      StackMap stack:
            aload 4 /* algorithm */
            invokestatic javax.net.ssl.TrustManagerFactory.getInstance:(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;
            astore 7 /* tmf */
        start local 7 // javax.net.ssl.TrustManagerFactory tmf
        26: .line 431
            aload 7 /* tmf */
            aload 3 /* trustStore */
            invokevirtual javax.net.ssl.TrustManagerFactory.init:(Ljava/security/KeyStore;)V
        27: .line 432
            aload 7 /* tmf */
            invokevirtual javax.net.ssl.TrustManagerFactory.getTrustManagers:()[Ljavax/net/ssl/TrustManager;
            astore 2 /* tms */
        28: .line 433
            aload 5 /* crlf */
            ifnull 30
            aload 5 /* crlf */
            invokevirtual java.lang.String.length:()I
            ifle 30
        29: .line 434
            new java.security.cert.CRLException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsseUtil.noCrlSupport"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* algorithm */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.security.cert.CRLException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 437
      StackMap locals: javax.net.ssl.TrustManagerFactory
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.isCertificateVerificationDepthConfigured:()Z
            ifeq 32
        31: .line 438
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsseUtil.noVerificationDepth"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* algorithm */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        end local 7 // javax.net.ssl.TrustManagerFactory tmf
        end local 6 // boolean revocationEnabled
        end local 5 // java.lang.String crlf
        end local 4 // java.lang.String algorithm
        32: .line 443
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String javax.net.ssl.TrustManager[] java.security.KeyStore
      StackMap stack:
            aload 2 /* tms */
            areturn
        end local 3 // java.security.KeyStore trustStore
        end local 2 // javax.net.ssl.TrustManager[] tms
        end local 1 // java.lang.String className
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   33     0                this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            1   33     1           className  Ljava/lang/String;
            3   11     2         classLoader  Ljava/lang/ClassLoader;
            4   11     3               clazz  Ljava/lang/Class<*>;
            9   11     4  trustManagerObject  Ljava/lang/Object;
           10   11     5        trustManager  Ljavax/net/ssl/TrustManager;
           12   33     2                 tms  [Ljavax/net/ssl/TrustManager;
           13   33     3          trustStore  Ljava/security/KeyStore;
           16   32     4           algorithm  Ljava/lang/String;
           17   32     5                crlf  Ljava/lang/String;
           18   32     6   revocationEnabled  Z
           20   24     7                 tmf  Ljavax/net/ssl/TrustManagerFactory;
           21   24     8              params  Ljava/security/cert/CertPathParameters;
           22   24     9                 mfp  Ljavax/net/ssl/ManagerFactoryParameters;
           26   32     7                 tmf  Ljavax/net/ssl/TrustManagerFactory;
    Exceptions:
      throws java.lang.Exception

  private void checkTrustStoreEntries(java.security.KeyStore);
    descriptor: (Ljava/security/KeyStore;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=8, args_size=2
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
        start local 1 // java.security.KeyStore trustStore
         0: .line 448
            aload 1 /* trustStore */
            invokevirtual java.security.KeyStore.aliases:()Ljava/util/Enumeration;
            astore 2 /* aliases */
        start local 2 // java.util.Enumeration aliases
         1: .line 449
            aload 2 /* aliases */
            ifnull 22
         2: .line 450
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            astore 3 /* now */
        start local 3 // java.util.Date now
         3: .line 451
            goto 21
         4: .line 452
      StackMap locals: java.util.Enumeration java.util.Date
      StackMap stack:
            aload 2 /* aliases */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* alias */
        start local 4 // java.lang.String alias
         5: .line 453
            aload 1 /* trustStore */
            aload 4 /* alias */
            invokevirtual java.security.KeyStore.isCertificateEntry:(Ljava/lang/String;)Z
            ifeq 21
         6: .line 454
            aload 1 /* trustStore */
            aload 4 /* alias */
            invokevirtual java.security.KeyStore.getCertificate:(Ljava/lang/String;)Ljava/security/cert/Certificate;
            astore 5 /* cert */
        start local 5 // java.security.cert.Certificate cert
         7: .line 455
            aload 5 /* cert */
            instanceof java.security.cert.X509Certificate
            ifeq 19
         8: .line 457
            aload 5 /* cert */
            checkcast java.security.cert.X509Certificate
            aload 3 /* now */
            invokevirtual java.security.cert.X509Certificate.checkValidity:(Ljava/util/Date;)V
         9: .line 458
            goto 21
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.security.KeyStore java.util.Enumeration java.util.Date java.lang.String java.security.cert.Certificate
      StackMap stack: java.security.cert.CertificateException
        10: astore 6 /* e */
        start local 6 // java.security.cert.CertificateException e
        11: .line 459
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsseUtil.trustedCertNotValid"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* alias */
            aastore
            dup
            iconst_1
        12: .line 460
            aload 5 /* cert */
            checkcast java.security.cert.X509Certificate
            invokevirtual java.security.cert.X509Certificate.getSubjectDN:()Ljava/security/Principal;
            aastore
            dup
            iconst_2
            aload 6 /* e */
            invokevirtual java.security.cert.CertificateException.getMessage:()Ljava/lang/String;
            aastore
        13: .line 459
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 7 /* msg */
        start local 7 // java.lang.String msg
        14: .line 461
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 17
        15: .line 462
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            aload 7 /* msg */
            aload 6 /* e */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        16: .line 463
            goto 21
        17: .line 464
      StackMap locals: java.security.cert.CertificateException java.lang.String
      StackMap stack:
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            aload 7 /* msg */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        end local 7 // java.lang.String msg
        end local 6 // java.security.cert.CertificateException e
        18: .line 467
            goto 21
        19: .line 468
      StackMap locals:
      StackMap stack:
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 21
        20: .line 469
            getstatic org.apache.tomcat.util.net.SSLUtilBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsseUtil.trustedCertNotChecked"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* alias */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        end local 5 // java.security.cert.Certificate cert
        end local 4 // java.lang.String alias
        21: .line 451
      StackMap locals:
      StackMap stack:
            aload 2 /* aliases */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 4
        end local 3 // java.util.Date now
        22: .line 475
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.util.Enumeration aliases
        end local 1 // java.security.KeyStore trustStore
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   23     0        this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            0   23     1  trustStore  Ljava/security/KeyStore;
            1   23     2     aliases  Ljava/util/Enumeration<Ljava/lang/String;>;
            3   22     3         now  Ljava/util/Date;
            5   21     4       alias  Ljava/lang/String;
            7   21     5        cert  Ljava/security/cert/Certificate;
           11   18     6           e  Ljava/security/cert/CertificateException;
           14   18     7         msg  Ljava/lang/String;
      Exception table:
        from    to  target  type
           8     9      10  Class java.security.cert.CertificateExpiredException
           8     9      10  Class java.security.cert.CertificateNotYetValidException
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
            Name  Flags
      trustStore  

  protected java.security.cert.CertPathParameters getParameters(java.lang.String, java.security.KeyStore, boolean);
    descriptor: (Ljava/lang/String;Ljava/security/KeyStore;Z)Ljava/security/cert/CertPathParameters;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=8, args_size=4
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
        start local 1 // java.lang.String crlf
        start local 2 // java.security.KeyStore trustStore
        start local 3 // boolean revocationEnabled
         0: .line 495
            new java.security.cert.PKIXBuilderParameters
            dup
            aload 2 /* trustStore */
            new java.security.cert.X509CertSelector
            dup
            invokespecial java.security.cert.X509CertSelector.<init>:()V
            invokespecial java.security.cert.PKIXBuilderParameters.<init>:(Ljava/security/KeyStore;Ljava/security/cert/CertSelector;)V
         1: .line 494
            astore 4 /* xparams */
        start local 4 // java.security.cert.PKIXBuilderParameters xparams
         2: .line 496
            aload 1 /* crlf */
            ifnull 9
            aload 1 /* crlf */
            invokevirtual java.lang.String.length:()I
            ifle 9
         3: .line 497
            aload 0 /* this */
            aload 1 /* crlf */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.getCRLs:(Ljava/lang/String;)Ljava/util/Collection;
            astore 5 /* crls */
        start local 5 // java.util.Collection crls
         4: .line 498
            new java.security.cert.CollectionCertStoreParameters
            dup
            aload 5 /* crls */
            invokespecial java.security.cert.CollectionCertStoreParameters.<init>:(Ljava/util/Collection;)V
            astore 6 /* csp */
        start local 6 // java.security.cert.CertStoreParameters csp
         5: .line 499
            ldc "Collection"
            aload 6 /* csp */
            invokestatic java.security.cert.CertStore.getInstance:(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)Ljava/security/cert/CertStore;
            astore 7 /* store */
        start local 7 // java.security.cert.CertStore store
         6: .line 500
            aload 4 /* xparams */
            aload 7 /* store */
            invokevirtual java.security.cert.PKIXBuilderParameters.addCertStore:(Ljava/security/cert/CertStore;)V
         7: .line 501
            aload 4 /* xparams */
            iconst_1
            invokevirtual java.security.cert.PKIXBuilderParameters.setRevocationEnabled:(Z)V
        end local 7 // java.security.cert.CertStore store
        end local 6 // java.security.cert.CertStoreParameters csp
        end local 5 // java.util.Collection crls
         8: .line 502
            goto 10
         9: .line 503
      StackMap locals: java.security.cert.PKIXBuilderParameters
      StackMap stack:
            aload 4 /* xparams */
            iload 3 /* revocationEnabled */
            invokevirtual java.security.cert.PKIXBuilderParameters.setRevocationEnabled:(Z)V
        10: .line 505
      StackMap locals:
      StackMap stack:
            aload 4 /* xparams */
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.SSLUtilBase.sslHostConfig:Lorg/apache/tomcat/util/net/SSLHostConfig;
            invokevirtual org.apache.tomcat.util.net.SSLHostConfig.getCertificateVerificationDepth:()I
            invokevirtual java.security.cert.PKIXBuilderParameters.setMaxPathLength:(I)V
        11: .line 506
            aload 4 /* xparams */
            areturn
        end local 4 // java.security.cert.PKIXBuilderParameters xparams
        end local 3 // boolean revocationEnabled
        end local 2 // java.security.KeyStore trustStore
        end local 1 // java.lang.String crlf
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            0   12     1               crlf  Ljava/lang/String;
            0   12     2         trustStore  Ljava/security/KeyStore;
            0   12     3  revocationEnabled  Z
            2   12     4            xparams  Ljava/security/cert/PKIXBuilderParameters;
            4    8     5               crls  Ljava/util/Collection<+Ljava/security/cert/CRL;>;
            5    8     6                csp  Ljava/security/cert/CertStoreParameters;
            6    8     7              store  Ljava/security/cert/CertStore;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
                   Name  Flags
      crlf               
      trustStore         
      revocationEnabled  

  protected java.util.Collection<? extends java.security.cert.CRL> getCRLs(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Collection;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
        start local 1 // java.lang.String crlf
         0: .line 521
            aconst_null
            astore 2 /* crls */
        start local 2 // java.util.Collection crls
         1: .line 523
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 3 /* cf */
        start local 3 // java.security.cert.CertificateFactory cf
         2: .line 524
            aconst_null
            astore 4
            aconst_null
            astore 5
         3: invokestatic org.apache.tomcat.util.file.ConfigFileLoader.getSource:()Lorg/apache/tomcat/util/file/ConfigurationSource;
            aload 1 /* crlf */
            invokeinterface org.apache.tomcat.util.file.ConfigurationSource.getResource:(Ljava/lang/String;)Lorg/apache/tomcat/util/file/ConfigurationSource$Resource;
            invokevirtual org.apache.tomcat.util.file.ConfigurationSource$Resource.getInputStream:()Ljava/io/InputStream;
            astore 6 /* is */
        start local 6 // java.io.InputStream is
         4: .line 525
            aload 3 /* cf */
            aload 6 /* is */
            invokevirtual java.security.cert.CertificateFactory.generateCRLs:(Ljava/io/InputStream;)Ljava/util/Collection;
            astore 2 /* crls */
         5: .line 526
            aload 6 /* is */
            ifnull 17
            aload 6 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 17
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String java.util.Collection java.security.cert.CertificateFactory java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
         6: astore 4
            aload 6 /* is */
            ifnull 7
            aload 6 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 6 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
         7: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 5
            aload 4
            ifnonnull 9
            aload 5
            astore 4
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 4
            aload 5
            if_acmpeq 10
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 4
            athrow
        end local 3 // java.security.cert.CertificateFactory cf
        11: .line 527
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String java.util.Collection
      StackMap stack: java.io.IOException
            astore 3 /* iex */
        start local 3 // java.io.IOException iex
        12: .line 528
            aload 3 /* iex */
            athrow
        end local 3 // java.io.IOException iex
        13: .line 529
      StackMap locals:
      StackMap stack: java.security.cert.CRLException
            astore 3 /* crle */
        start local 3 // java.security.cert.CRLException crle
        14: .line 530
            aload 3 /* crle */
            athrow
        end local 3 // java.security.cert.CRLException crle
        15: .line 531
      StackMap locals:
      StackMap stack: java.security.cert.CertificateException
            astore 3 /* ce */
        start local 3 // java.security.cert.CertificateException ce
        16: .line 532
            aload 3 /* ce */
            athrow
        end local 3 // java.security.cert.CertificateException ce
        17: .line 534
      StackMap locals:
      StackMap stack:
            aload 2 /* crls */
            areturn
        end local 2 // java.util.Collection crls
        end local 1 // java.lang.String crlf
        end local 0 // org.apache.tomcat.util.net.SSLUtilBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   18     0  this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            0   18     1  crlf  Ljava/lang/String;
            1   18     2  crls  Ljava/util/Collection<+Ljava/security/cert/CRL;>;
            2   11     3    cf  Ljava/security/cert/CertificateFactory;
            4    7     6    is  Ljava/io/InputStream;
           12   13     3   iex  Ljava/io/IOException;
           14   15     3  crle  Ljava/security/cert/CRLException;
           16   17     3    ce  Ljava/security/cert/CertificateException;
      Exception table:
        from    to  target  type
           4     5       6  any
           3     8       8  any
           1    11      11  Class java.io.IOException
           1    11      13  Class java.security.cert.CRLException
           1    11      15  Class java.security.cert.CertificateException
    Exceptions:
      throws java.io.IOException, java.security.cert.CRLException, java.security.cert.CertificateException
    Signature: (Ljava/lang/String;)Ljava/util/Collection<+Ljava/security/cert/CRL;>;
    MethodParameters:
      Name  Flags
      crlf  

  protected abstract java.util.Set<java.lang.String> getImplementedProtocols();
    descriptor: ()Ljava/util/Set;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  protected abstract java.util.Set<java.lang.String> getImplementedCiphers();
    descriptor: ()Ljava/util/Set;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  protected abstract org.apache.juli.logging.Log getLog();
    descriptor: ()Lorg/apache/juli/logging/Log;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract boolean isTls13RenegAuthAvailable();
    descriptor: ()Z
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected abstract org.apache.tomcat.util.net.SSLContext createSSLContextInternal(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)Lorg/apache/tomcat/util/net/SSLContext;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.lang.Exception
    Signature: (Ljava/util/List<Ljava/lang/String;>;)Lorg/apache/tomcat/util/net/SSLContext;
    MethodParameters:
                     Name  Flags
      negotiableProtocols  
}
SourceFile: "SSLUtilBase.java"
InnerClasses:
  public abstract LoadStoreParameter = java.security.KeyStore$LoadStoreParameter of java.security.KeyStore
  public abstract ProtectionParameter = java.security.KeyStore$ProtectionParameter of java.security.KeyStore
  public Resource = org.apache.tomcat.util.file.ConfigurationSource$Resource of org.apache.tomcat.util.file.ConfigurationSource
  public final CertificateVerification = org.apache.tomcat.util.net.SSLHostConfig$CertificateVerification of org.apache.tomcat.util.net.SSLHostConfig