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 "sslUtilBase.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 */
            iconst_0
            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 "sslUtilBase.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 */
            iconst_0
            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 21
         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 21
        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 21
        14: .line 158
            new java.util.ArrayList
            dup
            aload 3 /* configured */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 6 /* skipped */
        start local 6 // java.util.List skipped
        15: .line 159
            aload 6 /* skipped */
            aload 5 /* enabled */
            invokeinterface java.util.List.removeAll:(Ljava/util/Collection;)Z
            pop
        16: .line 160
            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
        17: .line 161
            iload 2 /* warnOnSkip */
            ifeq 20
        18: .line 162
            aload 1 /* log */
            aload 7 /* msg */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        19: .line 163
            goto 21
        20: .line 164
      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
        21: .line 170
      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   22     0         name  Ljava/lang/String;
            0   22     1          log  Lorg/apache/juli/logging/Log;
            0   22     2   warnOnSkip  Z
            0   22     3   configured  Ljava/util/Collection<TT;>;
            0   22     4  implemented  Ljava/util/Collection<TT;>;
            1   22     5      enabled  Ljava/util/List<TT;>;
           15   21     6      skipped  Ljava/util/List<TT;>;
           17   21     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 180
            aconst_null
            astore 4 /* ks */
        start local 4 // java.security.KeyStore ks
         1: .line 181
            aconst_null
            astore 5 /* istream */
        start local 5 // java.io.InputStream istream
         2: .line 183
            aload 1 /* provider */
            ifnonnull 5
         3: .line 184
            aload 0 /* type */
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;)Ljava/security/KeyStore;
            astore 4 /* ks */
         4: .line 185
            goto 6
         5: .line 186
      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 188
      StackMap locals:
      StackMap stack:
            ldc "DKS"
            aload 0 /* type */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 10
         7: .line 189
            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 190
            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 191
            goto 36
        10: .line 194
      StackMap locals:
      StackMap stack:
            ldc "PKCS11"
            aload 0 /* type */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifne 12
        11: .line 195
            aload 2 /* path */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 13
        12: .line 196
      StackMap locals:
      StackMap stack:
            ldc "NONE"
            aload 2 /* path */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 14
        13: .line 197
      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 211
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* storePass */
        start local 6 // char[] storePass
        15: .line 212
            aload 3 /* pass */
            ifnull 18
            ldc ""
            aload 3 /* pass */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        16: .line 213
            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 214
      StackMap locals: char[]
      StackMap stack:
            aload 3 /* pass */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 6 /* storePass */
        18: .line 216
      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 218
            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 219
            aload 6 /* fnfe */
            athrow
        end local 6 // java.io.FileNotFoundException fnfe
        22: .line 220
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 6 /* ioe */
        start local 6 // java.io.IOException ioe
        23: .line 223
            aload 6 /* ioe */
            athrow
        end local 6 // java.io.IOException ioe
        24: .line 224
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 6 /* ex */
        start local 6 // java.lang.Exception ex
        25: .line 225
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.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 226
            aload 6 /* ex */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aastore
        27: .line 225
            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 227
            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 228
            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 229
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 8
        31: .line 230
            aload 5 /* istream */
            ifnull 35
        32: .line 232
            aload 5 /* istream */
            invokevirtual java.io.InputStream.close:()V
        33: .line 233
            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 237
      StackMap locals:
      StackMap stack:
            aload 8
            athrow
        36: .line 230
      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 232
            aload 5 /* istream */
            invokevirtual java.io.InputStream.close:()V
        38: .line 233
            goto 40
      StackMap locals:
      StackMap stack: java.io.IOException
        39: pop
        40: .line 239
      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 245
            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 246
            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 248
            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 249
            aload 3 /* sessionContext */
            ifnull 5
         4: .line 250
            aload 0 /* this */
            aload 3 /* sessionContext */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.configureSessionContext:(Ljavax/net/ssl/SSLSessionContext;)V
         5: .line 253
      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 260
            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 261
            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 265
      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 266
            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 268
      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=12, args_size=1
        start local 0 // org.apache.tomcat.util.net.SSLUtilBase this
         0: .line 273
            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 274
            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 275
            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 278
            aload 3 /* keyPass */
            ifnonnull 5
         4: .line 279
            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 282
      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 283
            aload 4 /* ks */
            astore 5 /* ksUsed */
        start local 5 // java.security.KeyStore ksUsed
         7: .line 297
            aload 3 /* keyPass */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 6 /* keyPassArray */
        start local 6 // char[] keyPassArray
         8: .line 299
            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
         9: .line 300
            aload 7 /* kmf */
            invokevirtual javax.net.ssl.KeyManagerFactory.getProvider:()Ljava/security/Provider;
            invokevirtual java.security.Provider.getInfo:()Ljava/lang/String;
            ldc "FIPS"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            iconst_m1
            if_icmpeq 14
        10: .line 302
            aload 1 /* keyAlias */
            ifnull 12
        11: .line 303
            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 "sslUtilBase.aliasIgnored"
            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;
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
        12: .line 305
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String java.lang.String java.lang.String java.security.KeyStore java.security.KeyStore char[] javax.net.ssl.KeyManagerFactory
      StackMap stack:
            aload 7 /* kmf */
            aload 5 /* ksUsed */
            aload 6 /* keyPassArray */
            invokevirtual javax.net.ssl.KeyManagerFactory.init:(Ljava/security/KeyStore;[C)V
        13: .line 306
            aload 7 /* kmf */
            invokevirtual javax.net.ssl.KeyManagerFactory.getKeyManagers:()[Ljavax/net/ssl/KeyManager;
            areturn
        14: .line 309
      StackMap locals:
      StackMap stack:
            aload 4 /* ks */
            ifnonnull 35
        15: .line 310
            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 17
        16: .line 311
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.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
        17: .line 314
      StackMap locals:
      StackMap stack:
            new org.apache.tomcat.util.net.jsse.PEMFile
            dup
        18: .line 315
            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 19
            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 20
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String java.lang.String java.lang.String java.security.KeyStore java.security.KeyStore char[] javax.net.ssl.KeyManagerFactory
      StackMap stack: new 17 new 17
        19: 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;
        20: .line 316
      StackMap locals: org.apache.tomcat.util.net.SSLUtilBase java.lang.String java.lang.String java.lang.String java.security.KeyStore java.security.KeyStore char[] javax.net.ssl.KeyManagerFactory
      StackMap stack: new 17 new 17 java.lang.String
            aload 3 /* keyPass */
        21: .line 314
            invokespecial org.apache.tomcat.util.net.jsse.PEMFile.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 8 /* privateKeyFile */
        start local 8 // org.apache.tomcat.util.net.jsse.PEMFile privateKeyFile
        22: .line 317
            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 9 /* certificateFile */
        start local 9 // org.apache.tomcat.util.net.jsse.PEMFile certificateFile
        23: .line 319
            new java.util.ArrayList
            dup
            aload 9 /* certificateFile */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile.getCertificates:()Ljava/util/List;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 10 /* chain */
        start local 10 // java.util.Collection chain
        24: .line 320
            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 27
        25: .line 321
            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 11 /* certificateChainFile */
        start local 11 // org.apache.tomcat.util.net.jsse.PEMFile certificateChainFile
        26: .line 322
            aload 10 /* chain */
            aload 11 /* 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 11 // org.apache.tomcat.util.net.jsse.PEMFile certificateChainFile
        27: .line 325
      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 29
        28: .line 326
            ldc "tomcat"
            astore 1 /* keyAlias */
        29: .line 330
      StackMap locals:
      StackMap stack:
            ldc "JKS"
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;)Ljava/security/KeyStore;
            astore 5 /* ksUsed */
        30: .line 331
            aload 5 /* ksUsed */
            aconst_null
            aconst_null
            invokevirtual java.security.KeyStore.load:(Ljava/io/InputStream;[C)V
        31: .line 332
            aload 5 /* ksUsed */
            aload 1 /* keyAlias */
            aload 8 /* privateKeyFile */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile.getPrivateKey:()Ljava/security/PrivateKey;
            aload 3 /* keyPass */
            invokevirtual java.lang.String.toCharArray:()[C
        32: .line 333
            aload 10 /* chain */
            iconst_0
            anewarray java.security.cert.Certificate
            invokeinterface java.util.Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.security.cert.Certificate[]
        33: .line 332
            invokevirtual java.security.KeyStore.setKeyEntry:(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V
        end local 10 // java.util.Collection chain
        end local 9 // org.apache.tomcat.util.net.jsse.PEMFile certificateFile
        end local 8 // org.apache.tomcat.util.net.jsse.PEMFile privateKeyFile
        34: .line 334
            goto 59
        35: .line 335
      StackMap locals:
      StackMap stack:
            aload 1 /* keyAlias */
            ifnull 37
            aload 4 /* ks */
            aload 1 /* keyAlias */
            invokevirtual java.security.KeyStore.isKeyEntry:(Ljava/lang/String;)Z
            ifne 37
        36: .line 336
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.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
        37: .line 337
      StackMap locals:
      StackMap stack:
            aload 1 /* keyAlias */
            ifnonnull 47
        38: .line 338
            aload 4 /* ks */
            invokevirtual java.security.KeyStore.aliases:()Ljava/util/Enumeration;
            astore 8 /* aliases */
        start local 8 // java.util.Enumeration aliases
        39: .line 339
            aload 8 /* aliases */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 44
        40: .line 340
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.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
        41: .line 343
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 8 /* aliases */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* keyAlias */
        42: .line 344
            aload 4 /* ks */
            aload 1 /* keyAlias */
            invokevirtual java.security.KeyStore.isKeyEntry:(Ljava/lang/String;)Z
            ifne 44
        43: .line 345
            aconst_null
            astore 1 /* keyAlias */
        44: .line 342
      StackMap locals:
      StackMap stack:
            aload 8 /* aliases */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifeq 45
            aload 1 /* keyAlias */
            ifnull 41
        45: .line 348
      StackMap locals:
      StackMap stack:
            aload 1 /* keyAlias */
            ifnonnull 47
        46: .line 349
            new java.io.IOException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.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 8 // java.util.Enumeration aliases
        47: .line 353
      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 8 /* k */
        start local 8 // java.security.Key k
        48: .line 354
            aload 8 /* k */
            ifnull 59
            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 59
        49: .line 355
            ldc "PKCS#8"
            aload 8 /* k */
            invokeinterface java.security.Key.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 59
        50: .line 357
            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 9 /* provider */
        start local 9 // java.lang.String provider
        51: .line 358
            aload 9 /* provider */
            ifnonnull 54
        52: .line 359
            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 */
        53: .line 360
            goto 57
        54: .line 361
      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;
        55: .line 362
            aload 9 /* provider */
        56: .line 361
            invokestatic java.security.KeyStore.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;
            astore 5 /* ksUsed */
        57: .line 364
      StackMap locals:
      StackMap stack:
            aload 5 /* ksUsed */
            aconst_null
            aconst_null
            invokevirtual java.security.KeyStore.load:(Ljava/io/InputStream;[C)V
        58: .line 365
            aload 5 /* ksUsed */
            aload 1 /* keyAlias */
            aload 8 /* 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 9 // java.lang.String provider
        end local 8 // java.security.Key k
        59: .line 371
      StackMap locals:
      StackMap stack:
            aload 7 /* kmf */
            aload 5 /* ksUsed */
            aload 6 /* keyPassArray */
            invokevirtual javax.net.ssl.KeyManagerFactory.init:(Ljava/security/KeyStore;[C)V
        60: .line 373
            aload 7 /* kmf */
            invokevirtual javax.net.ssl.KeyManagerFactory.getKeyManagers:()[Ljavax/net/ssl/KeyManager;
            astore 8 /* kms */
        start local 8 // javax.net.ssl.KeyManager[] kms
        61: .line 378
            aload 8 /* kms */
            ifnull 70
            aload 5 /* ksUsed */
            aload 4 /* ks */
            if_acmpne 70
        62: .line 379
            aload 1 /* keyAlias */
            astore 9 /* alias */
        start local 9 // java.lang.String alias
        63: .line 381
            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 65
        64: .line 382
            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 */
        65: .line 384
      StackMap locals: javax.net.ssl.KeyManager[] java.lang.String
      StackMap stack:
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        66: goto 69
        67: .line 385
      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
        68: .line 384
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        69: iload 10 /* i */
            aload 8 /* kms */
            arraylength
            if_icmplt 67
        end local 10 // int i
        end local 9 // java.lang.String alias
        70: .line 389
      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   71     0                  this  Lorg/apache/tomcat/util/net/SSLUtilBase;
            1   71     1              keyAlias  Ljava/lang/String;
            2   71     2             algorithm  Ljava/lang/String;
            3   71     3               keyPass  Ljava/lang/String;
            6   71     4                    ks  Ljava/security/KeyStore;
            7   71     5                ksUsed  Ljava/security/KeyStore;
            8   71     6          keyPassArray  [C
            9   71     7                   kmf  Ljavax/net/ssl/KeyManagerFactory;
           22   34     8        privateKeyFile  Lorg/apache/tomcat/util/net/jsse/PEMFile;
           23   34     9       certificateFile  Lorg/apache/tomcat/util/net/jsse/PEMFile;
           24   34    10                 chain  Ljava/util/Collection<Ljava/security/cert/Certificate;>;
           26   27    11  certificateChainFile  Lorg/apache/tomcat/util/net/jsse/PEMFile;
           39   47     8               aliases  Ljava/util/Enumeration<Ljava/lang/String;>;
           48   59     8                     k  Ljava/security/Key;
           51   59     9              provider  Ljava/lang/String;
           61   71     8                   kms  [Ljavax/net/ssl/KeyManager;
           63   70     9                 alias  Ljava/lang/String;
           66   70    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 395
            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 401
            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 408
            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 409
            aload 1 /* className */
            ifnull 11
            aload 1 /* className */
            invokevirtual java.lang.String.length:()I
            ifle 11
         2: .line 410
            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 411
            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 412
            ldc Ljavax/net/ssl/TrustManager;
            aload 3 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 8
         5: .line 413
            new java.lang.InstantiationException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
         6: .line 414
            ldc "sslUtilBase.invalidTrustManagerClassName"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* className */
            aastore
         7: .line 413
            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 416
      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 417
            aload 4 /* trustManagerObject */
            checkcast javax.net.ssl.TrustManager
            astore 5 /* trustManager */
        start local 5 // javax.net.ssl.TrustManager trustManager
        10: .line 418
            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 421
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 2 /* tms */
        start local 2 // javax.net.ssl.TrustManager[] tms
        12: .line 423
            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 424
            aload 3 /* trustStore */
            ifnull 32
        14: .line 425
            aload 0 /* this */
            aload 3 /* trustStore */
            invokevirtual org.apache.tomcat.util.net.SSLUtilBase.checkTrustStoreEntries:(Ljava/security/KeyStore;)V
        15: .line 426
            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 427
            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 428
            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 430
            ldc "PKIX"
            aload 4 /* algorithm */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 25
        19: .line 431
            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 432
            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 433
            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 434
            aload 7 /* tmf */
            aload 9 /* mfp */
            invokevirtual javax.net.ssl.TrustManagerFactory.init:(Ljavax/net/ssl/ManagerFactoryParameters;)V
        23: .line 435
            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 436
            goto 32
        25: .line 437
      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 438
            aload 7 /* tmf */
            aload 3 /* trustStore */
            invokevirtual javax.net.ssl.TrustManagerFactory.init:(Ljava/security/KeyStore;)V
        27: .line 439
            aload 7 /* tmf */
            invokevirtual javax.net.ssl.TrustManagerFactory.getTrustManagers:()[Ljavax/net/ssl/TrustManager;
            astore 2 /* tms */
        28: .line 440
            aload 5 /* crlf */
            ifnull 30
            aload 5 /* crlf */
            invokevirtual java.lang.String.length:()I
            ifle 30
        29: .line 441
            new java.security.cert.CRLException
            dup
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.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 444
      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 445
            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 "sslUtilBase.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 450
      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 455
            aload 1 /* trustStore */
            invokevirtual java.security.KeyStore.aliases:()Ljava/util/Enumeration;
            astore 2 /* aliases */
        start local 2 // java.util.Enumeration aliases
         1: .line 456
            aload 2 /* aliases */
            ifnull 22
         2: .line 457
            new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
            astore 3 /* now */
        start local 3 // java.util.Date now
         3: .line 458
            goto 21
         4: .line 459
      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 460
            aload 1 /* trustStore */
            aload 4 /* alias */
            invokevirtual java.security.KeyStore.isCertificateEntry:(Ljava/lang/String;)Z
            ifeq 21
         6: .line 461
            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 462
            aload 5 /* cert */
            instanceof java.security.cert.X509Certificate
            ifeq 19
         8: .line 464
            aload 5 /* cert */
            checkcast java.security.cert.X509Certificate
            aload 3 /* now */
            invokevirtual java.security.cert.X509Certificate.checkValidity:(Ljava/util/Date;)V
         9: .line 465
            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 466
            getstatic org.apache.tomcat.util.net.SSLUtilBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "sslUtilBase.trustedCertNotValid"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* alias */
            aastore
            dup
            iconst_1
        12: .line 467
            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 466
            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 468
            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 469
            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 470
            goto 21
        17: .line 471
      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 474
            goto 21
        19: .line 475
      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 476
            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 "sslUtilBase.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 458
      StackMap locals:
      StackMap stack:
            aload 2 /* aliases */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 4
        end local 3 // java.util.Date now
        22: .line 482
      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 502
            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 501
            astore 4 /* xparams */
        start local 4 // java.security.cert.PKIXBuilderParameters xparams
         2: .line 503
            aload 1 /* crlf */
            ifnull 9
            aload 1 /* crlf */
            invokevirtual java.lang.String.length:()I
            ifle 9
         3: .line 504
            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 505
            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 506
            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 507
            aload 4 /* xparams */
            aload 7 /* store */
            invokevirtual java.security.cert.PKIXBuilderParameters.addCertStore:(Ljava/security/cert/CertStore;)V
         7: .line 508
            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 509
            goto 10
         9: .line 510
      StackMap locals: java.security.cert.PKIXBuilderParameters
      StackMap stack:
            aload 4 /* xparams */
            iload 3 /* revocationEnabled */
            invokevirtual java.security.cert.PKIXBuilderParameters.setRevocationEnabled:(Z)V
        10: .line 512
      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 513
            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 528
            aconst_null
            astore 2 /* crls */
        start local 2 // java.util.Collection crls
         1: .line 530
            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 531
            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 532
            aload 3 /* cf */
            aload 6 /* is */
            invokevirtual java.security.cert.CertificateFactory.generateCRLs:(Ljava/io/InputStream;)Ljava/util/Collection;
            astore 2 /* crls */
         5: .line 533
            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 534
      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 535
            aload 3 /* iex */
            athrow
        end local 3 // java.io.IOException iex
        13: .line 536
      StackMap locals:
      StackMap stack: java.security.cert.CRLException
            astore 3 /* crle */
        start local 3 // java.security.cert.CRLException crle
        14: .line 537
            aload 3 /* crle */
            athrow
        end local 3 // java.security.cert.CRLException crle
        15: .line 538
      StackMap locals:
      StackMap stack: java.security.cert.CertificateException
            astore 3 /* ce */
        start local 3 // java.security.cert.CertificateException ce
        16: .line 539
            aload 3 /* ce */
            athrow
        end local 3 // java.security.cert.CertificateException ce
        17: .line 541
      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