Spec-Zone.ru › OpenJDK 17

Класс X509CertSelector

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

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

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

Для получения определений расширений сертификатов X.509, упомянутых ниже, обратитесь к RFC 5280: Профиль сертификата и CRL для инфраструктуры открытых ключей X.509 Интернет.

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

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

С момента:
1.4
См. также:
  • 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)

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)

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

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

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

УстановитьДействительностьСертификата

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

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

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

УстановитьДействительностьКлюча

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

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

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

УстановитьИдентификаторАлгоритмаОткрытогоКлючаСубъекта

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

УстановитьОткрытыйКлючСубъекта

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

УстановитьОткрытыйКлючСубъекта

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()

УстановитьИспользованиеКлюча

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

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

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

УстановитьРасширенноеИспользованиеКлюча

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

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

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

УстановитьСопоставлениеВСЕХSubjectAltNames

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

Флаг matchAllNames включен по умолчанию.

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

УстановитьSubjectAlternativeNames

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

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

Параметр names (если не null) — набор с одним элементом для каждого имени, которое следует включить в критерий subject alternative name. Каждый элемент — это набор, в котором первый элемент — это Integer (тип имени, 0-8), а второй элемент — String или массив байтов (имя, соответственно, в строковом или ASN.1 DER кодированном виде). Может быть несколько имён одного типа. Если null указан в качестве значения для этого аргумента, проверка subjectAlternativeNames не будет выполняться.

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

Примечание: для distinguished names, укажите форму массива байтов вместо строковой формы. См. примечание в addSubjectAlternativeName(int, String) для получения дополнительной информации.

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

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

Параметры:
names - набор имён (или null)
Исключения:
IOException - если произошла ошибка разбора
См. также:
  • 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, имён адресов 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 - если произошла ошибка парсинга

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 - Set множество OID политики сертификата в строковом формате (или 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 - 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, имён адресов 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:
требуемое X509Certificate для соответствия (или 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()
Устаревший.
Используйте getIssuer() или getIssuerAsBytes() вместо этого. На этот метод нельзя полагаться, так как он может не соответствовать некоторым сертификатам из-за потери информации о кодировании в формате строки RFC 2253 для некоторых имён по каталогу.
Возвращает критерий issuer как String. Это имя по каталогу должно соответствовать имени по каталогу эмитента в X509Certificate. Если null, критерий эмитента отключён, и любое имя по каталогу эмитента подойдёт.

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

Returns:
требуемое имя по каталогу эмитента в формате RFC 2253 (или null)

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 для некоторых имён по каталогу.
Возвращает критерий subject как String. Это имя по каталогу должно соответствовать имени по каталогу получателя в X509Certificate. Если null, критерий получателя отключён, и любое имя по каталогу получателя подойдёт.

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

Returns:
требуемое имя по каталогу получателя в формате RFC 2253 (или null)

getSubjectAsBytes

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

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

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

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

getSubjectKeyIdentifier

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

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

Returns:
идентификатор ключа (или null)
See Also:
  • setSubjectKeyIdentifier(byte[])

getAuthorityKeyIdentifier

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

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

Returns:
идентификатор ключа (или null)
See Also:
  • setAuthorityKeyIdentifier(byte[])

getCertificateValid

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

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

Returns:
требуемая Date для проверки (или null)
See Also:
  • setCertificateValid(java.util.Date)

getPrivateKeyValid

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

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

Returns:
требуемая Date для проверки (или null)
See Also:
  • setPrivateKeyValid(java.util.Date)

getSubjectPublicKeyAlgID

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

getSubjectPublicKey

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

getKeyUsage

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

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

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

getExtendedKeyUsage

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

getMatchAllSubjectAltNames

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

getSubjectAlternativeNames

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

Returns:
Collection имён (или null)
См. также:
  • setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>)

getNameConstraints

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

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

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

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

getBasicConstraints

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

getPolicy

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

Returns:
Collection имён (или null)
См. также:
  • setPathToNames(java.util.Collection<java.util.List<?>>)

toString

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

match

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

clone

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

© 1993, 2021, 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/17/docs/api/java.base/java/security/cert/X509CertSelector.html

Spec-Zone.ru

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