Spec-Zone.ru › OpenJDK 24

Класс X509CertSelector

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

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

Несколько критериев могут быть активированы (например, вызовом setIssuer(X500Principal) и setSerialNumber), что позволяет методу match обычно однозначно соответствовать одному сертификату. "Обычно" - потому что возможно, что два удостоверяющих центра (ЦС) имеют одинаковое имя и каждый выпустил сертификат с одинаковым серийным номером. Другие уникальные комбинации включают критерий эмитента, субъекта, идентификатора открытого ключа субъекта и/или критерий открытого ключа субъекта.

Определения расширений сертификатов X.509, упомянутых ниже, см. в RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile.

Доступность из нескольких потоков

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

С момента:
1.4
Внешние спецификации
  • RFC 5280: Протокол Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (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()
Возвращает критерий name constraints.
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)
Устанавливает критерий name constraints.
void setPathToNames(Collection<List<?>> names)
Устанавливает критерий pathToNames.
void setPolicy(Set<String> certPolicySet)
Устанавливает ограничение policy constraint.
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.

Методы, унаследованные от класса java.lang.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: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names

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: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names

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 значение, соответствующее содержанию значения расширения (без учёта идентификатора объекта, установки критичности и обертывающей строки OCTET) для расширения SubjectKeyIdentifier. 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 значение, соответствующее содержимому значения расширения (без учёта идентификатора объекта, установки критичности и окружающего OCTET STRING) для расширения AuthorityKeyIdentifier. 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 содержит только KeyIdentifier OCTET STRING, а не SEQUENCE из KeyIdentifier, GeneralNames и CertificateSerialNumber. Для использования значения расширения в SubjectKeyIdentifier сертификата издателя необходимо извлечь значение вложенного KeyIdentifier OCTET STRING, а затем закодировать этот OCTET STRING в DER внутри SEQUENCE. Более подробную информацию об SubjectKeyIdentifier см. в setSubjectKeyIdentifier(byte[] subjectKeyID).

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

Parameters:
authorityKeyID - идентификатор ключа авторитета (или null)
See Also:
  • getAuthorityKeyIdentifier()

setCertificateValid

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

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

Parameters:
certValid - дата, подлежащая проверке (или Date)
See Also:
  • getCertificateValid()

setPrivateKeyValid

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

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

Parameters:
privateKeyValid - дата, подлежащая проверке (или null)
See Also:
  • getPrivateKeyValid()

setSubjectPublicKeyAlgID

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

setSubjectPublicKey

public void setSubjectPublicKey(PublicKey key)
Устанавливает критерий subjectPublicKey. X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена.
Parameters:
key - открытый ключ субъекта, подлежащий проверке (или null)
See Also:
  • 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
 

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

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

setKeyUsage

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

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

Parameters:
keyUsage - массив boolean в том же формате, что и массив boolean, возвращаемый X509Certificate.getKeyUsage(). Или null.
See Also:
  • getKeyUsage()

setExtendedKeyUsage

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

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

Parameters:
keyPurposeSet - набор идентификаторов OID целей использования ключа в строковом формате (или null). Каждый OID представлен набором неотрицательных целых чисел, разделённых точками.
Throws:
IOException - если OID некорректен, например, первая компонента не равна 0, 1 или 2, или вторая компонента больше 39.
See Also:
  • getExtendedKeyUsage()

setMatchAllSubjectAltNames

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

Флаг matchAllNames по умолчанию true.

Parameters:
matchAllNames - если true, флаг включён; если false, флаг выключен.
See Also:
  • getMatchAllSubjectAltNames()

setSubjectAlternativeNames

public void setSubjectAlternativeNames(Collection<List<?>> names) throws IOException
Устанавливает критерий subjectAlternativeNames. Значение X509Certificate должно содержать все или хотя бы один из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. 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, чтобы предотвратить последующие изменения.

Parameters:
names - a Collection имён (или null)
Throws:
IOException - если произошла ошибка разбора
See Also:
  • getSubjectAlternativeNames()

addSubjectAlternativeName

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

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

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

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

