public class org.bouncycastle.cert.selector.X509CertificateHolderSelector implements org.bouncycastle.util.Selector
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.bouncycastle.cert.selector.X509CertificateHolderSelector
  super_class: java.lang.Object
{
  private byte[] subjectKeyId;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private org.bouncycastle.asn1.x500.X500Name issuer;
    descriptor: Lorg/bouncycastle/asn1/x500/X500Name;
    flags: (0x0002) ACC_PRIVATE

  private java.math.BigInteger serialNumber;
    descriptor: Ljava/math/BigInteger;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(byte[]);
    descriptor: ([B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
        start local 1 // byte[] subjectKeyId
         0: .line 31
            aload 0 /* this */
            aconst_null
            aconst_null
            aload 1 /* subjectKeyId */
            invokespecial org.bouncycastle.cert.selector.X509CertificateHolderSelector.<init>:(Lorg/bouncycastle/asn1/x500/X500Name;Ljava/math/BigInteger;[B)V
         1: .line 32
            return
        end local 1 // byte[] subjectKeyId
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
            0    2     1  subjectKeyId  [B
    MethodParameters:
              Name  Flags
      subjectKeyId  

  public void <init>(org.bouncycastle.asn1.x500.X500Name, java.math.BigInteger);
    descriptor: (Lorg/bouncycastle/asn1/x500/X500Name;Ljava/math/BigInteger;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
        start local 1 // org.bouncycastle.asn1.x500.X500Name issuer
        start local 2 // java.math.BigInteger serialNumber
         0: .line 43
            aload 0 /* this */
            aload 1 /* issuer */
            aload 2 /* serialNumber */
            aconst_null
            invokespecial org.bouncycastle.cert.selector.X509CertificateHolderSelector.<init>:(Lorg/bouncycastle/asn1/x500/X500Name;Ljava/math/BigInteger;[B)V
         1: .line 44
            return
        end local 2 // java.math.BigInteger serialNumber
        end local 1 // org.bouncycastle.asn1.x500.X500Name issuer
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
            0    2     1        issuer  Lorg/bouncycastle/asn1/x500/X500Name;
            0    2     2  serialNumber  Ljava/math/BigInteger;
    MethodParameters:
              Name  Flags
      issuer        
      serialNumber  

  public void <init>(org.bouncycastle.asn1.x500.X500Name, java.math.BigInteger, byte[]);
    descriptor: (Lorg/bouncycastle/asn1/x500/X500Name;Ljava/math/BigInteger;[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
        start local 1 // org.bouncycastle.asn1.x500.X500Name issuer
        start local 2 // java.math.BigInteger serialNumber
        start local 3 // byte[] subjectKeyId
         0: .line 54
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            aload 1 /* issuer */
            putfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.issuer:Lorg/bouncycastle/asn1/x500/X500Name;
         2: .line 57
            aload 0 /* this */
            aload 2 /* serialNumber */
            putfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.serialNumber:Ljava/math/BigInteger;
         3: .line 58
            aload 0 /* this */
            aload 3 /* subjectKeyId */
            putfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
         4: .line 59
            return
        end local 3 // byte[] subjectKeyId
        end local 2 // java.math.BigInteger serialNumber
        end local 1 // org.bouncycastle.asn1.x500.X500Name issuer
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
            0    5     1        issuer  Lorg/bouncycastle/asn1/x500/X500Name;
            0    5     2  serialNumber  Ljava/math/BigInteger;
            0    5     3  subjectKeyId  [B
    MethodParameters:
              Name  Flags
      issuer        
      serialNumber  
      subjectKeyId  

  public org.bouncycastle.asn1.x500.X500Name getIssuer();
    descriptor: ()Lorg/bouncycastle/asn1/x500/X500Name;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
         0: .line 63
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.issuer:Lorg/bouncycastle/asn1/x500/X500Name;
            areturn
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;

  public java.math.BigInteger getSerialNumber();
    descriptor: ()Ljava/math/BigInteger;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
         0: .line 68
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.serialNumber:Ljava/math/BigInteger;
            areturn
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;

  public byte[] getSubjectKeyIdentifier();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
         0: .line 73
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
            areturn
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
         0: .line 78
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            invokestatic org.bouncycastle.util.Arrays.hashCode:([B)I
            istore 1 /* code */
        start local 1 // int code
         1: .line 80
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.serialNumber:Ljava/math/BigInteger;
            ifnull 3
         2: .line 82
            iload 1 /* code */
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.serialNumber:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.hashCode:()I
            ixor
            istore 1 /* code */
         3: .line 85
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.issuer:Lorg/bouncycastle/asn1/x500/X500Name;
            ifnull 5
         4: .line 87
            iload 1 /* code */
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.issuer:Lorg/bouncycastle/asn1/x500/X500Name;
            invokevirtual org.bouncycastle.asn1.x500.X500Name.hashCode:()I
            ixor
            istore 1 /* code */
         5: .line 90
      StackMap locals:
      StackMap stack:
            iload 1 /* code */
            ireturn
        end local 1 // int code
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
            1    6     1  code  I

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
        start local 1 // java.lang.Object o
         0: .line 96
            aload 1 /* o */
            instanceof org.bouncycastle.cert.selector.X509CertificateHolderSelector
            ifne 2
         1: .line 98
            iconst_0
            ireturn
         2: .line 101
      StackMap locals:
      StackMap stack:
            aload 1 /* o */
            checkcast org.bouncycastle.cert.selector.X509CertificateHolderSelector
            astore 2 /* id */
        start local 2 // org.bouncycastle.cert.selector.X509CertificateHolderSelector id
         3: .line 103
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            aload 2 /* id */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            invokestatic org.bouncycastle.util.Arrays.areEqual:([B[B)Z
            ifeq 7
         4: .line 104
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.serialNumber:Ljava/math/BigInteger;
            aload 2 /* id */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.serialNumber:Ljava/math/BigInteger;
            invokevirtual org.bouncycastle.cert.selector.X509CertificateHolderSelector.equalsObj:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 7
         5: .line 105
            aload 0 /* this */
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.issuer:Lorg/bouncycastle/asn1/x500/X500Name;
            aload 2 /* id */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.issuer:Lorg/bouncycastle/asn1/x500/X500Name;
            invokevirtual org.bouncycastle.cert.selector.X509CertificateHolderSelector.equalsObj:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 7
         6: .line 103
            iconst_1
            ireturn
      StackMap locals: org.bouncycastle.cert.selector.X509CertificateHolderSelector
      StackMap stack:
         7: iconst_0
            ireturn
        end local 2 // org.bouncycastle.cert.selector.X509CertificateHolderSelector id
        end local 1 // java.lang.Object o
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
            0    8     1     o  Ljava/lang/Object;
            3    8     2    id  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
    MethodParameters:
      Name  Flags
      o     

  private boolean equalsObj(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
        start local 1 // java.lang.Object a
        start local 2 // java.lang.Object b
         0: .line 110
            aload 1 /* a */
            ifnull 1
            aload 1 /* a */
            aload 2 /* b */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            goto 3
      StackMap locals:
      StackMap stack:
         1: aload 2 /* b */
            ifnonnull 2
            iconst_1
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 2 // java.lang.Object b
        end local 1 // java.lang.Object a
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
            0    4     1     a  Ljava/lang/Object;
            0    4     2     b  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      a     
      b     

  public boolean match(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
        start local 1 // java.lang.Object obj
         0: .line 115
            aload 1 /* obj */
            instanceof org.bouncycastle.cert.X509CertificateHolder
            ifeq 14
         1: .line 117
            aload 1 /* obj */
            checkcast org.bouncycastle.cert.X509CertificateHolder
            astore 2 /* certHldr */
        start local 2 // org.bouncycastle.cert.X509CertificateHolder certHldr
         2: .line 119
            aload 0 /* this */
            invokevirtual org.bouncycastle.cert.selector.X509CertificateHolderSelector.getSerialNumber:()Ljava/math/BigInteger;
            ifnull 8
         3: .line 121
            new org.bouncycastle.asn1.cms.IssuerAndSerialNumber
            dup
            aload 2 /* certHldr */
            invokevirtual org.bouncycastle.cert.X509CertificateHolder.toASN1Structure:()Lorg/bouncycastle/asn1/x509/Certificate;
            invokespecial org.bouncycastle.asn1.cms.IssuerAndSerialNumber.<init>:(Lorg/bouncycastle/asn1/x509/Certificate;)V
            astore 3 /* iAndS */
        start local 3 // org.bouncycastle.asn1.cms.IssuerAndSerialNumber iAndS
         4: .line 123
            aload 3 /* iAndS */
            invokevirtual org.bouncycastle.asn1.cms.IssuerAndSerialNumber.getName:()Lorg/bouncycastle/asn1/x500/X500Name;
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.issuer:Lorg/bouncycastle/asn1/x500/X500Name;
            invokevirtual org.bouncycastle.asn1.x500.X500Name.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 124
            aload 3 /* iAndS */
            invokevirtual org.bouncycastle.asn1.cms.IssuerAndSerialNumber.getSerialNumber:()Lorg/bouncycastle/asn1/ASN1Integer;
            invokevirtual org.bouncycastle.asn1.ASN1Integer.getValue:()Ljava/math/BigInteger;
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.serialNumber:Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 123
            iconst_1
            ireturn
      StackMap locals: org.bouncycastle.cert.X509CertificateHolder org.bouncycastle.asn1.cms.IssuerAndSerialNumber
      StackMap stack:
         7: iconst_0
            ireturn
        end local 3 // org.bouncycastle.asn1.cms.IssuerAndSerialNumber iAndS
         8: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            ifnull 16
         9: .line 128
            aload 2 /* certHldr */
            getstatic org.bouncycastle.asn1.x509.Extension.subjectKeyIdentifier:Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;
            invokevirtual org.bouncycastle.cert.X509CertificateHolder.getExtension:(Lorg/bouncycastle/asn1/ASN1ObjectIdentifier;)Lorg/bouncycastle/asn1/x509/Extension;
            astore 3 /* ext */
        start local 3 // org.bouncycastle.asn1.x509.Extension ext
        10: .line 130
            aload 3 /* ext */
            ifnonnull 12
        11: .line 132
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            aload 2 /* certHldr */
            invokevirtual org.bouncycastle.cert.X509CertificateHolder.getSubjectPublicKeyInfo:()Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;
            invokestatic org.bouncycastle.cert.selector.MSOutlookKeyIdCalculator.calculateKeyId:(Lorg/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)[B
            invokestatic org.bouncycastle.util.Arrays.areEqual:([B[B)Z
            ireturn
        12: .line 135
      StackMap locals: org.bouncycastle.asn1.x509.Extension
      StackMap stack:
            aload 3 /* ext */
            invokevirtual org.bouncycastle.asn1.x509.Extension.getParsedValue:()Lorg/bouncycastle/asn1/ASN1Encodable;
            invokestatic org.bouncycastle.asn1.ASN1OctetString.getInstance:(Ljava/lang/Object;)Lorg/bouncycastle/asn1/ASN1OctetString;
            invokevirtual org.bouncycastle.asn1.ASN1OctetString.getOctets:()[B
            astore 4 /* subKeyID */
        start local 4 // byte[] subKeyID
        13: .line 137
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            aload 4 /* subKeyID */
            invokestatic org.bouncycastle.util.Arrays.areEqual:([B[B)Z
            ireturn
        end local 4 // byte[] subKeyID
        end local 3 // org.bouncycastle.asn1.x509.Extension ext
        end local 2 // org.bouncycastle.cert.X509CertificateHolder certHldr
        14: .line 140
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            instanceof byte[]
            ifeq 16
        15: .line 142
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            aload 1 /* obj */
            checkcast byte[]
            invokestatic org.bouncycastle.util.Arrays.areEqual:([B[B)Z
            ireturn
        16: .line 145
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.Object obj
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
            0   17     1       obj  Ljava/lang/Object;
            2   14     2  certHldr  Lorg/bouncycastle/cert/X509CertificateHolder;
            4    8     3     iAndS  Lorg/bouncycastle/asn1/cms/IssuerAndSerialNumber;
           10   14     3       ext  Lorg/bouncycastle/asn1/x509/Extension;
           13   14     4  subKeyID  [B
    MethodParameters:
      Name  Flags
      obj   

  public java.lang.Object clone();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
         0: .line 150
            new org.bouncycastle.cert.selector.X509CertificateHolderSelector
            dup
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.issuer:Lorg/bouncycastle/asn1/x500/X500Name;
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.serialNumber:Ljava/math/BigInteger;
            aload 0 /* this */
            getfield org.bouncycastle.cert.selector.X509CertificateHolderSelector.subjectKeyId:[B
            invokespecial org.bouncycastle.cert.selector.X509CertificateHolderSelector.<init>:(Lorg/bouncycastle/asn1/x500/X500Name;Ljava/math/BigInteger;[B)V
            areturn
        end local 0 // org.bouncycastle.cert.selector.X509CertificateHolderSelector this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/bouncycastle/cert/selector/X509CertificateHolderSelector;
}
SourceFile: "X509CertificateHolderSelector.java"