public class org.bouncycastle.jce.provider.JCERSACipher extends org.bouncycastle.jce.provider.WrapCipherSpi
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.jce.provider.JCERSACipher
super_class: org.bouncycastle.jce.provider.WrapCipherSpi
{
private org.bouncycastle.crypto.AsymmetricBlockCipher cipher;
descriptor: Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
flags: (0x0002) ACC_PRIVATE
private java.security.spec.AlgorithmParameterSpec paramSpec;
descriptor: Ljava/security/spec/AlgorithmParameterSpec;
flags: (0x0002) ACC_PRIVATE
private java.security.AlgorithmParameters engineParams;
descriptor: Ljava/security/AlgorithmParameters;
flags: (0x0002) ACC_PRIVATE
private boolean publicKeyOnly;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean privateKeyOnly;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.io.ByteArrayOutputStream bOut;
descriptor: Ljava/io/ByteArrayOutputStream;
flags: (0x0002) ACC_PRIVATE
public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher);
descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial org.bouncycastle.jce.provider.WrapCipherSpi.<init>:()V
1: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.JCERSACipher.publicKeyOnly:Z
2: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.JCERSACipher.privateKeyOnly:Z
3: aload 0
new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
putfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
4: aload 0
aload 1
putfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 6 1 engine Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
MethodParameters:
Name Flags
engine
public void <init>(javax.crypto.spec.OAEPParameterSpec);
descriptor: (Ljavax/crypto/spec/OAEPParameterSpec;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokespecial org.bouncycastle.jce.provider.WrapCipherSpi.<init>:()V
1: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.JCERSACipher.publicKeyOnly:Z
2: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.JCERSACipher.privateKeyOnly:Z
3: aload 0
new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
putfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
4: aload 0
aload 1
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.initFromSpec:(Ljavax/crypto/spec/OAEPParameterSpec;)V
5: goto 8
6: StackMap locals: org.bouncycastle.jce.provider.JCERSACipher javax.crypto.spec.OAEPParameterSpec
StackMap stack: javax.crypto.NoSuchPaddingException
astore 2
start local 2 7: new java.lang.IllegalArgumentException
dup
aload 2
invokevirtual javax.crypto.NoSuchPaddingException.getMessage:()Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 2 8: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 9 1 pSpec Ljavax/crypto/spec/OAEPParameterSpec;
7 8 2 e Ljavax/crypto/NoSuchPaddingException;
Exception table:
from to target type
4 5 6 Class javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
pSpec
public void <init>(boolean, boolean, org.bouncycastle.crypto.AsymmetricBlockCipher);
descriptor: (ZZLorg/bouncycastle/crypto/AsymmetricBlockCipher;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial org.bouncycastle.jce.provider.WrapCipherSpi.<init>:()V
1: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.JCERSACipher.publicKeyOnly:Z
2: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.JCERSACipher.privateKeyOnly:Z
3: aload 0
new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
putfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
4: aload 0
iload 1
putfield org.bouncycastle.jce.provider.JCERSACipher.publicKeyOnly:Z
5: aload 0
iload 2
putfield org.bouncycastle.jce.provider.JCERSACipher.privateKeyOnly:Z
6: aload 0
aload 3
putfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 8 1 publicKeyOnly Z
0 8 2 privateKeyOnly Z
0 8 3 engine Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
MethodParameters:
Name Flags
publicKeyOnly
privateKeyOnly
engine
private void initFromSpec(javax.crypto.spec.OAEPParameterSpec);
descriptor: (Ljavax/crypto/spec/OAEPParameterSpec;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual javax.crypto.spec.OAEPParameterSpec.getMGFParameters:()Ljava/security/spec/AlgorithmParameterSpec;
checkcast java.security.spec.MGF1ParameterSpec
astore 2
start local 2 1: aload 2
invokevirtual java.security.spec.MGF1ParameterSpec.getDigestAlgorithm:()Ljava/lang/String;
invokestatic org.bouncycastle.jce.provider.JCEDigestUtil.getDigest:(Ljava/lang/String;)Lorg/bouncycastle/crypto/Digest;
astore 3
start local 3 2: aload 3
ifnonnull 4
3: new javax.crypto.NoSuchPaddingException
dup
new java.lang.StringBuilder
dup
ldc "no match on OAEP constructor for digest algorithm: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.security.spec.MGF1ParameterSpec.getDigestAlgorithm:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: java.security.spec.MGF1ParameterSpec org.bouncycastle.crypto.Digest
StackMap stack:
aload 0
new org.bouncycastle.crypto.encodings.OAEPEncoding
dup
new org.bouncycastle.crypto.engines.RSABlindedEngine
dup
invokespecial org.bouncycastle.crypto.engines.RSABlindedEngine.<init>:()V
aload 3
aload 1
invokevirtual javax.crypto.spec.OAEPParameterSpec.getPSource:()Ljavax/crypto/spec/PSource;
checkcast javax.crypto.spec.PSource$PSpecified
invokevirtual javax.crypto.spec.PSource$PSpecified.getValue:()[B
invokespecial org.bouncycastle.crypto.encodings.OAEPEncoding.<init>:(Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;[B)V
putfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
5: aload 0
aload 1
putfield org.bouncycastle.jce.provider.JCERSACipher.paramSpec:Ljava/security/spec/AlgorithmParameterSpec;
6: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 7 1 pSpec Ljavax/crypto/spec/OAEPParameterSpec;
1 7 2 mgfParams Ljava/security/spec/MGF1ParameterSpec;
2 7 3 digest Lorg/bouncycastle/crypto/Digest;
Exceptions:
throws javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
pSpec
protected int engineGetBlockSize();
descriptor: ()I
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
1: ireturn
2: StackMap locals:
StackMap stack: java.lang.NullPointerException
pop
3: new java.lang.IllegalStateException
dup
ldc "RSA Cipher not initialised"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
Exception table:
from to target type
0 1 2 Class java.lang.NullPointerException
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 Lorg/bouncycastle/jce/provider/JCERSACipher;
protected int engineGetKeySize(java.security.Key);
descriptor: (Ljava/security/Key;)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
instanceof java.security.interfaces.RSAPrivateKey
ifeq 3
1: aload 1
checkcast java.security.interfaces.RSAPrivateKey
astore 2
start local 2 2: aload 2
invokeinterface java.security.interfaces.RSAPrivateKey.getModulus:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.bitLength:()I
ireturn
end local 2 3: StackMap locals:
StackMap stack:
aload 1
instanceof java.security.interfaces.RSAPublicKey
ifeq 6
4: aload 1
checkcast java.security.interfaces.RSAPublicKey
astore 2
start local 2 5: aload 2
invokeinterface java.security.interfaces.RSAPublicKey.getModulus:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.bitLength:()I
ireturn
end local 2 6: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "not an RSA key!"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 7 1 key Ljava/security/Key;
2 3 2 k Ljava/security/interfaces/RSAPrivateKey;
5 6 2 k Ljava/security/interfaces/RSAPublicKey;
MethodParameters:
Name Flags
key
protected int engineGetOutputSize(int);
descriptor: (I)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
1: ireturn
2: StackMap locals:
StackMap stack: java.lang.NullPointerException
pop
3: new java.lang.IllegalStateException
dup
ldc "RSA Cipher not initialised"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 4 1 inputLen I
Exception table:
from to target type
0 1 2 Class java.lang.NullPointerException
MethodParameters:
Name Flags
inputLen
protected java.security.AlgorithmParameters engineGetParameters();
descriptor: ()Ljava/security/AlgorithmParameters;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.engineParams:Ljava/security/AlgorithmParameters;
ifnonnull 7
1: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.paramSpec:Ljava/security/spec/AlgorithmParameterSpec;
ifnull 7
2: aload 0
ldc "OAEP"
getstatic org.bouncycastle.jce.provider.BouncyCastleProvider.PROVIDER_NAME:Ljava/lang/String;
invokestatic java.security.AlgorithmParameters.getInstance:(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;
putfield org.bouncycastle.jce.provider.JCERSACipher.engineParams:Ljava/security/AlgorithmParameters;
3: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.engineParams:Ljava/security/AlgorithmParameters;
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.paramSpec:Ljava/security/spec/AlgorithmParameterSpec;
invokevirtual java.security.AlgorithmParameters.init:(Ljava/security/spec/AlgorithmParameterSpec;)V
4: goto 7
5: StackMap locals:
StackMap stack: java.lang.Exception
astore 1
start local 1 6: new java.lang.RuntimeException
dup
aload 1
invokevirtual java.lang.Exception.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 1 7: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.engineParams:Ljava/security/AlgorithmParameters;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
6 7 1 e Ljava/lang/Exception;
Exception table:
from to target type
2 4 5 Class java.lang.Exception
protected void engineSetMode(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokestatic org.bouncycastle.util.Strings.toUpperCase:(Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 1: aload 2
ldc "NONE"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 2
aload 2
ldc "ECB"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 3
2: StackMap locals: java.lang.String
StackMap stack:
return
3: StackMap locals:
StackMap stack:
aload 2
ldc "1"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
4: aload 0
iconst_1
putfield org.bouncycastle.jce.provider.JCERSACipher.privateKeyOnly:Z
5: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.JCERSACipher.publicKeyOnly:Z
6: return
7: StackMap locals:
StackMap stack:
aload 2
ldc "2"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 11
8: aload 0
iconst_0
putfield org.bouncycastle.jce.provider.JCERSACipher.privateKeyOnly:Z
9: aload 0
iconst_1
putfield org.bouncycastle.jce.provider.JCERSACipher.publicKeyOnly:Z
10: return
11: StackMap locals:
StackMap stack:
new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "can't support 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
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 12 1 mode Ljava/lang/String;
1 12 2 md 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=8, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokestatic org.bouncycastle.util.Strings.toUpperCase:(Ljava/lang/String;)Ljava/lang/String;
astore 2
start local 2 1: aload 2
ldc "NOPADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 4
2: aload 0
new org.bouncycastle.crypto.engines.RSABlindedEngine
dup
invokespecial org.bouncycastle.crypto.engines.RSABlindedEngine.<init>:()V
putfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
3: goto 32
4: StackMap locals: java.lang.String
StackMap stack:
aload 2
ldc "PKCS1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 7
5: aload 0
new org.bouncycastle.crypto.encodings.PKCS1Encoding
dup
new org.bouncycastle.crypto.engines.RSABlindedEngine
dup
invokespecial org.bouncycastle.crypto.engines.RSABlindedEngine.<init>:()V
invokespecial org.bouncycastle.crypto.encodings.PKCS1Encoding.<init>:(Lorg/bouncycastle/crypto/AsymmetricBlockCipher;)V
putfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
6: goto 32
7: StackMap locals:
StackMap stack:
aload 2
ldc "ISO9796-1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
8: aload 0
new org.bouncycastle.crypto.encodings.ISO9796d1Encoding
dup
new org.bouncycastle.crypto.engines.RSABlindedEngine
dup
invokespecial org.bouncycastle.crypto.engines.RSABlindedEngine.<init>:()V
invokespecial org.bouncycastle.crypto.encodings.ISO9796d1Encoding.<init>:(Lorg/bouncycastle/crypto/AsymmetricBlockCipher;)V
putfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
9: goto 32
10: StackMap locals:
StackMap stack:
aload 2
ldc "OAEPWITHMD5ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 13
11: aload 0
new javax.crypto.spec.OAEPParameterSpec
dup
ldc "MD5"
ldc "MGF1"
new java.security.spec.MGF1ParameterSpec
dup
ldc "MD5"
invokespecial java.security.spec.MGF1ParameterSpec.<init>:(Ljava/lang/String;)V
getstatic javax.crypto.spec.PSource$PSpecified.DEFAULT:Ljavax/crypto/spec/PSource$PSpecified;
invokespecial javax.crypto.spec.OAEPParameterSpec.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljavax/crypto/spec/PSource;)V
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.initFromSpec:(Ljavax/crypto/spec/OAEPParameterSpec;)V
12: goto 32
13: StackMap locals:
StackMap stack:
aload 2
ldc "OAEPPADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 16
14: aload 0
getstatic javax.crypto.spec.OAEPParameterSpec.DEFAULT:Ljavax/crypto/spec/OAEPParameterSpec;
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.initFromSpec:(Ljavax/crypto/spec/OAEPParameterSpec;)V
15: goto 32
16: StackMap locals:
StackMap stack:
aload 2
ldc "OAEPWITHSHA1ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 17
aload 2
ldc "OAEPWITHSHA-1ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 19
17: StackMap locals:
StackMap stack:
aload 0
getstatic javax.crypto.spec.OAEPParameterSpec.DEFAULT:Ljavax/crypto/spec/OAEPParameterSpec;
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.initFromSpec:(Ljavax/crypto/spec/OAEPParameterSpec;)V
18: goto 32
19: StackMap locals:
StackMap stack:
aload 2
ldc "OAEPWITHSHA224ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 20
aload 2
ldc "OAEPWITHSHA-224ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 22
20: StackMap locals:
StackMap stack:
aload 0
new javax.crypto.spec.OAEPParameterSpec
dup
ldc "SHA-224"
ldc "MGF1"
new java.security.spec.MGF1ParameterSpec
dup
ldc "SHA-224"
invokespecial java.security.spec.MGF1ParameterSpec.<init>:(Ljava/lang/String;)V
getstatic javax.crypto.spec.PSource$PSpecified.DEFAULT:Ljavax/crypto/spec/PSource$PSpecified;
invokespecial javax.crypto.spec.OAEPParameterSpec.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljavax/crypto/spec/PSource;)V
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.initFromSpec:(Ljavax/crypto/spec/OAEPParameterSpec;)V
21: goto 32
22: StackMap locals:
StackMap stack:
aload 2
ldc "OAEPWITHSHA256ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 23
aload 2
ldc "OAEPWITHSHA-256ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 25
23: StackMap locals:
StackMap stack:
aload 0
new javax.crypto.spec.OAEPParameterSpec
dup
ldc "SHA-256"
ldc "MGF1"
getstatic java.security.spec.MGF1ParameterSpec.SHA256:Ljava/security/spec/MGF1ParameterSpec;
getstatic javax.crypto.spec.PSource$PSpecified.DEFAULT:Ljavax/crypto/spec/PSource$PSpecified;
invokespecial javax.crypto.spec.OAEPParameterSpec.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljavax/crypto/spec/PSource;)V
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.initFromSpec:(Ljavax/crypto/spec/OAEPParameterSpec;)V
24: goto 32
25: StackMap locals:
StackMap stack:
aload 2
ldc "OAEPWITHSHA384ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 26
aload 2
ldc "OAEPWITHSHA-384ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 28
26: StackMap locals:
StackMap stack:
aload 0
new javax.crypto.spec.OAEPParameterSpec
dup
ldc "SHA-384"
ldc "MGF1"
getstatic java.security.spec.MGF1ParameterSpec.SHA384:Ljava/security/spec/MGF1ParameterSpec;
getstatic javax.crypto.spec.PSource$PSpecified.DEFAULT:Ljavax/crypto/spec/PSource$PSpecified;
invokespecial javax.crypto.spec.OAEPParameterSpec.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljavax/crypto/spec/PSource;)V
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.initFromSpec:(Ljavax/crypto/spec/OAEPParameterSpec;)V
27: goto 32
28: StackMap locals:
StackMap stack:
aload 2
ldc "OAEPWITHSHA512ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 29
aload 2
ldc "OAEPWITHSHA-512ANDMGF1PADDING"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 31
29: StackMap locals:
StackMap stack:
aload 0
new javax.crypto.spec.OAEPParameterSpec
dup
ldc "SHA-512"
ldc "MGF1"
getstatic java.security.spec.MGF1ParameterSpec.SHA512:Ljava/security/spec/MGF1ParameterSpec;
getstatic javax.crypto.spec.PSource$PSpecified.DEFAULT:Ljavax/crypto/spec/PSource$PSpecified;
invokespecial javax.crypto.spec.OAEPParameterSpec.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljavax/crypto/spec/PSource;)V
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.initFromSpec:(Ljavax/crypto/spec/OAEPParameterSpec;)V
30: goto 32
31: StackMap locals:
StackMap stack:
new javax.crypto.NoSuchPaddingException
dup
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " unavailable with RSA."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.crypto.NoSuchPaddingException.<init>:(Ljava/lang/String;)V
athrow
32: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 33 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 33 1 padding Ljava/lang/String;
1 33 2 pad Ljava/lang/String;
Exceptions:
throws javax.crypto.NoSuchPaddingException
MethodParameters:
Name Flags
padding
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=7, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
ifnull 1
aload 3
instanceof javax.crypto.spec.OAEPParameterSpec
ifeq 32
1: StackMap locals:
StackMap stack:
aload 2
instanceof java.security.interfaces.RSAPublicKey
ifeq 8
2: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.privateKeyOnly:Z
ifeq 6
3: new java.security.InvalidKeyException
dup
4: ldc "mode 1 requires RSAPrivateKey"
5: invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 2
checkcast java.security.interfaces.RSAPublicKey
invokestatic org.bouncycastle.jce.provider.RSAUtil.generatePublicKeyParameter:(Ljava/security/interfaces/RSAPublicKey;)Lorg/bouncycastle/crypto/params/RSAKeyParameters;
astore 5
start local 5 7: goto 16
end local 5 8: StackMap locals:
StackMap stack:
aload 2
instanceof java.security.interfaces.RSAPrivateKey
ifeq 15
9: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.publicKeyOnly:Z
ifeq 13
10: new java.security.InvalidKeyException
dup
11: ldc "mode 2 requires RSAPublicKey"
12: invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
aload 2
checkcast java.security.interfaces.RSAPrivateKey
invokestatic org.bouncycastle.jce.provider.RSAUtil.generatePrivateKeyParameter:(Ljava/security/interfaces/RSAPrivateKey;)Lorg/bouncycastle/crypto/params/RSAKeyParameters;
astore 5
start local 5 14: goto 16
end local 5 15: StackMap locals:
StackMap stack:
new java.security.InvalidKeyException
dup
ldc "unknown key type passed to RSA"
invokespecial java.security.InvalidKeyException.<init>:(Ljava/lang/String;)V
athrow
start local 5 16: StackMap locals: org.bouncycastle.crypto.CipherParameters
StackMap stack:
aload 3
ifnull 33
17: aload 3
checkcast javax.crypto.spec.OAEPParameterSpec
astore 6
start local 6 18: aload 0
aload 3
putfield org.bouncycastle.jce.provider.JCERSACipher.paramSpec:Ljava/security/spec/AlgorithmParameterSpec;
19: aload 6
invokevirtual javax.crypto.spec.OAEPParameterSpec.getMGFAlgorithm:()Ljava/lang/String;
ldc "MGF1"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifne 21
aload 6
invokevirtual javax.crypto.spec.OAEPParameterSpec.getMGFAlgorithm:()Ljava/lang/String;
getstatic org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers.id_mgf1:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.getId:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 21
20: new java.security.InvalidAlgorithmParameterException
dup
ldc "unknown mask generation function specified"
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
21: StackMap locals: javax.crypto.spec.OAEPParameterSpec
StackMap stack:
aload 6
invokevirtual javax.crypto.spec.OAEPParameterSpec.getMGFParameters:()Ljava/security/spec/AlgorithmParameterSpec;
instanceof java.security.spec.MGF1ParameterSpec
ifne 23
22: new java.security.InvalidAlgorithmParameterException
dup
ldc "unkown MGF parameters"
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
23: StackMap locals:
StackMap stack:
aload 6
invokevirtual javax.crypto.spec.OAEPParameterSpec.getDigestAlgorithm:()Ljava/lang/String;
invokestatic org.bouncycastle.jce.provider.JCEDigestUtil.getDigest:(Ljava/lang/String;)Lorg/bouncycastle/crypto/Digest;
astore 7
start local 7 24: aload 7
ifnonnull 26
25: new java.security.InvalidAlgorithmParameterException
dup
new java.lang.StringBuilder
dup
ldc "no match on digest algorithm: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual javax.crypto.spec.OAEPParameterSpec.getDigestAlgorithm:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
26: StackMap locals: org.bouncycastle.crypto.Digest
StackMap stack:
aload 6
invokevirtual javax.crypto.spec.OAEPParameterSpec.getMGFParameters:()Ljava/security/spec/AlgorithmParameterSpec;
checkcast java.security.spec.MGF1ParameterSpec
astore 8
start local 8 27: aload 8
invokevirtual java.security.spec.MGF1ParameterSpec.getDigestAlgorithm:()Ljava/lang/String;
invokestatic org.bouncycastle.jce.provider.JCEDigestUtil.getDigest:(Ljava/lang/String;)Lorg/bouncycastle/crypto/Digest;
astore 9
start local 9 28: aload 9
ifnonnull 30
29: new java.security.InvalidAlgorithmParameterException
dup
new java.lang.StringBuilder
dup
ldc "no match on MGF digest algorithm: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 8
invokevirtual java.security.spec.MGF1ParameterSpec.getDigestAlgorithm:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals: java.security.spec.MGF1ParameterSpec org.bouncycastle.crypto.Digest
StackMap stack:
aload 0
new org.bouncycastle.crypto.encodings.OAEPEncoding
dup
new org.bouncycastle.crypto.engines.RSABlindedEngine
dup
invokespecial org.bouncycastle.crypto.engines.RSABlindedEngine.<init>:()V
aload 7
aload 9
aload 6
invokevirtual javax.crypto.spec.OAEPParameterSpec.getPSource:()Ljavax/crypto/spec/PSource;
checkcast javax.crypto.spec.PSource$PSpecified
invokevirtual javax.crypto.spec.PSource$PSpecified.getValue:()[B
invokespecial org.bouncycastle.crypto.encodings.OAEPEncoding.<init>:(Lorg/bouncycastle/crypto/AsymmetricBlockCipher;Lorg/bouncycastle/crypto/Digest;Lorg/bouncycastle/crypto/Digest;[B)V
putfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
end local 9 end local 8 end local 7 end local 6 31: goto 33
end local 5 32: StackMap locals: org.bouncycastle.jce.provider.JCERSACipher int java.security.Key java.security.spec.AlgorithmParameterSpec java.security.SecureRandom
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "unknown parameter type."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
start local 5 33: StackMap locals: org.bouncycastle.crypto.CipherParameters
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
instanceof org.bouncycastle.crypto.engines.RSABlindedEngine
ifne 38
34: aload 4
ifnull 37
35: new org.bouncycastle.crypto.params.ParametersWithRandom
dup
aload 5
aload 4
invokespecial org.bouncycastle.crypto.params.ParametersWithRandom.<init>:(Lorg/bouncycastle/crypto/CipherParameters;Ljava/security/SecureRandom;)V
astore 5
36: goto 38
37: StackMap locals:
StackMap stack:
new org.bouncycastle.crypto.params.ParametersWithRandom
dup
aload 5
new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
invokespecial org.bouncycastle.crypto.params.ParametersWithRandom.<init>:(Lorg/bouncycastle/crypto/CipherParameters;Ljava/security/SecureRandom;)V
astore 5
38: StackMap locals:
StackMap stack:
iload 1
tableswitch { // 1 - 4
1: 39
2: 41
3: 39
4: 41
default: 43
}
39: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
iconst_1
aload 5
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
40: goto 44
41: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
iconst_0
aload 5
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
42: goto 44
43: StackMap locals:
StackMap stack:
new java.security.InvalidParameterException
dup
new java.lang.StringBuilder
dup
ldc "unknown opmode "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " passed to RSA"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
athrow
44: StackMap locals:
StackMap stack:
return
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 45 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 45 1 opmode I
0 45 2 key Ljava/security/Key;
0 45 3 params Ljava/security/spec/AlgorithmParameterSpec;
0 45 4 random Ljava/security/SecureRandom;
7 8 5 param Lorg/bouncycastle/crypto/CipherParameters;
14 15 5 param Lorg/bouncycastle/crypto/CipherParameters;
16 32 5 param Lorg/bouncycastle/crypto/CipherParameters;
33 45 5 param Lorg/bouncycastle/crypto/CipherParameters;
18 31 6 spec Ljavax/crypto/spec/OAEPParameterSpec;
24 31 7 digest Lorg/bouncycastle/crypto/Digest;
27 31 8 mgfParams Ljava/security/spec/MGF1ParameterSpec;
28 31 9 mgfDigest Lorg/bouncycastle/crypto/Digest;
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=5, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aconst_null
astore 5
start local 5 1: aload 3
ifnull 6
2: aload 3
ldc Ljavax/crypto/spec/OAEPParameterSpec;
invokevirtual java.security.AlgorithmParameters.getParameterSpec:(Ljava/lang/Class;)Ljava/security/spec/AlgorithmParameterSpec;
astore 5
3: goto 6
4: StackMap locals: org.bouncycastle.jce.provider.JCERSACipher int java.security.Key java.security.AlgorithmParameters java.security.SecureRandom java.security.spec.AlgorithmParameterSpec
StackMap stack: java.security.spec.InvalidParameterSpecException
astore 6
start local 6 5: new java.security.InvalidAlgorithmParameterException
dup
new java.lang.StringBuilder
dup
ldc "cannot recognise parameters: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 6
invokevirtual java.security.spec.InvalidParameterSpecException.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 6
invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 6 6: StackMap locals:
StackMap stack:
aload 0
aload 3
putfield org.bouncycastle.jce.provider.JCERSACipher.engineParams:Ljava/security/AlgorithmParameters;
7: aload 0
iload 1
aload 2
aload 5
aload 4
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.engineInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
8: return
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 Lorg/bouncycastle/jce/provider/JCERSACipher;
0 9 1 opmode I
0 9 2 key Ljava/security/Key;
0 9 3 params Ljava/security/AlgorithmParameters;
0 9 4 random Ljava/security/SecureRandom;
1 9 5 paramSpec Ljava/security/spec/AlgorithmParameterSpec;
5 6 6 e Ljava/security/spec/InvalidParameterSpecException;
Exception table:
from to target type
2 3 4 Class java.security.spec.InvalidParameterSpecException
Exceptions:
throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
opmode
key
params
random
protected void engineInit(int, java.security.Key, java.security.SecureRandom);
descriptor: (ILjava/security/Key;Ljava/security/SecureRandom;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
iload 1
aload 2
aconst_null
aload 3
invokevirtual org.bouncycastle.jce.provider.JCERSACipher.engineInit:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
1: goto 4
2: StackMap locals:
StackMap stack: java.security.InvalidAlgorithmParameterException
astore 4
start local 4 3: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Eeeek! "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 4
invokevirtual java.security.InvalidAlgorithmParameterException.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 4
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 4: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 5 1 opmode I
0 5 2 key Ljava/security/Key;
0 5 3 random Ljava/security/SecureRandom;
3 4 4 e Ljava/security/InvalidAlgorithmParameterException;
Exception table:
from to target type
0 1 2 Class java.security.InvalidAlgorithmParameterException
Exceptions:
throws java.security.InvalidKeyException
MethodParameters:
Name Flags
opmode
key
random
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
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
aload 1
iload 2
iload 3
invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
1: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
instanceof org.bouncycastle.crypto.engines.RSABlindedEngine
ifeq 4
2: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
iconst_1
iadd
if_icmple 6
3: new java.lang.ArrayIndexOutOfBoundsException
dup
ldc "too much data for RSA block"
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
if_icmple 6
5: new java.lang.ArrayIndexOutOfBoundsException
dup
ldc "too much data for RSA block"
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 7 1 input [B
0 7 2 inputOffset I
0 7 3 inputLen I
MethodParameters:
Name Flags
input
inputOffset
inputLen
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
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
aload 1
iload 2
iload 3
invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
1: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
instanceof org.bouncycastle.crypto.engines.RSABlindedEngine
ifeq 4
2: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
iconst_1
iadd
if_icmple 6
3: new java.lang.ArrayIndexOutOfBoundsException
dup
ldc "too much data for RSA block"
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
if_icmple 6
5: new java.lang.ArrayIndexOutOfBoundsException
dup
ldc "too much data for RSA block"
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
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 7 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 7 1 input [B
0 7 2 inputOffset I
0 7 3 inputLen I
0 7 4 output [B
0 7 5 outputOffset I
MethodParameters:
Name Flags
input
inputOffset
inputLen
output
outputOffset
protected byte[] engineDoFinal(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
ifnull 2
1: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
aload 1
iload 2
iload 3
invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
instanceof org.bouncycastle.crypto.engines.RSABlindedEngine
ifeq 5
3: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
iconst_1
iadd
if_icmple 7
4: new java.lang.ArrayIndexOutOfBoundsException
dup
ldc "too much data for RSA block"
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
if_icmple 7
6: new java.lang.ArrayIndexOutOfBoundsException
dup
ldc "too much data for RSA block"
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
astore 4
start local 4 8: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.reset:()V
9: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
aload 4
iconst_0
aload 4
arraylength
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
10: areturn
end local 4 11: StackMap locals:
StackMap stack: org.bouncycastle.crypto.InvalidCipherTextException
astore 4
start local 4 12: new javax.crypto.BadPaddingException
dup
aload 4
invokevirtual org.bouncycastle.crypto.InvalidCipherTextException.getMessage:()Ljava/lang/String;
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 13 1 input [B
0 13 2 inputOffset I
0 13 3 inputLen I
8 11 4 bytes [B
12 13 4 e Lorg/bouncycastle/crypto/InvalidCipherTextException;
Exception table:
from to target type
7 10 11 Class org.bouncycastle.crypto.InvalidCipherTextException
Exceptions:
throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
MethodParameters:
Name Flags
input
inputOffset
inputLen
protected int engineDoFinal(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, 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 1
ifnull 2
1: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
aload 1
iload 2
iload 3
invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
2: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
instanceof org.bouncycastle.crypto.engines.RSABlindedEngine
ifeq 5
3: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
iconst_1
iadd
if_icmple 7
4: new java.lang.ArrayIndexOutOfBoundsException
dup
ldc "too much data for RSA block"
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
if_icmple 7
6: new java.lang.ArrayIndexOutOfBoundsException
dup
ldc "too much data for RSA block"
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
astore 7
start local 7 8: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.bOut:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.reset:()V
9: aload 0
getfield org.bouncycastle.jce.provider.JCERSACipher.cipher:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
aload 7
iconst_0
aload 7
arraylength
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
astore 6
end local 7 start local 6 10: goto 13
end local 6 11: StackMap locals:
StackMap stack: org.bouncycastle.crypto.InvalidCipherTextException
astore 7
start local 7 12: new javax.crypto.BadPaddingException
dup
aload 7
invokevirtual org.bouncycastle.crypto.InvalidCipherTextException.getMessage:()Ljava/lang/String;
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
end local 7 start local 6 13: StackMap locals: byte[]
StackMap stack:
iconst_0
istore 7
start local 7 14: goto 17
15: StackMap locals: int
StackMap stack:
aload 4
iload 5
iload 7
iadd
aload 6
iload 7
baload
bastore
16: iinc 7 1
StackMap locals:
StackMap stack:
17: iload 7
aload 6
arraylength
if_icmpne 15
end local 7 18: aload 6
arraylength
ireturn
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 19 0 this Lorg/bouncycastle/jce/provider/JCERSACipher;
0 19 1 input [B
0 19 2 inputOffset I
0 19 3 inputLen I
0 19 4 output [B
0 19 5 outputOffset I
10 11 6 out [B
13 19 6 out [B
8 10 7 bytes [B
12 13 7 e Lorg/bouncycastle/crypto/InvalidCipherTextException;
14 18 7 i I
Exception table:
from to target type
7 10 11 Class org.bouncycastle.crypto.InvalidCipherTextException
Exceptions:
throws javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException
MethodParameters:
Name Flags
input
inputOffset
inputLen
output
outputOffset
}
SourceFile: "JCERSACipher.java"
NestMembers:
org.bouncycastle.jce.provider.JCERSACipher$ISO9796d1Padding org.bouncycastle.jce.provider.JCERSACipher$NoPadding org.bouncycastle.jce.provider.JCERSACipher$OAEPPadding org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PrivateOnly org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PublicOnly
InnerClasses:
public final PSpecified = javax.crypto.spec.PSource$PSpecified of javax.crypto.spec.PSource
public ISO9796d1Padding = org.bouncycastle.jce.provider.JCERSACipher$ISO9796d1Padding of org.bouncycastle.jce.provider.JCERSACipher
public NoPadding = org.bouncycastle.jce.provider.JCERSACipher$NoPadding of org.bouncycastle.jce.provider.JCERSACipher
public OAEPPadding = org.bouncycastle.jce.provider.JCERSACipher$OAEPPadding of org.bouncycastle.jce.provider.JCERSACipher
public PKCS1v1_5Padding = org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding of org.bouncycastle.jce.provider.JCERSACipher
public PKCS1v1_5Padding_PrivateOnly = org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PrivateOnly of org.bouncycastle.jce.provider.JCERSACipher
public PKCS1v1_5Padding_PublicOnly = org.bouncycastle.jce.provider.JCERSACipher$PKCS1v1_5Padding_PublicOnly of org.bouncycastle.jce.provider.JCERSACipher