Spec-Zone.ru › OpenJDK 24

Класс X500Principal

java.lang.Object
javax.security.auth.x500.X500Principal
Все реализуемые интерфейсы:
Serializable, Principal
public final class X500Principal extends Object implements Principal, Serializable

Этот класс представляет собой X.500 Principal. X500Principal представляются такими отличительными именами, как "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US".

Этот класс можно инициализировать, используя строковое представление отличительного имени или используя ASN.1 DER-кодированное байтовое представление отличительного имени. Текущая спецификация для строкового представления отличительного имени определена в RFC 2253: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names. Однако, этот класс принимает строковые форматы как из RFC 2253, так и из RFC 1779: A String Representation of Distinguished Names, а также распознаёт ключевые слова типов атрибутов, чьи OID (идентификаторы объектов) определены в RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile.

Строковое представление этого X500Principal можно получить, вызвав методы getName.

Обратите внимание, что методы getSubjectX500Principal и getIssuerX500Principal класса X509Certificate возвращают X500Principals, представляющие поля «издатель» и «субъект» сертификата.

С:
1.4
Внешние спецификации
  • RFC 1779: A String Representation of Distinguished Names
  • RFC 2253: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names
  • RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
См. также:
  • X509Certificate
  • Сериализованная форма

Краткое описание полей

Модификатор и тип Поле Описание
static final String CANONICAL
Канонический строковый формат отличительных имён.
static final String RFC1779
Формат строковых отличительных имён RFC 1779.
static final String RFC2253
Формат строковых отличительных имён RFC 2253.

Краткое описание конструкторов

Конструктор Описание
X500Principal(byte[] name)
Создаёт X500Principal из отличительного имени в ASN.1 DER-кодированном формате.
X500Principal(InputStream is)
Создаёт X500Principal из InputStream, содержащего отличительное имя в ASN.1 DER-кодированном формате.
X500Principal(String name)
Создаёт X500Principal из строкового представления X.500 отличительного имени (например: "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US").
X500Principal(String name, Map<String,String> keywordMap)
Создаёт X500Principal из строкового представления X.500 отличительного имени (например: "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US").

Краткое описание методов

Модификатор и тип Метод Описание
boolean equals(Object o)
Сравнивает указанное Object с этим X500Principal на равенство.
byte[] getEncoded()
Возвращает отличительное имя в ASN.1 DER-кодированном формате.
String getName()
Возвращает строковое представление X.500 отличительного имени в формате, определённом в RFC 2253.
String getName(String format)
Возвращает строковое представление X.500 отличительного имени в указанном формате.
String getName(String format, Map<String,String> oidMap)
Возвращает строковое представление X.500 отличительного имени в указанном формате.
int hashCode()
Возвращает хэш-код для этого X500Principal.
String toString()
Возвращает удобочитаемое строковое представление этого X500Principal.

Методы, объявленные в классе java.lang.Object

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

Методы, объявленные в интерфейсе java.security.Principal

implies

Подробное описание полей

RFC1779

public static final String RFC1779
Формат строк имён, отличительных для X.500, согласно RFC 1779.
См. также:
  • Значения константных полей

RFC2253

public static final String RFC2253
Формат строк имён, отличительных для X.500, согласно RFC 2253.
См. также:
  • Значения константных полей

CANONICAL

public static final String CANONICAL
Канонический формат строк имён, отличительных для X.500.
См. также:
  • Значения константных полей

Подробное описание конструкторов

X500Principal

public X500Principal(String name)
Создаёт объект X500Principal из строкового представления имени, отличительного для X.500 (например: "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"). Имя должно быть указано в формате, определённом в RFC 1779 или RFC 2253 (любой формат допустим).

Этот конструктор распознаёт ключевые слова типов атрибутов, определённые в RFC 1779 и RFC 2253 (и перечисленные в getName(String format)), а также ключевые слова T, DNQ или DNQUALIFIER, SURNAME, GIVENNAME, INITIALS, GENERATION, EMAILADDRESS и SERIALNUMBER, чьи идентификаторы объектов (OID) определены в RFC 5280. Любой другой тип атрибута должен быть указан как OID.

Это реализация применяет более жёсткий синтаксис OID, чем определено в RFC 1779 и 2253. Она использует более правильный синтаксис, определённый в RFC 4512, в котором указано, что OID содержит как минимум 2 цифры:

numericoid = number 1*( DOT number )

Параметры:
name - имя, отличтельное для X.500 в формате RFC 1779 или RFC 2253
Исключения:
NullPointerException - если имя name имеет null формат
IllegalArgumentException - если имя name указано некорректно
Внешние спецификации
  • RFC 4512: Легкий протокол доступа к каталогам (LDAP): Модели данных каталогов

X500Principal

