Spec-Zone.ru › OpenJDK 27

Класс X509CertSelector

java.lang.Object
java.security.cert.X509CertSelector
Все реализуемые интерфейсы:
Cloneable, CertSelector
public class X509CertSelector extends Object implements CertSelector
CertSelector, который выбирает X509Certificates, соответствующие всем указанным критериям. Этот класс особенно полезен при выборе сертификатов из CertStore для построения сертификационного пути, соответствующего PKIX.

При первоначальном создании у X509CertSelector нет включённых критериев, и каждый из методов get возвращает значение по умолчанию (null или -1 для метода getBasicConstraints). Поэтому метод match возвращает true для любого X509Certificate. Обычно включают несколько критериев (например, вызывая setIssuer(X500Principal) или setKeyUsage), а затем передают X509CertSelector методу CertStore.getCertificates или аналогичному методу.

Можно включить несколько критериев (например, вызывая setIssuer(X500Principal) и setSerialNumber), чтобы метод match обычно выбирал единственный X509Certificate. «Обычно» — потому что возможна ситуация, когда два центра сертификации имеют одинаковые различительные имена и каждый выпускает сертификат с одинаковым серийным номером. Другие уникальные комбинации включают критерии издателя, субъекта, subjectKeyIdentifier и/или subjectPublicKey.

Определения упомянутых ниже расширений сертификата X.509 см. в документе RFC 5280: профиль сертификатов и списков отзыва сертификатов (CRL) для инфраструктуры открытых ключей Internet X.509.

Параллельный доступ

Если не указано иное, методы, определённые в этом классе, не являются потокобезопасными. Несколько потоков, которым требуется одновременно обращаться к одному объекту, должны синхронизироваться между собой и обеспечивать необходимую блокировку. Потокам, каждый из которых работает с отдельными объектами, синхронизация не требуется.

Начиная с версии:
1.4
Внешние спецификации
  • RFC 5280: профиль сертификатов и списков отзыва сертификатов (CRL) для инфраструктуры открытых ключей Internet X.509
См. также:
  • CertSelector
  • X509Certificate

Краткое описание конструкторов

Конструктор Описание
X509CertSelector()
Создаёт X509CertSelector.

Краткое описание методов

Модификатор и тип Метод Описание
void addPathToName(int type, byte[] name)
Добавляет имя в критерий pathToNames.
void addPathToName(int type, String name)
Добавляет имя в критерий pathToNames.
void addSubjectAlternativeName(int type, byte[] name)
Добавляет имя в критерий subjectAlternativeNames.
void addSubjectAlternativeName(int type, String name)
Добавляет имя в критерий subjectAlternativeNames.
Object clone()
Возвращает копию этого объекта.
byte[] getAuthorityKeyIdentifier()
Возвращает критерий authorityKeyIdentifier.
int getBasicConstraints()
Возвращает ограничение базовых ограничений.
X509Certificate getCertificate()
Возвращает критерий certificateEquals.
Date getCertificateValid()
Возвращает критерий certificateValid.
Set<String> getExtendedKeyUsage()
Возвращает критерий extendedKeyUsage.
X500Principal getIssuer()
Возвращает критерий издателя в виде X500Principal.
byte[] getIssuerAsBytes()
Возвращает критерий издателя в виде массива байтов.
String getIssuerAsString()
Устарел.
Вместо него используйте getIssuer() или getIssuerAsBytes().
boolean[] getKeyUsage()
Возвращает критерий keyUsage.
boolean getMatchAllSubjectAltNames()
Указывает, должен ли X509Certificate содержать все или хотя бы одно из имён subjectAlternativeNames, указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName.
byte[] getNameConstraints()
Возвращает критерий ограничений имён.
Collection<List<?>> getPathToNames()
Возвращает копию критерия pathToNames.
Set<String> getPolicy()
Возвращает критерий политик.
Date getPrivateKeyValid()
Возвращает критерий privateKeyValid.
BigInteger getSerialNumber()
Возвращает критерий серийного номера.
X500Principal getSubject()
Возвращает критерий субъекта в виде X500Principal.
Collection<List<?>> getSubjectAlternativeNames()
Возвращает копию критерия subjectAlternativeNames.
byte[] getSubjectAsBytes()
Возвращает критерий субъекта в виде массива байтов.
String getSubjectAsString()
Устарел.
Вместо него используйте getSubject() или getSubjectAsBytes().
byte[] getSubjectKeyIdentifier()
Возвращает критерий subjectKeyIdentifier.
PublicKey getSubjectPublicKey()
Возвращает критерий subjectPublicKey.
String getSubjectPublicKeyAlgID()
Возвращает критерий subjectPublicKeyAlgID.
boolean match(Certificate cert)
Определяет, следует ли выбирать Certificate.
void setAuthorityKeyIdentifier(byte[] authorityKeyID)
Задаёт критерий authorityKeyIdentifier.
void setBasicConstraints(int minMaxPathLen)
Задаёт ограничение базовых ограничений.
void setCertificate(X509Certificate cert)
Задаёт критерий certificateEquals.
void setCertificateValid(Date certValid)
Задаёт критерий certificateValid.
void setExtendedKeyUsage(Set<String> keyPurposeSet)
Задаёт критерий extendedKeyUsage.
void setIssuer(byte[] issuerDN)
Задаёт критерий издателя.
void setIssuer(String issuerDN)
Устарел.
Вместо него используйте setIssuer(X500Principal) или setIssuer(byte[]).
void setIssuer(X500Principal issuer)
Задаёт критерий издателя.
void setKeyUsage(boolean[] keyUsage)
Задаёт критерий keyUsage.
void setMatchAllSubjectAltNames(boolean matchAllNames)
Включает или отключает сопоставление со всеми именами subjectAlternativeNames, указанными в методах setSubjectAlternativeNames или addSubjectAlternativeName.
void setNameConstraints(byte[] bytes)
Задаёт критерий ограничений имён.
void setPathToNames(Collection<List<?>> names)
Задаёт критерий pathToNames.
void setPolicy(Set<String> certPolicySet)
Задаёт ограничение политик.
void setPrivateKeyValid(Date privateKeyValid)
Задаёт критерий privateKeyValid.
void setSerialNumber(BigInteger serial)
Задаёт критерий серийного номера.
void setSubject(byte[] subjectDN)
Задаёт критерий субъекта.
void setSubject(String subjectDN)
Устарел.
Вместо него используйте setSubject(X500Principal) или setSubject(byte[]).
void setSubject(X500Principal subject)
Задаёт критерий субъекта.
void setSubjectAlternativeNames(Collection<List<?>> names)
Задаёт критерий subjectAlternativeNames.
void setSubjectKeyIdentifier(byte[] subjectKeyID)
Задаёт критерий subjectKeyIdentifier.
void setSubjectPublicKey(byte[] key)
Задаёт критерий subjectPublicKey.
void setSubjectPublicKey(PublicKey key)
Задаёт критерий subjectPublicKey.
void setSubjectPublicKeyAlgID(String oid)
Задаёт критерий subjectPublicKeyAlgID.
String toString()
Возвращает текстовое представление CertSelector.

