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 HEADER_LENGTH;
    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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 44
            aload 0 /* this */
            iconst_m1
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
         2: .line 45
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
         3: .line 56
            aload 0 /* this */
            aload 1 /* cipher */
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
         4: .line 57
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrict:()Z
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
         5: .line 58
            return
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        start local 2 // int pLen
         0: .line 66
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 44
            aload 0 /* this */
            iconst_m1
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
         2: .line 45
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
         3: .line 70
            aload 0 /* this */
            aload 1 /* cipher */
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
         4: .line 71
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrict:()Z
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
         5: .line 72
            aload 0 /* this */
            iload 2 /* pLen */
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
         6: .line 73
            return
        end local 2 // int pLen
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        start local 2 // byte[] fallback
         0: .line 82
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 44
            aload 0 /* this */
            iconst_m1
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
         2: .line 45
            aload 0 /* this */
            aconst_null
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
         3: .line 86
            aload 0 /* this */
            aload 1 /* cipher */
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
         4: .line 87
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrict:()Z
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
         5: .line 88
            aload 0 /* this */
            aload 2 /* fallback */
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
         6: .line 89
            aload 0 /* this */
            aload 2 /* fallback */
            arraylength
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
         7: .line 90
            return
        end local 2 // byte[] fallback
        end local 1 // org.bouncycastle.crypto.AsymmetricBlockCipher cipher
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
         0: .line 99
            new org.bouncycastle.crypto.encodings.PKCS1Encoding$1
            dup
            aload 0 /* this */
            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 /* strict */
        start local 1 // java.lang.String strict
         1: .line 106
            new org.bouncycastle.crypto.encodings.PKCS1Encoding$2
            dup
            aload 0 /* this */
            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 /* notStrict */
        start local 2 // java.lang.String notStrict
         2: .line 114
            aload 2 /* notStrict */
            ifnull 6
         3: .line 116
            aload 2 /* notStrict */
            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: .line 119
      StackMap locals:
      StackMap stack:
            aload 1 /* strict */
            ifnull 7
            aload 1 /* strict */
            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 // java.lang.String notStrict
        end local 1 // java.lang.String strict
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
         0: .line 124
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            areturn
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // boolean forEncryption
        start local 2 // org.bouncycastle.crypto.CipherParameters param
         0: .line 133
            aload 2 /* param */
            instanceof org.bouncycastle.crypto.params.ParametersWithRandom
            ifeq 5
         1: .line 135
            aload 2 /* param */
            checkcast org.bouncycastle.crypto.params.ParametersWithRandom
            astore 4 /* rParam */
        start local 4 // org.bouncycastle.crypto.params.ParametersWithRandom rParam
         2: .line 137
            aload 0 /* this */
            aload 4 /* rParam */
            invokevirtual org.bouncycastle.crypto.params.ParametersWithRandom.getRandom:()Ljava/security/SecureRandom;
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
         3: .line 138
            aload 4 /* rParam */
            invokevirtual org.bouncycastle.crypto.params.ParametersWithRandom.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
            checkcast org.bouncycastle.crypto.params.AsymmetricKeyParameter
            astore 3 /* kParam */
        end local 4 // org.bouncycastle.crypto.params.ParametersWithRandom rParam
        start local 3 // org.bouncycastle.crypto.params.AsymmetricKeyParameter kParam
         4: .line 139
            goto 8
        end local 3 // org.bouncycastle.crypto.params.AsymmetricKeyParameter kParam
         5: .line 142
      StackMap locals:
      StackMap stack:
            aload 2 /* param */
            checkcast org.bouncycastle.crypto.params.AsymmetricKeyParameter
            astore 3 /* kParam */
        start local 3 // org.bouncycastle.crypto.params.AsymmetricKeyParameter kParam
         6: .line 143
            aload 3 /* kParam */
            invokevirtual org.bouncycastle.crypto.params.AsymmetricKeyParameter.isPrivate:()Z
            ifne 8
            iload 1 /* forEncryption */
            ifeq 8
         7: .line 145
            aload 0 /* this */
            invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.getSecureRandom:()Ljava/security/SecureRandom;
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
         8: .line 149
      StackMap locals: org.bouncycastle.crypto.params.AsymmetricKeyParameter
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            iload 1 /* forEncryption */
            aload 2 /* param */
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
         9: .line 151
            aload 0 /* this */
            aload 3 /* kParam */
            invokevirtual org.bouncycastle.crypto.params.AsymmetricKeyParameter.isPrivate:()Z
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forPrivateKey:Z
        10: .line 152
            aload 0 /* this */
            iload 1 /* forEncryption */
            putfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forEncryption:Z
        11: .line 153
            aload 0 /* this */
            aload 0 /* this */
            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: .line 155
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
            ifle 14
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
            ifnonnull 14
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
            ifnonnull 14
        13: .line 157
            new java.lang.IllegalArgumentException
            dup
            ldc "encoder requires random"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 159
      StackMap locals:
      StackMap stack:
            return
        end local 3 // org.bouncycastle.crypto.params.AsymmetricKeyParameter kParam
        end local 2 // org.bouncycastle.crypto.CipherParameters param
        end local 1 // boolean forEncryption
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
         0: .line 163
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
            istore 1 /* baseBlockSize */
        start local 1 // int baseBlockSize
         1: .line 165
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forEncryption:Z
            ifeq 3
         2: .line 167
            iload 1 /* baseBlockSize */
            bipush 10
            isub
            ireturn
         3: .line 171
      StackMap locals: int
      StackMap stack:
            iload 1 /* baseBlockSize */
            ireturn
        end local 1 // int baseBlockSize
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
         0: .line 177
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getOutputBlockSize:()I
            istore 1 /* baseBlockSize */
        start local 1 // int baseBlockSize
         1: .line 179
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forEncryption:Z
            ifeq 3
         2: .line 181
            iload 1 /* baseBlockSize */
            ireturn
         3: .line 185
      StackMap locals: int
      StackMap stack:
            iload 1 /* baseBlockSize */
            bipush 10
            isub
            ireturn
        end local 1 // int baseBlockSize
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // byte[] in
        start local 2 // int inOff
        start local 3 // int inLen
         0: .line 195
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forEncryption:Z
            ifeq 2
         1: .line 197
            aload 0 /* this */
            aload 1 /* in */
            iload 2 /* inOff */
            iload 3 /* inLen */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.encodeBlock:([BII)[B
            areturn
         2: .line 201
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* in */
            iload 2 /* inOff */
            iload 3 /* inLen */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.decodeBlock:([BII)[B
            areturn
        end local 3 // int inLen
        end local 2 // int inOff
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // byte[] in
        start local 2 // int inOff
        start local 3 // int inLen
         0: .line 211
            iload 3 /* inLen */
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.getInputBlockSize:()I
            if_icmple 2
         1: .line 213
            new java.lang.IllegalArgumentException
            dup
            ldc "input data too large"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 216
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.getInputBlockSize:()I
            newarray 8
            astore 4 /* block */
        start local 4 // byte[] block
         3: .line 218
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forPrivateKey:Z
            ifeq 11
         4: .line 220
            aload 4 /* block */
            iconst_0
            iconst_1
            bastore
         5: .line 222
            iconst_1
            istore 5 /* i */
        start local 5 // int i
         6: goto 9
         7: .line 224
      StackMap locals: byte[] int
      StackMap stack:
            aload 4 /* block */
            iload 5 /* i */
            iconst_m1
            bastore
         8: .line 222
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 5 /* i */
            aload 4 /* block */
            arraylength
            iload 3 /* inLen */
            isub
            iconst_1
            isub
            if_icmpne 7
        end local 5 // int i
        10: .line 226
            goto 19
        11: .line 229
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
            aload 4 /* block */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
        12: .line 231
            aload 4 /* block */
            iconst_0
            iconst_2
            bastore
        13: .line 237
            iconst_1
            istore 5 /* i */
        start local 5 // int i
        14: goto 18
        15: .line 241
      StackMap locals: int
      StackMap stack:
            aload 4 /* block */
            iload 5 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
            invokevirtual java.security.SecureRandom.nextInt:()I
            i2b
            bastore
        16: .line 239
      StackMap locals:
      StackMap stack:
            aload 4 /* block */
            iload 5 /* i */
            baload
            ifeq 15
        17: .line 237
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 5 /* i */
            aload 4 /* block */
            arraylength
            iload 3 /* inLen */
            isub
            iconst_1
            isub
            if_icmpne 16
        end local 5 // int i
        19: .line 246
      StackMap locals:
      StackMap stack:
            aload 4 /* block */
            aload 4 /* block */
            arraylength
            iload 3 /* inLen */
            isub
            iconst_1
            isub
            iconst_0
            bastore
        20: .line 247
            aload 1 /* in */
            iload 2 /* inOff */
            aload 4 /* block */
            aload 4 /* block */
            arraylength
            iload 3 /* inLen */
            isub
            iload 3 /* inLen */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        21: .line 249
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            aload 4 /* block */
            iconst_0
            aload 4 /* block */
            arraylength
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
            areturn
        end local 4 // byte[] block
        end local 3 // int inLen
        end local 2 // int inOff
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // byte[] encoded
        start local 1 // int pLen
         0: .line 262
            iconst_0
            istore 2 /* correct */
        start local 2 // int correct
         1: .line 266
            iload 2 /* correct */
            aload 0 /* encoded */
            iconst_0
            baload
            iconst_2
            ixor
            ior
            istore 2 /* correct */
         2: .line 271
            aload 0 /* encoded */
            arraylength
         3: .line 272
            iload 1 /* pLen */
         4: .line 273
            iconst_1
         5: .line 271
            iadd
            isub
            istore 3 /* plen */
        start local 3 // int plen
         6: .line 276
            iconst_1
            istore 4 /* i */
        start local 4 // int i
         7: goto 14
         8: .line 278
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* encoded */
            iload 4 /* i */
            baload
            istore 5 /* tmp */
        start local 5 // int tmp
         9: .line 279
            iload 5 /* tmp */
            iload 5 /* tmp */
            iconst_1
            ishr
            ior
            istore 5 /* tmp */
        10: .line 280
            iload 5 /* tmp */
            iload 5 /* tmp */
            iconst_2
            ishr
            ior
            istore 5 /* tmp */
        11: .line 281
            iload 5 /* tmp */
            iload 5 /* tmp */
            iconst_4
            ishr
            ior
            istore 5 /* tmp */
        12: .line 282
            iload 2 /* correct */
            iload 5 /* tmp */
            iconst_1
            iand
            iconst_1
            isub
            ior
            istore 2 /* correct */
        end local 5 // int tmp
        13: .line 276
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 4 /* i */
            iload 3 /* plen */
            if_icmplt 8
        end local 4 // int i
        15: .line 288
            iload 2 /* correct */
            aload 0 /* encoded */
            aload 0 /* encoded */
            arraylength
            iload 1 /* pLen */
            iconst_1
            iadd
            isub
            baload
            ior
            istore 2 /* correct */
        16: .line 293
            iload 2 /* correct */
            iload 2 /* correct */
            iconst_1
            ishr
            ior
            istore 2 /* correct */
        17: .line 294
            iload 2 /* correct */
            iload 2 /* correct */
            iconst_2
            ishr
            ior
            istore 2 /* correct */
        18: .line 295
            iload 2 /* correct */
            iload 2 /* correct */
            iconst_4
            ishr
            ior
            istore 2 /* correct */
        19: .line 296
            iload 2 /* correct */
            iconst_1
            iand
            iconst_1
            isub
            iconst_m1
            ixor
            ireturn
        end local 3 // int plen
        end local 2 // int correct
        end local 1 // int pLen
        end local 0 // byte[] encoded
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // byte[] in
        start local 2 // int inOff
        start local 3 // int inLen
         0: .line 313
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forPrivateKey:Z
            ifne 2
         1: .line 315
            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: .line 318
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            aload 1 /* in */
            iload 2 /* inOff */
            iload 3 /* inLen */
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
            astore 4 /* block */
        start local 4 // byte[] block
         3: .line 320
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
            ifnonnull 7
         4: .line 322
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
            newarray 8
            astore 5 /* random */
        start local 5 // byte[] random
         5: .line 323
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.random:Ljava/security/SecureRandom;
            aload 5 /* random */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         6: .line 324
            goto 8
        end local 5 // byte[] random
         7: .line 327
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.fallback:[B
            astore 5 /* random */
        start local 5 // byte[] random
         8: .line 330
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
            aload 4 /* block */
            arraylength
            aload 0 /* this */
            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 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.blockBuffer:[B
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 4 /* block */
      StackMap locals:
      StackMap stack: byte[]
        12: astore 6 /* data */
        start local 6 // byte[] data
        13: .line 335
            aload 6 /* data */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
            invokestatic org.bouncycastle.crypto.encodings.PKCS1Encoding.checkPkcs1Encoding:([BI)I
            istore 7 /* correct */
        start local 7 // int correct
        14: .line 341
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
            newarray 8
            astore 8 /* result */
        start local 8 // byte[] result
        15: .line 342
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        16: goto 19
        17: .line 344
      StackMap locals: org.bouncycastle.crypto.encodings.PKCS1Encoding byte[] int int byte[] byte[] byte[] int byte[] int
      StackMap stack:
            aload 8 /* result */
            iload 9 /* i */
            aload 6 /* data */
            iload 9 /* i */
            aload 6 /* data */
            arraylength
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
            isub
            iadd
            baload
            iload 7 /* correct */
            iconst_m1
            ixor
            iand
            aload 5 /* random */
            iload 9 /* i */
            baload
            iload 7 /* correct */
            iand
            ior
            i2b
            bastore
        18: .line 342
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 9 /* i */
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
            if_icmplt 17
        end local 9 // int i
        20: .line 347
            aload 6 /* data */
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
        21: .line 349
            aload 8 /* result */
            areturn
        end local 8 // byte[] result
        end local 7 // int correct
        end local 6 // byte[] data
        end local 5 // byte[] random
        end local 4 // byte[] block
        end local 3 // int inLen
        end local 2 // int inOff
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // byte[] in
        start local 2 // int inOff
        start local 3 // int inLen
         0: .line 365
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.pLen:I
            iconst_m1
            if_icmpeq 2
         1: .line 367
            aload 0 /* this */
            aload 1 /* in */
            iload 2 /* inOff */
            iload 3 /* inLen */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.decodeBlockOrRandom:([BII)[B
            areturn
         2: .line 370
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.engine:Lorg/bouncycastle/crypto/AsymmetricBlockCipher;
            aload 1 /* in */
            iload 2 /* inOff */
            iload 3 /* inLen */
            invokeinterface org.bouncycastle.crypto.AsymmetricBlockCipher.processBlock:([BII)[B
            astore 4 /* block */
        start local 4 // byte[] block
         3: .line 371
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.useStrictLength:Z
            aload 4 /* block */
            arraylength
            aload 0 /* this */
            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 /* incorrectLength */
        start local 5 // boolean incorrectLength
         6: .line 374
            aload 4 /* block */
            arraylength
            aload 0 /* this */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.getOutputBlockSize:()I
            if_icmpge 9
         7: .line 376
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.blockBuffer:[B
            astore 6 /* data */
        start local 6 // byte[] data
         8: .line 377
            goto 10
        end local 6 // byte[] data
         9: .line 380
      StackMap locals: int
      StackMap stack:
            aload 4 /* block */
            astore 6 /* data */
        start local 6 // byte[] data
        10: .line 383
      StackMap locals: byte[]
      StackMap stack:
            aload 6 /* data */
            iconst_0
            baload
            istore 7 /* type */
        start local 7 // byte type
        11: .line 386
            aload 0 /* this */
            getfield org.bouncycastle.crypto.encodings.PKCS1Encoding.forPrivateKey:Z
            ifeq 16
        12: .line 388
            iload 7 /* type */
            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 /* badType */
        start local 8 // boolean badType
        15: .line 389
            goto 19
        end local 8 // boolean badType
        16: .line 392
      StackMap locals:
      StackMap stack:
            iload 7 /* type */
            iconst_1
            if_icmpeq 17
            iconst_1
            goto 18
      StackMap locals:
      StackMap stack:
        17: iconst_0
      StackMap locals:
      StackMap stack: int
        18: istore 8 /* badType */
        start local 8 // boolean badType
        19: .line 398
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 7 /* type */
            aload 6 /* data */
            invokevirtual org.bouncycastle.crypto.encodings.PKCS1Encoding.findStart:(B[B)I
            istore 9 /* start */
        start local 9 // int start
        20: .line 400
            iinc 9 /* start */ 1
        21: .line 402
            iload 8 /* badType */
            iload 9 /* start */
            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: .line 404
            aload 6 /* data */
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
        25: .line 405
            new org.bouncycastle.crypto.InvalidCipherTextException
            dup
            ldc "block incorrect"
            invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 409
      StackMap locals:
      StackMap stack:
            iload 5 /* incorrectLength */
            ifeq 29
        27: .line 411
            aload 6 /* data */
            iconst_0
            invokestatic org.bouncycastle.util.Arrays.fill:([BB)V
        28: .line 412
            new org.bouncycastle.crypto.InvalidCipherTextException
            dup
            ldc "block incorrect size"
            invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
            athrow
        29: .line 415
      StackMap locals:
      StackMap stack:
            aload 6 /* data */
            arraylength
            iload 9 /* start */
            isub
            newarray 8
            astore 10 /* result */
        start local 10 // byte[] result
        30: .line 417
            aload 6 /* data */
            iload 9 /* start */
            aload 10 /* result */
            iconst_0
            aload 10 /* result */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        31: .line 419
            aload 10 /* result */
            areturn
        end local 10 // byte[] result
        end local 9 // int start
        end local 8 // boolean badType
        end local 7 // byte type
        end local 6 // byte[] data
        end local 5 // boolean incorrectLength
        end local 4 // byte[] block
        end local 3 // int inLen
        end local 2 // int inOff
        end local 1 // byte[] in
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
        start local 1 // byte type
        start local 2 // byte[] block
         0: .line 425
            iconst_m1
            istore 3 /* start */
        start local 3 // int start
         1: .line 426
            iconst_0
            istore 4 /* padErr */
        start local 4 // boolean padErr
         2: .line 428
            iconst_1
            istore 5 /* i */
        start local 5 // int i
         3: goto 19
         4: .line 430
      StackMap locals: int int int
      StackMap stack:
            aload 2 /* block */
            iload 5 /* i */
            baload
            istore 6 /* pad */
        start local 6 // byte pad
         5: .line 432
            iload 6 /* pad */
            ifne 6
            iconst_1
            goto 7
      StackMap locals: int
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: iload 3 /* start */
            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: .line 434
            iload 5 /* i */
            istore 3 /* start */
        11: .line 436
      StackMap locals:
      StackMap stack:
            iload 4 /* padErr */
            iload 1 /* type */
            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 /* start */
            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 /* pad */
            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 /* padErr */
        end local 6 // byte pad
        18: .line 428
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 5 /* i */
            aload 2 /* block */
            arraylength
            if_icmpne 4
        end local 5 // int i
        20: .line 439
            iload 4 /* padErr */
            ifeq 22
        21: .line 441
            iconst_m1
            ireturn
        22: .line 444
      StackMap locals:
      StackMap stack:
            iload 3 /* start */
            ireturn
        end local 4 // boolean padErr
        end local 3 // int start
        end local 2 // byte[] block
        end local 1 // byte type
        end local 0 // org.bouncycastle.crypto.encodings.PKCS1Encoding this
      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