public class org.bouncycastle.cert.crmf.CertificateRequestMessage implements org.bouncycastle.util.Encodable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.cert.crmf.CertificateRequestMessage
  super_class: java.lang.Object
{
  public static final int popRaVerified;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int popSigningKey;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int popKeyEncipherment;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int popKeyAgreement;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private final org.bouncycastle.asn1.crmf.CertReqMsg certReqMsg;
    descriptor: Lorg/bouncycastle/asn1/crmf/CertReqMsg;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.bouncycastle.asn1.crmf.Controls controls;
    descriptor: Lorg/bouncycastle/asn1/crmf/Controls;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static org.bouncycastle.asn1.crmf.CertReqMsg parseBytes(byte[]);
    descriptor: ([B)Lorg/bouncycastle/asn1/crmf/CertReqMsg;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // byte[] encoding
         0: .line 42
            aload 0 /* encoding */
            invokestatic org.bouncycastle.asn1.ASN1Primitive.fromByteArray:([B)Lorg/bouncycastle/asn1/ASN1Primitive;
            invokestatic org.bouncycastle.asn1.crmf.CertReqMsg.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/crmf/CertReqMsg;
         1: areturn
         2: .line 44
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
            astore 1 /* e */
        start local 1 // java.lang.ClassCastException e
         3: .line 46
            new org.bouncycastle.cert.CertIOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "malformed data: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* e */
            invokevirtual java.lang.ClassCastException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial org.bouncycastle.cert.CertIOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.ClassCastException e
         4: .line 48
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            astore 1 /* e */
        start local 1 // java.lang.IllegalArgumentException e
         5: .line 50
            new org.bouncycastle.cert.CertIOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "malformed data: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial org.bouncycastle.cert.CertIOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.IllegalArgumentException e
        end local 0 // byte[] encoding
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0  encoding  [B
            3    4     1         e  Ljava/lang/ClassCastException;
            5    6     1         e  Ljava/lang/IllegalArgumentException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.ClassCastException
           0     1       4  Class java.lang.IllegalArgumentException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      encoding  

  public void <init>(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
        start local 1 // byte[] certReqMsg
         0: .line 63
            aload 0 /* this */
            aload 1 /* certReqMsg */
            invokestatic org.bouncycastle.cert.crmf.CertificateRequestMessage.parseBytes:([B)Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokespecial org.bouncycastle.cert.crmf.CertificateRequestMessage.<init>:(Lorg/bouncycastle/asn1/crmf/CertReqMsg;)V
         1: .line 64
            return
        end local 1 // byte[] certReqMsg
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            0    2     1  certReqMsg  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      certReqMsg  

  public void <init>(org.bouncycastle.asn1.crmf.CertReqMsg);
    descriptor: (Lorg/bouncycastle/asn1/crmf/CertReqMsg;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
        start local 1 // org.bouncycastle.asn1.crmf.CertReqMsg certReqMsg
         0: .line 66
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 68
            aload 0 /* this */
            aload 1 /* certReqMsg */
            putfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
         2: .line 69
            aload 0 /* this */
            aload 1 /* certReqMsg */
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getCertReq:()Lorg/bouncycastle/asn1/crmf/CertRequest;
            invokevirtual org.bouncycastle.asn1.crmf.CertRequest.getControls:()Lorg/bouncycastle/asn1/crmf/Controls;
            putfield org.bouncycastle.cert.crmf.CertificateRequestMessage.controls:Lorg/bouncycastle/asn1/crmf/Controls;
         3: .line 70
            return
        end local 1 // org.bouncycastle.asn1.crmf.CertReqMsg certReqMsg
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            0    4     1  certReqMsg  Lorg/bouncycastle/asn1/crmf/CertReqMsg;
    MethodParameters:
            Name  Flags
      certReqMsg  

  public org.bouncycastle.asn1.crmf.CertReqMsg toASN1Structure();
    descriptor: ()Lorg/bouncycastle/asn1/crmf/CertReqMsg;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
         0: .line 79
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            areturn
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;

  public org.bouncycastle.asn1.crmf.CertTemplate getCertTemplate();
    descriptor: ()Lorg/bouncycastle/asn1/crmf/CertTemplate;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
         0: .line 89
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getCertReq:()Lorg/bouncycastle/asn1/crmf/CertRequest;
            invokevirtual org.bouncycastle.asn1.crmf.CertRequest.getCertTemplate:()Lorg/bouncycastle/asn1/crmf/CertTemplate;
            areturn
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;

  public boolean hasControls();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
         0: .line 99
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.controls:Lorg/bouncycastle/asn1/crmf/Controls;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;

  public boolean hasControl(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier type
         0: .line 110
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.bouncycastle.cert.crmf.CertificateRequestMessage.findControl:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Lorg/bouncycastle/asn1/crmf/AttributeTypeAndValue;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier type
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            0    2     1  type  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
    MethodParameters:
      Name  Flags
      type  

  public org.bouncycastle.cert.crmf.Control getControl(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Lorg/bouncycastle/cert/crmf/Control;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier type
         0: .line 121
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.bouncycastle.cert.crmf.CertificateRequestMessage.findControl:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Lorg/bouncycastle/asn1/crmf/AttributeTypeAndValue;
            astore 2 /* found */
        start local 2 // org.bouncycastle.asn1.crmf.AttributeTypeAndValue found
         1: .line 123
            aload 2 /* found */
            ifnull 8
         2: .line 125
            aload 2 /* found */
            invokevirtual org.bouncycastle.asn1.crmf.AttributeTypeAndValue.getType:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            getstatic org.bouncycastle.asn1.crmf.CRMFObjectIdentifiers.id_regCtrl_pkiArchiveOptions:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 127
            new org.bouncycastle.cert.crmf.PKIArchiveControl
            dup
            aload 2 /* found */
            invokevirtual org.bouncycastle.asn1.crmf.AttributeTypeAndValue.getValue:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.crmf.PKIArchiveOptions.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/crmf/PKIArchiveOptions;
            invokespecial org.bouncycastle.cert.crmf.PKIArchiveControl.<init>:(Lorg/bouncycastle/asn1/crmf/PKIArchiveOptions;)V
            areturn
         4: .line 129
      StackMap locals: org.bouncycastle.asn1.crmf.AttributeTypeAndValue
      StackMap stack:
            aload 2 /* found */
            invokevirtual org.bouncycastle.asn1.crmf.AttributeTypeAndValue.getType:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            getstatic org.bouncycastle.asn1.crmf.CRMFObjectIdentifiers.id_regCtrl_regToken:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 131
            new org.bouncycastle.cert.crmf.RegTokenControl
            dup
            aload 2 /* found */
            invokevirtual org.bouncycastle.asn1.crmf.AttributeTypeAndValue.getValue:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.DERUTF8String.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/DERUTF8String;
            invokespecial org.bouncycastle.cert.crmf.RegTokenControl.<init>:(Lorg/bouncycastle/asn1/DERUTF8String;)V
            areturn
         6: .line 133
      StackMap locals:
      StackMap stack:
            aload 2 /* found */
            invokevirtual org.bouncycastle.asn1.crmf.AttributeTypeAndValue.getType:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            getstatic org.bouncycastle.asn1.crmf.CRMFObjectIdentifiers.id_regCtrl_authenticator:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 135
            new org.bouncycastle.cert.crmf.AuthenticatorControl
            dup
            aload 2 /* found */
            invokevirtual org.bouncycastle.asn1.crmf.AttributeTypeAndValue.getValue:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.DERUTF8String.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/DERUTF8String;
            invokespecial org.bouncycastle.cert.crmf.AuthenticatorControl.<init>:(Lorg/bouncycastle/asn1/DERUTF8String;)V
            areturn
         8: .line 139
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.bouncycastle.asn1.crmf.AttributeTypeAndValue found
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier type
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            0    9     1   type  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            1    9     2  found  Lorg/bouncycastle/asn1/crmf/AttributeTypeAndValue;
    MethodParameters:
      Name  Flags
      type  

  private org.bouncycastle.asn1.crmf.AttributeTypeAndValue findControl(org.bouncycastle.asn1.ASN1ObjectIdentifier);
    descriptor: (Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Lorg/bouncycastle/asn1/crmf/AttributeTypeAndValue;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
        start local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier type
         0: .line 144
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.controls:Lorg/bouncycastle/asn1/crmf/Controls;
            ifnonnull 2
         1: .line 146
            aconst_null
            areturn
         2: .line 149
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.controls:Lorg/bouncycastle/asn1/crmf/Controls;
            invokevirtual org.bouncycastle.asn1.crmf.Controls.toAttributeTypeAndValueArray:()[Lorg/bouncycastle/asn1/crmf/AttributeTypeAndValue;
            astore 2 /* tAndVs */
        start local 2 // org.bouncycastle.asn1.crmf.AttributeTypeAndValue[] tAndVs
         3: .line 150
            aconst_null
            astore 3 /* found */
        start local 3 // org.bouncycastle.asn1.crmf.AttributeTypeAndValue found
         4: .line 152
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 10
         6: .line 154
      StackMap locals: org.bouncycastle.asn1.crmf.AttributeTypeAndValue[] org.bouncycastle.asn1.crmf.AttributeTypeAndValue int
      StackMap stack:
            aload 2 /* tAndVs */
            iload 4 /* i */
            aaload
            invokevirtual org.bouncycastle.asn1.crmf.AttributeTypeAndValue.getType:()Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            aload 1 /* type */
            invokevirtual org.bouncycastle.asn1.ASN1ObjectIdentifier.equals:(Ljava/lang/Object;)Z
            ifeq 9
         7: .line 156
            aload 2 /* tAndVs */
            iload 4 /* i */
            aaload
            astore 3 /* found */
         8: .line 157
            goto 11
         9: .line 152
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 4 /* i */
            aload 2 /* tAndVs */
            arraylength
            if_icmpne 6
        end local 4 // int i
        11: .line 161
      StackMap locals:
      StackMap stack:
            aload 3 /* found */
            areturn
        end local 3 // org.bouncycastle.asn1.crmf.AttributeTypeAndValue found
        end local 2 // org.bouncycastle.asn1.crmf.AttributeTypeAndValue[] tAndVs
        end local 1 // org.bouncycastle.asn1.ASN1ObjectIdentifier type
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            0   12     1    type  Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            3   12     2  tAndVs  [Lorg/bouncycastle/asn1/crmf/AttributeTypeAndValue;
            4   12     3   found  Lorg/bouncycastle/asn1/crmf/AttributeTypeAndValue;
            5   11     4       i  I
    MethodParameters:
      Name  Flags
      type  

  public boolean hasProofOfPossession();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
         0: .line 171
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getPopo:()Lorg/bouncycastle/asn1/crmf/ProofOfPossession;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;

  public int getProofOfPossessionType();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
         0: .line 181
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getPopo:()Lorg/bouncycastle/asn1/crmf/ProofOfPossession;
            invokevirtual org.bouncycastle.asn1.crmf.ProofOfPossession.getType:()I
            ireturn
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;

  public boolean hasSigningKeyProofOfPossessionWithPKMAC();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
         0: .line 192
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getPopo:()Lorg/bouncycastle/asn1/crmf/ProofOfPossession;
            astore 1 /* pop */
        start local 1 // org.bouncycastle.asn1.crmf.ProofOfPossession pop
         1: .line 194
            aload 1 /* pop */
            invokevirtual org.bouncycastle.asn1.crmf.ProofOfPossession.getType:()I
            iconst_1
            if_icmpne 5
         2: .line 196
            aload 1 /* pop */
            invokevirtual org.bouncycastle.asn1.crmf.ProofOfPossession.getObject:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.crmf.POPOSigningKey.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/crmf/POPOSigningKey;
            astore 2 /* popoSign */
        start local 2 // org.bouncycastle.asn1.crmf.POPOSigningKey popoSign
         3: .line 198
            aload 2 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getPoposkInput:()Lorg/bouncycastle/asn1/crmf/POPOSigningKeyInput;
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKeyInput.getPublicKeyMAC:()Lorg/bouncycastle/asn1/crmf/PKMACValue;
            ifnull 4
            iconst_1
            ireturn
      StackMap locals: org.bouncycastle.asn1.crmf.ProofOfPossession org.bouncycastle.asn1.crmf.POPOSigningKey
      StackMap stack:
         4: iconst_0
            ireturn
        end local 2 // org.bouncycastle.asn1.crmf.POPOSigningKey popoSign
         5: .line 201
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // org.bouncycastle.asn1.crmf.ProofOfPossession pop
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            1    6     1       pop  Lorg/bouncycastle/asn1/crmf/ProofOfPossession;
            3    5     2  popoSign  Lorg/bouncycastle/asn1/crmf/POPOSigningKey;

  public boolean isValidSigningKeyPOP(org.bouncycastle.operator.ContentVerifierProvider);
    descriptor: (Lorg/bouncycastle/operator/ContentVerifierProvider;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
        start local 1 // org.bouncycastle.operator.ContentVerifierProvider verifierProvider
         0: .line 215
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getPopo:()Lorg/bouncycastle/asn1/crmf/ProofOfPossession;
            astore 2 /* pop */
        start local 2 // org.bouncycastle.asn1.crmf.ProofOfPossession pop
         1: .line 217
            aload 2 /* pop */
            invokevirtual org.bouncycastle.asn1.crmf.ProofOfPossession.getType:()I
            iconst_1
            if_icmpne 6
         2: .line 219
            aload 2 /* pop */
            invokevirtual org.bouncycastle.asn1.crmf.ProofOfPossession.getObject:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.crmf.POPOSigningKey.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/crmf/POPOSigningKey;
            astore 3 /* popoSign */
        start local 3 // org.bouncycastle.asn1.crmf.POPOSigningKey popoSign
         3: .line 221
            aload 3 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getPoposkInput:()Lorg/bouncycastle/asn1/crmf/POPOSigningKeyInput;
            ifnull 5
            aload 3 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getPoposkInput:()Lorg/bouncycastle/asn1/crmf/POPOSigningKeyInput;
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKeyInput.getPublicKeyMAC:()Lorg/bouncycastle/asn1/crmf/PKMACValue;
            ifnull 5
         4: .line 223
            new java.lang.IllegalStateException
            dup
            ldc "verification requires password check"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 226
      StackMap locals: org.bouncycastle.asn1.crmf.ProofOfPossession org.bouncycastle.asn1.crmf.POPOSigningKey
      StackMap stack:
            aload 0 /* this */
            aload 1 /* verifierProvider */
            aload 3 /* popoSign */
            invokevirtual org.bouncycastle.cert.crmf.CertificateRequestMessage.verifySignature:(Lorg/bouncycastle/operator/ContentVerifierProvider;Lorg/bouncycastle/asn1/crmf/POPOSigningKey;)Z
            ireturn
        end local 3 // org.bouncycastle.asn1.crmf.POPOSigningKey popoSign
         6: .line 230
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "not Signing Key type of proof of possession"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // org.bouncycastle.asn1.crmf.ProofOfPossession pop
        end local 1 // org.bouncycastle.operator.ContentVerifierProvider verifierProvider
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0              this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            0    7     1  verifierProvider  Lorg/bouncycastle/operator/ContentVerifierProvider;
            1    7     2               pop  Lorg/bouncycastle/asn1/crmf/ProofOfPossession;
            3    6     3          popoSign  Lorg/bouncycastle/asn1/crmf/POPOSigningKey;
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException, java.lang.IllegalStateException
    MethodParameters:
                  Name  Flags
      verifierProvider  

  public boolean isValidSigningKeyPOP(org.bouncycastle.operator.ContentVerifierProvider, org.bouncycastle.cert.crmf.PKMACBuilder, char[]);
    descriptor: (Lorg/bouncycastle/operator/ContentVerifierProvider;Lorg/bouncycastle/cert/crmf/PKMACBuilder;[C)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
        start local 1 // org.bouncycastle.operator.ContentVerifierProvider verifierProvider
        start local 2 // org.bouncycastle.cert.crmf.PKMACBuilder macBuilder
        start local 3 // char[] password
         0: .line 247
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getPopo:()Lorg/bouncycastle/asn1/crmf/ProofOfPossession;
            astore 4 /* pop */
        start local 4 // org.bouncycastle.asn1.crmf.ProofOfPossession pop
         1: .line 249
            aload 4 /* pop */
            invokevirtual org.bouncycastle.asn1.crmf.ProofOfPossession.getType:()I
            iconst_1
            if_icmpne 10
         2: .line 251
            aload 4 /* pop */
            invokevirtual org.bouncycastle.asn1.crmf.ProofOfPossession.getObject:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.crmf.POPOSigningKey.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/crmf/POPOSigningKey;
            astore 5 /* popoSign */
        start local 5 // org.bouncycastle.asn1.crmf.POPOSigningKey popoSign
         3: .line 253
            aload 5 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getPoposkInput:()Lorg/bouncycastle/asn1/crmf/POPOSigningKeyInput;
            ifnull 4
            aload 5 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getPoposkInput:()Lorg/bouncycastle/asn1/crmf/POPOSigningKeyInput;
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKeyInput.getSender:()Lorg/bouncycastle/asn1/x509/GeneralName;
            ifnull 5
         4: .line 255
      StackMap locals: org.bouncycastle.asn1.crmf.ProofOfPossession org.bouncycastle.asn1.crmf.POPOSigningKey
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "no PKMAC present in proof of possession"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 258
      StackMap locals:
      StackMap stack:
            aload 5 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getPoposkInput:()Lorg/bouncycastle/asn1/crmf/POPOSigningKeyInput;
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKeyInput.getPublicKeyMAC:()Lorg/bouncycastle/asn1/crmf/PKMACValue;
            astore 6 /* pkMAC */
        start local 6 // org.bouncycastle.asn1.crmf.PKMACValue pkMAC
         6: .line 259
            new org.bouncycastle.cert.crmf.PKMACValueVerifier
            dup
            aload 2 /* macBuilder */
            invokespecial org.bouncycastle.cert.crmf.PKMACValueVerifier.<init>:(Lorg/bouncycastle/cert/crmf/PKMACBuilder;)V
            astore 7 /* macVerifier */
        start local 7 // org.bouncycastle.cert.crmf.PKMACValueVerifier macVerifier
         7: .line 261
            aload 7 /* macVerifier */
            aload 6 /* pkMAC */
            aload 3 /* password */
            aload 0 /* this */
            invokevirtual org.bouncycastle.cert.crmf.CertificateRequestMessage.getCertTemplate:()Lorg/bouncycastle/asn1/crmf/CertTemplate;
            invokevirtual org.bouncycastle.asn1.crmf.CertTemplate.getPublicKey:()Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
            invokevirtual org.bouncycastle.cert.crmf.PKMACValueVerifier.isValid:(Lorg/bouncycastle/asn1/crmf/PKMACValue;[CLorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Z
            ifeq 9
         8: .line 263
            aload 0 /* this */
            aload 1 /* verifierProvider */
            aload 5 /* popoSign */
            invokevirtual org.bouncycastle.cert.crmf.CertificateRequestMessage.verifySignature:(Lorg/bouncycastle/operator/ContentVerifierProvider;Lorg/bouncycastle/asn1/crmf/POPOSigningKey;)Z
            ireturn
         9: .line 266
      StackMap locals: org.bouncycastle.asn1.crmf.PKMACValue org.bouncycastle.cert.crmf.PKMACValueVerifier
      StackMap stack:
            iconst_0
            ireturn
        end local 7 // org.bouncycastle.cert.crmf.PKMACValueVerifier macVerifier
        end local 6 // org.bouncycastle.asn1.crmf.PKMACValue pkMAC
        end local 5 // org.bouncycastle.asn1.crmf.POPOSigningKey popoSign
        10: .line 270
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "not Signing Key type of proof of possession"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // org.bouncycastle.asn1.crmf.ProofOfPossession pop
        end local 3 // char[] password
        end local 2 // org.bouncycastle.cert.crmf.PKMACBuilder macBuilder
        end local 1 // org.bouncycastle.operator.ContentVerifierProvider verifierProvider
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   11     0              this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            0   11     1  verifierProvider  Lorg/bouncycastle/operator/ContentVerifierProvider;
            0   11     2        macBuilder  Lorg/bouncycastle/cert/crmf/PKMACBuilder;
            0   11     3          password  [C
            1   11     4               pop  Lorg/bouncycastle/asn1/crmf/ProofOfPossession;
            3   10     5          popoSign  Lorg/bouncycastle/asn1/crmf/POPOSigningKey;
            6   10     6             pkMAC  Lorg/bouncycastle/asn1/crmf/PKMACValue;
            7   10     7       macVerifier  Lorg/bouncycastle/cert/crmf/PKMACValueVerifier;
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException, java.lang.IllegalStateException
    MethodParameters:
                  Name  Flags
      verifierProvider  
      macBuilder        
      password          

  private boolean verifySignature(org.bouncycastle.operator.ContentVerifierProvider, org.bouncycastle.asn1.crmf.POPOSigningKey);
    descriptor: (Lorg/bouncycastle/operator/ContentVerifierProvider;Lorg/bouncycastle/asn1/crmf/POPOSigningKey;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
        start local 1 // org.bouncycastle.operator.ContentVerifierProvider verifierProvider
        start local 2 // org.bouncycastle.asn1.crmf.POPOSigningKey popoSign
         0: .line 281
            aload 1 /* verifierProvider */
            aload 2 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getAlgorithmIdentifier:()Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;
            invokeinterface org.bouncycastle.operator.ContentVerifierProvider.get:(Lorg/bouncycastle/asn1/x509/AlgorithmIdentifier;)Lorg/bouncycastle/operator/ContentVerifier;
            astore 3 /* verifier */
        start local 3 // org.bouncycastle.operator.ContentVerifier verifier
         1: .line 282
            goto 4
        end local 3 // org.bouncycastle.operator.ContentVerifier verifier
         2: .line 283
      StackMap locals:
      StackMap stack: org.bouncycastle.operator.OperatorCreationException
            astore 4 /* e */
        start local 4 // org.bouncycastle.operator.OperatorCreationException e
         3: .line 285
            new org.bouncycastle.cert.crmf.CRMFException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unable to create verifier: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* e */
            invokevirtual org.bouncycastle.operator.OperatorCreationException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* e */
            invokespecial org.bouncycastle.cert.crmf.CRMFException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // org.bouncycastle.operator.OperatorCreationException e
        start local 3 // org.bouncycastle.operator.ContentVerifier verifier
         4: .line 288
      StackMap locals: org.bouncycastle.operator.ContentVerifier
      StackMap stack:
            aload 2 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getPoposkInput:()Lorg/bouncycastle/asn1/crmf/POPOSigningKeyInput;
            ifnull 7
         5: .line 290
            aload 2 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getPoposkInput:()Lorg/bouncycastle/asn1/crmf/POPOSigningKeyInput;
            aload 3 /* verifier */
            invokeinterface org.bouncycastle.operator.ContentVerifier.getOutputStream:()Ljava/io/OutputStream;
            invokestatic org.bouncycastle.cert.crmf.CRMFUtil.derEncodeToStream:(Lorg/bouncycastle/asn1/ASN1Encodable;Ljava/io/OutputStream;)V
         6: .line 291
            goto 8
         7: .line 294
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getCertReq:()Lorg/bouncycastle/asn1/crmf/CertRequest;
            aload 3 /* verifier */
            invokeinterface org.bouncycastle.operator.ContentVerifier.getOutputStream:()Ljava/io/OutputStream;
            invokestatic org.bouncycastle.cert.crmf.CRMFUtil.derEncodeToStream:(Lorg/bouncycastle/asn1/ASN1Encodable;Ljava/io/OutputStream;)V
         8: .line 297
      StackMap locals:
      StackMap stack:
            aload 3 /* verifier */
            aload 2 /* popoSign */
            invokevirtual org.bouncycastle.asn1.crmf.POPOSigningKey.getSignature:()Lorg/bouncycastle/asn1/DERBitString;
            invokevirtual org.bouncycastle.asn1.DERBitString.getOctets:()[B
            invokeinterface org.bouncycastle.operator.ContentVerifier.verify:([B)Z
            ireturn
        end local 3 // org.bouncycastle.operator.ContentVerifier verifier
        end local 2 // org.bouncycastle.asn1.crmf.POPOSigningKey popoSign
        end local 1 // org.bouncycastle.operator.ContentVerifierProvider verifierProvider
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
            0    9     1  verifierProvider  Lorg/bouncycastle/operator/ContentVerifierProvider;
            0    9     2          popoSign  Lorg/bouncycastle/asn1/crmf/POPOSigningKey;
            1    2     3          verifier  Lorg/bouncycastle/operator/ContentVerifier;
            4    9     3          verifier  Lorg/bouncycastle/operator/ContentVerifier;
            3    4     4                 e  Lorg/bouncycastle/operator/OperatorCreationException;
      Exception table:
        from    to  target  type
           0     1       2  Class org.bouncycastle.operator.OperatorCreationException
    Exceptions:
      throws org.bouncycastle.cert.crmf.CRMFException
    MethodParameters:
                  Name  Flags
      verifierProvider  
      popoSign          

  public byte[] getEncoded();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
         0: .line 309
            aload 0 /* this */
            getfield org.bouncycastle.cert.crmf.CertificateRequestMessage.certReqMsg:Lorg/bouncycastle/asn1/crmf/CertReqMsg;
            invokevirtual org.bouncycastle.asn1.crmf.CertReqMsg.getEncoded:()[B
            areturn
        end local 0 // org.bouncycastle.cert.crmf.CertificateRequestMessage this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cert/crmf/CertificateRequestMessage;
    Exceptions:
      throws java.io.IOException
}
SourceFile: "CertificateRequestMessage.java"