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

org.bouncycastle.asn1.x509

## Class GeneralName

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

- All Implemented Interfaces:
    ASN1Choice, ASN1Encodable, Encodable

      public class GeneralName
      extends ASN1Object
      implements ASN1Choice

  The GeneralName object.

       GeneralName ::= CHOICE {
            otherName                       [0]     OtherName,
            rfc822Name                      [1]     IA5String,
            dNSName                         [2]     IA5String,
            x400Address                     [3]     ORAddress,
            directoryName                   [4]     Name,
            ediPartyName                    [5]     EDIPartyName,
            uniformResourceIdentifier       [6]     IA5String,
            iPAddress                       [7]     OCTET STRING,
            registeredID                    [8]     OBJECT IDENTIFIER}

       OtherName ::= SEQUENCE {
            type-id    OBJECT IDENTIFIER,
            value      [0] EXPLICIT ANY DEFINED BY type-id }

       EDIPartyName ::= SEQUENCE {
            nameAssigner            [0]     DirectoryString OPTIONAL,
            partyName               [1]     DirectoryString }

       Name ::= CHOICE { RDNSequence }

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `directoryName`
    `static int` | `dNSName`
    `static int` | `ediPartyName`
    `static int` | `iPAddress`
    `static int` | `otherName`
    `static int` | `registeredID`
    `static int` | `rfc822Name`
    `static int` | `uniformResourceIdentifier`
    `static int` | `x400Address`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GeneralName(int tag, ASN1Encodable name)` When the subjectAltName extension contains an Internet mail address, the address MUST be included as an rfc822Name.
    `GeneralName(int tag, java.lang.String name)` Create a GeneralName for the given tag from the passed in String.
    `GeneralName(X500Name dirName)`
    `GeneralName(X509Name dirName)` Deprecated. use X500Name constructor.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static GeneralName` | `getInstance(ASN1TaggedObject tagObj, boolean explicit)`
    `static GeneralName` | `getInstance(java.lang.Object obj)`
    `ASN1Encodable` | `getName()`
    `int` | `getTagNo()`
    `ASN1Primitive` | `toASN1Primitive()` Method providing a primitive representation of this object suitable for encoding.
    `java.lang.String` | `toString()`

    - ### 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, wait, wait, wait`

- - ### Field Detail

    - #### otherName

          public static final int otherName

      See Also:
        Constant Field Values

    - #### rfc822Name

          public static final int rfc822Name

      See Also:
        Constant Field Values

    - #### dNSName

          public static final int dNSName

      See Also:
        Constant Field Values

    - #### x400Address

          public static final int x400Address

      See Also:
        Constant Field Values

    - #### directoryName

          public static final int directoryName

      See Also:
        Constant Field Values

    - #### ediPartyName

          public static final int ediPartyName

      See Also:
        Constant Field Values

    - #### uniformResourceIdentifier

          public static final int uniformResourceIdentifier

      See Also:
        Constant Field Values

    - #### iPAddress

          public static final int iPAddress

      See Also:
        Constant Field Values

    - #### registeredID

          public static final int registeredID

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### GeneralName

          public GeneralName(X509Name dirName)

      Deprecated. use X500Name constructor.
      Parameters:
        `dirName` -

    - #### GeneralName

          public GeneralName(X500Name dirName)

    - #### GeneralName

          public GeneralName(int tag,
                             ASN1Encodable name)

      When the subjectAltName extension contains an Internet mail address, the address MUST be included as an rfc822Name. The format of an rfc822Name is an "addr-spec" as defined in RFC 822 [RFC 822]. When the subjectAltName extension contains a domain name service label, the domain name MUST be stored in the dNSName (an IA5String). The name MUST be in the "preferred name syntax," as specified by RFC 1034 [RFC 1034]. When the subjectAltName extension contains a URI, the name MUST be stored in the uniformResourceIdentifier (an IA5String). The name MUST be a non-relative URL, and MUST follow the URL syntax and encoding rules specified in [RFC 1738]. The name must include both a scheme (e.g., "http" or "ftp") and a scheme-specific-part. The scheme- specific-part must include a fully qualified domain name or IP address as the host. When the subjectAltName extension contains a iPAddress, the address MUST be stored in the octet string in "network byte order," as specified in RFC 791 [RFC 791]. The least significant bit (LSB) of each octet is the LSB of the corresponding byte in the network address. For IP Version 4, as specified in RFC 791, the octet string MUST contain exactly four octets. For IP Version 6, as specified in RFC 1883, the octet string MUST contain exactly sixteen octets [RFC 1883].

    - #### GeneralName

          public GeneralName(int tag,
                             java.lang.String name)

      Create a GeneralName for the given tag from the passed in String.

      This constructor can handle:

      - rfc822Name
      - iPAddress
      - directoryName
      - dNSName
      - uniformResourceIdentifier
      - registeredID
      For x400Address, otherName and ediPartyName there is no common string format defined.

      Note: A directory name can be encoded in different ways into a byte representation. Be aware of this if the byte representation is used for comparing results.

      Parameters:
        `tag` - tag number
        `name` - string representation of name
      Throws:
        `java.lang.IllegalArgumentException` - if the string encoding is not correct or * not supported.

  - ### Method Detail

    - #### getInstance

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

    - #### getInstance

          public static GeneralName getInstance(ASN1TaggedObject tagObj,
                                                boolean explicit)

    - #### getTagNo

          public int getTagNo()

    - #### getName

          public ASN1Encodable getName()

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`

    - #### 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.