Методы, объявленные в классе Object

equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарел и будет удалён: этот элемент API может быть удалён в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени.

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

X509CertSelector

public X509CertSelector()
Создает X509CertSelector. Изначально критерии не заданы, поэтому подойдет любой X509Certificate.

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

setCertificate

public void setCertificate(X509Certificate cert)
Задает критерий certificateEquals. Указанный X509Certificate должен быть равен X509Certificate, переданному методу match. Если null, эта проверка не выполняется.

Этот метод особенно полезен, когда требуется сопоставить один сертификат. Хотя вместе с критерием certificateEquals можно задать и другие критерии, обычно это непрактично или не требуется.

Параметры:
cert — X509Certificate для сопоставления (или null)
См. также:
  • getCertificate()

setSerialNumber

public void setSerialNumber(BigInteger serial)
Задает критерий serialNumber. Указанный серийный номер должен совпадать с серийным номером сертификата в X509Certificate. Если null, подойдет любой серийный номер сертификата.
Параметры:
serial — серийный номер сертификата для сопоставления (или null)
См. также:
  • getSerialNumber()

setIssuer

public void setIssuer(X500Principal issuer)
Задает критерий издателя. Указанное различающееся имя должно совпадать с различающимся именем издателя в X509Certificate. Если null, подойдет любое различающееся имя издателя.
Параметры:
issuer — различающееся имя в формате X500Principal (или null)
Начиная с:
1.5

setIssuer

@Deprecated(since="16") public void setIssuer(String issuerDN) throws IOException
Устарел.
Вместо него используйте setIssuer(X500Principal) или setIssuer(byte[]). Не следует полагаться на этот метод: он может не сопоставить некоторые сертификаты из-за потери информации о кодировании в строковом представлении некоторых различающихся имен в формате RFC 2253.
Задает критерий издателя. Указанное различающееся имя должно совпадать с различающимся именем издателя в X509Certificate. Если null, подойдет любое различающееся имя издателя.

Если issuerDN не является null, оно должно содержать различающееся имя в формате RFC 2253.

Параметры:
issuerDN — различающееся имя в формате RFC 2253 (или null)
Исключения:
IOException — если произошла ошибка разбора (неверный формат DN)
Внешние спецификации
  • RFC 2253: протокол облегченного доступа к каталогам (v3): представление различающихся имен в виде строк UTF-8

setIssuer

public void setIssuer(byte[] issuerDN) throws IOException
Задает критерий издателя. Указанное различающееся имя должно совпадать с различающимся именем издателя в X509Certificate. Если указано null, критерий издателя отключается и подойдет любое различающееся имя издателя.

Если issuerDN не является null, оно должно содержать одно различающееся имя в кодировке DER, как определено в X.501. Обозначение 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)) }

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

Параметры:
issuerDN — массив байтов, содержащий различающееся имя в кодировке ASN.1 DER (или null)
Исключения:
IOException — если произошла ошибка кодирования (неверный формат DN)

setSubject

public void setSubject(X500Principal subject)
Задает критерий субъекта. Указанное различающееся имя должно совпадать с различающимся именем субъекта в X509Certificate. Если null, подойдет любое различающееся имя субъекта.
Параметры:
subject — различающееся имя в формате X500Principal (или null)
Начиная с:
1.5

setSubject

@Deprecated(since="16") public void setSubject(String subjectDN) throws IOException
Устарел.
Вместо него используйте setSubject(X500Principal) или setSubject(byte[]). Не следует полагаться на этот метод: он может не сопоставить некоторые сертификаты из-за потери информации о кодировании в строковом представлении некоторых различающихся имен в формате RFC 2253.
Задает критерий субъекта. Указанное различающееся имя должно совпадать с различающимся именем субъекта в X509Certificate. Если null, подойдет любое различающееся имя субъекта.

Если subjectDN не является null, оно должно содержать различающееся имя в формате RFC 2253.

