public final class sun.security.mscapi.RSACipher extends javax.crypto.CipherSpi
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: sun.security.mscapi.RSACipher
super_class: javax.crypto.CipherSpi
{
private static final byte[] B0;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int MODE_ENCRYPT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1
private static final int MODE_DECRYPT;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 2
private static final int MODE_SIGN;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 3
private static final int MODE_VERIFY;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4
private static final java.lang.String PAD_PKCS1;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "PKCS1Padding"
private static final int PAD_PKCS1_LENGTH;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 11
private int mode;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private java.lang.String paddingType;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private int paddingLength;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private byte[] buffer;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private int bufOfs;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int outputSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private sun.security.mscapi.Key publicKey;
descriptor: Lsun/security/mscapi/Key;
flags: (0x0002) ACC_PRIVATE
private sun.security.mscapi.Key privateKey;
descriptor: Lsun/security/mscapi/Key;
flags: (0x0002) ACC_PRIVATE
private java.security.spec.AlgorithmParameterSpec spec;
descriptor: Ljava/security/spec/AlgorithmParameterSpec;
flags: (0x0002) ACC_PRIVATE
private java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: iconst_0
newarray 8
putstatic sun.security.mscapi.RSACipher.B0:[B
1: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial javax.crypto.CipherSpi.<init>:()V
1: aload 0
iconst_0
putfield sun.security.mscapi.RSACipher.paddingLength:I
2: aload 0
aconst_null
putfield sun.security.mscapi.RSACipher.spec:Ljava/security/spec/AlgorithmParameterSpec;
3: aload 0
ldc "PKCS1Padding"
putfield sun.security.mscapi.RSACipher.paddingType:Ljava/lang/String;
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/mscapi/RSACipher;
protected void engineSetMode(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "ECB"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 2
1: new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported mode "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/mscapi/RSACipher;
0 3 1 mode Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
mode
protected void engineSetPadding(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "PKCS1Padding"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 3
1: aload 0
ldc "PKCS1Padding"
putfield sun.security.mscapi.RSACipher.paddingType:Ljava/lang/String;
2: goto 6
3: StackMap locals:
StackMap stack:
new javax.crypto.NoSuchPaddingException
dup
4: new java.lang.StringBuilder
dup
ldc "Padding "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " not supported"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/security/mscapi/RSACipher;
0 7 1 paddingName Ljava/lang/String;
Exceptions:
throws javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
paddingName
protected int engineGetBlockSize();
descriptor: ()I
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/mscapi/RSACipher;
protected int engineGetOutputSize(int);
descriptor: (I)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.mscapi.RSACipher.outputSize:I
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/mscapi/RSACipher;
0 1 1 inputLen I
MethodParameters:
Name Flags
inputLen
protected byte[] engineGetIV();
descriptor: ()[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/mscapi/RSACipher;
protected java.security.AlgorithmParameters engineGetParameters();
descriptor: ()Ljava/security/AlgorithmParameters;
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/mscapi/RSACipher;
protected void engineInit(int, java.security.Key, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
iload 1
aload 2
invokevirtual sun.security.mscapi.RSACipher.init:(ILjava/security/Key;)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/mscapi/RSACipher;
0 2 1 opmode I
0 2 2 key Ljava/security/Key;
0 2 3 random Ljava/security/SecureRandom;
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
opmode
key
random
protected void engineInit(int, java.security.Key, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
ifnull 7
1: aload 3
instanceof sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec
ifne 5
2: new java.security.InvalidAlgorithmParameterException
dup
3: ldc "Parameters not supported"
4: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
aload 3
putfield sun.security.mscapi.RSACipher.spec:Ljava/security/spec/AlgorithmParameterSpec;
6: aload 0
aload 4
putfield sun.security.mscapi.RSACipher.random:Ljava/security/SecureRandom;
7: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 2
invokevirtual sun.security.mscapi.RSACipher.init:(ILjava/security/Key;)V
8: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/mscapi/RSACipher;
0 9 1 opmode I
0 9 2 key Ljava/security/Key;
0 9 3 params Ljava/security/spec/AlgorithmParameterSpec;
0 9 4 random Ljava/security/SecureRandom;
Exceptions:
throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
opmode
key
params
random
protected void engineInit(int, java.security.Key, java.security.AlgorithmParameters, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
ifnull 4
1: new java.security.InvalidAlgorithmParameterException
dup
2: ldc "Parameters not supported"
3: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 2
invokevirtual sun.security.mscapi.RSACipher.init:(ILjava/security/Key;)V
5: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/mscapi/RSACipher;
0 6 1 opmode I
0 6 2 key Ljava/security/Key;
0 6 3 params Ljava/security/AlgorithmParameters;
0 6 4 random Ljava/security/SecureRandom;
Exceptions:
throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
opmode
key
params
random
private void init(int, java.security.Key);
descriptor: (ILjava/security/Key;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=12, args_size=3
start local 0 start local 1 start local 2 0: iload 1
tableswitch { // 1 - 4
1: 1
2: 4
3: 1
4: 4
default: 7
}
1: StackMap locals:
StackMap stack:
aload 0
bipush 11
putfield sun.security.mscapi.RSACipher.paddingLength:I
2: iconst_1
istore 3
start local 3 3: goto 8
end local 3 4: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.mscapi.RSACipher.paddingLength:I
5: iconst_0
istore 3
start local 3 6: goto 8
end local 3 7: StackMap locals:
StackMap stack:
new java.security.InvalidKeyException
dup
new java.lang.StringBuilder
dup
ldc "Unknown mode: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
start local 3 8: StackMap locals: int
StackMap stack:
aload 2
instanceof sun.security.mscapi.Key
ifne 30
9: aload 2
instanceof java.security.interfaces.RSAPublicKey
ifeq 29
10: aload 2
checkcast java.security.interfaces.RSAPublicKey
11: astore 4
start local 4 12: aload 4
invokeinterface java.security.interfaces.RSAPublicKey.getModulus:()Ljava/math/BigInteger;
astore 5
start local 5 13: aload 4
invokeinterface java.security.interfaces.RSAPublicKey.getPublicExponent:()Ljava/math/BigInteger;
astore 6
start local 6 14: aload 5
invokevirtual java.math.BigInteger.bitLength:()I
bipush 7
iadd
bipush -8
iand
15: aload 6
iconst_m1
sipush 16384
16: invokestatic sun.security.rsa.RSAKeyFactory.checkKeyLengths:(ILjava/math/BigInteger;II)V
17: aload 5
invokevirtual java.math.BigInteger.toByteArray:()[B
astore 7
start local 7 18: aload 6
invokevirtual java.math.BigInteger.toByteArray:()[B
astore 8
start local 8 19: aload 7
iconst_0
baload
ifne 21
20: aload 7
arraylength
iconst_1
isub
bipush 8
imul
goto 22
21: StackMap locals: sun.security.mscapi.RSACipher int java.security.Key int java.security.interfaces.RSAPublicKey java.math.BigInteger java.math.BigInteger byte[] byte[]
StackMap stack:
aload 7
arraylength
bipush 8
imul
22: StackMap locals:
StackMap stack: int
istore 9
start local 9 23: iload 9
aload 7
aload 8
24: invokestatic sun.security.mscapi.RSASignature.generatePublicKeyBlob:(I[B[B)[B
astore 10
start local 10 25: aload 10
iload 9
invokestatic sun.security.mscapi.RSASignature.importPublicKey:([BI)Lsun/security/mscapi/RSAPublicKey;
astore 2
26: goto 30
StackMap locals: sun.security.mscapi.RSACipher int java.security.Key int java.security.interfaces.RSAPublicKey java.math.BigInteger java.math.BigInteger byte[] byte[] int byte[]
StackMap stack: java.security.KeyStoreException
27: astore 11
start local 11 28: new java.security.InvalidKeyException
dup
aload 11
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 29: StackMap locals: sun.security.mscapi.RSACipher int java.security.Key int
StackMap stack:
new java.security.InvalidKeyException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported key type: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals:
StackMap stack:
aload 2
instanceof java.security.PublicKey
ifeq 38
31: aload 0
iload 3
ifeq 32
iconst_1
goto 33
StackMap locals:
StackMap stack: sun.security.mscapi.RSACipher
32: iconst_4
StackMap locals: sun.security.mscapi.RSACipher int java.security.Key int
StackMap stack: sun.security.mscapi.RSACipher int
33: putfield sun.security.mscapi.RSACipher.mode:I
34: aload 0
aload 2
checkcast sun.security.mscapi.Key
putfield sun.security.mscapi.RSACipher.publicKey:Lsun/security/mscapi/Key;
35: aload 0
aconst_null
putfield sun.security.mscapi.RSACipher.privateKey:Lsun/security/mscapi/Key;
36: aload 0
aload 0
getfield sun.security.mscapi.RSACipher.publicKey:Lsun/security/mscapi/Key;
invokevirtual sun.security.mscapi.Key.length:()I
bipush 8
idiv
putfield sun.security.mscapi.RSACipher.outputSize:I
37: goto 47
StackMap locals:
StackMap stack:
38: aload 2
instanceof java.security.PrivateKey
ifeq 46
39: aload 0
iload 3
ifeq 40
iconst_3
goto 41
StackMap locals:
StackMap stack: sun.security.mscapi.RSACipher
40: iconst_2
StackMap locals: sun.security.mscapi.RSACipher int java.security.Key int
StackMap stack: sun.security.mscapi.RSACipher int
41: putfield sun.security.mscapi.RSACipher.mode:I
42: aload 0
aload 2
checkcast sun.security.mscapi.Key
putfield sun.security.mscapi.RSACipher.privateKey:Lsun/security/mscapi/Key;
43: aload 0
aconst_null
putfield sun.security.mscapi.RSACipher.publicKey:Lsun/security/mscapi/Key;
44: aload 0
aload 0
getfield sun.security.mscapi.RSACipher.privateKey:Lsun/security/mscapi/Key;
invokevirtual sun.security.mscapi.Key.length:()I
bipush 8
idiv
putfield sun.security.mscapi.RSACipher.outputSize:I
45: goto 47
46: StackMap locals:
StackMap stack:
new java.security.InvalidKeyException
dup
new java.lang.StringBuilder
dup
ldc "Unknown key type: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
47: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.mscapi.RSACipher.bufOfs:I
48: aload 0
aload 0
getfield sun.security.mscapi.RSACipher.outputSize:I
newarray 8
putfield sun.security.mscapi.RSACipher.buffer:[B
49: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 50 0 this Lsun/security/mscapi/RSACipher;
0 50 1 opmode I
0 50 2 key Ljava/security/Key;
3 4 3 encrypt Z
6 7 3 encrypt Z
8 50 3 encrypt Z
12 29 4 rsaKey Ljava/security/interfaces/RSAPublicKey;
13 29 5 modulus Ljava/math/BigInteger;
14 29 6 exponent Ljava/math/BigInteger;
18 29 7 modulusBytes [B
19 29 8 exponentBytes [B
23 29 9 keyBitLength I
25 29 10 keyBlob [B
28 29 11 e Ljava/security/KeyStoreException;
Exception table:
from to target type
25 26 27 Class java.security.KeyStoreException
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
opmode
key
private void update(byte[], int, int);
descriptor: ([BII)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
ifeq 1
aload 1
ifnonnull 2
1: StackMap locals:
StackMap stack:
return
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.RSACipher.bufOfs:I
iload 3
iadd
aload 0
getfield sun.security.mscapi.RSACipher.buffer:[B
arraylength
aload 0
getfield sun.security.mscapi.RSACipher.paddingLength:I
isub
if_icmple 5
3: aload 0
aload 0
getfield sun.security.mscapi.RSACipher.buffer:[B
arraylength
iconst_1
iadd
putfield sun.security.mscapi.RSACipher.bufOfs:I
4: return
5: StackMap locals:
StackMap stack:
aload 1
iload 2
aload 0
getfield sun.security.mscapi.RSACipher.buffer:[B
aload 0
getfield sun.security.mscapi.RSACipher.bufOfs:I
iload 3
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
6: aload 0
dup
getfield sun.security.mscapi.RSACipher.bufOfs:I
iload 3
iadd
putfield sun.security.mscapi.RSACipher.bufOfs:I
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/mscapi/RSACipher;
0 8 1 in [B
0 8 2 inOfs I
0 8 3 inLen I
MethodParameters:
Name Flags
in
inOfs
inLen
private byte[] doFinal();
descriptor: ()[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=1
start local 0 0: aload 0
getfield sun.security.mscapi.RSACipher.bufOfs:I
aload 0
getfield sun.security.mscapi.RSACipher.buffer:[B
arraylength
if_icmple 4
1: new javax.crypto.IllegalBlockSizeException
dup
new java.lang.StringBuilder
dup
ldc "Data must not be longer than "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: aload 0
getfield sun.security.mscapi.RSACipher.buffer:[B
arraylength
aload 0
getfield sun.security.mscapi.RSACipher.paddingLength:I
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " bytes"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial javax.crypto.IllegalBlockSizeException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.RSACipher.buffer:[B
astore 1
start local 1 5: aload 0
getfield sun.security.mscapi.RSACipher.mode:I
tableswitch { // 1 - 4
1: 16
2: 21
3: 6
4: 11
default: 26
}
6: StackMap locals: byte[]
StackMap stack:
aload 1
aload 0
getfield sun.security.mscapi.RSACipher.bufOfs:I
7: aload 0
getfield sun.security.mscapi.RSACipher.privateKey:Lsun/security/mscapi/Key;
invokevirtual sun.security.mscapi.Key.getHCryptKey:()J
iconst_1
8: invokestatic sun.security.mscapi.RSACipher.encryptDecrypt:([BIJZ)[B
astore 3
9: aload 0
iconst_0
putfield sun.security.mscapi.RSACipher.bufOfs:I
10: aload 3
areturn
11: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield sun.security.mscapi.RSACipher.bufOfs:I
12: aload 0
getfield sun.security.mscapi.RSACipher.publicKey:Lsun/security/mscapi/Key;
invokevirtual sun.security.mscapi.Key.getHCryptKey:()J
iconst_0
13: invokestatic sun.security.mscapi.RSACipher.encryptDecrypt:([BIJZ)[B
astore 3
14: aload 0
iconst_0
putfield sun.security.mscapi.RSACipher.bufOfs:I
15: aload 3
areturn
16: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield sun.security.mscapi.RSACipher.bufOfs:I
17: aload 0
getfield sun.security.mscapi.RSACipher.publicKey:Lsun/security/mscapi/Key;
invokevirtual sun.security.mscapi.Key.getHCryptKey:()J
iconst_1
18: invokestatic sun.security.mscapi.RSACipher.encryptDecrypt:([BIJZ)[B
astore 3
19: aload 0
iconst_0
putfield sun.security.mscapi.RSACipher.bufOfs:I
20: aload 3
areturn
21: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield sun.security.mscapi.RSACipher.bufOfs:I
22: aload 0
getfield sun.security.mscapi.RSACipher.privateKey:Lsun/security/mscapi/Key;
invokevirtual sun.security.mscapi.Key.getHCryptKey:()J
iconst_0
23: invokestatic sun.security.mscapi.RSACipher.encryptDecrypt:([BIJZ)[B
astore 3
24: aload 0
iconst_0
putfield sun.security.mscapi.RSACipher.bufOfs:I
25: aload 3
areturn
26: StackMap locals:
StackMap stack:
new java.lang.AssertionError
dup
ldc "Internal error"
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 1 27: StackMap locals: sun.security.mscapi.RSACipher
StackMap stack: java.security.KeyException
astore 1
start local 1 28: new java.security.ProviderException
dup
aload 1
invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 1 29: StackMap locals:
StackMap stack: java.lang.Throwable
astore 2
30: aload 0
iconst_0
putfield sun.security.mscapi.RSACipher.bufOfs:I
31: aload 2
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lsun/security/mscapi/RSACipher;
5 27 1 data [B
28 29 1 e Ljava/security/KeyException;
Exception table:
from to target type
4 9 27 Class java.security.KeyException
11 14 27 Class java.security.KeyException
16 19 27 Class java.security.KeyException
21 24 27 Class java.security.KeyException
26 27 27 Class java.security.KeyException
4 9 29 any
11 14 29 any
16 19 29 any
21 24 29 any
26 29 29 any
Exceptions:
throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException
protected byte[] engineUpdate(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
iload 2
iload 3
invokevirtual sun.security.mscapi.RSACipher.update:([BII)V
1: getstatic sun.security.mscapi.RSACipher.B0:[B
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/mscapi/RSACipher;
0 2 1 in [B
0 2 2 inOfs I
0 2 3 inLen I
MethodParameters:
Name Flags
in
inOfs
inLen
protected int engineUpdate(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
aload 1
iload 2
iload 3
invokevirtual sun.security.mscapi.RSACipher.update:([BII)V
1: iconst_0
ireturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/mscapi/RSACipher;
0 2 1 in [B
0 2 2 inOfs I
0 2 3 inLen I
0 2 4 out [B
0 2 5 outOfs I
MethodParameters:
Name Flags
in
inOfs
inLen
out
outOfs
protected byte[] engineDoFinal(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
iload 2
iload 3
invokevirtual sun.security.mscapi.RSACipher.update:([BII)V
1: aload 0
invokevirtual sun.security.mscapi.RSACipher.doFinal:()[B
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/mscapi/RSACipher;
0 2 1 in [B
0 2 2 inOfs I
0 2 3 inLen I
Exceptions:
throws javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException
MethodParameters:
Name Flags
in
inOfs
inLen
protected int engineDoFinal(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=8, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
getfield sun.security.mscapi.RSACipher.outputSize:I
aload 4
arraylength
iload 5
isub
if_icmple 4
1: new javax.crypto.ShortBufferException
dup
2: new java.lang.StringBuilder
dup
ldc "Need "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.mscapi.RSACipher.outputSize:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " bytes for output"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
iload 3
invokevirtual sun.security.mscapi.RSACipher.update:([BII)V
5: aload 0
invokevirtual sun.security.mscapi.RSACipher.doFinal:()[B
astore 6
start local 6 6: aload 6
arraylength
istore 7
start local 7 7: aload 6
iconst_0
aload 4
iload 5
iload 7
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
8: iload 7
ireturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/mscapi/RSACipher;
0 9 1 in [B
0 9 2 inOfs I
0 9 3 inLen I
0 9 4 out [B
0 9 5 outOfs I
6 9 6 result [B
7 9 7 n I
Exceptions:
throws javax.crypto.ShortBufferException, javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException
MethodParameters:
Name Flags
in
inOfs
inLen
out
outOfs
protected byte[] engineWrap(java.security.Key);
descriptor: (Ljava/security/Key;)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface java.security.Key.getEncoded:()[B
astore 2
start local 2 1: aload 2
ifnull 2
aload 2
arraylength
ifne 3
2: StackMap locals: byte[]
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Could not obtain encoded key"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 2
arraylength
aload 0
getfield sun.security.mscapi.RSACipher.buffer:[B
arraylength
if_icmple 5
4: new java.security.InvalidKeyException
dup
ldc "Key is too long for wrapping"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
aload 2
iconst_0
aload 2
arraylength
invokevirtual sun.security.mscapi.RSACipher.update:([BII)V
6: aload 0
invokevirtual sun.security.mscapi.RSACipher.doFinal:()[B
7: areturn
8: StackMap locals:
StackMap stack: javax.crypto.BadPaddingException
astore 3
start local 3 9: new java.security.InvalidKeyException
dup
ldc "Wrapping failed"
aload 3
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/mscapi/RSACipher;
0 10 1 key Ljava/security/Key;
1 10 2 encoded [B
9 10 3 e Ljavax/crypto/BadPaddingException;
Exception table:
from to target type
6 7 8 Class javax.crypto.BadPaddingException
Exceptions:
throws java.security.InvalidKeyException, javax.crypto.IllegalBlockSizeException
MethodParameters:
Name Flags
key
protected java.security.Key engineUnwrap(byte[], java.lang.String, int);
descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
arraylength
aload 0
getfield sun.security.mscapi.RSACipher.buffer:[B
arraylength
if_icmple 2
1: new java.security.InvalidKeyException
dup
ldc "Key is too long for unwrapping"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 2
ldc "TlsRsaPremasterSecret"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
3: istore 4
start local 4 4: aconst_null
astore 5
start local 5 5: aconst_null
astore 6
start local 6 6: aload 0
aload 1
iconst_0
aload 1
arraylength
invokevirtual sun.security.mscapi.RSACipher.update:([BII)V
7: aload 0
invokevirtual sun.security.mscapi.RSACipher.doFinal:()[B
astore 6
8: goto 16
StackMap locals: sun.security.mscapi.RSACipher byte[] java.lang.String int int java.lang.Exception byte[]
StackMap stack: javax.crypto.BadPaddingException
9: astore 7
start local 7 10: iload 4
ifeq 13
11: aload 7
astore 5
12: goto 16
13: StackMap locals: javax.crypto.BadPaddingException
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "Unwrapping failed"
aload 7
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 14: StackMap locals: sun.security.mscapi.RSACipher byte[] java.lang.String int int java.lang.Exception byte[]
StackMap stack: javax.crypto.IllegalBlockSizeException
astore 7
start local 7 15: new java.security.InvalidKeyException
dup
ldc "Unwrapping failed"
aload 7
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 16: StackMap locals:
StackMap stack:
iload 4
ifeq 26
17: aload 0
getfield sun.security.mscapi.RSACipher.spec:Ljava/security/spec/AlgorithmParameterSpec;
instanceof sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec
ifne 21
18: new java.lang.IllegalStateException
dup
19: ldc "No TlsRsaPremasterSecretParameterSpec specified"
20: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
21: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.mscapi.RSACipher.spec:Ljava/security/spec/AlgorithmParameterSpec;
checkcast sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec
invokevirtual sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec.getClientVersion:()I
22: aload 0
getfield sun.security.mscapi.RSACipher.spec:Ljava/security/spec/AlgorithmParameterSpec;
checkcast sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec
invokevirtual sun.security.internal.spec.TlsRsaPremasterSecretParameterSpec.getServerVersion:()I
23: aload 0
getfield sun.security.mscapi.RSACipher.random:Ljava/security/SecureRandom;
aload 6
aload 5
ifnull 24
iconst_1
goto 25
StackMap locals: sun.security.mscapi.RSACipher byte[] java.lang.String int int java.lang.Exception byte[]
StackMap stack: int int java.security.SecureRandom byte[]
24: iconst_0
25: StackMap locals: sun.security.mscapi.RSACipher byte[] java.lang.String int int java.lang.Exception byte[]
StackMap stack: int int java.security.SecureRandom byte[] int
invokestatic sun.security.util.KeyUtil.checkTlsPreMasterSecretKey:(IILjava/security/SecureRandom;[BZ)[B
astore 6
26: StackMap locals:
StackMap stack:
aload 6
aload 2
iload 3
invokestatic sun.security.mscapi.RSACipher.constructKey:([BLjava/lang/String;I)Ljava/security/Key;
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lsun/security/mscapi/RSACipher;
0 27 1 wrappedKey [B
0 27 2 algorithm Ljava/lang/String;
0 27 3 type I
4 27 4 isTlsRsaPremasterSecret Z
5 27 5 failover Ljava/lang/Exception;
6 27 6 encoded [B
10 14 7 e Ljavax/crypto/BadPaddingException;
15 16 7 e Ljavax/crypto/IllegalBlockSizeException;
Exception table:
from to target type
7 8 9 Class javax.crypto.BadPaddingException
7 8 14 Class javax.crypto.IllegalBlockSizeException
Exceptions:
throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
wrappedKey
algorithm
type
protected int engineGetKeySize(java.security.Key);
descriptor: (Ljava/security/Key;)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 1
instanceof sun.security.mscapi.Key
ifeq 2
1: aload 1
checkcast sun.security.mscapi.Key
invokevirtual sun.security.mscapi.Key.length:()I
ireturn
2: StackMap locals:
StackMap stack:
aload 1
instanceof java.security.interfaces.RSAKey
ifeq 4
3: aload 1
checkcast java.security.interfaces.RSAKey
invokeinterface java.security.interfaces.RSAKey.getModulus:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.bitLength:()I
ireturn
4: StackMap locals:
StackMap stack:
new java.security.InvalidKeyException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported key type: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/mscapi/RSACipher;
0 5 1 key Ljava/security/Key;
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
key
private static java.security.PublicKey constructPublicKey(byte[], java.lang.String);
descriptor: ([BLjava/lang/String;)Ljava/security/PublicKey;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
astore 2
start local 2 1: new java.security.spec.X509EncodedKeySpec
dup
aload 0
invokespecial java.security.spec.X509EncodedKeySpec.<init>:([B)V
astore 3
start local 3 2: aload 2
aload 3
invokevirtual java.security.KeyFactory.generatePublic:(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
3: areturn
end local 3 end local 2 4: StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
astore 2
start local 2 5: new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "No installed provider supports the "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
6: aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " algorithm"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
7: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 8: StackMap locals:
StackMap stack: java.security.spec.InvalidKeySpecException
astore 2
start local 2 9: new java.security.InvalidKeyException
dup
ldc "Cannot construct public key"
aload 2
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 encodedKey [B
0 10 1 encodedKeyAlgorithm Ljava/lang/String;
1 4 2 keyFactory Ljava/security/KeyFactory;
2 4 3 keySpec Ljava/security/spec/X509EncodedKeySpec;
5 8 2 nsae Ljava/security/NoSuchAlgorithmException;
9 10 2 ike Ljava/security/spec/InvalidKeySpecException;
Exception table:
from to target type
0 3 4 Class java.security.NoSuchAlgorithmException
0 3 8 Class java.security.spec.InvalidKeySpecException
Exceptions:
throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
encodedKey
encodedKeyAlgorithm
private static java.security.PrivateKey constructPrivateKey(byte[], java.lang.String);
descriptor: ([BLjava/lang/String;)Ljava/security/PrivateKey;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokestatic java.security.KeyFactory.getInstance:(Ljava/lang/String;)Ljava/security/KeyFactory;
astore 2
start local 2 1: new java.security.spec.PKCS8EncodedKeySpec
dup
aload 0
invokespecial java.security.spec.PKCS8EncodedKeySpec.<init>:([B)V
astore 3
start local 3 2: aload 2
aload 3
invokevirtual java.security.KeyFactory.generatePrivate:(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
3: areturn
end local 3 end local 2 4: StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
astore 2
start local 2 5: new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "No installed provider supports the "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
6: aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " algorithm"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
7: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 8: StackMap locals:
StackMap stack: java.security.spec.InvalidKeySpecException
astore 2
start local 2 9: new java.security.InvalidKeyException
dup
ldc "Cannot construct private key"
aload 2
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 encodedKey [B
0 10 1 encodedKeyAlgorithm Ljava/lang/String;
1 4 2 keyFactory Ljava/security/KeyFactory;
2 4 3 keySpec Ljava/security/spec/PKCS8EncodedKeySpec;
5 8 2 nsae Ljava/security/NoSuchAlgorithmException;
9 10 2 ike Ljava/security/spec/InvalidKeySpecException;
Exception table:
from to target type
0 3 4 Class java.security.NoSuchAlgorithmException
0 3 8 Class java.security.spec.InvalidKeySpecException
Exceptions:
throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
encodedKey
encodedKeyAlgorithm
private static javax.crypto.SecretKey constructSecretKey(byte[], java.lang.String);
descriptor: ([BLjava/lang/String;)Ljavax/crypto/SecretKey;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: new javax.crypto.spec.SecretKeySpec
dup
aload 0
aload 1
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 encodedKey [B
0 1 1 encodedKeyAlgorithm Ljava/lang/String;
MethodParameters:
Name Flags
encodedKey
encodedKeyAlgorithm
private static java.security.Key constructKey(byte[], java.lang.String, int);
descriptor: ([BLjava/lang/String;I)Ljava/security/Key;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 2
tableswitch { // 1 - 3
1: 1
2: 2
3: 3
default: 4
}
1: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic sun.security.mscapi.RSACipher.constructPublicKey:([BLjava/lang/String;)Ljava/security/PublicKey;
areturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic sun.security.mscapi.RSACipher.constructPrivateKey:([BLjava/lang/String;)Ljava/security/PrivateKey;
areturn
3: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic sun.security.mscapi.RSACipher.constructSecretKey:([BLjava/lang/String;)Ljavax/crypto/SecretKey;
areturn
4: StackMap locals:
StackMap stack:
new java.security.InvalidKeyException
dup
new java.lang.StringBuilder
dup
ldc "Unknown key type "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 encodedKey [B
0 5 1 encodedKeyAlgorithm Ljava/lang/String;
0 5 2 keyType I
Exceptions:
throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
encodedKey
encodedKeyAlgorithm
keyType
private static native byte[] encryptDecrypt(byte[], int, long, boolean);
descriptor: ([BIJZ)[B
flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
Exceptions:
throws java.security.KeyException
MethodParameters:
Name Flags
data
dataSize
hCryptKey
doEncrypt
}
SourceFile: "RSACipher.java"