public class org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder implements org.bouncycastle.cert.crmf.EncryptedValuePadder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder
  super_class: java.lang.Object
{
  private int length;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.security.SecureRandom random;
    descriptor: Ljava/security/SecureRandom;
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.crypto.Digest dig;
    descriptor: Lorg/bouncycastle/crypto/Digest;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder this
        start local 1 // int length
         0: .line 29
            aload 0 /* this */
            iload 1 /* length */
            aconst_null
            invokespecial org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.<init>:(ILjava/security/SecureRandom;)V
         1: .line 30
            return
        end local 1 // int length
        end local 0 // org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/bouncycastle/cert/crmf/bc/BcFixedLengthMGF1Padder;
            0    2     1  length  I
    MethodParameters:
        Name  Flags
      length  

  public void <init>(int, java.security.SecureRandom);
    descriptor: (ILjava/security/SecureRandom;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder this
        start local 1 // int length
        start local 2 // java.security.SecureRandom random
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 19
            aload 0 /* this */
            new org.bouncycastle.crypto.digests.SHA1Digest
            dup
            invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
            putfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.dig:Lorg/bouncycastle/crypto/Digest;
         2: .line 42
            aload 0 /* this */
            iload 1 /* length */
            putfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.length:I
         3: .line 43
            aload 0 /* this */
            aload 2 /* random */
            putfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.random:Ljava/security/SecureRandom;
         4: .line 44
            return
        end local 2 // java.security.SecureRandom random
        end local 1 // int length
        end local 0 // org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/bouncycastle/cert/crmf/bc/BcFixedLengthMGF1Padder;
            0    5     1  length  I
            0    5     2  random  Ljava/security/SecureRandom;
    MethodParameters:
        Name  Flags
      length  
      random  

  public byte[] getPaddedData(byte[]);
    descriptor: ([B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder this
        start local 1 // byte[] data
         0: .line 48
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.length:I
            newarray 8
            astore 2 /* bytes */
        start local 2 // byte[] bytes
         1: .line 49
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.dig:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            newarray 8
            astore 3 /* seed */
        start local 3 // byte[] seed
         2: .line 50
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.length:I
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.dig:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            isub
            newarray 8
            astore 4 /* mask */
        start local 4 // byte[] mask
         3: .line 52
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.random:Ljava/security/SecureRandom;
            ifnonnull 5
         4: .line 54
            aload 0 /* this */
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            putfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.random:Ljava/security/SecureRandom;
         5: .line 57
      StackMap locals: byte[] byte[] byte[]
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.random:Ljava/security/SecureRandom;
            aload 3 /* seed */
            invokevirtual java.security.SecureRandom.nextBytes:([B)V
         6: .line 59
            new org.bouncycastle.crypto.generators.MGF1BytesGenerator
            dup
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.dig:Lorg/bouncycastle/crypto/Digest;
            invokespecial org.bouncycastle.crypto.generators.MGF1BytesGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 5 /* maskGen */
        start local 5 // org.bouncycastle.crypto.generators.MGF1BytesGenerator maskGen
         7: .line 61
            aload 5 /* maskGen */
            new org.bouncycastle.crypto.params.MGFParameters
            dup
            aload 3 /* seed */
            invokespecial org.bouncycastle.crypto.params.MGFParameters.<init>:([B)V
            invokevirtual org.bouncycastle.crypto.generators.MGF1BytesGenerator.init:(Lorg/bouncycastle/crypto/DerivationParameters;)V
         8: .line 63
            aload 5 /* maskGen */
            aload 4 /* mask */
            iconst_0
            aload 4 /* mask */
            arraylength
            invokevirtual org.bouncycastle.crypto.generators.MGF1BytesGenerator.generateBytes:([BII)I
            pop
         9: .line 65
            aload 3 /* seed */
            iconst_0
            aload 2 /* bytes */
            iconst_0
            aload 3 /* seed */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 66
            aload 1 /* data */
            iconst_0
            aload 2 /* bytes */
            aload 3 /* seed */
            arraylength
            aload 1 /* data */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 68
            aload 3 /* seed */
            arraylength
            aload 1 /* data */
            arraylength
            iadd
            iconst_1
            iadd
            istore 6 /* i */
        start local 6 // int i
        12: goto 15
        13: .line 70
      StackMap locals: org.bouncycastle.crypto.generators.MGF1BytesGenerator int
      StackMap stack:
            aload 2 /* bytes */
            iload 6 /* i */
            iconst_1
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.random:Ljava/security/SecureRandom;
            sipush 255
            invokevirtual java.security.SecureRandom.nextInt:(I)I
            iadd
            i2b
            bastore
        14: .line 68
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 6 /* i */
            aload 2 /* bytes */
            arraylength
            if_icmpne 13
        end local 6 // int i
        16: .line 73
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        17: goto 20
        18: .line 75
      StackMap locals:
      StackMap stack:
            aload 2 /* bytes */
            iload 6 /* i */
            aload 3 /* seed */
            arraylength
            iadd
            dup2
            baload
            aload 4 /* mask */
            iload 6 /* i */
            baload
            ixor
            i2b
            bastore
        19: .line 73
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 6 /* i */
            aload 4 /* mask */
            arraylength
            if_icmpne 18
        end local 6 // int i
        21: .line 78
            aload 2 /* bytes */
            areturn
        end local 5 // org.bouncycastle.crypto.generators.MGF1BytesGenerator maskGen
        end local 4 // byte[] mask
        end local 3 // byte[] seed
        end local 2 // byte[] bytes
        end local 1 // byte[] data
        end local 0 // org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   22     0     this  Lorg/bouncycastle/cert/crmf/bc/BcFixedLengthMGF1Padder;
            0   22     1     data  [B
            1   22     2    bytes  [B
            2   22     3     seed  [B
            3   22     4     mask  [B
            7   22     5  maskGen  Lorg/bouncycastle/crypto/generators/MGF1BytesGenerator;
           12   16     6        i  I
           17   21     6        i  I
    MethodParameters:
      Name  Flags
      data  

  public byte[] getUnpaddedData(byte[]);
    descriptor: ([B)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder this
        start local 1 // byte[] paddedData
         0: .line 83
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.dig:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            newarray 8
            astore 2 /* seed */
        start local 2 // byte[] seed
         1: .line 84
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.length:I
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.dig:Lorg/bouncycastle/crypto/Digest;
            invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
            isub
            newarray 8
            astore 3 /* mask */
        start local 3 // byte[] mask
         2: .line 86
            aload 1 /* paddedData */
            iconst_0
            aload 2 /* seed */
            iconst_0
            aload 2 /* seed */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 88
            new org.bouncycastle.crypto.generators.MGF1BytesGenerator
            dup
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder.dig:Lorg/bouncycastle/crypto/Digest;
            invokespecial org.bouncycastle.crypto.generators.MGF1BytesGenerator.<init>:(Lorg/bouncycastle/crypto/Digest;)V
            astore 4 /* maskGen */
        start local 4 // org.bouncycastle.crypto.generators.MGF1BytesGenerator maskGen
         4: .line 90
            aload 4 /* maskGen */
            new org.bouncycastle.crypto.params.MGFParameters
            dup
            aload 2 /* seed */
            invokespecial org.bouncycastle.crypto.params.MGFParameters.<init>:([B)V
            invokevirtual org.bouncycastle.crypto.generators.MGF1BytesGenerator.init:(Lorg/bouncycastle/crypto/DerivationParameters;)V
         5: .line 92
            aload 4 /* maskGen */
            aload 3 /* mask */
            iconst_0
            aload 3 /* mask */
            arraylength
            invokevirtual org.bouncycastle.crypto.generators.MGF1BytesGenerator.generateBytes:([BII)I
            pop
         6: .line 94
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         7: goto 10
         8: .line 96
      StackMap locals: org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder byte[] byte[] byte[] org.bouncycastle.crypto.generators.MGF1BytesGenerator int
      StackMap stack:
            aload 1 /* paddedData */
            iload 5 /* i */
            aload 2 /* seed */
            arraylength
            iadd
            dup2
            baload
            aload 3 /* mask */
            iload 5 /* i */
            baload
            ixor
            i2b
            bastore
         9: .line 94
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* i */
            aload 3 /* mask */
            arraylength
            if_icmpne 8
        end local 5 // int i
        11: .line 99
            iconst_0
            istore 5 /* end */
        start local 5 // int end
        12: .line 101
            aload 1 /* paddedData */
            arraylength
            iconst_1
            isub
            istore 6 /* i */
        start local 6 // int i
        13: goto 18
        14: .line 103
      StackMap locals: int
      StackMap stack:
            aload 1 /* paddedData */
            iload 6 /* i */
            baload
            ifne 17
        15: .line 105
            iload 6 /* i */
            istore 5 /* end */
        16: .line 106
            goto 19
        17: .line 101
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ -1
      StackMap locals:
      StackMap stack:
        18: iload 6 /* i */
            aload 2 /* seed */
            arraylength
            if_icmpne 14
        end local 6 // int i
        19: .line 110
      StackMap locals:
      StackMap stack:
            iload 5 /* end */
            ifne 21
        20: .line 112
            new java.lang.IllegalStateException
            dup
            ldc "bad padding in encoding"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 115
      StackMap locals:
      StackMap stack:
            iload 5 /* end */
            aload 2 /* seed */
            arraylength
            isub
            newarray 8
            astore 6 /* data */
        start local 6 // byte[] data
        22: .line 117
            aload 1 /* paddedData */
            aload 2 /* seed */
            arraylength
            aload 6 /* data */
            iconst_0
            aload 6 /* data */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        23: .line 119
            aload 6 /* data */
            areturn
        end local 6 // byte[] data
        end local 5 // int end
        end local 4 // org.bouncycastle.crypto.generators.MGF1BytesGenerator maskGen
        end local 3 // byte[] mask
        end local 2 // byte[] seed
        end local 1 // byte[] paddedData
        end local 0 // org.bouncycastle.cert.crmf.bc.BcFixedLengthMGF1Padder this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0        this  Lorg/bouncycastle/cert/crmf/bc/BcFixedLengthMGF1Padder;
            0   24     1  paddedData  [B
            1   24     2        seed  [B
            2   24     3        mask  [B
            4   24     4     maskGen  Lorg/bouncycastle/crypto/generators/MGF1BytesGenerator;
            7   11     5           i  I
           12   24     5         end  I
           13   19     6           i  I
           22   24     6        data  [B
    MethodParameters:
            Name  Flags
      paddedData  
}
SourceFile: "BcFixedLengthMGF1Padder.java"