Spec-Zone.ru › OpenJDK 25

Класс 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. Мы говорим «обычно», поскольку два удостоверяющих центра могут иметь одинаковое различительное имя и каждый выдать сертификат с одинаковым серийным номером. Другие уникальные сочетания включают критерии issuer, subject, subjectKeyIdentifier и/или subjectPublicKey.

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

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

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

Начиная с:
1.4
Внешние спецификации
  • RFC 5280: профиль инфраструктуры открытых ключей Internet X.509 для сертификатов и списков отзыва сертификатов (CRL)
См. также:
  • 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()
Возвращает ограничение basic constraints.
X509Certificate getCertificate()
Возвращает критерий certificateEquals.
Date getCertificateValid()
Возвращает критерий certificateValid.
Set<String> getExtendedKeyUsage()
Возвращает критерий extendedKeyUsage.
X500Principal getIssuer()
Возвращает критерий issuer в виде X500Principal.
byte[] getIssuerAsBytes()
Возвращает критерий issuer в виде массива байтов.
String getIssuerAsString()
Устарел.
Вместо него используйте getIssuer() или getIssuerAsBytes().
boolean[] getKeyUsage()
Возвращает критерий keyUsage.
boolean getMatchAllSubjectAltNames()
Указывает, должен ли X509Certificate содержать все или хотя бы одно из имён subjectAlternativeNames, заданных методами setSubjectAlternativeNames или addSubjectAlternativeName.
byte[] getNameConstraints()
Возвращает критерий ограничений имён.
Collection<List<?>> getPathToNames()
Возвращает копию критерия pathToNames.
Set<String> getPolicy()
Возвращает критерий policy.
Date getPrivateKeyValid()
Возвращает критерий privateKeyValid.
BigInteger getSerialNumber()
Возвращает критерий serialNumber.
X500Principal getSubject()
Возвращает критерий subject в виде X500Principal.
Collection<List<?>> getSubjectAlternativeNames()
Возвращает копию критерия subjectAlternativeNames.
byte[] getSubjectAsBytes()
Возвращает критерий subject в виде массива байтов.
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)
Задаёт ограничение basic constraints.
void setCertificate(X509Certificate cert)
Задаёт критерий certificateEquals.
void setCertificateValid(Date certValid)
Задаёт критерий certificateValid.
void setExtendedKeyUsage(Set<String> keyPurposeSet)
Задаёт критерий extendedKeyUsage.
void setIssuer(byte[] issuerDN)
Задаёт критерий issuer.
void setIssuer(String issuerDN)
Устарел.
Вместо него используйте setIssuer(X500Principal) или setIssuer(byte[]).
void setIssuer(X500Principal issuer)
Задаёт критерий 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)
Задаёт ограничение policy.
void setPrivateKeyValid(Date privateKeyValid)
Задаёт критерий privateKeyValid.
void setSerialNumber(BigInteger serial)
Задаёт критерий serialNumber.
void setSubject(byte[] subjectDN)
Задаёт критерий subject.
void setSubject(String subjectDN)
Устарел.
Вместо него используйте setSubject(X500Principal) или setSubject(byte[]).
void setSubject(X500Principal subject)
Задаёт критерий 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

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

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)
Задает критерий 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 некоторых различительных имен.
Задает критерий issuer. Указанное различительное имя должно совпадать с различительным именем издателя в X509Certificate. Если null, подойдет любое различительное имя издателя.

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

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

setIssuer

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

Если 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)
Задает критерий 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 некоторых различительных имен.
Задает критерий subject. Указанное различительное имя должно совпадать с различительным именем субъекта в X509Certificate. Если null, подойдет любое различительное имя субъекта.

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

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

setSubject

public void setSubject(byte[] subjectDN) throws IOException
Задает критерий subject. Указанное различительное имя должно совпадать с различительным именем субъекта в 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.

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

Параметры:
keyUsage — массив логических значений в том же формате, что и массив, возвращаемый методом 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 (см. setMatchAllSubjectAltNames), X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них.

Этот метод позволяет вызывающему коду одним вызовом задать полный набор альтернативных имен субъекта для критерия 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 (см. setMatchAllSubjectAltNames), X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них.

Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к предыдущему значению критерия 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: Протокол облегченного доступа к каталогам (версия 3): представление различительных имен строкой UTF-8
  • RFC 822: стандарт формата текстовых сообщений в сети ARPA

addSubjectAlternativeName

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

Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к предыдущему значению критерия 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: протокол доступа к облегчённым каталогам (версия 3): представление различительных имен строками 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: протокол доступа к облегчённым каталогам (версия 3): представление различительных имен строками 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 должен допускать указанные назначения ключа в своем расширении расширенного использования ключа. Если возвращаемое значение 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 должен включать хотя бы одну из указанных политик в расширение политик сертификата. Если возвращаемое значение Set пусто, X509Certificate должен включать хотя бы одну из указанных политик в расширение политик сертификата. Если возвращаемое значение 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, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/cert/X509CertSelector.html

Spec-Zone.ru

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