public X500Principal(String name, Map<String,String> keywordMap)
Создаёт объект X500Principal из строкового представления имени, отличительного для X.500 (например: "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"). Имя должно быть указано в формате, определённом в RFC 1779 или RFC 2253 (любой формат допустим).

Этот конструктор распознаёт ключевые слова типов атрибутов, указанные в X500Principal(String), а также распознаёт дополнительные ключевые слова, имеющие записи в keywordMap параметре. Записи ключевых слов в keywordMap имеют приоритет над ключевыми словами по умолчанию, распознаваемыми X500Principal(String). Ключевые слова ДОЛЖНЫ быть указаны в верхнем регистре, иначе они будут проигнорированы. Некорректно указанные ключевые слова игнорируются; однако, если ключевое слово в имени сопоставляется с некорректно указанным идентификатором объекта (OID), выбрасывается IllegalArgumentException. Допустимо иметь 2 различных ключевых слова, сопоставляемых с одним и тем же OID.

Это реализация применяет более жёсткий синтаксис OID, чем определено в RFC 1779 и 2253. Она использует более правильный синтаксис, определённый в RFC 4512, в котором указано, что OID содержит как минимум 2 цифры:

numericoid = number 1*( DOT number )

Параметры:
name - имя, отличтельное для X.500 в формате RFC 1779 или RFC 2253
keywordMap - карта ключевых слов типа атрибута, где каждый ключ представляет собой строку ключевого слова, сопоставляемую с соответствующим идентификатором объекта в виде строки (последовательность неотрицательных целых чисел, разделённых точками). Карта может быть пустой, но никогда не null.
Исключения:
NullPointerException - если name или keywordMap имеет null формат
IllegalArgumentException - если имя name указано некорректно или ключевое слово в name сопоставляется с OID, который не имеет правильный формат
С:
1.6
Внешние спецификации
  • RFC 4512: Легкий протокол доступа к каталогам (LDAP): Модели данных каталогов

X500Principal

public X500Principal(byte[] name)
Создаёт объект X500Principal из имени, отличтельного для X.500, в кодировке ASN.1 DER. ASN.1 запись для этой структуры:

 Name ::= CHOICE {
   RDNSequence }

 RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

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

 AttributeTypeAndValue ::= SEQUENCE {
   type     AttributeType,
   value    AttributeValue }

 AttributeType ::= OBJECT IDENTIFIER

 AttributeValue ::= ANY DEFINED BY AttributeType
 ....
 DirectoryString ::= CHOICE {
       teletexString           TeletexString (SIZE (1..MAX)),
       printableString         PrintableString (SIZE (1..MAX)),
       universalString         UniversalString (SIZE (1..MAX)),
       utf8String              UTF8String (SIZE (1.. MAX)),
       bmpString               BMPString (SIZE (1..MAX)) }
 
Параметры:
name - массив байтов, содержащий имя, отличтельное для X.500, в кодировке ASN.1 DER
Исключения:
IllegalArgumentException - если произошла ошибка кодирования (неверный формат для имени)

X500Principal

public X500Principal(InputStream is)
Создаёт объект X500Principal из потока, содержащего имя, отличтельное для X.500, в кодировке ASN.1 DER. ASN.1 запись для этой структуры приведена в документации для X500Principal(byte[] name).

Позиция чтения входного потока устанавливается на следующий байт после закодированного имени.

Параметры:
is - поток, содержащий имя, отличтельное для X.500, в кодировке ASN.1 DER
Исключения:
NullPointerException - если поток InputStream имеет null формат
IllegalArgumentException - если произошла ошибка кодирования (неверный формат для имени)

Подробное описание методов

getName

public String getName()
Возвращает строковое представление имени, отличительного для X.500, в формате, определённом в RFC 2253.

Этот метод эквивалентен вызову getName(X500Principal.RFC2253).

Спецификация:
getName в интерфейсе Principal
Возвращает:
имя, отличтельное для X.500

getName

public String getName(String format)
Возвращает строковое представление имени, отличтельного для X.500, в указанном формате. Допустимые значения формата: "RFC1779", "RFC2253" и "CANONICAL" (регистр не имеет значения).

Если указан формат "RFC1779", этот метод выводит ключевые слова типов атрибутов, определённые в RFC 1779 (CN, L, ST, O, OU, C, STREET). Любой другой тип атрибута выводится как OID.

Если указан формат "RFC2253", этот метод выводит ключевые слова типов атрибутов, определённые в RFC 2253 (CN, L, ST, O, OU, C, STREET, DC, UID). Любой другой тип атрибута выводится как OID. В соответствии с точным прочтением, RFC 2253 определяет только представление строки UTF-8. Строка, возвращённая этим методом, является строкой Unicode, полученной посредством декодирования этого представления UTF-8.

