Класс 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
- Внешние спецификации
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final String |
CANONICAL |
Канонический строковый формат различительных имён. |
static final String |
RFC1779 |
Строковый формат различительных имён RFC 1779. |
static final String |
RFC2253 |
Строковый формат различительных имён RFC 2253. |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
X500Principal |
Создаёт X500Principal из различительного имени в кодировке ASN.1 DER. |
X500Principal |
Создаёт X500Principal из InputStream, содержащего различительное имя в кодировке ASN.1 DER. |
X500Principal |
Создаёт X500Principal из строкового представления различительного имени X.500 (например: «CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US»). |
X500Principal |
Создаёт X500Principal из строкового представления различительного имени X.500 (например: «CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US»). |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает указанный Object с этим X500Principal на равенство. |
byte[] |
getEncoded() |
Возвращает различительное имя в кодировке ASN.1 DER. |
String |
getName() |
Возвращает строковое представление различительного имени X.500 в формате, определённом в RFC 2253. |
String |
getName |
Возвращает строковое представление различительного имени X.500 в указанном формате. |
String |
getName |
Возвращает строковое представление различительного имени 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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо истечения заданного промежутка реального времени. |
Подробное описание полей
RFC1779
public static final String RFC1779
- См. также:
RFC2253
public static final String RFC2253
- См. также:
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задано неправильно - Внешние спецификации
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
- Внешние спецификации
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
getName
public String getName(String format)
Если в качестве формата указано «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, со следующими дополнительными канонизациями:
- Ведущие нули удаляются из типов атрибутов, закодированных в виде десятичных OID с точками
- Значения атрибутов DirectoryString типа PrintableString и UTF8String не выводятся в шестнадцатеричном формате
- Значения атрибутов DirectoryString типов, отличных от PrintableString и UTF8String, выводятся в шестнадцатеричном формате
- Начальные и конечные пробельные символы удаляются из не шестнадцатеричных значений атрибутов (если только значение не состоит целиком из пробельных символов)
- Внутренние последовательности из одного или нескольких пробельных символов заменяются одним пробелом в не шестнадцатеричных значениях атрибутов
- Относительные различительные имена, содержащие более одного утверждения значения атрибута (AVA), выводятся в следующем порядке: сначала AVA со стандартными ключевыми словами в алфавитном порядке, затем AVA с ключевыми словами OID в числовом порядке.
- В значениях атрибутов экранируются только символы, которые согласно разделу 2.4 RFC 2253 должны экранироваться (перед ними добавляется обратная косая черта)
- Всё имя переводится в верхний регистр с помощью
String.toUpperCase(Locale.US) - Всё имя переводится в нижний регистр с помощью
String.toLowerCase(Locale.US) - В завершение имя нормализуется с использованием формы нормализации KD, описанной в стандарте Unicode и UAX #15
В будущем могут появиться дополнительные стандартные форматы.
- Параметры:
-
format— используемый формат - Возвращает:
- строковое представление этого
X500Principalв указанном формате - Исключения:
-
IllegalArgumentException— если указанный формат недопустим или равен null
getName
public String getName(String format, Map<String,String> oidMap)
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()
X500Principal(byte[] name). Обратите внимание: возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- массив байтов, содержащий различительное имя в кодировке ASN.1 DER
toString
equals
public boolean equals(Object o)
Object с этим X500Principal на равенство. В частности, этот метод возвращает true, если Object o является X500Principal и канонические строковые представления этого объекта и o (полученные с помощью метода getName(X500Principal.CANONICAL)) равны.
Эта реализация соответствует требованиям RFC 5280.
hashCode
© 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.