Параметры:
subjectDN — различающееся имя в формате RFC 2253 (или null)
Исключения:
IOException — если произошла ошибка разбора (неверный формат DN)
Внешние спецификации
  • RFC 2253: протокол облегченного доступа к каталогам (v3): представление различающихся имен в виде строк UTF-8

setSubject

public void setSubject(byte[] subjectDN) throws IOException
Задает критерий субъекта. Указанное различающееся имя должно совпадать с различающимся именем субъекта в X509Certificate. Если null, подойдет любое различающееся имя субъекта.

Если subjectDN не является null, оно должно содержать одно различающееся имя в кодировке DER, как определено в X.501. Обозначение ASN.1 для этой структуры см. в setIssuer(byte[]).

Параметры:
subjectDN — массив байтов, содержащий различающееся имя в формате ASN.1 DER (или null)
Исключения:
IOException — если произошла ошибка кодирования (неверный формат DN)

setSubjectKeyIdentifier

public void setSubjectKeyIdentifier(byte[] subjectKeyID)
Задает критерий subjectKeyIdentifier. X509Certificate должен содержать расширение SubjectKeyIdentifier, содержимое которого соответствует указанному значению критерия. Если значение критерия равно null, проверка subjectKeyIdentifier не выполняется.

Если subjectKeyID не является null, оно должно содержать одно значение в кодировке DER, соответствующее содержимому значения расширения SubjectKeyIdentifier (без идентификатора объекта, настройки критичности и объемлющей строки OCTET STRING). Обозначение ASN.1 для этой структуры приведено ниже.

SubjectKeyIdentifier ::= KeyIdentifier

KeyIdentifier ::= OCTET STRING

Так как формат идентификаторов ключей субъекта не определен ни одним стандартом, X509CertSelector не выполняет их разбор. Вместо этого значения сравниваются побайтно.

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

Параметры:
subjectKeyID — идентификатор ключа субъекта (или null)
См. также:
  • getSubjectKeyIdentifier()

setAuthorityKeyIdentifier

public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
Задает критерий authorityKeyIdentifier. X509Certificate должен содержать расширение AuthorityKeyIdentifier, значение которого соответствует указанному значению критерия. Если значение критерия равно null, проверка authorityKeyIdentifier не выполняется.

Если authorityKeyID не является null, оно должно содержать одно значение в кодировке DER, соответствующее содержимому значения расширения AuthorityKeyIdentifier (без идентификатора объекта, настройки критичности и объемлющей строки OCTET STRING). Обозначение ASN.1 для этой структуры приведено ниже.

AuthorityKeyIdentifier ::= SEQUENCE {
   keyIdentifier             [0] KeyIdentifier           OPTIONAL,
   authorityCertIssuer       [1] GeneralNames            OPTIONAL,
   authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL  }

KeyIdentifier ::= OCTET STRING

X509CertSelector не выполняет разбор идентификаторов ключей центра сертификации. Вместо этого значения сравниваются побайтно.

Когда заполняется поле keyIdentifier объекта AuthorityKeyIdentifier, значение обычно берется из расширения SubjectKeyIdentifier сертификата издателя. Однако обратите внимание: результат X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object Identifier>) для сертификата издателя НЕЛЬЗЯ напрямую использовать в качестве входных данных для setAuthorityKeyIdentifier. Это связано с тем, что SubjectKeyIdentifier содержит только строку OCTET STRING с KeyIdentifier, а не SEQUENCE из KeyIdentifier, GeneralNames и CertificateSerialNumber. Чтобы использовать значение расширения SubjectKeyIdentifier сертификата издателя, необходимо извлечь значение вложенной строки OCTET STRING KeyIdentifier, а затем закодировать эту строку OCTET STRING в DER внутри SEQUENCE. Подробнее о SubjectKeyIdentifier см. в setSubjectKeyIdentifier(byte[] subjectKeyID).

Также обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.

Параметры:
authorityKeyID — идентификатор ключа центра сертификации (или null)
См. также:
  • getAuthorityKeyIdentifier()

setCertificateValid

public void setCertificateValid(Date certValid)
Задает критерий certificateValid. Указанная дата должна попадать в период действия сертификата X509Certificate. Если null, проверка certificateValid не выполняется.

Обратите внимание, что переданный здесь Date клонируется для защиты от последующих изменений.

Параметры:
certValid — Date для проверки (или null)
См. также:
  • getCertificateValid()

setPrivateKeyValid

public void setPrivateKeyValid(Date privateKeyValid)
Задает критерий privateKeyValid. Указанная дата должна попадать в период действия закрытого ключа X509Certificate. Если null, проверка privateKeyValid не выполняется.

Обратите внимание, что переданный здесь Date клонируется для защиты от последующих изменений.

Параметры:
privateKeyValid — Date для проверки (или null)
См. также:
  • getPrivateKeyValid()

setSubjectPublicKeyAlgID

public void setSubjectPublicKeyAlgID(String oid) throws IOException
Задает критерий subjectPublicKeyAlgID. X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID не выполняется.
Параметры:
oid — идентификатор объекта (OID) алгоритма для проверки (или null). OID представляется набором неотрицательных целых чисел, разделенных точками.
Исключения:
IOException — если OID недопустим, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39.
См. также:
  • getSubjectPublicKeyAlgID()

setSubjectPublicKey

public void setSubjectPublicKey(PublicKey key)
Задает критерий subjectPublicKey. X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не выполняется.
Параметры:
key — открытый ключ субъекта для проверки (или null)
См. также:
  • getSubjectPublicKey()

setSubjectPublicKey

public void setSubjectPublicKey(byte[] key) throws IOException
Задает критерий subjectPublicKey. X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не выполняется.

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

