Класс 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 (Object Identifiers) определены в 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(InputStream is) Создаёт |
X500Principal(String name) Создаёт |
X500Principal(String name,
Map<String,String> keywordMap) Создаёт |
Методы
| Модификатор и Тип | Метод и Описание |
|---|---|
boolean |
equals(Object o) Сравнивает указанный |
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() Возвращает хеш-код для данного |
String |
toString() Возвращает удобочитаемое строковое представление этого |
Методы, унаследованные от класса 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- еслиnamenull -
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илиkeywordMapnull -
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- еслиInputStreamnull -
IllegalArgumentException- если произошла ошибка кодирования (неправильная форма для DN)
Методы
getName
public String getName()
Возвращает строковое представление имени X.500 в формате, определённом в RFC 2253.
Этот метод эквивалентен вызову getName(X500Principal.RFC2253).
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 с дополнительными канонизациями:
- Ведущие нули удаляются из типов атрибутов, закодированных как 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) Возвращает строковое представление имени 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- еслиoidMapnull - См. также:
- 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.