Если указан формат "CANONICAL", этот метод возвращает строку представления, соответствующую RFC 2253, с дополнительными канонизациями:

  1. Ведущие нули удаляются из типов атрибутов, которые закодированы как OID в десятичной форме.
  2. Значения атрибутов типа DirectoryString, PrintableString и UTF8String не выводятся в шестнадцатеричном формате.
  3. Значения атрибутов типа DirectoryString, отличные от PrintableString и UTF8String, выводятся в шестнадцатеричном формате.
  4. Ведущие и хвостовые пробельные символы удаляются из значений атрибутов, не являющихся шестнадцатеричными (если значение не состоит целиком из пробельных символов).
  5. Внутренние подстроки, состоящие из одного или нескольких пробельных символов, преобразуются в один пробел в значениях атрибутов, не являющихся шестнадцатеричными.
  6. Относительные имена, содержащие более одного утверждения значения атрибута (AVA), выводятся в следующем порядке: алфавитный порядок AVA, содержащих стандартные ключевые слова, за которым следует числовой порядок AVA, содержащих ключевые слова OID.
  7. В значениях атрибутов экранируются только те символы, которые, как указано в разделе 2.4 RFC 2253, должны быть экранированы (они экранируются с помощью предшествующего обратного слэша).
  8. Всё имя преобразуется в верхний регистр с использованием String.toUpperCase(Locale.US).
  9. Всё имя преобразуется в нижний регистр с использованием String.toLowerCase(Locale.US).
  10. Наконец, имя нормализуется с использованием формы нормализации KD, как описано в стандарте Unicode и UAX #15.

В будущем могут быть введены дополнительные стандартные форматы.

Параметры:
format - формат для использования
Возвращает:
строковое представление этого X500Principal в указанном формате
Исключения:
IllegalArgumentException - если указанный формат недействителен или равен null

getName

public String getName(String format, Map<String,String> oidMap)
Возвращает строковое представление различающего имени X.500 с использованием указанного формата. Допустимые значения для формата — "RFC1779" и "RFC2253" (регистронезависимые). "CANONICAL" не допускается, и будет брошено исключение IllegalArgumentException.

Этот метод возвращает строки в формате, указанном в getName(String), а также выводит дополнительные ключевые слова типа атрибута для OID, имеющих записи в параметре oidMap. Записи OID в параметре oidMap имеют приоритет над стандартными OID, распознаваемыми getName(String). Неправильно указанные OID игнорируются; однако, если OID в имени сопоставляется с неправильно указанным ключевым словом, будет брошено исключение IllegalArgumentException.

В будущем могут быть добавлены дополнительные стандартные форматы.

Предупреждение: дополнительные ключевые слова типа атрибута могут не распознаваться другими реализациями; поэтому не используйте этот метод, если не уверены, что эти ключевые слова будут распознаны другими реализациями.

Parameters:
format - используемый формат
oidMap - карта OID, где каждый ключ — идентификатор объекта в строковом формате (последовательность неотрицательных целых чисел, разделённых точками), отображаемый на соответствующее строковое ключевое слово типа атрибута. Карта может быть пустой, но никогда не null.
Returns:
строковое представление этого X500Principal с использованием указанного формата
Throws:
IllegalArgumentException - если указанный формат недействителен, равен null или OID в имени сопоставляется с неправильно указанным ключевым словом
NullPointerException - если oidMap равно null
Since:
1.6

getEncoded

public byte[] getEncoded()
Возвращает различающее имя в кодированном виде ASN.1 DER. ASN.1-нотация для этой структуры приведена в документации к X500Principal(byte[] name).

Обратите внимание, что возвращаемый массив байтов дублируется для защиты от последующих модификаций.

Returns:
массив байтов, содержащий различающее имя в кодированном виде ASN.1 DER

toString

public String toString()
Возвращает удобочитаемое строковое представление этого X500Principal.
Specified by:
toString в интерфейсе Principal
Overrides:
toString в классе Object
Returns:
строковое представление этого X500Principal

equals

public boolean equals(Object o)
Сравнивает указанный Object с этим X500Principal на равенство.

Конкретно, этот метод возвращает true, если Object o является X500Principal и если соответствующие канонические строковые представления (полученные с помощью метода getName(X500Principal.CANONICAL)) этого объекта и o равны.

Эта реализация соответствует требованиям RFC 5280.

Specified by:
equals в интерфейсе Principal
Overrides:
equals в классе Object
Parameters:
o - Объект для сравнения на равенство с этим X500Principal
Returns:
true, если указанный Object равен этому X500Principal, false в противном случае
See Also:
  • Object.hashCode()
  • HashMap

hashCode

public int hashCode()
Возвращает хэш-код для этого X500Principal.

Хэш-код вычисляется следующим образом: getName(X500Principal.CANONICAL).hashCode()

Specified by:
hashCode в интерфейсе Principal
Overrides:
hashCode в классе Object
Returns:
хэш-код для этого X500Principal
See Also:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(java.lang.Object)

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/security/auth/x500/X500Principal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API