Если key не является null, оно должно содержать одну структуру SubjectPublicKeyInfo в кодировке DER, как определено в X.509. Обозначение ASN.1 для этой структуры приведено ниже.

SubjectPublicKeyInfo  ::=  SEQUENCE  {
  algorithm            AlgorithmIdentifier,
  subjectPublicKey     BIT STRING  }

AlgorithmIdentifier  ::=  SEQUENCE  {
  algorithm               OBJECT IDENTIFIER,
  parameters              ANY DEFINED BY algorithm OPTIONAL  }
                             -- contains a value of the type
                             -- registered for use with the
                             -- algorithm object identifier value

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

Параметры:
key — массив байтов, содержащий открытый ключ субъекта в формате ASN.1 DER (или null)
Исключения:
IOException — если произошла ошибка кодирования (неверный формат открытого ключа субъекта)
См. также:
  • getSubjectPublicKey()

setKeyUsage

public void setKeyUsage(boolean[] keyUsage)
Задает критерий keyUsage. X509Certificate должен разрешать указанные значения keyUsage. Если null, проверка keyUsage не выполняется. Обратите внимание, что X509Certificate без расширения keyUsage неявно разрешает все значения keyUsage.

Обратите внимание, что переданный здесь массив boolean клонируется для защиты от последующих изменений.

Параметры:
keyUsage — массив boolean в том же формате, что и массив boolean, возвращаемый методом X509Certificate.getKeyUsage(). Или null.
См. также:
  • getKeyUsage()

setExtendedKeyUsage

public void setExtendedKeyUsage(Set<String> keyPurposeSet) throws IOException
Задает критерий extendedKeyUsage. X509Certificate должен разрешать указанные назначения ключа в своем расширении extended key usage. Если keyPurposeSet пуст или равен null, проверка extendedKeyUsage не выполняется. Обратите внимание, что X509Certificate без расширения extendedKeyUsage неявно разрешает все назначения ключа.

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

Параметры:
keyPurposeSet — Set идентификаторов OID назначений ключа в строковом формате (или null). Каждый OID представляется набором неотрицательных целых чисел, разделенных точками.
Исключения:
IOException — если OID недопустим, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39.
См. также:
  • getExtendedKeyUsage()

setMatchAllSubjectAltNames

public void setMatchAllSubjectAltNames(boolean matchAllNames)
Включает или отключает сопоставление всех subjectAlternativeNames, указанных методами setSubjectAlternativeNames или addSubjectAlternativeName. Если сопоставление включено, X509Certificate должен содержать все указанные альтернативные имена субъекта. Если оно отключено, X509Certificate должен содержать хотя бы одно из указанных альтернативных имен субъекта.

По умолчанию флаг matchAllNames равен true.

Параметры:
matchAllNames — если true, флаг включен; если false, флаг отключен.
См. также:
  • getMatchAllSubjectAltNames()

setSubjectAlternativeNames

public void setSubjectAlternativeNames(Collection<List<?>> names) throws IOException
Задает критерий subjectAlternativeNames. В зависимости от значения флага matchAllNames, X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них (см. setMatchAllSubjectAltNames).

Этот метод позволяет вызывающему коду одним вызовом задать полный набор альтернативных имен субъекта для критерия subjectAlternativeNames. Указанное значение заменяет предыдущее значение критерия subjectAlternativeNames.

Параметр names (если не равен null) — это Collection, содержащий одну запись для каждого имени, включаемого в критерий альтернативных имен субъекта. Каждая запись — это List, первый элемент которого — Integer (тип имени, 0–8), а второй — String или массив байтов (имя в строковом формате или в формате ASN.1 DER соответственно). Имена одного типа могут повторяться. Если в качестве значения этого аргумента передано null, проверка subjectAlternativeNames выполняться не будет.

Каждое альтернативное имя субъекта в Collection можно указать как String или как массив байтов в кодировке ASN.1. Подробнее о используемых форматах см. в описаниях методов addSubjectAlternativeName(int type, String name) и addSubjectAlternativeName(int type, byte [] name).

Примечание: для различающихся имен указывайте массив байтов, а не строку. Подробнее см. примечание в описании метода addSubjectAlternativeName(int, String).

Обратите внимание, что параметр names может содержать повторяющиеся имена (одинаковые имя и тип имени), однако такие дубликаты могут быть удалены из Collection имен, возвращаемого методом getSubjectAlternativeNames.

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

Параметры:
names — Collection имен (или null)
Исключения:
IOException — если произошла ошибка разбора
См. также:
  • getSubjectAlternativeNames()

addSubjectAlternativeName

public void addSubjectAlternativeName(int type, String name) throws IOException
Добавляет имя в критерий subjectAlternativeNames. В зависимости от значения флага matchAllNames, X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них (см. setMatchAllSubjectAltNames).

Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к предыдущему значению критерия subjectAlternativeNames. Если указанное имя является дубликатом, оно может быть проигнорировано.

Имя задается в строковом формате. Для имен RFC 822, DNS и URI используются общепринятые строковые форматы соответствующих типов (с учетом ограничений, приведенных в RFC 5280). Имена IPv4-адресов задаются в формате четырех десятичных октетов, разделенных точками. Имена OID-адресов представляются последовательностью неотрицательных целых чисел, разделенных точками. Имена каталогов (различающиеся имена) задаются в формате RFC 2253. Для otherNames, имен X.400, имен сторон EDI, имен IPv6-адресов и имен других типов стандартный строковый формат не определен. Их следует задавать с помощью метода addSubjectAlternativeName(int type, byte [] name).

