class org.apache.tomcat.util.net.jsse.PEMFile$Part
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.tomcat.util.net.jsse.PEMFile$Part
  super_class: java.lang.Object
{
  public static final java.lang.String BEGIN_BOUNDARY;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "-----BEGIN "

  public static final java.lang.String END_BOUNDARY;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "-----END "

  public java.lang.String type;
    descriptor: Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC

  public java.lang.String content;
    descriptor: Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC

  final org.apache.tomcat.util.net.jsse.PEMFile this$0;
    descriptor: Lorg/apache/tomcat/util/net/jsse/PEMFile;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private static volatile int[] $SWITCH_TABLE$org$apache$tomcat$util$net$jsse$PEMFile$Format;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  private void <init>(org.apache.tomcat.util.net.jsse.PEMFile);
    descriptor: (Lorg/apache/tomcat/util/net/jsse/PEMFile;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
         0: .line 122
            aload 0 /* this */
            aload 1
            putfield org.apache.tomcat.util.net.jsse.PEMFile$Part.this$0:Lorg/apache/tomcat/util/net/jsse/PEMFile;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 127
            aload 0 /* this */
            ldc ""
            putfield org.apache.tomcat.util.net.jsse.PEMFile$Part.content:Ljava/lang/String;
         2: .line 122
            return
        end local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/net/jsse/PEMFile$Part;
    MethodParameters:
        Name  Flags
      this$0  final

  private byte[] decode();
    descriptor: ()[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
         0: .line 130
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.jsse.PEMFile$Part.content:Ljava/lang/String;
            invokestatic org.apache.tomcat.util.codec.binary.Base64.decodeBase64:(Ljava/lang/String;)[B
            areturn
        end local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/net/jsse/PEMFile$Part;

  public java.security.cert.X509Certificate toCertificate();
    descriptor: ()Ljava/security/cert/X509Certificate;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
         0: .line 134
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 1 /* factory */
        start local 1 // java.security.cert.CertificateFactory factory
         1: .line 135
            aload 1 /* factory */
            new java.io.ByteArrayInputStream
            dup
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile$Part.decode:()[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            checkcast java.security.cert.X509Certificate
            areturn
        end local 1 // java.security.cert.CertificateFactory factory
        end local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/apache/tomcat/util/net/jsse/PEMFile$Part;
            1    2     1  factory  Ljava/security/cert/CertificateFactory;
    Exceptions:
      throws java.security.cert.CertificateException

  public java.security.PrivateKey toPrivateKey(java.lang.String, java.lang.String, org.apache.tomcat.util.net.jsse.PEMFile$Format);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/apache/tomcat/util/net/jsse/PEMFile$Format;)Ljava/security/PrivateKey;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=11, args_size=4
        start local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
        start local 1 // java.lang.String password
        start local 2 // java.lang.String keyAlgorithm
        start local 3 // org.apache.tomcat.util.net.jsse.PEMFile$Format format
         0: .line 140
            aconst_null
            astore 4 /* keySpec */
        start local 4 // java.security.spec.KeySpec keySpec
         1: .line 142
            aload 1 /* password */
            ifnonnull 7
         2: .line 143
            invokestatic org.apache.tomcat.util.net.jsse.PEMFile$Part.$SWITCH_TABLE$org$apache$tomcat$util$net$jsse$PEMFile$Format:()[I
            aload 3 /* format */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile$Format.ordinal:()I
            iaload
            tableswitch { // 1 - 2
                    1: 3
                    2: 5
              default: 6
          }
         3: .line 145
      StackMap locals: java.security.spec.KeySpec
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile$Part.decode:()[B
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile$Part.parsePKCS1:([B)Ljava/security/spec/RSAPrivateCrtKeySpec;
            astore 4 /* keySpec */
         4: .line 146
            goto 13
         5: .line 149
      StackMap locals:
      StackMap stack:
            new java.security.spec.PKCS8EncodedKeySpec
            dup
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile$Part.decode:()[B
            invokespecial java.security.spec.PKCS8EncodedKeySpec.<init>:([B)V
            astore 4 /* keySpec */
         6: .line 153
      StackMap locals:
      StackMap stack:
            goto 13
         7: .line 154
      StackMap locals:
      StackMap stack:
            new javax.crypto.EncryptedPrivateKeyInfo
            dup
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile$Part.decode:()[B
            invokespecial javax.crypto.EncryptedPrivateKeyInfo.<init>:([B)V
            astore 5 /* privateKeyInfo */
        start local 5 // javax.crypto.EncryptedPrivateKeyInfo privateKeyInfo
         8: .line 155
            aload 5 /* privateKeyInfo */
            invokevirtual javax.crypto.EncryptedPrivateKeyInfo.getAlgName:()Ljava/lang/String;
            invokestatic javax.crypto.SecretKeyFactory.getInstance:(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;
            astore 6 /* secretKeyFactory */
        start local 6 // javax.crypto.SecretKeyFactory secretKeyFactory
         9: .line 156
            aload 6 /* secretKeyFactory */
            new javax.crypto.spec.PBEKeySpec
            dup
            aload 1 /* password */
            invokevirtual java.lang.String.toCharArray:()[C
            invokespecial javax.crypto.spec.PBEKeySpec.<init>:([C)V
            invokevirtual javax.crypto.SecretKeyFactory.generateSecret:(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;
            astore 7 /* secretKey */
        start local 7 // javax.crypto.SecretKey secretKey
        10: .line 158
            aload 5 /* privateKeyInfo */
            invokevirtual javax.crypto.EncryptedPrivateKeyInfo.getAlgName:()Ljava/lang/String;
            invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
            astore 8 /* cipher */
        start local 8 // javax.crypto.Cipher cipher
        11: .line 159
            aload 8 /* cipher */
            iconst_2
            aload 7 /* secretKey */
            aload 5 /* privateKeyInfo */
            invokevirtual javax.crypto.EncryptedPrivateKeyInfo.getAlgParameters:()Ljava/security/AlgorithmParameters;
            invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/AlgorithmParameters;)V
        12: .line 161
            aload 5 /* privateKeyInfo */
            aload 8 /* cipher */
            invokevirtual javax.crypto.EncryptedPrivateKeyInfo.getKeySpec:(Ljavax/crypto/Cipher;)Ljava/security/spec/PKCS8EncodedKeySpec;
            astore 4 /* keySpec */
        end local 8 // javax.crypto.Cipher cipher
        end local 7 // javax.crypto.SecretKey secretKey
        end local 6 // javax.crypto.SecretKeyFactory secretKeyFactory
        end local 5 // javax.crypto.EncryptedPrivateKeyInfo privateKeyInfo
        13: .line 164
      StackMap locals:
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            getstatic org.apache.tomcat.util.net.jsse.PEMFile.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jsse.pemParseError"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.tomcat.util.net.jsse.PEMFile$Part.this$0:Lorg/apache/tomcat/util/net/jsse/PEMFile;
            getfield org.apache.tomcat.util.net.jsse.PEMFile.filename:Ljava/lang/String;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            astore 5 /* exception */
        start local 5 // java.security.InvalidKeyException exception
        14: .line 165
            aload 2 /* keyAlgorithm */
            ifnonnull 24
        15: .line 166
            iconst_3
            anewarray java.lang.String
            dup
            iconst_0
            ldc "RSA"
            aastore
            dup
            iconst_1
            ldc "DSA"
            aastore
            dup
            iconst_2
            ldc "EC"
            aastore
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 22
      StackMap locals: org.apache.tomcat.util.net.jsse.PEMFile$Part java.lang.String java.lang.String org.apache.tomcat.util.net.jsse.PEMFile$Format java.security.spec.KeySpec java.security.InvalidKeyException top int int java.lang.String[]
      StackMap stack:
        16: aload 9
            iload 7
            aaload
            astore 6 /* algorithm */
        start local 6 // java.lang.String algorithm
        17: .line 168
            aload 6 /* algorithm */
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
            aload 4 /* keySpec */
            invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
        18: areturn
        19: .line 169
      StackMap locals: org.apache.tomcat.util.net.jsse.PEMFile$Part java.lang.String java.lang.String org.apache.tomcat.util.net.jsse.PEMFile$Format java.security.spec.KeySpec java.security.InvalidKeyException java.lang.String int int java.lang.String[]
      StackMap stack: java.security.spec.InvalidKeySpecException
            astore 10 /* e */
        start local 10 // java.security.spec.InvalidKeySpecException e
        20: .line 170
            aload 5 /* exception */
            aload 10 /* e */
            invokevirtual java.security.InvalidKeyException.addSuppressed:(Ljava/lang/Throwable;)V
        end local 10 // java.security.spec.InvalidKeySpecException e
        end local 6 // java.lang.String algorithm
        21: .line 166
            iinc 7 1
      StackMap locals: org.apache.tomcat.util.net.jsse.PEMFile$Part java.lang.String java.lang.String org.apache.tomcat.util.net.jsse.PEMFile$Format java.security.spec.KeySpec java.security.InvalidKeyException top int int java.lang.String[]
      StackMap stack:
        22: iload 7
            iload 8
            if_icmplt 16
        23: .line 173
            goto 28
        24: .line 175
      StackMap locals: org.apache.tomcat.util.net.jsse.PEMFile$Part java.lang.String java.lang.String org.apache.tomcat.util.net.jsse.PEMFile$Format java.security.spec.KeySpec java.security.InvalidKeyException
      StackMap stack:
            aload 2 /* keyAlgorithm */
            invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
            aload 4 /* keySpec */
            invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
        25: areturn
        26: .line 176
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            astore 6 /* e */
        start local 6 // java.security.spec.InvalidKeySpecException e
        27: .line 177
            aload 5 /* exception */
            aload 6 /* e */
            invokevirtual java.security.InvalidKeyException.addSuppressed:(Ljava/lang/Throwable;)V
        end local 6 // java.security.spec.InvalidKeySpecException e
        28: .line 181
      StackMap locals:
      StackMap stack:
            aload 5 /* exception */
            athrow
        end local 5 // java.security.InvalidKeyException exception
        end local 4 // java.security.spec.KeySpec keySpec
        end local 3 // org.apache.tomcat.util.net.jsse.PEMFile$Format format
        end local 2 // java.lang.String keyAlgorithm
        end local 1 // java.lang.String password
        end local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   29     0              this  Lorg/apache/tomcat/util/net/jsse/PEMFile$Part;
            0   29     1          password  Ljava/lang/String;
            0   29     2      keyAlgorithm  Ljava/lang/String;
            0   29     3            format  Lorg/apache/tomcat/util/net/jsse/PEMFile$Format;
            1   29     4           keySpec  Ljava/security/spec/KeySpec;
            8   13     5    privateKeyInfo  Ljavax/crypto/EncryptedPrivateKeyInfo;
            9   13     6  secretKeyFactory  Ljavax/crypto/SecretKeyFactory;
           10   13     7         secretKey  Ljavax/crypto/SecretKey;
           11   13     8            cipher  Ljavax/crypto/Cipher;
           14   29     5         exception  Ljava/security/InvalidKeyException;
           17   21     6         algorithm  Ljava/lang/String;
           20   21    10                 e  Ljava/security/spec/InvalidKeySpecException;
           27   28     6                 e  Ljava/security/spec/InvalidKeySpecException;
      Exception table:
        from    to  target  type
          17    18      19  Class java.security.spec.InvalidKeySpecException
          24    25      26  Class java.security.spec.InvalidKeySpecException
    Exceptions:
      throws java.security.GeneralSecurityException, java.io.IOException
    MethodParameters:
              Name  Flags
      password      
      keyAlgorithm  
      format        

  private java.security.spec.RSAPrivateCrtKeySpec parsePKCS1(byte[]);
    descriptor: ([B)Ljava/security/spec/RSAPrivateCrtKeySpec;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=4, args_size=2
        start local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
        start local 1 // byte[] source
         0: .line 186
            new org.apache.tomcat.util.buf.Asn1Parser
            dup
            aload 1 /* source */
            invokespecial org.apache.tomcat.util.buf.Asn1Parser.<init>:([B)V
            astore 2 /* p */
        start local 2 // org.apache.tomcat.util.buf.Asn1Parser p
         1: .line 192
            aload 2 /* p */
            bipush 48
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseTag:(I)V
         2: .line 194
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseFullLength:()V
         3: .line 196
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
            astore 3 /* version */
        start local 3 // java.math.BigInteger version
         4: .line 197
            aload 3 /* version */
            invokevirtual java.math.BigInteger.intValue:()I
            iconst_1
            if_icmpne 6
         5: .line 200
            new java.lang.IllegalArgumentException
            dup
            getstatic org.apache.tomcat.util.net.jsse.PEMFile.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "pemFile.noMultiPrimes"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 202
      StackMap locals: org.apache.tomcat.util.buf.Asn1Parser java.math.BigInteger
      StackMap stack:
            new java.security.spec.RSAPrivateCrtKeySpec
            dup
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
         7: .line 203
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
            aload 2 /* p */
            invokevirtual org.apache.tomcat.util.buf.Asn1Parser.parseInt:()Ljava/math/BigInteger;
         8: .line 202
            invokespecial java.security.spec.RSAPrivateCrtKeySpec.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            areturn
        end local 3 // java.math.BigInteger version
        end local 2 // org.apache.tomcat.util.buf.Asn1Parser p
        end local 1 // byte[] source
        end local 0 // org.apache.tomcat.util.net.jsse.PEMFile$Part this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lorg/apache/tomcat/util/net/jsse/PEMFile$Part;
            0    9     1   source  [B
            1    9     2        p  Lorg/apache/tomcat/util/buf/Asn1Parser;
            4    9     3  version  Ljava/math/BigInteger;
    MethodParameters:
        Name  Flags
      source  

  static int[] $SWITCH_TABLE$org$apache$tomcat$util$net$jsse$PEMFile$Format();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 122
            getstatic org.apache.tomcat.util.net.jsse.PEMFile$Part.$SWITCH_TABLE$org$apache$tomcat$util$net$jsse$PEMFile$Format:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic org.apache.tomcat.util.net.jsse.PEMFile$Format.values:()[Lorg/apache/tomcat/util/net/jsse/PEMFile$Format;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic org.apache.tomcat.util.net.jsse.PEMFile$Format.PKCS1:Lorg/apache/tomcat/util/net/jsse/PEMFile$Format;
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile$Format.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic org.apache.tomcat.util.net.jsse.PEMFile$Format.PKCS8:Lorg/apache/tomcat/util/net/jsse/PEMFile$Format;
            invokevirtual org.apache.tomcat.util.net.jsse.PEMFile$Format.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            dup
            putstatic org.apache.tomcat.util.net.jsse.PEMFile$Part.$SWITCH_TABLE$org$apache$tomcat$util$net$jsse$PEMFile$Format:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
}
SourceFile: "PEMFile.java"
NestHost: org.apache.tomcat.util.net.jsse.PEMFile
InnerClasses:
  private final Format = org.apache.tomcat.util.net.jsse.PEMFile$Format of org.apache.tomcat.util.net.jsse.PEMFile
  private Part = org.apache.tomcat.util.net.jsse.PEMFile$Part of org.apache.tomcat.util.net.jsse.PEMFile