Spec-Zone.ru › OpenJDK 27

Класс X500Principal

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

Этот класс представляет Principal X.500. X500Principals представлены различительными именами, например «CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US».

Экземпляр этого класса можно создать, используя строковое представление различительного имени или байтовое представление различительного имени в кодировке ASN.1 DER. Текущая спецификация строкового представления различительного имени определена в RFC 2253: Протокол облегчённого доступа к каталогам (v3): представление различительных имён в виде строк UTF-8. Однако этот класс принимает строковые форматы как из RFC 2253, так и из RFC 1779: Строковое представление различительных имён, а также распознаёт ключевые слова типов атрибутов, чьи OID (идентификаторы объектов) определены в RFC 5280: Профиль сертификатов и списков отзыва сертификатов (CRL) инфраструктуры открытых ключей Internet X.509.

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

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

Начиная с:
1.4
Внешние спецификации
  • RFC 1779: Строковое представление различительных имён
  • RFC 2253: Протокол облегчённого доступа к каталогам (v3): представление различительных имён в виде строк UTF-8
  • RFC 5280: Профиль сертификатов и списков отзыва сертификатов (CRL) инфраструктуры открытых ключей Internet X.509
См. также:
  • 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.

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

clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
protected void finalize()
Устарел, будет удалён: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени.

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

implies
Модификатор и тип Метод Описание
default boolean implies(Subject subject)
Возвращает true, если указанный субъект подразумевается этим Principal.

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

RFC1779

public static final String RFC1779
Строковый формат различительных имён RFC 1779.
См. также:
  • Значения константных полей

RFC2253

public static final String RFC2253
Строковый формат различительных имён RFC 2253.
См. также:
  • Значения константных полей

CANONICAL

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

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

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 должны содержать не менее двух цифр:

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. Разрешается использовать два разных ключевых слова, сопоставленных с одним и тем же OID.

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

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 из различительного имени в кодировке 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 — массив байтов, содержащий различительное имя в кодировке ASN.1 DER
Исключения:
IllegalArgumentException — если произошла ошибка кодирования (неверный формат DN)

X500Principal

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

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

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

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

getName

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

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

Определено в:
getName в интерфейсе Principal
Возвращает:
различительное имя этого X500Principal

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.

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

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

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

getEncoded

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

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

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

toString

public String toString()
Возвращает удобное для пользователя строковое представление этого X500Principal.
Определено в:
toString в интерфейсе Principal
Переопределяет:
toString в классе Object
Возвращает:
строковое представление этого X500Principal

equals

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

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

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

Определено в:
equals в интерфейсе Principal
Переопределяет:
equals в классе Object
Параметры:
o — объект для сравнения на равенство с этим X500Principal
Возвращает:
true, если указанный Object равен этому X500Principal, и false в противном случае
См. также:
  • Object.hashCode()
  • HashMap

hashCode

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

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

Определено в:
hashCode в интерфейсе Principal
Переопределяет:
hashCode в классе Object
Возвращает:
хеш-код этого X500Principal
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, включая общие сведения, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

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

Spec-Zone.ru

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