Примечание: для различающихся имен используйте вместо этого addSubjectAlternativeName(int, byte[]). Не следует полагаться на этот метод: он может не сопоставить некоторые сертификаты из-за потери информации о кодировании в строковом представлении некоторых различающихся имен в формате RFC 2253.

Параметры:
type — тип имени (0–8, как указано в RFC 5280, разделе 4.2.1.6)
name — имя в строковом формате (не null)
Исключения:
IOException — если произошла ошибка разбора
Внешние спецификации
  • RFC 2253: протокол облегченного доступа к каталогам (v3): представление различающихся имен в виде строк UTF-8
  • RFC 822: стандарт формата текстовых сообщений ARPA Internet

addSubjectAlternativeName

public void addSubjectAlternativeName(int type, byte[] name) throws IOException
Добавляет имя в критерий subjectAlternativeNames. В зависимости от значения флага matchAllNames, X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них (см. setMatchAllSubjectAltNames).

Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к предыдущему значению критерия subjectAlternativeNames. Если указанное имя является дубликатом, оно может быть проигнорировано.

Имя задается в виде массива байтов. Этот массив байтов должен содержать имя в кодировке DER, как оно представлено в структуре GeneralName, определенной в RFC 5280 и X.509. Закодированный массив байтов должен содержать только закодированное значение имени, без тега, связанного с именем в структуре GeneralName. Определение ASN.1 этой структуры приведено ниже.

 GeneralName ::= CHOICE {
      otherName                       [0]     OtherName,
      rfc822Name                      [1]     IA5String,
      dNSName                         [2]     IA5String,
      x400Address                     [3]     ORAddress,
      directoryName                   [4]     Name,
      ediPartyName                    [5]     EDIPartyName,
      uniformResourceIdentifier       [6]     IA5String,
      iPAddress                       [7]     OCTET STRING,
      registeredID                    [8]     OBJECT IDENTIFIER}

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

Параметры:
type — тип имени (0–8, как указано выше)
name — массив байтов, содержащий имя в кодировке ASN.1 DER
Исключения:
IOException — если произошла ошибка разбора

setNameConstraints

public void setNameConstraints(byte[] bytes) throws IOException
Задает критерий ограничений имен. Субъект и альтернативные имена субъекта в X509Certificate должны удовлетворять указанным ограничениям имен.

Ограничения имен задаются в виде массива байтов. Этот массив байтов должен содержать ограничения имен в кодировке DER, как они представлены в структуре NameConstraints, определенной в RFC 5280 и X.509. Определение ASN.1 этой структуры приведено ниже.

 NameConstraints ::= SEQUENCE {
      permittedSubtrees       [0]     GeneralSubtrees OPTIONAL,
      excludedSubtrees        [1]     GeneralSubtrees OPTIONAL }

 GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree

 GeneralSubtree ::= SEQUENCE {
      base                    GeneralName,
      minimum         [0]     BaseDistance DEFAULT 0,
      maximum         [1]     BaseDistance OPTIONAL }

 BaseDistance ::= INTEGER (0..MAX)

 GeneralName ::= CHOICE {
      otherName                       [0]     OtherName,
      rfc822Name                      [1]     IA5String,
      dNSName                         [2]     IA5String,
      x400Address                     [3]     ORAddress,
      directoryName                   [4]     Name,
      ediPartyName                    [5]     EDIPartyName,
      uniformResourceIdentifier       [6]     IA5String,
      iPAddress                       [7]     OCTET STRING,
      registeredID                    [8]     OBJECT IDENTIFIER}

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

Параметры:
bytes — массив байтов, содержащий кодировку ASN.1 DER расширения NameConstraints, используемого для проверки ограничений имен. Включается только значение расширения, без OID и флага критичности. Может быть равен null; в этом случае проверка ограничений имен выполняться не будет.
Исключения:
IOException — если произошла ошибка разбора
См. также:
  • getNameConstraints()

setBasicConstraints

public void setBasicConstraints(int minMaxPathLen)
Задает ограничение basic constraints. Если значение больше или равно нулю, X509Certificates должен содержать расширение basicConstraints со значением pathLen не меньше этого значения. Если значение равно -2, принимаются только сертификаты конечных сущностей. Если значение равно -1, проверка не выполняется.

Это ограничение полезно при построении пути сертификации в прямом направлении (от целевого сертификата к якорю доверия). Если построена частичная цепочка, значение maxPathLen каждого сертификата-кандидата должно быть не меньше количества сертификатов в частичной цепочке.

Параметры:
minMaxPathLen — значение ограничения basic constraints
Исключения:
IllegalArgumentException — если значение меньше -2
См. также:
  • getBasicConstraints()

setPolicy

public void setPolicy(Set<String> certPolicySet) throws IOException
Задает ограничение политики. X509Certificate должен включать хотя бы одну из указанных политик в расширение certificate policies. Если certPolicySet пуст, то X509Certificate должен включать хотя бы одну указанную политику в расширение certificate policies. Если certPolicySet равен null, проверка политик выполняться не будет.

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

Параметры:
certPolicySet — Set идентификаторов OID политик сертификата в строковом формате (или null). Каждый OID представляется набором неотрицательных целых чисел, разделенных точками.
Исключения:
IOException — если произошла ошибка разбора OID, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39.
См. также:
  • getPolicy()

setPathToNames

public void setPathToNames(Collection<List<?>> names) throws IOException
Задает критерий pathToNames. X509Certificate не должен содержать ограничений имен, которые препятствовали бы построению пути к указанным именам.

Этот метод позволяет вызывающему коду одним вызовом указать полный набор имен, которые должны допускаться ограничениями имен X509Certificates. Указанное значение заменяет предыдущее значение критерия pathToNames.

