Класс X509CertSelector

Все реализованные интерфейсы:
Cloneable, CertSelector
public class X509CertSelector
extends Object
implements CertSelector

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

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

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

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

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

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

С момента:
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.

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

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 указано, критерий издателя отключен и подходит любое полное имя издателя.

Если 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 - массив байтов, содержащий полное имя в DER-кодированном формате ASN.1 (или null)
Исключения:
IOException - если произошла ошибка кодирования (неправильный формат для DN)

setSubject

public void setSubject(X500Principal subject)

Устанавливает критерий subject. Указанное полное имя должно соответствовать полному имени субъекта в X509Certificate. Если null, подходит любое полное имя субъекта.

Параметры:
subject - полное имя как X500Principal (или null)
С:
1.5

setSubject

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 [] issuerDN).

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

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

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

setCertificateValid

public void setCertificateValid(Date certValid)

Устанавливает критерий certificateValid. Указанная дата должна попадать в период действия сертификата для X509Certificate. Если null, проверка certificateValid не выполняется.

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

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

setPrivateKeyValid

public void setPrivateKeyValid(Date privateKeyValid)

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

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

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

setSubjectPublicKeyAlgID

public void setSubjectPublicKeyAlgID(String oid)
                              throws IOException

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

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

setSubjectPublicKey

public void setSubjectPublicKey(PublicKey key)

Устанавливает критерий subjectPublicKey. X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполняться.

Параметры:
key - открытый ключ субъекта для проверки (или null).
См. также:
getSubjectPublicKey()

setSubjectPublicKey

public void setSubjectPublicKey(byte[] key)
                         throws IOException

Устанавливает критерий subjectPublicKey. X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполняться.

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

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

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

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

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

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

setKeyUsage

public void setKeyUsage(boolean[] keyUsage)

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

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

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

setExtendedKeyUsage

public void setExtendedKeyUsage(Set<String> keyPurposeSet)
                         throws IOException

Устанавливает критерий extendedKeyUsage. X509Certificate должен разрешать указанные цели использования ключа в своем расширении extended key usage. Если keyPurposeSet пуст или null, проверка extendedKeyUsage не будет выполняться. Обратите внимание, что X509Certificate, у которого отсутствует расширение extendedKeyUsage, неявно разрешает все цели использования ключа.

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

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

setMatchAllSubjectAltNames

public void setMatchAllSubjectAltNames(boolean matchAllNames)

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

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

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

setSubjectAlternativeNames

public void setSubjectAlternativeNames(Collection<List<?>> names)
                                throws IOException

Устанавливает критерий subjectAlternativeNames. X509Certificate должен содержать все или хотя бы одно из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. setMatchAllSubjectAltNames).

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

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

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

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

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

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

Параметры:
names - a Collection имен (или 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. Для других имен, имен X.400, имен сторон EDI, имен адресов IPv6 или любых других типов имен не определен стандартный строковый формат. Они должны указываться с помощью метода addSubjectAlternativeName(int type, byte [] name).

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

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

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}

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

Параметры:
type - тип имени (0-8, как указано выше)
name - массив байтов, содержащий имя в ASN.1 DER-кодированном формате.
Исключение:
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}

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

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

setBasicConstraints

public void setBasicConstraints(int minMaxPathLen)

Устанавливает ограничение основных ограничений. Если значение больше или равно нулю, X509Certificates должен включать расширение basicConstraints с pathLen по меньшей мере с этим значением. Если значение равно -2, принимаются только сертификаты конечных сущностей. Если значение равно -1, проверка не выполняется.

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

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

setPolicy

public void setPolicy(Set<String> certPolicySet)
               throws IOException

Устанавливает ограничение политики. X509Certificate должен включать по меньшей мере одну из указанных политик в расширении сертификатных политик. Если certPolicySet пусто, то X509Certificate должен включать по меньшей мере какую-то указанную политику в расширении сертификатных политик. Если certPolicySet является null, проверка политики не будет выполняться.

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

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

setPathToNames

public void setPathToNames(Collection<List<?>> names)
                    throws IOException

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

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

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

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

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

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

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

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

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

addPathToName

public void addPathToName(int type,
                          String name)
                   throws IOException

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

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

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

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

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

addPathToName

public void addPathToName(int type,
                          byte[] name)
                   throws IOException

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

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

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

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

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

getCertificate

public X509Certificate getCertificate()

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

Возвращает:
X509Certificate для сопоставления (или null)
См. также:
setCertificate(java.security.cert.X509Certificate)

getSerialNumber

public BigInteger getSerialNumber()

