public final class sun.security.rsa.RSAKeyFactory extends java.security.KeyFactorySpi
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: sun.security.rsa.RSAKeyFactory
  super_class: java.security.KeyFactorySpi
{
  private static final java.lang.Class<?> rsaPublicKeySpecClass;
    descriptor: Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private static final java.lang.Class<?> rsaPrivateKeySpecClass;
    descriptor: Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private static final java.lang.Class<?> rsaPrivateCrtKeySpecClass;
    descriptor: Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private static final java.lang.Class<?> x509KeySpecClass;
    descriptor: Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private static final java.lang.Class<?> pkcs8KeySpecClass;
    descriptor: Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  public static final int MIN_MODLEN;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 512

  public static final int MAX_MODLEN;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 16384

  public static final int MAX_MODLEN_RESTRICT_EXP;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3072

  public static final int MAX_RESTRICTED_EXPLEN;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 64

  private static final boolean restrictExpLen;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final sun.security.rsa.RSAKeyFactory INSTANCE;
    descriptor: Lsun/security/rsa/RSAKeyFactory;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 64
            ldc Ljava/security/spec/RSAPublicKeySpec;
         1: .line 63
            putstatic sun.security.rsa.RSAKeyFactory.rsaPublicKeySpecClass:Ljava/lang/Class;
         2: .line 66
            ldc Ljava/security/spec/RSAPrivateKeySpec;
         3: .line 65
            putstatic sun.security.rsa.RSAKeyFactory.rsaPrivateKeySpecClass:Ljava/lang/Class;
         4: .line 68
            ldc Ljava/security/spec/RSAPrivateCrtKeySpec;
         5: .line 67
            putstatic sun.security.rsa.RSAKeyFactory.rsaPrivateCrtKeySpecClass:Ljava/lang/Class;
         6: .line 70
            ldc Ljava/security/spec/X509EncodedKeySpec;
            putstatic sun.security.rsa.RSAKeyFactory.x509KeySpecClass:Ljava/lang/Class;
         7: .line 71
            ldc Ljava/security/spec/PKCS8EncodedKeySpec;
            putstatic sun.security.rsa.RSAKeyFactory.pkcs8KeySpecClass:Ljava/lang/Class;
         8: .line 87
            ldc "true"
         9: .line 88
            ldc "sun.security.rsa.restrictRSAExponent"
            ldc "true"
        10: .line 87
            invokestatic sun.security.action.GetPropertyAction.privilegedGetProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
        11: .line 86
            putstatic sun.security.rsa.RSAKeyFactory.restrictExpLen:Z
        12: .line 91
            new sun.security.rsa.RSAKeyFactory
            dup
            invokespecial sun.security.rsa.RSAKeyFactory.<init>:()V
            putstatic sun.security.rsa.RSAKeyFactory.INSTANCE:Lsun/security/rsa/RSAKeyFactory;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.rsa.RSAKeyFactory this
         0: .line 93
            aload 0 /* this */
            invokespecial java.security.KeyFactorySpi.<init>:()V
         1: .line 95
            return
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/rsa/RSAKeyFactory;

  public static java.security.interfaces.RSAKey toRSAKey(java.security.Key);
    descriptor: (Ljava/security/Key;)Ljava/security/interfaces/RSAKey;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.security.Key key
         0: .line 105
            aload 0 /* key */
            instanceof sun.security.rsa.RSAPrivateKeyImpl
            ifne 3
         1: .line 106
            aload 0 /* key */
            instanceof sun.security.rsa.RSAPrivateCrtKeyImpl
            ifne 3
         2: .line 107
            aload 0 /* key */
            instanceof sun.security.rsa.RSAPublicKeyImpl
            ifeq 4
         3: .line 108
      StackMap locals:
      StackMap stack:
            aload 0 /* key */
            checkcast java.security.interfaces.RSAKey
            areturn
         4: .line 110
      StackMap locals:
      StackMap stack:
            getstatic sun.security.rsa.RSAKeyFactory.INSTANCE:Lsun/security/rsa/RSAKeyFactory;
            aload 0 /* key */
            invokevirtual sun.security.rsa.RSAKeyFactory.engineTranslateKey:(Ljava/security/Key;)Ljava/security/Key;
            checkcast java.security.interfaces.RSAKey
            areturn
        end local 0 // java.security.Key key
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0   key  Ljava/security/Key;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  static void checkRSAProviderKeyLengths(int, java.math.BigInteger);
    descriptor: (ILjava/math/BigInteger;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // int modulusLen
        start local 1 // java.math.BigInteger exponent
         0: .line 124
            iload 0 /* modulusLen */
            bipush 7
            iadd
            bipush -8
            iand
            aload 1 /* exponent */
         1: .line 125
            sipush 512
            ldc 2147483647
         2: .line 124
            invokestatic sun.security.rsa.RSAKeyFactory.checkKeyLengths:(ILjava/math/BigInteger;II)V
         3: .line 126
            return
        end local 1 // java.math.BigInteger exponent
        end local 0 // int modulusLen
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0  modulusLen  I
            0    4     1    exponent  Ljava/math/BigInteger;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
            Name  Flags
      modulusLen  
      exponent    

  public static void checkKeyLengths(int, java.math.BigInteger, int, int);
    descriptor: (ILjava/math/BigInteger;II)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // int modulusLen
        start local 1 // java.math.BigInteger exponent
        start local 2 // int minModulusLen
        start local 3 // int maxModulusLen
         0: .line 145
            iload 2 /* minModulusLen */
            ifle 4
            iload 0 /* modulusLen */
            iload 2 /* minModulusLen */
            if_icmpge 4
         1: .line 146
            new java.security.InvalidKeyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "RSA keys must be at least "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         2: .line 147
            iload 2 /* minModulusLen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bits long"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 146
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 153
      StackMap locals:
      StackMap stack:
            iload 3 /* maxModulusLen */
            sipush 16384
            invokestatic java.lang.Math.min:(II)I
            istore 4 /* maxLen */
        start local 4 // int maxLen
         5: .line 157
            iload 0 /* modulusLen */
            iload 4 /* maxLen */
            if_icmple 9
         6: .line 158
            new java.security.InvalidKeyException
            dup
         7: .line 159
            new java.lang.StringBuilder
            dup
            ldc "RSA keys must be no longer than "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* maxLen */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bits"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 158
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 163
      StackMap locals: int
      StackMap stack:
            getstatic sun.security.rsa.RSAKeyFactory.restrictExpLen:Z
            ifeq 15
            aload 1 /* exponent */
            ifnull 15
        10: .line 164
            iload 0 /* modulusLen */
            sipush 3072
            if_icmple 15
        11: .line 165
            aload 1 /* exponent */
            invokevirtual java.math.BigInteger.bitLength:()I
            bipush 64
            if_icmple 15
        12: .line 166
            new java.security.InvalidKeyException
            dup
        13: .line 167
            ldc "RSA exponents can be no longer than 64 bits  if modulus is greater than 3072 bits"
        14: .line 166
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 172
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int maxLen
        end local 3 // int maxModulusLen
        end local 2 // int minModulusLen
        end local 1 // java.math.BigInteger exponent
        end local 0 // int modulusLen
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0     modulusLen  I
            0   16     1       exponent  Ljava/math/BigInteger;
            0   16     2  minModulusLen  I
            0   16     3  maxModulusLen  I
            5   16     4         maxLen  I
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
               Name  Flags
      modulusLen     
      exponent       
      minModulusLen  
      maxModulusLen  

  protected java.security.Key engineTranslateKey(java.security.Key);
    descriptor: (Ljava/security/Key;)Ljava/security/Key;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // sun.security.rsa.RSAKeyFactory this
        start local 1 // java.security.Key key
         0: .line 180
            aload 1 /* key */
            ifnonnull 2
         1: .line 181
            new java.security.InvalidKeyException
            dup
            ldc "Key must not be null"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 183
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            invokeinterface java.security.Key.getAlgorithm:()Ljava/lang/String;
            astore 2 /* keyAlg */
        start local 2 // java.lang.String keyAlg
         3: .line 184
            aload 2 /* keyAlg */
            ldc "RSA"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         4: .line 185
            new java.security.InvalidKeyException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Not an RSA key: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* keyAlg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 187
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* key */
            instanceof java.security.PublicKey
            ifeq 7
         6: .line 188
            aload 0 /* this */
            aload 1 /* key */
            checkcast java.security.PublicKey
            invokevirtual sun.security.rsa.RSAKeyFactory.translatePublicKey:(Ljava/security/PublicKey;)Ljava/security/PublicKey;
            areturn
         7: .line 189
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            instanceof java.security.PrivateKey
            ifeq 9
         8: .line 190
            aload 0 /* this */
            aload 1 /* key */
            checkcast java.security.PrivateKey
            invokevirtual sun.security.rsa.RSAKeyFactory.translatePrivateKey:(Ljava/security/PrivateKey;)Ljava/security/PrivateKey;
            areturn
         9: .line 192
      StackMap locals:
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "Neither a public nor a private key"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.String keyAlg
        end local 1 // java.security.Key key
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0    this  Lsun/security/rsa/RSAKeyFactory;
            0   10     1     key  Ljava/security/Key;
            3   10     2  keyAlg  Ljava/lang/String;
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  protected java.security.PublicKey engineGeneratePublic(java.security.spec.KeySpec);
    descriptor: (Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.security.rsa.RSAKeyFactory this
        start local 1 // java.security.spec.KeySpec keySpec
         0: .line 200
            aload 0 /* this */
            aload 1 /* keySpec */
            invokevirtual sun.security.rsa.RSAKeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
         1: areturn
         2: .line 201
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            astore 2 /* e */
        start local 2 // java.security.spec.InvalidKeySpecException e
         3: .line 202
            aload 2 /* e */
            athrow
        end local 2 // java.security.spec.InvalidKeySpecException e
         4: .line 203
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         5: .line 204
            new java.security.spec.InvalidKeySpecException
            dup
            aload 2 /* e */
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        end local 1 // java.security.spec.KeySpec keySpec
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lsun/security/rsa/RSAKeyFactory;
            0    6     1  keySpec  Ljava/security/spec/KeySpec;
            3    4     2        e  Ljava/security/spec/InvalidKeySpecException;
            5    6     2        e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.spec.InvalidKeySpecException
           0     1       4  Class java.security.GeneralSecurityException
    Exceptions:
      throws java.security.spec.InvalidKeySpecException
    MethodParameters:
         Name  Flags
      keySpec  

  protected java.security.PrivateKey engineGeneratePrivate(java.security.spec.KeySpec);
    descriptor: (Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.security.rsa.RSAKeyFactory this
        start local 1 // java.security.spec.KeySpec keySpec
         0: .line 212
            aload 0 /* this */
            aload 1 /* keySpec */
            invokevirtual sun.security.rsa.RSAKeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
         1: areturn
         2: .line 213
      StackMap locals:
      StackMap stack: java.security.spec.InvalidKeySpecException
            astore 2 /* e */
        start local 2 // java.security.spec.InvalidKeySpecException e
         3: .line 214
            aload 2 /* e */
            athrow
        end local 2 // java.security.spec.InvalidKeySpecException e
         4: .line 215
      StackMap locals:
      StackMap stack: java.security.GeneralSecurityException
            astore 2 /* e */
        start local 2 // java.security.GeneralSecurityException e
         5: .line 216
            new java.security.spec.InvalidKeySpecException
            dup
            aload 2 /* e */
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.security.GeneralSecurityException e
        end local 1 // java.security.spec.KeySpec keySpec
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lsun/security/rsa/RSAKeyFactory;
            0    6     1  keySpec  Ljava/security/spec/KeySpec;
            3    4     2        e  Ljava/security/spec/InvalidKeySpecException;
            5    6     2        e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.spec.InvalidKeySpecException
           0     1       4  Class java.security.GeneralSecurityException
    Exceptions:
      throws java.security.spec.InvalidKeySpecException
    MethodParameters:
         Name  Flags
      keySpec  

  private java.security.PublicKey translatePublicKey(java.security.PublicKey);
    descriptor: (Ljava/security/PublicKey;)Ljava/security/PublicKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // sun.security.rsa.RSAKeyFactory this
        start local 1 // java.security.PublicKey key
         0: .line 223
            aload 1 /* key */
            instanceof java.security.interfaces.RSAPublicKey
            ifeq 11
         1: .line 224
            aload 1 /* key */
            instanceof sun.security.rsa.RSAPublicKeyImpl
            ifeq 3
         2: .line 225
            aload 1 /* key */
            areturn
         3: .line 227
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            checkcast java.security.interfaces.RSAPublicKey
            astore 2 /* rsaKey */
        start local 2 // java.security.interfaces.RSAPublicKey rsaKey
         4: .line 229
            new sun.security.rsa.RSAPublicKeyImpl
            dup
         5: .line 230
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPublicKey.getModulus:()Ljava/math/BigInteger;
         6: .line 231
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPublicKey.getPublicExponent:()Ljava/math/BigInteger;
         7: .line 229
            invokespecial sun.security.rsa.RSAPublicKeyImpl.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
         8: areturn
         9: .line 233
      StackMap locals: sun.security.rsa.RSAKeyFactory java.security.PublicKey java.security.interfaces.RSAPublicKey
      StackMap stack: java.lang.RuntimeException
            astore 3 /* e */
        start local 3 // java.lang.RuntimeException e
        10: .line 235
            new java.security.InvalidKeyException
            dup
            ldc "Invalid key"
            aload 3 /* e */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.RuntimeException e
        end local 2 // java.security.interfaces.RSAPublicKey rsaKey
        11: .line 237
      StackMap locals:
      StackMap stack:
            ldc "X.509"
            aload 1 /* key */
            invokeinterface java.security.PublicKey.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 14
        12: .line 238
            aload 1 /* key */
            invokeinterface java.security.PublicKey.getEncoded:()[B
            astore 2 /* encoded */
        start local 2 // byte[] encoded
        13: .line 239
            new sun.security.rsa.RSAPublicKeyImpl
            dup
            aload 2 /* encoded */
            invokespecial sun.security.rsa.RSAPublicKeyImpl.<init>:([B)V
            areturn
        end local 2 // byte[] encoded
        14: .line 241
      StackMap locals:
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "Public keys must be instance of RSAPublicKey or have X.509 encoding"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.security.PublicKey key
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0     this  Lsun/security/rsa/RSAKeyFactory;
            0   15     1      key  Ljava/security/PublicKey;
            4   11     2   rsaKey  Ljava/security/interfaces/RSAPublicKey;
           10   11     3        e  Ljava/lang/RuntimeException;
           13   14     2  encoded  [B
      Exception table:
        from    to  target  type
           4     8       9  Class java.lang.RuntimeException
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  private java.security.PrivateKey translatePrivateKey(java.security.PrivateKey);
    descriptor: (Ljava/security/PrivateKey;)Ljava/security/PrivateKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=4, args_size=2
        start local 0 // sun.security.rsa.RSAKeyFactory this
        start local 1 // java.security.PrivateKey key
         0: .line 249
            aload 1 /* key */
            instanceof java.security.interfaces.RSAPrivateCrtKey
            ifeq 17
         1: .line 250
            aload 1 /* key */
            instanceof sun.security.rsa.RSAPrivateCrtKeyImpl
            ifeq 3
         2: .line 251
            aload 1 /* key */
            areturn
         3: .line 253
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            checkcast java.security.interfaces.RSAPrivateCrtKey
            astore 2 /* rsaKey */
        start local 2 // java.security.interfaces.RSAPrivateCrtKey rsaKey
         4: .line 255
            new sun.security.rsa.RSAPrivateCrtKeyImpl
            dup
         5: .line 256
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getModulus:()Ljava/math/BigInteger;
         6: .line 257
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPublicExponent:()Ljava/math/BigInteger;
         7: .line 258
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrivateExponent:()Ljava/math/BigInteger;
         8: .line 259
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrimeP:()Ljava/math/BigInteger;
         9: .line 260
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrimeQ:()Ljava/math/BigInteger;
        10: .line 261
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrimeExponentP:()Ljava/math/BigInteger;
        11: .line 262
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrimeExponentQ:()Ljava/math/BigInteger;
        12: .line 263
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getCrtCoefficient:()Ljava/math/BigInteger;
        13: .line 255
            invokespecial sun.security.rsa.RSAPrivateCrtKeyImpl.<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
        14: areturn
        15: .line 265
      StackMap locals: sun.security.rsa.RSAKeyFactory java.security.PrivateKey java.security.interfaces.RSAPrivateCrtKey
      StackMap stack: java.lang.RuntimeException
            astore 3 /* e */
        start local 3 // java.lang.RuntimeException e
        16: .line 267
            new java.security.InvalidKeyException
            dup
            ldc "Invalid key"
            aload 3 /* e */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.RuntimeException e
        end local 2 // java.security.interfaces.RSAPrivateCrtKey rsaKey
        17: .line 269
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            instanceof java.security.interfaces.RSAPrivateKey
            ifeq 28
        18: .line 270
            aload 1 /* key */
            instanceof sun.security.rsa.RSAPrivateKeyImpl
            ifeq 20
        19: .line 271
            aload 1 /* key */
            areturn
        20: .line 273
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            checkcast java.security.interfaces.RSAPrivateKey
            astore 2 /* rsaKey */
        start local 2 // java.security.interfaces.RSAPrivateKey rsaKey
        21: .line 275
            new sun.security.rsa.RSAPrivateKeyImpl
            dup
        22: .line 276
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateKey.getModulus:()Ljava/math/BigInteger;
        23: .line 277
            aload 2 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateKey.getPrivateExponent:()Ljava/math/BigInteger;
        24: .line 275
            invokespecial sun.security.rsa.RSAPrivateKeyImpl.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
        25: areturn
        26: .line 279
      StackMap locals: sun.security.rsa.RSAKeyFactory java.security.PrivateKey java.security.interfaces.RSAPrivateKey
      StackMap stack: java.lang.RuntimeException
            astore 3 /* e */
        start local 3 // java.lang.RuntimeException e
        27: .line 281
            new java.security.InvalidKeyException
            dup
            ldc "Invalid key"
            aload 3 /* e */
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.RuntimeException e
        end local 2 // java.security.interfaces.RSAPrivateKey rsaKey
        28: .line 283
      StackMap locals:
      StackMap stack:
            ldc "PKCS#8"
            aload 1 /* key */
            invokeinterface java.security.PrivateKey.getFormat:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 31
        29: .line 284
            aload 1 /* key */
            invokeinterface java.security.PrivateKey.getEncoded:()[B
            astore 2 /* encoded */
        start local 2 // byte[] encoded
        30: .line 285
            aload 2 /* encoded */
            invokestatic sun.security.rsa.RSAPrivateCrtKeyImpl.newKey:([B)Ljava/security/interfaces/RSAPrivateKey;
            areturn
        end local 2 // byte[] encoded
        31: .line 287
      StackMap locals:
      StackMap stack:
            new java.security.InvalidKeyException
            dup
            ldc "Private keys must be instance of RSAPrivate(Crt)Key or have PKCS#8 encoding"
            invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.security.PrivateKey key
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   32     0     this  Lsun/security/rsa/RSAKeyFactory;
            0   32     1      key  Ljava/security/PrivateKey;
            4   17     2   rsaKey  Ljava/security/interfaces/RSAPrivateCrtKey;
           16   17     3        e  Ljava/lang/RuntimeException;
           21   28     2   rsaKey  Ljava/security/interfaces/RSAPrivateKey;
           27   28     3        e  Ljava/lang/RuntimeException;
           30   31     2  encoded  [B
      Exception table:
        from    to  target  type
           4    14      15  Class java.lang.RuntimeException
          21    25      26  Class java.lang.RuntimeException
    Exceptions:
      throws java.security.InvalidKeyException
    MethodParameters:
      Name  Flags
      key   

  private java.security.PublicKey generatePublic(java.security.spec.KeySpec);
    descriptor: (Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // sun.security.rsa.RSAKeyFactory this
        start local 1 // java.security.spec.KeySpec keySpec
         0: .line 295
            aload 1 /* keySpec */
            instanceof java.security.spec.X509EncodedKeySpec
            ifeq 3
         1: .line 296
            aload 1 /* keySpec */
            checkcast java.security.spec.X509EncodedKeySpec
            astore 2 /* x509Spec */
        start local 2 // java.security.spec.X509EncodedKeySpec x509Spec
         2: .line 297
            new sun.security.rsa.RSAPublicKeyImpl
            dup
            aload 2 /* x509Spec */
            invokevirtual java.security.spec.X509EncodedKeySpec.getEncoded:()[B
            invokespecial sun.security.rsa.RSAPublicKeyImpl.<init>:([B)V
            areturn
        end local 2 // java.security.spec.X509EncodedKeySpec x509Spec
         3: .line 298
      StackMap locals:
      StackMap stack:
            aload 1 /* keySpec */
            instanceof java.security.spec.RSAPublicKeySpec
            ifeq 9
         4: .line 299
            aload 1 /* keySpec */
            checkcast java.security.spec.RSAPublicKeySpec
            astore 2 /* rsaSpec */
        start local 2 // java.security.spec.RSAPublicKeySpec rsaSpec
         5: .line 300
            new sun.security.rsa.RSAPublicKeyImpl
            dup
         6: .line 301
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPublicKeySpec.getModulus:()Ljava/math/BigInteger;
         7: .line 302
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPublicKeySpec.getPublicExponent:()Ljava/math/BigInteger;
         8: .line 300
            invokespecial sun.security.rsa.RSAPublicKeyImpl.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            areturn
        end local 2 // java.security.spec.RSAPublicKeySpec rsaSpec
         9: .line 305
      StackMap locals:
      StackMap stack:
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Only RSAPublicKeySpec and X509EncodedKeySpec supported for RSA public keys"
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.security.spec.KeySpec keySpec
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lsun/security/rsa/RSAKeyFactory;
            0   10     1   keySpec  Ljava/security/spec/KeySpec;
            2    3     2  x509Spec  Ljava/security/spec/X509EncodedKeySpec;
            5    9     2   rsaSpec  Ljava/security/spec/RSAPublicKeySpec;
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
         Name  Flags
      keySpec  

  private java.security.PrivateKey generatePrivate(java.security.spec.KeySpec);
    descriptor: (Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=3, args_size=2
        start local 0 // sun.security.rsa.RSAKeyFactory this
        start local 1 // java.security.spec.KeySpec keySpec
         0: .line 313
            aload 1 /* keySpec */
            instanceof java.security.spec.PKCS8EncodedKeySpec
            ifeq 3
         1: .line 314
            aload 1 /* keySpec */
            checkcast java.security.spec.PKCS8EncodedKeySpec
            astore 2 /* pkcsSpec */
        start local 2 // java.security.spec.PKCS8EncodedKeySpec pkcsSpec
         2: .line 315
            aload 2 /* pkcsSpec */
            invokevirtual java.security.spec.PKCS8EncodedKeySpec.getEncoded:()[B
            invokestatic sun.security.rsa.RSAPrivateCrtKeyImpl.newKey:([B)Ljava/security/interfaces/RSAPrivateKey;
            areturn
        end local 2 // java.security.spec.PKCS8EncodedKeySpec pkcsSpec
         3: .line 316
      StackMap locals:
      StackMap stack:
            aload 1 /* keySpec */
            instanceof java.security.spec.RSAPrivateCrtKeySpec
            ifeq 15
         4: .line 317
            aload 1 /* keySpec */
            checkcast java.security.spec.RSAPrivateCrtKeySpec
            astore 2 /* rsaSpec */
        start local 2 // java.security.spec.RSAPrivateCrtKeySpec rsaSpec
         5: .line 318
            new sun.security.rsa.RSAPrivateCrtKeyImpl
            dup
         6: .line 319
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateCrtKeySpec.getModulus:()Ljava/math/BigInteger;
         7: .line 320
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateCrtKeySpec.getPublicExponent:()Ljava/math/BigInteger;
         8: .line 321
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateCrtKeySpec.getPrivateExponent:()Ljava/math/BigInteger;
         9: .line 322
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateCrtKeySpec.getPrimeP:()Ljava/math/BigInteger;
        10: .line 323
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateCrtKeySpec.getPrimeQ:()Ljava/math/BigInteger;
        11: .line 324
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateCrtKeySpec.getPrimeExponentP:()Ljava/math/BigInteger;
        12: .line 325
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateCrtKeySpec.getPrimeExponentQ:()Ljava/math/BigInteger;
        13: .line 326
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateCrtKeySpec.getCrtCoefficient:()Ljava/math/BigInteger;
        14: .line 318
            invokespecial sun.security.rsa.RSAPrivateCrtKeyImpl.<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 2 // java.security.spec.RSAPrivateCrtKeySpec rsaSpec
        15: .line 328
      StackMap locals:
      StackMap stack:
            aload 1 /* keySpec */
            instanceof java.security.spec.RSAPrivateKeySpec
            ifeq 21
        16: .line 329
            aload 1 /* keySpec */
            checkcast java.security.spec.RSAPrivateKeySpec
            astore 2 /* rsaSpec */
        start local 2 // java.security.spec.RSAPrivateKeySpec rsaSpec
        17: .line 330
            new sun.security.rsa.RSAPrivateKeyImpl
            dup
        18: .line 331
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateKeySpec.getModulus:()Ljava/math/BigInteger;
        19: .line 332
            aload 2 /* rsaSpec */
            invokevirtual java.security.spec.RSAPrivateKeySpec.getPrivateExponent:()Ljava/math/BigInteger;
        20: .line 330
            invokespecial sun.security.rsa.RSAPrivateKeyImpl.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
            areturn
        end local 2 // java.security.spec.RSAPrivateKeySpec rsaSpec
        21: .line 335
      StackMap locals:
      StackMap stack:
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Only RSAPrivate(Crt)KeySpec and PKCS8EncodedKeySpec supported for RSA private keys"
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.security.spec.KeySpec keySpec
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   22     0      this  Lsun/security/rsa/RSAKeyFactory;
            0   22     1   keySpec  Ljava/security/spec/KeySpec;
            2    3     2  pkcsSpec  Ljava/security/spec/PKCS8EncodedKeySpec;
            5   15     2   rsaSpec  Ljava/security/spec/RSAPrivateCrtKeySpec;
           17   21     2   rsaSpec  Ljava/security/spec/RSAPrivateKeySpec;
    Exceptions:
      throws java.security.GeneralSecurityException
    MethodParameters:
         Name  Flags
      keySpec  

  protected <T extends java.security.spec.KeySpec> T engineGetKeySpec(java.security.Key, java.lang.Class<T>);
    descriptor: (Ljava/security/Key;Ljava/lang/Class;)Ljava/security/spec/KeySpec;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=11, locals=4, args_size=3
        start local 0 // sun.security.rsa.RSAKeyFactory this
        start local 1 // java.security.Key key
        start local 2 // java.lang.Class keySpec
         0: .line 346
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual sun.security.rsa.RSAKeyFactory.engineTranslateKey:(Ljava/security/Key;)Ljava/security/Key;
            astore 1 /* key */
         1: .line 347
            goto 4
      StackMap locals:
      StackMap stack: java.security.InvalidKeyException
         2: astore 3 /* e */
        start local 3 // java.security.InvalidKeyException e
         3: .line 348
            new java.security.spec.InvalidKeySpecException
            dup
            aload 3 /* e */
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.security.InvalidKeyException e
         4: .line 350
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            instanceof java.security.interfaces.RSAPublicKey
            ifeq 16
         5: .line 351
            aload 1 /* key */
            checkcast java.security.interfaces.RSAPublicKey
            astore 3 /* rsaKey */
        start local 3 // java.security.interfaces.RSAPublicKey rsaKey
         6: .line 352
            getstatic sun.security.rsa.RSAKeyFactory.rsaPublicKeySpecClass:Ljava/lang/Class;
            aload 2 /* keySpec */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 11
         7: .line 353
            aload 2 /* keySpec */
            new java.security.spec.RSAPublicKeySpec
            dup
         8: .line 354
            aload 3 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPublicKey.getModulus:()Ljava/math/BigInteger;
         9: .line 355
            aload 3 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPublicKey.getPublicExponent:()Ljava/math/BigInteger;
            invokespecial java.security.spec.RSAPublicKeySpec.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
        10: .line 353
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.spec.KeySpec
            areturn
        11: .line 357
      StackMap locals: java.security.interfaces.RSAPublicKey
      StackMap stack:
            getstatic sun.security.rsa.RSAKeyFactory.x509KeySpecClass:Ljava/lang/Class;
            aload 2 /* keySpec */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 13
        12: .line 358
            aload 2 /* keySpec */
            new java.security.spec.X509EncodedKeySpec
            dup
            aload 1 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            invokespecial java.security.spec.X509EncodedKeySpec.<init>:([B)V
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.spec.KeySpec
            areturn
        13: .line 360
      StackMap locals:
      StackMap stack:
            new java.security.spec.InvalidKeySpecException
            dup
        14: .line 361
            ldc "KeySpec must be RSAPublicKeySpec or X509EncodedKeySpec for RSA public keys"
        15: .line 360
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.security.interfaces.RSAPublicKey rsaKey
        16: .line 364
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            instanceof java.security.interfaces.RSAPrivateKey
            ifeq 44
        17: .line 365
            getstatic sun.security.rsa.RSAKeyFactory.pkcs8KeySpecClass:Ljava/lang/Class;
            aload 2 /* keySpec */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 19
        18: .line 366
            aload 2 /* keySpec */
            new java.security.spec.PKCS8EncodedKeySpec
            dup
            aload 1 /* key */
            invokeinterface java.security.Key.getEncoded:()[B
            invokespecial java.security.spec.PKCS8EncodedKeySpec.<init>:([B)V
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.spec.KeySpec
            areturn
        19: .line 367
      StackMap locals:
      StackMap stack:
            getstatic sun.security.rsa.RSAKeyFactory.rsaPrivateCrtKeySpecClass:Ljava/lang/Class;
            aload 2 /* keySpec */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 35
        20: .line 368
            aload 1 /* key */
            instanceof java.security.interfaces.RSAPrivateCrtKey
            ifeq 32
        21: .line 369
            aload 1 /* key */
            checkcast java.security.interfaces.RSAPrivateCrtKey
            astore 3 /* crtKey */
        start local 3 // java.security.interfaces.RSAPrivateCrtKey crtKey
        22: .line 370
            aload 2 /* keySpec */
            new java.security.spec.RSAPrivateCrtKeySpec
            dup
        23: .line 371
            aload 3 /* crtKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getModulus:()Ljava/math/BigInteger;
        24: .line 372
            aload 3 /* crtKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPublicExponent:()Ljava/math/BigInteger;
        25: .line 373
            aload 3 /* crtKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrivateExponent:()Ljava/math/BigInteger;
        26: .line 374
            aload 3 /* crtKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrimeP:()Ljava/math/BigInteger;
        27: .line 375
            aload 3 /* crtKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrimeQ:()Ljava/math/BigInteger;
        28: .line 376
            aload 3 /* crtKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrimeExponentP:()Ljava/math/BigInteger;
        29: .line 377
            aload 3 /* crtKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getPrimeExponentQ:()Ljava/math/BigInteger;
        30: .line 378
            aload 3 /* crtKey */
            invokeinterface java.security.interfaces.RSAPrivateCrtKey.getCrtCoefficient:()Ljava/math/BigInteger;
            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
        31: .line 370
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.spec.KeySpec
            areturn
        end local 3 // java.security.interfaces.RSAPrivateCrtKey crtKey
        32: .line 381
      StackMap locals:
      StackMap stack:
            new java.security.spec.InvalidKeySpecException
            dup
        33: .line 382
            ldc "RSAPrivateCrtKeySpec can only be used with CRT keys"
        34: .line 381
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        35: .line 384
      StackMap locals:
      StackMap stack:
            getstatic sun.security.rsa.RSAKeyFactory.rsaPrivateKeySpecClass:Ljava/lang/Class;
            aload 2 /* keySpec */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 41
        36: .line 385
            aload 1 /* key */
            checkcast java.security.interfaces.RSAPrivateKey
            astore 3 /* rsaKey */
        start local 3 // java.security.interfaces.RSAPrivateKey rsaKey
        37: .line 386
            aload 2 /* keySpec */
            new java.security.spec.RSAPrivateKeySpec
            dup
        38: .line 387
            aload 3 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateKey.getModulus:()Ljava/math/BigInteger;
        39: .line 388
            aload 3 /* rsaKey */
            invokeinterface java.security.interfaces.RSAPrivateKey.getPrivateExponent:()Ljava/math/BigInteger;
            invokespecial java.security.spec.RSAPrivateKeySpec.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
        40: .line 386
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.security.spec.KeySpec
            areturn
        end local 3 // java.security.interfaces.RSAPrivateKey rsaKey
        41: .line 391
      StackMap locals:
      StackMap stack:
            new java.security.spec.InvalidKeySpecException
            dup
        42: .line 392
            ldc "KeySpec must be RSAPrivate(Crt)KeySpec or PKCS8EncodedKeySpec for RSA private keys"
        43: .line 391
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        44: .line 397
      StackMap locals:
      StackMap stack:
            new java.security.spec.InvalidKeySpecException
            dup
            ldc "Neither public nor private key"
            invokespecial java.security.spec.InvalidKeySpecException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.Class keySpec
        end local 1 // java.security.Key key
        end local 0 // sun.security.rsa.RSAKeyFactory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   45     0     this  Lsun/security/rsa/RSAKeyFactory;
            0   45     1      key  Ljava/security/Key;
            0   45     2  keySpec  Ljava/lang/Class<TT;>;
            3    4     3        e  Ljava/security/InvalidKeyException;
            6   16     3   rsaKey  Ljava/security/interfaces/RSAPublicKey;
           22   32     3   crtKey  Ljava/security/interfaces/RSAPrivateCrtKey;
           37   41     3   rsaKey  Ljava/security/interfaces/RSAPrivateKey;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.InvalidKeyException
    Exceptions:
      throws java.security.spec.InvalidKeySpecException
    Signature: <T::Ljava/security/spec/KeySpec;>(Ljava/security/Key;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
         Name  Flags
      key      
      keySpec  
}
SourceFile: "RSAKeyFactory.java"