Это ограничение полезно при построении пути сертификации в прямом направлении (от целевого объекта к центру сертификации). Если частичный путь уже построен, ни один сертификат-кандидат не должен содержать ограничений имен, которые препятствовали бы построению пути к любому из имен в частичном пути.

Параметр names (если он не null) представляет собой Collection с одной записью для каждого имени, включаемого в критерий pathToNames. Каждая запись — это List, первый элемент которого является Integer (тип имени, 0–8), а второй — String или массивом байтов (имя в строковом формате или в формате ASN.1 DER соответственно). Имена одного типа могут повторяться. Если в качестве значения этого аргумента передано null, проверка pathToNames выполняться не будет.

Каждое имя в Collection можно указать как String или как массив байтов в кодировке ASN.1. Подробнее об используемых форматах см. в описании методов addPathToName(int type, String name) и addPathToName(int type, byte [] name).

Примечание: для различительных имен указывайте массив байтов, а не строку. Дополнительные сведения см. в примечании к методу addPathToName(int, String).

Обратите внимание, что параметр names может содержать повторяющиеся имена (одинаковые имя и тип имени), однако они могут быть удалены из Collection имен, возвращаемого методом getPathToNames.

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

Параметры:
names — Collection с одной записью для каждого имени (или null)
Исключения:
IOException — если произошла ошибка разбора
См. также:
  • getPathToNames()

addPathToName

public void addPathToName(int type, String name) throws IOException
Добавляет имя в критерий pathToNames. X509Certificate не должен содержать ограничений имен, которые препятствовали бы построению пути к указанному имени.

Этот метод позволяет вызывающему коду добавить имя в набор имен, которые должны допускаться ограничениями имен X509Certificates. Указанное имя добавляется к любому предыдущему значению критерия pathToNames. Если имя повторяется, оно может быть проигнорировано.

Имя задается в строковом формате. Для имен RFC 822, DNS и URI используются общепринятые строковые форматы соответствующих типов (с учетом ограничений, приведенных в RFC 5280). Имена IPv4-адресов задаются в виде четырех десятичных чисел, разделенных точками. Имена OID-адресов представляются последовательностью неотрицательных целых чисел, разделенных точками. Имена каталогов (различительные имена) задаются в формате RFC 2253. Для otherNames, имен X.400, имен сторон EDI, имен IPv6-адресов и других типов имен стандартный строковый формат не определен. Их следует указывать с помощью метода addPathToName(int type, byte [] name).

Примечание: для различительных имен используйте вместо этого addPathToName(int, byte[]). На этот метод не следует полагаться, поскольку он может не сопоставить некоторые сертификаты из-за потери сведений о кодировке в строковом представлении некоторых различительных имен в формате RFC 2253.

Параметры:
type — тип имени (0–8, согласно разделу 4.2.1.6 RFC 5280)
name — имя в строковом формате
Исключения:
IOException — если произошла ошибка разбора

addPathToName

public void addPathToName(int type, byte[] name) throws IOException
Добавляет имя в критерий pathToNames. X509Certificate не должен содержать ограничений имен, которые препятствовали бы построению пути к указанному имени.

Этот метод позволяет вызывающему коду добавить имя в набор имен, которые должны допускаться ограничениями имен X509Certificates. Указанное имя добавляется к любому предыдущему значению критерия pathToNames. Если имя повторяется, оно может быть проигнорировано.

Имя задается в виде массива байтов. Этот массив байтов должен содержать имя в кодировке DER, как оно представлено в структуре GeneralName, определенной в RFC 5280 и X.509. Определение ASN.1 этой структуры приведено в документации к addSubjectAlternativeName(int type, byte [] name).

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

Параметры:
type — тип имени (0–8, согласно разделу 4.2.1.6 RFC 5280)
name — массив байтов, содержащий имя в кодировке ASN.1 DER
Исключения:
IOException — если произошла ошибка разбора

getCertificate

public X509Certificate getCertificate()
Возвращает критерий certificateEquals. Указанный X509Certificate должен быть равен X509Certificate, переданному методу match. Если null, эта проверка не выполняется.
Возвращает:
X509Certificate для сопоставления (или null)
См. также:
  • setCertificate(X509Certificate)

getSerialNumber

public BigInteger getSerialNumber()
Возвращает критерий serialNumber. Указанный серийный номер должен совпадать с серийным номером сертификата в X509Certificate. Если null, подойдет любой серийный номер сертификата.
Возвращает:
серийный номер сертификата для сопоставления (или null)
См. также:
  • setSerialNumber(BigInteger)

getIssuer

public X500Principal getIssuer()
Возвращает критерий издателя в виде X500Principal. Это различительное имя должно совпадать с различительным именем издателя в X509Certificate. Если null, критерий издателя отключен, и подойдет любое различительное имя издателя.
Возвращает:
требуемое различительное имя издателя в виде X500Principal (или null)
С версии:
1.5

getIssuerAsString

@Deprecated(since="16") public String getIssuerAsString()
Устарело.
Вместо этого используйте getIssuer() или getIssuerAsBytes(). На этот метод не следует полагаться, поскольку он может не сопоставить некоторые сертификаты из-за потери сведений о кодировке в строковом представлении некоторых различительных имен в формате RFC 2253.
Возвращает критерий издателя в виде String. Это различительное имя должно совпадать с различительным именем издателя в X509Certificate. Если null, критерий издателя отключен, и подойдет любое различительное имя издателя.

Если возвращаемое значение не равно null, оно представляет собой различительное имя в формате RFC 2253.

