public class org.bouncycastle.crypto.encodings.PKCS1Encoding implements org.bouncycastle.crypto.AsymmetricBlockCipher
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.crypto.encodings.PKCS1Encoding
super_class: java.lang.Object
{
public static final java.lang.String STRICT_LENGTH_ENABLED_PROPERTY;
descriptor: Ljava/lang/String;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: "org.bouncycastle.pkcs1.strict"
public static final java.lang.String NOT_STRICT_LENGTH_ENABLED_PROPERTY;
descriptor: Ljava/lang/String;
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
ConstantValue: "org.bouncycastle.pkcs1.not_strict"
private static final int ;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 10
private java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0002) ACC_PRIVATE
private org.bouncycastle.crypto.AsymmetricBlockCipher engine;
descriptor: Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
flags: (0x0002) ACC_PRIVATE
private boolean forEncryption;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean forPrivateKey;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean useStrictLength;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int pLen;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private byte[] fallback;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] blockBuffer;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher);
descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_m1
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
2: aload 0
aconst_null
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
3: aload 0
aload 1
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
4: aload 0
aload 0
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrict:()Z
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 6 1 cipher Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
MethodParameters:
Name Flags
cipher
public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher, int);
descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_m1
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
2: aload 0
aconst_null
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
3: aload 0
aload 1
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
4: aload 0
aload 0
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrict:()Z
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
5: aload 0
iload 2
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
6: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 7 1 cipher Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
0 7 2 pLen I
MethodParameters:
Name Flags
cipher
pLen
public void <init>(org.bouncycastle.crypto.AsymmetricBlockCipher, byte[]);
descriptor: (Lorg/bouncycastle/crypto/AsymmetricBlockCipher;[B)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_m1
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
2: aload 0
aconst_null
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
3: aload 0
aload 1
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
4: aload 0
aload 0
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrict:()Z
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
5: aload 0
aload 2
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
6: aload 0
aload 2
arraylength
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 8 1 cipher Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
0 8 2 fallback [B
MethodParameters:
Name Flags
cipher
fallback
private boolean useStrict();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=1
start local 0 0: new org.bouncycastle.crypto.encodings.PKCS1Encoding$1
dup
aload 0
invokespecial org.bouncycastle.crypto.encodings.PKCS1Encoding$1.<init>:(Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
astore 1
start local 1 1: new org.bouncycastle.crypto.encodings.PKCS1Encoding$2
dup
aload 0
invokespecial org.bouncycastle.crypto.encodings.PKCS1Encoding$2.<init>:(Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.lang.String
astore 2
start local 2 2: aload 2
ifnull 6
3: aload 2
ldc "true"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 4
iconst_0
goto 5
StackMap locals: java.lang.String java.lang.String
StackMap stack:
4: iconst_1
StackMap locals:
StackMap stack: int
5: ireturn
6: StackMap locals:
StackMap stack:
aload 1
ifnull 7
aload 1
ldc "true"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 7
iconst_0
ireturn
StackMap locals:
StackMap stack:
7: iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
1 8 1 strict Ljava/lang/String;
2 8 2 notStrict Ljava/lang/String;
public org.bouncycastle.crypto.AsymmetricBlockCipher getUnderlyingCipher();
descriptor: ()Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
public void init(boolean, org.bouncycastle.crypto.CipherParameters);
descriptor: (ZLorg/bouncycastle/crypto/CipherParameters;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 2
instanceof org.bouncycastle.crypto.params.ParametersWithRandom
ifeq 5
1: aload 2
checkcast org.bouncycastle.crypto.params.ParametersWithRandom
astore 4
start local 4 2: aload 0
aload 4
invokevirtual org.bouncycastle.crypto.params.ParametersWithRandom.getRandom:()Ljava/security/SecureRandom;
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
3: aload 4
invokevirtual org.bouncycastle.crypto.params.ParametersWithRandom.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
checkcast org.bouncycastle.crypto.params.AsymmetricKeyParameter
astore 3
end local 4 start local 3 4: goto 8
end local 3 5: StackMap locals:
StackMap stack:
aload 2
checkcast org.bouncycastle.crypto.params.AsymmetricKeyParameter
astore 3
start local 3 6: aload 3
invokevirtual org.bouncycastle.crypto.params.AsymmetricKeyParameter.isPrivate:()Z
ifne 8
iload 1
ifeq 8
7: aload 0
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.getSecureRandom:()Ljava/security/SecureRandom;
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
8: StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
iload 1
aload 2
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
9: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.params.AsymmetricKeyParameter.isPrivate:()Z
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forPrivateKey:Z
10: aload 0
iload 1
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forEncryption:Z
11: aload 0
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
newarray 8
putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.blockBuffer:[B
12: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
ifle 14
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
ifnonnull 14
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
ifnonnull 14
13: new java.lang.IllegalArgumentException
dup
ldc "encoder requires random"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 15 1 forEncryption Z
0 15 2 param Lorg/bouncycastle/crypto/CipherParameters;
4 5 3 kParam Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
6 15 3 kParam Lorg/bouncycastle/crypto/params/AsymmetricKeyParameter;
2 4 4 rParam Lorg/bouncycastle/crypto/params/ParametersWithRandom;
MethodParameters:
Name Flags
forEncryption
param
public int getInputBlockSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
istore 1
start local 1 1: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forEncryption:Z
ifeq 3
2: iload 1
bipush 10
isub
ireturn
3: StackMap locals: int
StackMap stack:
iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
1 4 1 baseBlockSize I
public int getOutputBlockSize();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
istore 1
start local 1 1: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forEncryption:Z
ifeq 3
2: iload 1
ireturn
3: StackMap locals: int
StackMap stack:
iload 1
bipush 10
isub
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
1 4 1 baseBlockSize I
public byte[] processBlock(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0001) ACC_PUBLIC
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.crypto.encodings.PKCS1Encoding.forEncryption:Z
ifeq 2
1: aload 0
aload 1
iload 2
iload 3
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.encodeBlock:([BII)[B
areturn
2: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
iload 3
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.decodeBlock:([BII)[B
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 3 1 in [B
0 3 2 inOff I
0 3 3 inLen I
Exceptions:
throws org.bouncycastle.crypto.InvalidCipherTextException
MethodParameters:
Name Flags
in
inOff
inLen
private byte[] encodeBlock(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 3
aload 0
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.getInputBlockSize:()I
if_icmple 2
1: new java.lang.IllegalArgumentException
dup
ldc "input data too large"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
newarray 8
astore 4
start local 4 3: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forPrivateKey:Z
ifeq 11
4: aload 4
iconst_0
iconst_1
bastore
5: iconst_1
istore 5
start local 5 6: goto 9
7: StackMap locals: byte[] int
StackMap stack:
aload 4
iload 5
iconst_m1
bastore
8: iinc 5 1
StackMap locals:
StackMap stack:
9: iload 5
aload 4
arraylength
iload 3
isub
iconst_1
isub
if_icmpne 7
end local 5 10: goto 19
11: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
aload 4
invokevirtual java.security.SecureRandom.nextBytes:([B)V
12: aload 4
iconst_0
iconst_2
bastore
13: iconst_1
istore 5
start local 5 14: goto 18
15: StackMap locals: int
StackMap stack:
aload 4
iload 5
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
invokevirtual java.security.SecureRandom.nextInt:()I
i2b
bastore
16: StackMap locals:
StackMap stack:
aload 4
iload 5
baload
ifeq 15
17: iinc 5 1
StackMap locals:
StackMap stack:
18: iload 5
aload 4
arraylength
iload 3
isub
iconst_1
isub
if_icmpne 16
end local 5 19: StackMap locals:
StackMap stack:
aload 4
aload 4
arraylength
iload 3
isub
iconst_1
isub
iconst_0
bastore
20: aload 1
iload 2
aload 4
aload 4
arraylength
iload 3
isub
iload 3
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
21: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
aload 4
iconst_0
aload 4
arraylength
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 22 1 in [B
0 22 2 inOff I
0 22 3 inLen I
3 22 4 block [B
6 10 5 i I
14 19 5 i I
Exceptions:
throws org.bouncycastle.crypto.InvalidCipherTextException
MethodParameters:
Name Flags
in
inOff
inLen
private static int checkPkcs1Encoding(byte[], int);
descriptor: ([BI)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: iload 2
aload 0
iconst_0
baload
iconst_2
ixor
ior
istore 2
2: aload 0
arraylength
3: iload 1
4: iconst_1
5: iadd
isub
istore 3
start local 3 6: iconst_1
istore 4
start local 4 7: goto 14
8: StackMap locals: int int int
StackMap stack:
aload 0
iload 4
baload
istore 5
start local 5 9: iload 5
iload 5
iconst_1
ishr
ior
istore 5
10: iload 5
iload 5
iconst_2
ishr
ior
istore 5
11: iload 5
iload 5
iconst_4
ishr
ior
istore 5
12: iload 2
iload 5
iconst_1
iand
iconst_1
isub
ior
istore 2
end local 5 13: iinc 4 1
StackMap locals:
StackMap stack:
14: iload 4
iload 3
if_icmplt 8
end local 4 15: iload 2
aload 0
aload 0
arraylength
iload 1
iconst_1
iadd
isub
baload
ior
istore 2
16: iload 2
iload 2
iconst_1
ishr
ior
istore 2
17: iload 2
iload 2
iconst_2
ishr
ior
istore 2
18: iload 2
iload 2
iconst_4
ishr
ior
istore 2
19: iload 2
iconst_1
iand
iconst_1
isub
iconst_m1
ixor
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 20 0 encoded [B
0 20 1 pLen I
1 20 2 correct I
6 20 3 plen I
7 15 4 i I
9 13 5 tmp I
MethodParameters:
Name Flags
encoded
pLen
private byte[] decodeBlockOrRandom(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forPrivateKey:Z
ifne 2
1: new org.bouncycastle.crypto.InvalidCipherTextException
dup
ldc "sorry, this method is only for decryption, not for signing"
invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
aload 1
iload 2
iload 3
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
astore 4
start local 4 3: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
ifnonnull 7
4: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
newarray 8
astore 5
start local 5 5: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
aload 5
invokevirtual java.security.SecureRandom.nextBytes:([B)V
6: goto 8
end local 5 7: StackMap locals: byte[]
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
astore 5
start local 5 8: StackMap locals: byte[]
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
aload 4
arraylength
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
if_icmpeq 9
iconst_1
goto 10
StackMap locals:
StackMap stack: int
9: iconst_0
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding byte[] int int byte[] byte[]
StackMap stack: int int
10: iand
ifeq 11
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.blockBuffer:[B
goto 12
StackMap locals:
StackMap stack:
11: aload 4
StackMap locals:
StackMap stack: byte[]
12: astore 6
start local 6 13: aload 6
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
invokestatic org.bouncycastle.crypto.encodings.PKCS1Encoding.checkPkcs1Encoding:([BI)I
istore 7
start local 7 14: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
newarray 8
astore 8
start local 8 15: iconst_0
istore 9
start local 9 16: goto 19
17: StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding byte[] int int byte[] byte[] byte[] int byte[] int
StackMap stack:
aload 8
iload 9
aload 6
iload 9
aload 6
arraylength
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
isub
iadd
baload
iload 7
iconst_m1
ixor
iand
aload 5
iload 9
baload
iload 7
iand
ior
i2b
bastore
18: iinc 9 1
StackMap locals:
StackMap stack:
19: iload 9
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
if_icmplt 17
end local 9 20: aload 6
iconst_0
invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
21: aload 8
areturn
end local 8 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 22 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 22 1 in [B
0 22 2 inOff I
0 22 3 inLen I
3 22 4 block [B
5 7 5 random [B
8 22 5 random [B
13 22 6 data [B
14 22 7 correct I
15 22 8 result [B
16 20 9 i I
Exceptions:
throws org.bouncycastle.crypto.InvalidCipherTextException
MethodParameters:
Name Flags
in
inOff
inLen
private byte[] decodeBlock(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
iconst_m1
if_icmpeq 2
1: aload 0
aload 1
iload 2
iload 3
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.decodeBlockOrRandom:([BII)[B
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
aload 1
iload 2
iload 3
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
astore 4
start local 4 3: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
aload 4
arraylength
aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
if_icmpeq 4
iconst_1
goto 5
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding byte[] int int byte[]
StackMap stack: int
4: iconst_0
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding byte[] int int byte[]
StackMap stack: int int
5: iand
istore 5
start local 5 6: aload 4
arraylength
aload 0
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.getOutputBlockSize:()I
if_icmpge 9
7: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.blockBuffer:[B
astore 6
start local 6 8: goto 10
end local 6 9: StackMap locals: int
StackMap stack:
aload 4
astore 6
start local 6 10: StackMap locals: byte[]
StackMap stack:
aload 6
iconst_0
baload
istore 7
start local 7 11: aload 0
getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forPrivateKey:Z
ifeq 16
12: iload 7
iconst_2
if_icmpeq 13
iconst_1
goto 14
StackMap locals: int
StackMap stack:
13: iconst_0
StackMap locals:
StackMap stack: int
14: istore 8
start local 8 15: goto 19
end local 8 16: StackMap locals:
StackMap stack:
iload 7
iconst_1
if_icmpeq 17
iconst_1
goto 18
StackMap locals:
StackMap stack:
17: iconst_0
StackMap locals:
StackMap stack: int
18: istore 8
start local 8 19: StackMap locals: int
StackMap stack:
aload 0
iload 7
aload 6
invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.findStart:(B[B)I
istore 9
start local 9 20: iinc 9 1
21: iload 8
iload 9
bipush 10
if_icmpge 22
iconst_1
goto 23
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding byte[] int int byte[] int byte[] int int int
StackMap stack: int
22: iconst_0
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding byte[] int int byte[] int byte[] int int int
StackMap stack: int int
23: ior
ifeq 26
24: aload 6
iconst_0
invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
25: new org.bouncycastle.crypto.InvalidCipherTextException
dup
ldc "block incorrect"
invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
athrow
26: StackMap locals:
StackMap stack:
iload 5
ifeq 29
27: aload 6
iconst_0
invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
28: new org.bouncycastle.crypto.InvalidCipherTextException
dup
ldc "block incorrect size"
invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
athrow
29: StackMap locals:
StackMap stack:
aload 6
arraylength
iload 9
isub
newarray 8
astore 10
start local 10 30: aload 6
iload 9
aload 10
iconst_0
aload 10
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
31: aload 10
areturn
end local 10 end local 9 end local 8 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 32 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 32 1 in [B
0 32 2 inOff I
0 32 3 inLen I
3 32 4 block [B
6 32 5 incorrectLength Z
8 9 6 data [B
10 32 6 data [B
11 32 7 type B
15 16 8 badType Z
19 32 8 badType Z
20 32 9 start I
30 32 10 result [B
Exceptions:
throws org.bouncycastle.crypto.InvalidCipherTextException
MethodParameters:
Name Flags
in
inOff
inLen
private int findStart(byte, byte[]);
descriptor: (B[B)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: iconst_m1
istore 3
start local 3 1: iconst_0
istore 4
start local 4 2: iconst_1
istore 5
start local 5 3: goto 19
4: StackMap locals: int int int
StackMap stack:
aload 2
iload 5
baload
istore 6
start local 6 5: iload 6
ifne 6
iconst_1
goto 7
StackMap locals: int
StackMap stack:
6: iconst_0
StackMap locals:
StackMap stack: int
7: iload 3
ifge 8
iconst_1
goto 9
StackMap locals:
StackMap stack: int
8: iconst_0
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding int byte[] int int int int
StackMap stack: int int
9: iand
ifeq 11
10: iload 5
istore 3
11: StackMap locals:
StackMap stack:
iload 4
iload 1
iconst_1
if_icmpne 12
iconst_1
goto 13
StackMap locals:
StackMap stack: int
12: iconst_0
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding int byte[] int int int int
StackMap stack: int int
13: iload 3
ifge 14
iconst_1
goto 15
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding int byte[] int int int int
StackMap stack: int int
14: iconst_0
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding int byte[] int int int int
StackMap stack: int int int
15: iand
iload 6
iconst_m1
if_icmpeq 16
iconst_1
goto 17
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding int byte[] int int int int
StackMap stack: int int
16: iconst_0
StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding int byte[] int int int int
StackMap stack: int int int
17: iand
ior
istore 4
end local 6 18: iinc 5 1
StackMap locals:
StackMap stack:
19: iload 5
aload 2
arraylength
if_icmpne 4
end local 5 20: iload 4
ifeq 22
21: iconst_m1
ireturn
22: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lorg/bouncycastle/crypto/encodings/PKCS1Encoding;
0 23 1 type B
0 23 2 block [B
1 23 3 start I
2 23 4 padErr Z
3 20 5 i I
5 18 6 pad B
Exceptions:
throws org.bouncycastle.crypto.InvalidCipherTextException
MethodParameters:
Name Flags
type
block
}
SourceFile: "PKCS1Encoding.java"
NestMembers:
org.bouncycastle.crypto.encodings.PKCS1Encoding$1 org.bouncycastle.crypto.encodings.PKCS1Encoding$2
InnerClasses:
org.bouncycastle.crypto.encodings.PKCS1Encoding$1
org.bouncycastle.crypto.encodings.PKCS1Encoding$2