Holder (Bouncy Castle Library 1.85 API Specification)
Date: 2026-07-12

org.bouncycastle.asn1.x509

## Class Holder

- java.lang.Object
- - org.bouncycastle.asn1.ASN1Object
  - - org.bouncycastle.asn1.x509.Holder

- All Implemented Interfaces:
    ASN1Encodable, Encodable

      public class Holder
      extends ASN1Object

  The Holder object.

  For an v2 attribute certificate this is:

                  Holder ::= SEQUENCE {
                        baseCertificateID   [0] IssuerSerial OPTIONAL,
                                 -- the issuer and serial number of
                                 -- the holder's Public Key Certificate
                        entityName          [1] GeneralNames OPTIONAL,
                                 -- the name of the claimant or role
                        objectDigestInfo    [2] ObjectDigestInfo OPTIONAL
                                 -- used to directly authenticate the holder,
                                 -- for example, an executable
                  }

  For an v1 attribute certificate this is:

               subject CHOICE {
                baseCertificateID [0] EXPLICIT IssuerSerial,
                -- associated with a Public Key Certificate
                subjectName [1] EXPLICIT GeneralNames },
                -- associated with a name

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `V1_CERTIFICATE_HOLDER`
    `static int` | `V2_CERTIFICATE_HOLDER`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Holder(GeneralNames entityName)` Constructs a holder with an entityName for V2 attribute certificates.
    `Holder(GeneralNames entityName, int version)` Constructs a holder with an entityName for V2 attribute certificates or with a subjectName for V1 attribute certificates.
    `Holder(IssuerSerial baseCertificateID)`
    `Holder(IssuerSerial baseCertificateID, int version)` Constructs a holder from a IssuerSerial for a V1 or V2 certificate. .
    `Holder(ObjectDigestInfo objectDigestInfo)` Constructs a holder from an object digest info.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `IssuerSerial` | `getBaseCertificateID()`
    `GeneralNames` | `getEntityName()` Returns the entityName for an V2 attribute certificate or the subjectName for an V1 attribute certificate.
    `static Holder` | `getInstance(java.lang.Object obj)`
    `ObjectDigestInfo` | `getObjectDigestInfo()`
    `int` | `getVersion()` Returns 1 for V2 attribute certificates or 0 for V1 attribute certificates.
    `ASN1Primitive` | `toASN1Primitive()` Method providing a primitive representation of this object suitable for encoding.

    - ### Methods inherited from class org.bouncycastle.asn1.ASN1Object

      `encodeTo, encodeTo, equals, getEncoded, getEncoded, hasEncodedTagValue, hashCode`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### V1_CERTIFICATE_HOLDER

          public static final int V1_CERTIFICATE_HOLDER

      See Also:
        Constant Field Values

    - #### V2_CERTIFICATE_HOLDER

          public static final int V2_CERTIFICATE_HOLDER

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Holder

          public Holder(IssuerSerial baseCertificateID)

    - #### Holder

          public Holder(IssuerSerial baseCertificateID,
                        int version)

      Constructs a holder from a IssuerSerial for a V1 or V2 certificate. .
      Parameters:
        `baseCertificateID` - The IssuerSerial.
        `version` - The version of the attribute certificate.

    - #### Holder

          public Holder(GeneralNames entityName)

      Constructs a holder with an entityName for V2 attribute certificates.
      Parameters:
        `entityName` - The entity or subject name.

    - #### Holder

          public Holder(GeneralNames entityName,
                        int version)

      Constructs a holder with an entityName for V2 attribute certificates or with a subjectName for V1 attribute certificates.
      Parameters:
        `entityName` - The entity or subject name.
        `version` - The version of the attribute certificate.

    - #### Holder

          public Holder(ObjectDigestInfo objectDigestInfo)

      Constructs a holder from an object digest info.
      Parameters:
        `objectDigestInfo` - The object digest info object.

  - ### Method Detail

    - #### getInstance

          public static Holder getInstance(java.lang.Object obj)

    - #### getVersion

          public int getVersion()

      Returns 1 for V2 attribute certificates or 0 for V1 attribute certificates.
      Returns:
        The version of the attribute certificate.

    - #### getBaseCertificateID

          public IssuerSerial getBaseCertificateID()

    - #### getEntityName

          public GeneralNames getEntityName()

      Returns the entityName for an V2 attribute certificate or the subjectName for an V1 attribute certificate.
      Returns:
        The entityname or subjectname.

    - #### getObjectDigestInfo

          public ObjectDigestInfo getObjectDigestInfo()

    - #### toASN1Primitive

          public ASN1Primitive toASN1Primitive()

      Description copied from class: `ASN1Object`
      Method providing a primitive representation of this object suitable for encoding.
      Specified by:
        `toASN1Primitive` in interface `ASN1Encodable`
      Specified by:
        `toASN1Primitive` in class `ASN1Object`
      Returns:
        a primitive representation of this object.