Класс 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
См. также:
X509Certificate, Сериализованная форма

Поля

Модификатор и тип Поле Описание
static String CANONICAL

Канонический строковый формат отличительных имён.

static String RFC1779

Строковый формат отличительных имён RFC 1779.

static 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

Строковый формат отличительных имён 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 содержит по крайней мере 2 цифры:

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 . Допускается иметь 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

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, где каждый ключ — это идентификатор объекта в строковом формате (последовательность целых неотрицательных чисел, разделенных точками), который отображается на соответствующее ключевое слово типа атрибута String. Карта может быть пустой, но никогда не 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 и если соответствующие канонические строковые представления (полученные через метод getName(X500Principal.CANONICAL) ) этого объекта и o равны.

Эта реализация соответствует требованиям 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(java.lang.Object)

© 1993, 2020, 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/11/docs/api/java.base/javax/security/auth/x500/X500Principal.html

Spec-Zone .ru
спецификации, руководства, описания, API