Spec-Zone.ru › OpenJDK 25

Класс X500Principal

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

Этот класс представляет X.500 Principal. 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) интернет-инфраструктуры открытых ключей X.509.

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

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

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

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

implies

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

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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/security/auth/x500/X500Principal.html

Spec-Zone.ru

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