Parameters:
type - тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6)
name - имя в строковом формате (не null)
Throws:
IOException - если произошла ошибка разбора
External Specifications
  • RFC 2253: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names
  • RFC 822: Стандарт для формата сообщений ARPA Интернет текста

addSubjectAlternativeName

public void addSubjectAlternativeName(int type, byte[] name) throws IOException
Добавляет имя в критерий subjectAlternativeNames. Значение X509Certificate должно содержать все или хотя бы одно из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. 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}
 

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

Parameters:
type - тип имени (0-8, как указано выше)
name - массив байтов, содержащий имя в кодированном формате ASN.1 DER
Throws:
IOException - если произошла ошибка разбора

setNameConstraints

public void setNameConstraints(byte[] bytes) throws IOException
Устанавливает критерий name constraints. Значение 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}
 

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

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

setBasicConstraints

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

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

Parameters:
minMaxPathLen - значение для ограничения basic constraints
Throws:
IllegalArgumentException - если значение меньше -2
See Also:
  • getBasicConstraints()

setPolicy

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

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

Parameters:
certPolicySet - a Set идентификаторов политик сертификата в строковом формате (или null). Каждый OID представляется набором неотрицательных целых чисел, разделенных точками.
Throws:
IOException - если произошла ошибка разбора OID, например, первый компонент не равен 0, 1 или 2, или второй компонент больше 39.
See Also:
  • 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 для защиты от последующих изменений.

Parameters:
names - a Collection со значением для каждого имени (или null)
Throws:
IOException - если произошла ошибка при разборе
See Also:
  • 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 party имена, IPv6 адреса или любых других типов имён) не определён стандартный строковой формат. Они должны быть указаны с помощью метода addPathToName(int type, byte [] name).

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

Parameters:
type - тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6)
name - имя в строковом формате
Throws:
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).

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

Parameters:
type - тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6)
name - массив байтов, содержащий имя в кодировке ASN.1 DER
Throws:
IOException - если произошла ошибка при разборе

getCertificate

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

getSerialNumber

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

getIssuer

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

getIssuerAsString

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

Если возвращаемое значение не является null, это имя с отличительными характеристиками в формате RFC 2253.

Returns:
требуемое имя с отличительными характеристиками эмитента в формате RFC 2253 (или null)
External Specifications
  • RFC 2253: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names

getIssuerAsBytes

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

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

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

Returns:
массив байтов, содержащий требуемое имя с отличительными характеристиками эмитента в формате ASN.1 DER (или null)
Throws:
IOException - если произошла ошибка кодирования

getSubject

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

getSubjectAsString

@Deprecated(since="16") public String getSubjectAsString()
Устарело.
Используйте getSubject() или getSubjectAsBytes() вместо этого. Этот метод не должен использоваться, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в формате RFC 2253 String для некоторых имен отличий.
Возвращает критерий субъекта в виде 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(java.util.Date)

getPrivateKeyValid

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

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

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

getSubjectPublicKeyAlgID

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

getSubjectPublicKey

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

getKeyUsage

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

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

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

getExtendedKeyUsage

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

getMatchAllSubjectAltNames

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

getSubjectAlternativeNames

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

Возвращает:
a Collection имён (или null)
См. также:
  • setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>)

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()
Возвращает ограничение базовых свойств. Если значение больше или равно нулю, X509Certificates должен включать расширение basicConstraints с pathLen не менее этого значения. Если значение равно -2, принимаются только сертификаты конечных сущностей. Если значение равно -1, проверка basicConstraints не выполняется.
Возвращает:
значение ограничения базовых свойств
См. также:
  • setBasicConstraints(int)

getPolicy

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

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 для защиты от последующих изменений.

Возвращает:
a Collection имён (или null)
См. также:
  • setPathToNames(java.util.Collection<java.util.List<?>>)

toString

public String toString()
Возвращает удобочитаемое представление CertSelector.
Overrides:
toString в классе Object
Возвращает:
a String описывающий содержимое CertSelector

match

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

clone

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/security/cert/X509CertSelector.html

Spec-Zone.ru

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