org.bouncycastle.asn1.x509

## Class X509Name

- java.lang.Object
- - org.bouncycastle.asn1.ASN1Encodable
  - - org.bouncycastle.asn1.x509.X509Name

All Implemented Interfaces:
  DEREncodable

Direct Known Subclasses:
  X509Principal

    public class X509Name
    extends ASN1Encodable

         RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

         RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue

         AttributeTypeAndValue ::= SEQUENCE {
                                       type  OBJECT IDENTIFIER,
                                       value ANY }

### Field Summary

Fields
`static DERObjectIdentifier` `BUSINESS_CATEGORY` businessCategory - DirectoryString(SIZE(1..128)
`static DERObjectIdentifier` `C` country code - StringType(SIZE(2))
`static DERObjectIdentifier` `CN` common name - StringType(SIZE(1..64))
`static DERObjectIdentifier` `COUNTRY_OF_CITIZENSHIP` RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166 codes only
`static DERObjectIdentifier` `COUNTRY_OF_RESIDENCE` RFC 3039 CountryOfResidence - PrintableString (SIZE (2)) -- ISO 3166 codes only
`static DERObjectIdentifier` `DATE_OF_BIRTH` RFC 3039 DateOfBirth - GeneralizedTime - YYYYMMDD000000Z
`static DERObjectIdentifier` `DC`
`static java.util.Hashtable` `DefaultLookUp` look up table translating common symbols into their OIDS.
`static boolean` `DefaultReverse` determines whether or not strings should be processed and printed from back to front.
`static java.util.Hashtable` `DefaultSymbols` default look up table translating OID values into their common symbols following the convention in RFC 2253 with a few extras
`static DERObjectIdentifier` `DMD_NAME` RFC 2256 dmdName
`static DERObjectIdentifier` `DN_QUALIFIER` dnQualifier - DirectoryString(SIZE(1..64)
`static DERObjectIdentifier` `E` email address in Verisign certificates
`static DERObjectIdentifier` `EmailAddress` Email address (RSA PKCS#9 extension) - IA5String.
`static DERObjectIdentifier` `GENDER` RFC 3039 Gender - PrintableString (SIZE(1)) -- "M", "F", "m" or "f"
`static DERObjectIdentifier` `GENERATION`
`static DERObjectIdentifier` `GIVENNAME`
`static DERObjectIdentifier` `INITIALS`
`static DERObjectIdentifier` `L` locality name - StringType(SIZE(1..64))
`static DERObjectIdentifier` `NAME` id-at-name
`static DERObjectIdentifier` `NAME_AT_BIRTH` ISIS-MTT NameAtBirth - DirectoryString(SIZE(1..64)
`static DERObjectIdentifier` `O` organization - StringType(SIZE(1..64))
`static java.util.Hashtable` `OIDLookUp` Deprecated. use DefaultSymbols
`static DERObjectIdentifier` `OU` organizational unit name - StringType(SIZE(1..64))
`static DERObjectIdentifier` `PLACE_OF_BIRTH` RFC 3039 PlaceOfBirth - DirectoryString(SIZE(1..128)
`static DERObjectIdentifier` `POSTAL_ADDRESS` RFC 3039 PostalAddress - SEQUENCE SIZE (1..6) OF DirectoryString(SIZE(1..30))
`static DERObjectIdentifier` `POSTAL_CODE` postalCode - DirectoryString(SIZE(1..40)
`static DERObjectIdentifier` `PSEUDONYM` RFC 3039 Pseudonym - DirectoryString(SIZE(1..64)
`static java.util.Hashtable` `RFC1779Symbols` look up table translating OID values into their common symbols following the convention in RFC 1779
`static java.util.Hashtable` `RFC2253Symbols` look up table translating OID values into their common symbols following the convention in RFC 2253
`static DERObjectIdentifier` `SERIALNUMBER` device serial number name - StringType(SIZE(1..64))
`static DERObjectIdentifier` `SN` device serial number name - StringType(SIZE(1..64))
`static DERObjectIdentifier` `ST` state, or province name - StringType(SIZE(1..64))
`static DERObjectIdentifier` `STREET` street - StringType(SIZE(1..64))
`static DERObjectIdentifier` `SURNAME` Naming attributes of type X520name
`static java.util.Hashtable` `SymbolLookUp` Deprecated. use DefaultLookUp
`static DERObjectIdentifier` `T` Title
`static DERObjectIdentifier` `TELEPHONE_NUMBER` id-at-telephoneNumber
`static DERObjectIdentifier` `UID` LDAP User id.
`static DERObjectIdentifier` `UNIQUE_IDENTIFIER`
`static DERObjectIdentifier` `UnstructuredAddress`
`static DERObjectIdentifier` `UnstructuredName` more from PKCS#9

### Fields inherited from class org.bouncycastle.asn1.ASN1Encodable

`BER, DER`

### Constructor Summary

Constructors
Constructor and Description
`X509Name(ASN1Sequence seq)` Constructor from ASN1Sequence the principal will be a list of constructed sets, each containing an (OID, String) pair.

`X509Name(boolean reverse, java.util.Hashtable lookUp, java.lang.String dirName)`
Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes. lookUp should provide a table of lookups, indexed by lowercase only strings and yielding a DERObjectIdentifier, other than that OID. and numeric oids will be processed automatically.

`X509Name(boolean reverse, java.util.Hashtable lookUp, java.lang.String dirName, X509NameEntryConverter converter)`
Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes. lookUp should provide a table of lookups, indexed by lowercase only strings and yielding a DERObjectIdentifier, other than that OID. and numeric oids will be processed automatically.

`X509Name(boolean reverse, java.lang.String dirName)` Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes.
`X509Name(boolean reverse, java.lang.String dirName, X509NameEntryConverter converter)` Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes with each string value being converted to its associated ASN.1 type using the passed in converter.
`X509Name(java.util.Hashtable attributes)` Deprecated. use an ordered constructor! The hashtable ordering is rarely correct
`X509Name(java.lang.String dirName)` Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes.
`X509Name(java.lang.String dirName, X509NameEntryConverter converter)` Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes with each string value being converted to its associated ASN.1 type using the passed in converter.
`X509Name(java.util.Vector ordering, java.util.Hashtable attributes)` Constructor from a table of attributes with ordering.
`X509Name(java.util.Vector ordering, java.util.Hashtable attributes, X509NameEntryConverter converter)` Constructor from a table of attributes with ordering.
`X509Name(java.util.Vector oids, java.util.Vector values)` Takes two vectors one of the oids and the other of the values.
`X509Name(java.util.Vector oids, java.util.Vector values, X509NameEntryConverter converter)` Takes two vectors one of the oids and the other of the values.

### Method Summary

Methods
`boolean` `equals(java.lang.Object obj)` test for equality - note: case is ignored.
`boolean` `equals(java.lang.Object obj, boolean inOrder)`
`static X509Name` `getInstance(ASN1TaggedObject obj, boolean explicit)` Return a X509Name based on the passed in tagged object.
`static X509Name` `getInstance(java.lang.Object obj)`
`java.util.Vector` `getOIDs()` return a vector of the oids in the name, in the order they were found.
`java.util.Vector` `getValues()` return a vector of the values found in the name, in the order they were found.
`java.util.Vector` `getValues(DERObjectIdentifier oid)` return a vector of the values found in the name, in the order they were found, with the DN label corresponding to passed in oid.
`int` `hashCode()`
`DERObject` `toASN1Object()`
`java.lang.String` `toString()`
`java.lang.String` `toString(boolean reverse, java.util.Hashtable oidSymbols)` convert the structure to a string - if reverse is true the oids and values are listed out starting with the last element in the sequence (ala RFC 2253), otherwise the string will begin with the first element of the structure.

### Methods inherited from class org.bouncycastle.asn1.ASN1Encodable

`getDEREncoded, getDERObject, getEncoded, getEncoded`

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

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

### Field Detail

#### C

    public static final DERObjectIdentifier C

country code - StringType(SIZE(2))

#### O

    public static final DERObjectIdentifier O

organization - StringType(SIZE(1..64))

#### OU

    public static final DERObjectIdentifier OU

organizational unit name - StringType(SIZE(1..64))

#### T

    public static final DERObjectIdentifier T

Title

#### CN

    public static final DERObjectIdentifier CN

common name - StringType(SIZE(1..64))

#### SN

    public static final DERObjectIdentifier SN

device serial number name - StringType(SIZE(1..64))

#### STREET

    public static final DERObjectIdentifier STREET

street - StringType(SIZE(1..64))

#### SERIALNUMBER

    public static final DERObjectIdentifier SERIALNUMBER

device serial number name - StringType(SIZE(1..64))

#### L

    public static final DERObjectIdentifier L

locality name - StringType(SIZE(1..64))

#### ST

    public static final DERObjectIdentifier ST

state, or province name - StringType(SIZE(1..64))

#### SURNAME

    public static final DERObjectIdentifier SURNAME

Naming attributes of type X520name

#### GIVENNAME

    public static final DERObjectIdentifier GIVENNAME

#### INITIALS

    public static final DERObjectIdentifier INITIALS

#### GENERATION

    public static final DERObjectIdentifier GENERATION

#### UNIQUE_IDENTIFIER

    public static final DERObjectIdentifier UNIQUE_IDENTIFIER

#### BUSINESS_CATEGORY

    public static final DERObjectIdentifier BUSINESS_CATEGORY

businessCategory - DirectoryString(SIZE(1..128)

#### POSTAL_CODE

    public static final DERObjectIdentifier POSTAL_CODE

postalCode - DirectoryString(SIZE(1..40)

#### DN_QUALIFIER

    public static final DERObjectIdentifier DN_QUALIFIER

dnQualifier - DirectoryString(SIZE(1..64)

#### PSEUDONYM

    public static final DERObjectIdentifier PSEUDONYM

RFC 3039 Pseudonym - DirectoryString(SIZE(1..64)

#### DATE_OF_BIRTH

    public static final DERObjectIdentifier DATE_OF_BIRTH

RFC 3039 DateOfBirth - GeneralizedTime - YYYYMMDD000000Z

#### PLACE_OF_BIRTH

    public static final DERObjectIdentifier PLACE_OF_BIRTH

RFC 3039 PlaceOfBirth - DirectoryString(SIZE(1..128)

#### GENDER

    public static final DERObjectIdentifier GENDER

RFC 3039 Gender - PrintableString (SIZE(1)) -- "M", "F", "m" or "f"

#### COUNTRY_OF_CITIZENSHIP

    public static final DERObjectIdentifier COUNTRY_OF_CITIZENSHIP

RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166 codes only

#### COUNTRY_OF_RESIDENCE

    public static final DERObjectIdentifier COUNTRY_OF_RESIDENCE

RFC 3039 CountryOfResidence - PrintableString (SIZE (2)) -- ISO 3166 codes only

#### NAME_AT_BIRTH

    public static final DERObjectIdentifier NAME_AT_BIRTH

ISIS-MTT NameAtBirth - DirectoryString(SIZE(1..64)

#### POSTAL_ADDRESS

    public static final DERObjectIdentifier POSTAL_ADDRESS

RFC 3039 PostalAddress - SEQUENCE SIZE (1..6) OF DirectoryString(SIZE(1..30))

#### DMD_NAME

    public static final DERObjectIdentifier DMD_NAME

RFC 2256 dmdName

#### TELEPHONE_NUMBER

    public static final DERObjectIdentifier TELEPHONE_NUMBER

id-at-telephoneNumber

#### NAME

    public static final DERObjectIdentifier NAME

id-at-name

#### EmailAddress

    public static final DERObjectIdentifier EmailAddress

Email address (RSA PKCS#9 extension) - IA5String.

Note: if you're trying to be ultra orthodox, don't use this! It shouldn't be in here.

#### UnstructuredName

    public static final DERObjectIdentifier UnstructuredName

more from PKCS#9

#### UnstructuredAddress

    public static final DERObjectIdentifier UnstructuredAddress

#### E

    public static final DERObjectIdentifier E

email address in Verisign certificates

#### DC

    public static final DERObjectIdentifier DC

#### UID

    public static final DERObjectIdentifier UID

LDAP User id.

#### DefaultReverse

    public static boolean DefaultReverse

determines whether or not strings should be processed and printed from back to front.

#### DefaultSymbols

    public static final java.util.Hashtable DefaultSymbols

default look up table translating OID values into their common symbols following the convention in RFC 2253 with a few extras

#### RFC2253Symbols

    public static final java.util.Hashtable RFC2253Symbols

look up table translating OID values into their common symbols following the convention in RFC 2253

#### RFC1779Symbols

    public static final java.util.Hashtable RFC1779Symbols

look up table translating OID values into their common symbols following the convention in RFC 1779

#### DefaultLookUp

    public static final java.util.Hashtable DefaultLookUp

look up table translating common symbols into their OIDS.

#### OIDLookUp

    public static final java.util.Hashtable OIDLookUp

Deprecated. use DefaultSymbols
look up table translating OID values into their common symbols

#### SymbolLookUp

    public static final java.util.Hashtable SymbolLookUp

Deprecated. use DefaultLookUp
look up table translating string values into their OIDS -

### Constructor Detail

#### X509Name

    public X509Name(ASN1Sequence seq)

Constructor from ASN1Sequence the principal will be a list of constructed sets, each containing an (OID, String) pair.

#### X509Name

    public X509Name(java.util.Hashtable attributes)

Deprecated. use an ordered constructor! The hashtable ordering is rarely correct
constructor from a table of attributes.

it's is assumed the table contains OID/String pairs, and the contents of the table are copied into an internal table as part of the construction process.

Note: if the name you are trying to generate should be following a specific ordering, you should use the constructor with the ordering specified below.

#### X509Name

    public X509Name(java.util.Vector ordering,
            java.util.Hashtable attributes)

Constructor from a table of attributes with ordering.

it's is assumed the table contains OID/String pairs, and the contents of the table are copied into an internal table as part of the construction process. The ordering vector should contain the OIDs in the order they are meant to be encoded or printed in toString.

#### X509Name

    public X509Name(java.util.Vector ordering,
            java.util.Hashtable attributes,
            X509NameEntryConverter converter)

Constructor from a table of attributes with ordering.

it's is assumed the table contains OID/String pairs, and the contents of the table are copied into an internal table as part of the construction process. The ordering vector should contain the OIDs in the order they are meant to be encoded or printed in toString.

The passed in converter will be used to convert the strings into their ASN.1 counterparts.

#### X509Name

    public X509Name(java.util.Vector oids,
            java.util.Vector values)

Takes two vectors one of the oids and the other of the values.

#### X509Name

    public X509Name(java.util.Vector oids,
            java.util.Vector values,
            X509NameEntryConverter converter)

Takes two vectors one of the oids and the other of the values.

The passed in converter will be used to convert the strings into their ASN.1 counterparts.

#### X509Name

    public X509Name(java.lang.String dirName)

Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes.

#### X509Name

    public X509Name(java.lang.String dirName,
            X509NameEntryConverter converter)

Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes with each string value being converted to its associated ASN.1 type using the passed in converter.

#### X509Name

    public X509Name(boolean reverse,
            java.lang.String dirName)

Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes. If reverse is true, create the encoded version of the sequence starting from the last element in the string.

#### X509Name

    public X509Name(boolean reverse,
            java.lang.String dirName,
            X509NameEntryConverter converter)

Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes with each string value being converted to its associated ASN.1 type using the passed in converter. If reverse is true the ASN.1 sequence representing the DN will be built by starting at the end of the string, rather than the start.

#### X509Name

    public X509Name(boolean reverse,
            java.util.Hashtable lookUp,
            java.lang.String dirName)

Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes. lookUp should provide a table of lookups, indexed by lowercase only strings and yielding a DERObjectIdentifier, other than that OID. and numeric oids will be processed automatically.
If reverse is true, create the encoded version of the sequence starting from the last element in the string.

Parameters:
  `reverse` - true if we should start scanning from the end (RFC 2553).
  `lookUp` - table of names and their oids.
  `dirName` - the X.500 string to be parsed.

#### X509Name

    public X509Name(boolean reverse,
            java.util.Hashtable lookUp,
            java.lang.String dirName,
            X509NameEntryConverter converter)

Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or some such, converting it into an ordered set of name attributes. lookUp should provide a table of lookups, indexed by lowercase only strings and yielding a DERObjectIdentifier, other than that OID. and numeric oids will be processed automatically. The passed in converter is used to convert the string values to the right of each equals sign to their ASN.1 counterparts.

Parameters:
  `reverse` - true if we should start scanning from the end, false otherwise.
  `lookUp` - table of names and oids.
  `dirName` - the string dirName
  `converter` - the converter to convert string values into their ASN.1 equivalents

### Method Detail

#### getInstance

    public static X509Name getInstance(ASN1TaggedObject obj,
                       boolean explicit)

Return a X509Name based on the passed in tagged object.

Parameters:
  `obj` - tag object holding name.
  `explicit` - true if explicitly tagged false otherwise.
Returns:
  the X509Name

#### getInstance

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

#### getOIDs

    public java.util.Vector getOIDs()

return a vector of the oids in the name, in the order they were found.

#### getValues

    public java.util.Vector getValues()

return a vector of the values found in the name, in the order they were found.

#### getValues

    public java.util.Vector getValues(DERObjectIdentifier oid)

return a vector of the values found in the name, in the order they were found, with the DN label corresponding to passed in oid.

#### toASN1Object

    public DERObject toASN1Object()

Specified by:
  `toASN1Object` in class `ASN1Encodable`

#### equals

    public boolean equals(java.lang.Object obj,
                 boolean inOrder)

Parameters:
  `inOrder` - if true the order of both X509 names must be the same, as well as the values associated with each element.

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `ASN1Encodable`

#### equals

    public boolean equals(java.lang.Object obj)

test for equality - note: case is ignored.

Overrides:
  `equals` in class `ASN1Encodable`

#### toString

    public java.lang.String toString(boolean reverse,
                            java.util.Hashtable oidSymbols)

convert the structure to a string - if reverse is true the oids and values are listed out starting with the last element in the sequence (ala RFC 2253), otherwise the string will begin with the first element of the structure. If no string definition for the oid is found in oidSymbols the string value of the oid is added. Two standard symbol tables are provided DefaultSymbols, and RFC2253Symbols as part of this class.

Parameters:
  `reverse` - if true start at the end of the sequence and work back.
  `oidSymbols` - look up table strings for oids.

#### toString

    public java.lang.String toString()

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