Возвращает:
требуемое различительное имя издателя в формате RFC 2253 (или null)
Внешние спецификации
  • RFC 2253: протокол облегченного доступа к каталогам (v3): представление различительных имен в виде строк UTF-8

getIssuerAsBytes

public byte[] getIssuerAsBytes() throws IOException
Возвращает критерий издателя в виде массива байтов. Это различительное имя должно совпадать с различительным именем издателя в X509Certificate. Если null, критерий издателя отключен, и подойдет любое различительное имя издателя.

Если возвращаемое значение не равно null, оно представляет собой массив байтов, содержащий одно различительное имя в кодировке DER, определенное в X.501. Обозначение ASN.1 для этой структуры приведено в документации к setIssuer(byte[]).

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

Возвращает:
массив байтов, содержащий требуемое различительное имя издателя в формате ASN.1 DER (или null)
Исключения:
IOException — если произошла ошибка кодирования

getSubject

public X500Principal getSubject()
Возвращает критерий субъекта в виде X500Principal. Это различительное имя должно совпадать с различительным именем субъекта в X509Certificate. Если null, критерий субъекта отключен, и подойдет любое различительное имя субъекта.
Возвращает:
требуемое различительное имя субъекта в виде X500Principal (или null)
С версии:
1.5

getSubjectAsString

@Deprecated(since="16") public String getSubjectAsString()
Устарело.
Вместо этого используйте getSubject() или getSubjectAsBytes(). На этот метод не следует полагаться, поскольку он может не сопоставить некоторые сертификаты из-за потери сведений о кодировке в строковом представлении некоторых различительных имен в формате RFC 2253.
Возвращает критерий субъекта в виде String. Это различительное имя должно совпадать с различительным именем субъекта в X509Certificate. Если null, критерий субъекта отключен, и подойдет любое различительное имя субъекта.

Если возвращаемое значение не равно null, оно представляет собой различительное имя в формате RFC 2253.

Возвращает:
требуемое различительное имя субъекта в формате RFC 2253 (или null)
Внешние спецификации
  • RFC 2253: протокол облегченного доступа к каталогам (v3): представление различительных имен в виде строк UTF-8

getSubjectAsBytes

public byte[] getSubjectAsBytes() throws IOException
Возвращает критерий субъекта в виде массива байтов. Это различительное имя должно совпадать с различительным именем субъекта в X509Certificate. Если null, критерий субъекта отключен, и подойдет любое различительное имя субъекта.

Если возвращаемое значение не равно null, оно представляет собой массив байтов, содержащий одно различительное имя в кодировке DER, определенное в X.501. Обозначение ASN.1 для этой структуры приведено в документации к setSubject(byte[]).

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

Возвращает:
массив байтов, содержащий требуемое различительное имя субъекта в формате ASN.1 DER (или null)
Исключения:
IOException — если произошла ошибка кодирования

getSubjectKeyIdentifier

public byte[] getSubjectKeyIdentifier()
Возвращает критерий subjectKeyIdentifier. X509Certificate должен содержать расширение SubjectKeyIdentifier с указанным значением. Если null, проверка subjectKeyIdentifier выполняться не будет.

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

Возвращает:
идентификатор ключа (или null)
См. также:
  • setSubjectKeyIdentifier(byte[])

getAuthorityKeyIdentifier

public byte[] getAuthorityKeyIdentifier()
Возвращает критерий authorityKeyIdentifier. X509Certificate должен содержать расширение AuthorityKeyIdentifier с указанным значением. Если null, проверка authorityKeyIdentifier выполняться не будет.

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

Возвращает:
идентификатор ключа (или null)
См. также:
  • setAuthorityKeyIdentifier(byte[])

getCertificateValid

public Date getCertificateValid()
Возвращает критерий certificateValid. Указанная дата должна попадать в период действия сертификата для X509Certificate. Если null, проверка certificateValid выполняться не будет.

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

Возвращает:
Date для проверки (или null)
См. также:
  • setCertificateValid(Date)

getPrivateKeyValid

public Date getPrivateKeyValid()
Возвращает критерий privateKeyValid. Указанная дата должна попадать в период действия закрытого ключа для X509Certificate. Если null, проверка privateKeyValid выполняться не будет.

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

Возвращает:
Date для проверки (или null)
См. также:
  • setPrivateKeyValid(Date)

getSubjectPublicKeyAlgID

public String getSubjectPublicKeyAlgID()
Возвращает критерий subjectPublicKeyAlgID. X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID выполняться не будет.
Возвращает:
идентификатор объекта (OID) алгоритма подписи, который необходимо проверить (или null). OID представляется набором неотрицательных целых чисел, разделенных точками.
См. также:
  • setSubjectPublicKeyAlgID(String)

getSubjectPublicKey

public PublicKey getSubjectPublicKey()
Возвращает критерий subjectPublicKey. X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey выполняться не будет.
Возвращает:
открытый ключ субъекта для проверки (или null)
См. также:
  • setSubjectPublicKey(PublicKey)

getKeyUsage

public boolean[] getKeyUsage()
Возвращает критерий keyUsage. X509Certificate должен допускать указанные значения keyUsage. Если значение равно null, проверка keyUsage выполняться не будет.

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

Возвращает:
массив логических значений в том же формате, что и массив, возвращаемый методом X509Certificate.getKeyUsage(). Или null.
См. также:
  • setKeyUsage(boolean[])

getExtendedKeyUsage