Возвращает критерий serialNumber. Указанный серийный номер должен соответствовать серийному номеру сертификата в X509Certificate. Если null, любой серийный номер сертификата подойдёт.

Возвращает:
серийный номер сертификата для сопоставления (или null)
См. также:
setSerialNumber(java.math.BigInteger)

getIssuer

public X500Principal getIssuer()

Возвращает критерий издателя как X500Principal. Это различающее имя должно соответствовать различающему имени издателя в X509Certificate. Если null, критерий издателя отключён и любое различающее имя издателя подойдёт.

Возвращает:
требуемое различающее имя издателя как X500Principal (или null)
С:
1.5

getIssuerAsString

public String getIssuerAsString()

Устаревший, используйте getIssuer() или getIssuerAsBytes() вместо этого. Этот метод не следует использовать надёжно, поскольку он может не соответствовать некоторым сертификатам из-за потери информации кодирования в строчной форме RFC 2253 некоторых различающих имён.

Возвращает критерий издателя как String. Это различающее имя должно соответствовать различающему имени издателя в X509Certificate. Если null, критерий издателя отключён и любое различающее имя издателя подойдёт.

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

Возвращает:
требуемое различающее имя издателя в формате RFC 2253 (или null)

getIssuerAsBytes

public byte[] getIssuerAsBytes()
                        throws IOException

Возвращает критерий издателя как массив байтов. Это различающее имя должно соответствовать различающему имени издателя в X509Certificate. Если null, критерий издателя отключён и любое различающее имя издателя подойдёт.

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

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

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

getSubject

public X500Principal getSubject()

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

Возвращает:
требуемое имя с указанием субъекта в формате X500Principal (или null)
С:
1.5

getSubjectAsString

public String getSubjectAsString()

Отмечено к удалению, используйте вместо этого getSubject() или getSubjectAsBytes(). Не следует полагаться на этот метод, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в формате RFC 2253 String для некоторых имён с указанием субъекта.

Возвращает критерий субъекта в виде String. Это имя с указанием субъекта должно соответствовать имени с указанием субъекта в X509Certificate. Если null, критерий субъекта отключен, и любое имя с указанием субъекта подойдет.

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

Возвращает:
требуемое имя с указанием субъекта в формате RFC 2253 (или null)

getSubjectAsBytes

public byte[] getSubjectAsBytes()
                         throws IOException

Возвращает критерий субъекта в виде массива байтов. Это имя с указанием субъекта должно соответствовать имени с указанием субъекта в X509Certificate. Если null, критерий субъекта отключен, и любое имя с указанием субъекта подойдет.

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

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

Возвращает:
массив байтов, содержащий требуемое имя с указанием субъекта в формате 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 не будет выполнена. Обратите внимание, что X509Certificate без расширения extendedKeyUsage неявно допускает все целевые использования ключей.

Возвращает:
неизменяемый Set идентификаторов целевого использования ключа в строковом формате (или null)
См. также:
setExtendedKeyUsage(java.util.Set<java.lang.String>)

getMatchAllSubjectAltNames

public boolean getMatchAllSubjectAltNames()

Указывает, должен ли X509Certificate содержать все или хотя бы одно из указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName subjectAlternativeNames. Если true, X509Certificate должен содержать все указанные альтернативные имена субъекта. Если false, X509Certificate должен содержать по крайней мере одно из указанных альтернативных имён субъекта.

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

Возвращает:
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).

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

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

getBasicConstraints

public int getBasicConstraints()

Возвращает ограничение basic constraints. Если значение не меньше нуля, X509Certificates должен содержать расширение basicConstraints с pathLen не меньше этого значения. Если значение равно -2, принимаются только сертификаты конечных узлов. Если значение равно -1, проверка basicConstraints не выполняется.

Возвращает:
значение для ограничения базовых ограничений
См. также:
setBasicConstraints(int)

getPolicy

public Set<String> getPolicy()

Возвращает критерий политики. Расширение политики сертификата X509Certificate должно включать хотя бы одну из указанных политик. Если возвращаемое Set пусто, то X509Certificate должно включать как минимум какую-то указанную политику в расширении политики сертификата. Если возвращаемое 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.

Переопределяет:
toString в классе Object
Возвращает:
строку, описывающую содержимое CertSelector

match

public boolean match(Certificate cert)

Определяет, должен ли быть выбран Certificate.

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

clone

public Object clone()

Возвращает копию этого объекта.

Определяется в:
clone в интерфейсе CertSelector
Переопределяет:
clone в классе Object
Возвращает:
копию
См. также:
Cloneable

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/cert/X509CertSelector.html

Spec-Zone .ru
спецификации, руководства, описания, API