Spec-Zone.ru › OpenJDK 21

Класс 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
См. также:
  • 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
Формат строк имён, выделенных в RFC 1779.
См. также:
  • Значения константных полей

RFC2253

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

CANONICAL

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

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

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. Записи ключевых слов в ключевом словаре имеют приоритет над ключевыми словами по умолчанию, распознаваемыми 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 из потока, содержащего имя в кодировке ASN.1 DER. ASN.1 обозначение для этой структуры приведено в документации для X500Principal(byte[] name).

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

Параметры:
is - поток, содержащий имя в кодировке 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 и если соответствующие канонические строковые представления (полученные через метод 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, 2023, 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/21/docs/api/java.base/javax/security/auth/x500/X500Principal.html

Spec-Zone.ru

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