public Set<String> getExtendedKeyUsage()
Возвращает критерий extendedKeyUsage. X509Certificate должен допускать указанные назначения ключа в расширении extended key usage. Если возвращаемое keyPurposeSet пусто или равно null, проверка extendedKeyUsage выполняться не будет. Обратите внимание, что X509Certificate без расширения extendedKeyUsage неявно допускает все назначения ключа.
Возвращает:
неизменяемый Set OID назначений ключа в строковом формате (или null)
См. также:
  • setExtendedKeyUsage(Set)

getMatchAllSubjectAltNames

public boolean getMatchAllSubjectAltNames()
Указывает, должен ли X509Certificate содержать все или хотя бы одно из subjectAlternativeNames, заданных методами setSubjectAlternativeNames или addSubjectAlternativeName. Если true, X509Certificate должен содержать все указанные альтернативные имена субъекта. Если false, X509Certificate должен содержать хотя бы одно из указанных альтернативных имен субъекта.
Возвращает:
true, если флаг включен; false, если флаг отключен. По умолчанию флаг имеет значение true.
См. также:
  • setMatchAllSubjectAltNames(boolean)

getSubjectAlternativeNames

public Collection<List<?>> getSubjectAlternativeNames()
Возвращает копию критерия subjectAlternativeNames. В зависимости от значения флага matchAllNames (см. getMatchAllSubjectAltNames), X509Certificate должен содержать все или хотя бы одно из указанных subjectAlternativeNames. Если возвращаемое значение равно null, проверка subjectAlternativeNames выполняться не будет.

Если возвращаемое значение не равно null, оно представляет собой Collection с одной записью для каждого имени, включаемого в критерий альтернативных имен субъекта. Каждая запись — это List, первый элемент которого является Integer (тип имени, 0–8), а второй — String или массивом байтов (имя в строковом формате или в формате ASN.1 DER соответственно). Имена одного типа могут повторяться. Обратите внимание, что возвращаемое Collection может содержать повторяющиеся имена (одинаковые имя и тип имени).

Каждое альтернативное имя субъекта в Collection можно указать как String или как массив байтов в кодировке ASN.1. Подробнее об используемых форматах см. в описании методов addSubjectAlternativeName(int type, String name) и addSubjectAlternativeName(int type, byte [] name).

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

Возвращает:
Collection имен (или null)
См. также:
  • setSubjectAlternativeNames(Collection)

getNameConstraints

public byte[] getNameConstraints()
Возвращает критерий ограничений имен. X509Certificate должен иметь субъект и альтернативные имена субъекта, соответствующие указанным ограничениям имен.

Ограничения имен возвращаются в виде массива байтов. Этот массив байтов содержит форму DER ограничений имен, как она представлена в структуре NameConstraints, определенной в RFC 5280 и X.509. Обозначение ASN.1 для этой структуры приведено в документации к setNameConstraints(byte [] bytes).

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

Возвращает:
массив байтов, содержащий кодировку ASN.1 DER расширения NameConstraints, используемого для проверки ограничений имен. null, если проверка ограничений имен выполняться не будет.
См. также:
  • setNameConstraints(byte[])

getBasicConstraints

public int getBasicConstraints()
Возвращает ограничение basic constraints. Если значение больше или равно нулю, X509Certificates должен содержать расширение basicConstraints со значением pathLen не меньше указанного значения. Если значение равно -2, допускаются только сертификаты конечных сущностей. Если значение равно -1, проверка basicConstraints не выполняется.
Возвращает:
значение ограничения basic constraints
См. также:
  • setBasicConstraints(int)

getPolicy

public Set<String> getPolicy()
Возвращает критерий политики. X509Certificate должен включать как минимум одну из указанных политик в расширении certificate policies. Если возвращаемое Set пусто, X509Certificate должен включать в расширение certificate policies хотя бы какую-либо указанную политику. Если возвращаемое Set равно null, проверка политики выполняться не будет.
Возвращает:
неизменяемый Set OID политик сертификата в строковом формате (или null)
См. также:
  • setPolicy(Set)

getPathToNames

public Collection<List<?>> getPathToNames()
Возвращает копию критерия pathToNames. X509Certificate не должен содержать ограничений имен, которые препятствовали бы построению пути к указанным именам. Если возвращаемое значение равно null, проверка pathToNames выполняться не будет.

Если возвращаемое значение не равно null, оно представляет собой Collection с одной записью для каждого имени, включаемого в критерий pathToNames. Каждая запись — это List, первый элемент которого является Integer (тип имени, 0–8), а второй — String или массивом байтов (имя в строковом формате или в формате ASN.1 DER соответственно). Имена одного типа могут повторяться. Обратите внимание, что возвращаемое Collection может содержать повторяющиеся имена (одинаковые имя и тип имени).

Каждое имя в Collection можно указать как String или как массив байтов в кодировке ASN.1. Подробнее об используемых форматах см. в описании методов addPathToName(int type, String name) и addPathToName(int type, byte [] name).

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

Возвращает:
Collection имен (или null)
См. также:
  • setPathToNames(Collection)

toString

public String toString()
Возвращает строковое представление CertSelector, пригодное для вывода.
Переопределяет:
toString в классе Object
Возвращает:
String с описанием содержимого CertSelector

match

public boolean match(Certificate cert)
Определяет, следует ли выбрать Certificate.
Определен в:
match в интерфейсе CertSelector
Параметры:
cert — Certificate для проверки
Возвращает:
true, если Certificate следует выбрать, иначе false

clone

public Object clone()
Возвращает копию этого объекта.
Определен в:
clone в интерфейсе CertSelector
Переопределяет:
clone в классе Object
Возвращает:
копию
См. также:
  • Cloneable

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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