Класс X509CertSelector
- Все реализованные интерфейсы:
-
Cloneable,CertSelector
public class X509CertSelector extends Object implements CertSelector
При первом создании объект X509CertSelector не имеет активированных критериев, и каждый из методов для получения значений возвращает значения по умолчанию (null или -1 для метода getBasicConstraints). Поэтому метод match вернёт true для любого сертификата. Обычно несколько критериев активируются (например, вызовом setIssuer(X500Principal) или setKeyUsage), после чего объект X509CertSelector передаётся в метод CertStore.getCertificates или в аналогичный метод.
Несколько критериев могут быть активированы (например, вызовом setIssuer(X500Principal) и setSerialNumber), что позволяет методу match обычно однозначно соответствовать одному сертификату. "Обычно" - потому что возможно, что два удостоверяющих центра (ЦС) имеют одинаковое имя и каждый выпустил сертификат с одинаковым серийным номером. Другие уникальные комбинации включают критерий эмитента, субъекта, идентификатора открытого ключа субъекта и/или критерий открытого ключа субъекта.
Определения расширений сертификатов X.509, упомянутых ниже, см. в RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile.
Доступность из нескольких потоков
Если не указано иное, методы, определенные в этом классе, не являются потокобезопасными. Несколько потоков, которым требуется одновременный доступ к одному объекту, должны синхронизироваться друг с другом и обеспечить необходимое блокирование. Несколько потоков, каждый из которых манипулирует отдельными объектами, синхронизироваться не должны.
- С момента:
- 1.4
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
X509CertSelector() |
Создаёт объект X509CertSelector. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addPathToName |
Добавляет имя к критерию pathToNames. |
void |
addPathToName |
Добавляет имя к критерию pathToNames. |
void |
addSubjectAlternativeName |
Добавляет имя к критерию subjectAlternativeNames. |
void |
addSubjectAlternativeName |
Добавляет имя к критерию subjectAlternativeNames. |
Object |
clone() |
Возвращает копию этого объекта. |
byte[] |
getAuthorityKeyIdentifier() |
Возвращает критерий authorityKeyIdentifier. |
int |
getBasicConstraints() |
Возвращает ограничение basic constraints. |
X509Certificate |
getCertificate() |
Возвращает критерий certificateEquals. |
Date |
getCertificateValid() |
Возвращает критерий certificateValid. |
Set |
getExtendedKeyUsage() |
Возвращает критерий extendedKeyUsage. |
X500Principal |
getIssuer() |
Возвращает критерий issuer в виде X500Principal. |
byte[] |
getIssuerAsBytes() |
Возвращает критерий issuer в виде массива байтов. |
String |
getIssuerAsString() |
Устарело. |
boolean[] |
getKeyUsage() |
Возвращает критерий keyUsage. |
boolean |
getMatchAllSubjectAltNames() |
Указывает, должен ли X509Certificate содержать все или хотя бы одно из subjectAlternativeNames, указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName. |
byte[] |
getNameConstraints() |
Возвращает критерий name constraints. |
Collection |
getPathToNames() |
Возвращает копию критерия pathToNames. |
Set |
getPolicy() |
Возвращает критерий policy. |
Date |
getPrivateKeyValid() |
Возвращает критерий privateKeyValid. |
BigInteger |
getSerialNumber() |
Возвращает критерий serialNumber. |
X500Principal |
getSubject() |
Возвращает критерий subject в виде X500Principal. |
Collection |
getSubjectAlternativeNames() |
Возвращает копию критерия subjectAlternativeNames. |
byte[] |
getSubjectAsBytes() |
Возвращает критерий subject в виде массива байтов. |
String |
getSubjectAsString() |
Устарело. Используйте getSubject() или getSubjectAsBytes() вместо этого. |
byte[] |
getSubjectKeyIdentifier() |
Возвращает критерий subjectKeyIdentifier. |
PublicKey |
getSubjectPublicKey() |
Возвращает критерий subjectPublicKey. |
String |
getSubjectPublicKeyAlgID() |
Возвращает критерий subjectPublicKeyAlgID. |
boolean |
match |
Определяет, должен ли быть выбран Certificate. |
void |
setAuthorityKeyIdentifier |
Устанавливает критерий authorityKeyIdentifier. |
void |
setBasicConstraints |
Устанавливает ограничение basic constraints. |
void |
setCertificate |
Устанавливает критерий certificateEquals. |
void |
setCertificateValid |
Устанавливает критерий certificateValid. |
void |
setExtendedKeyUsage |
Устанавливает критерий extendedKeyUsage. |
void |
setIssuer |
Устанавливает критерий issuer. |
void |
setIssuer |
Устарело. Используйте setIssuer(X500Principal) или setIssuer(byte[]) вместо этого. |
void |
setIssuer |
Устанавливает критерий issuer. |
void |
setKeyUsage |
Устанавливает критерий keyUsage. |
void |
setMatchAllSubjectAltNames |
Включает/выключает соответствие всем subjectAlternativeNames, указанным в методах setSubjectAlternativeNames или addSubjectAlternativeName. |
void |
setNameConstraints |
Устанавливает критерий name constraints. |
void |
setPathToNames |
Устанавливает критерий pathToNames. |
void |
setPolicy |
Устанавливает ограничение policy constraint. |
void |
setPrivateKeyValid |
Устанавливает критерий privateKeyValid. |
void |
setSerialNumber |
Устанавливает критерий serialNumber. |
void |
setSubject |
Устанавливает критерий subject. |
void |
setSubject |
Устарело. Используйте setSubject(X500Principal) или setSubject(byte[]) вместо этого. |
void |
setSubject |
Устанавливает критерий subject. |
void |
setSubjectAlternativeNames |
Устанавливает критерий subjectAlternativeNames. |
void |
setSubjectKeyIdentifier |
Устанавливает критерий subjectKeyIdentifier. |
void |
setSubjectPublicKey |
Устанавливает критерий subjectPublicKey. |
void |
setSubjectPublicKey |
Устанавливает критерий subjectPublicKey. |
void |
setSubjectPublicKeyAlgID |
Устанавливает критерий subjectPublicKeyAlgID. |
String |
toString() |
Возвращает удобочитаемое представление CertSelector. |
Подробное описание конструкторов
X509CertSelector
public X509CertSelector()
X509CertSelector. Изначально критерии не заданы, поэтому любой X509Certificate будет соответствовать.Подробное описание методов
setCertificate
public void setCertificate(X509Certificate cert)
X509Certificate должен быть равен X509Certificate, переданному методу match. Если null, то эта проверка не применяется. Этот метод особенно полезен, когда необходимо сопоставить один сертификат. Хотя другие критерии могут быть заданы совместно с критерием certificateEquals, это обычно непрактично или не требуется.
- Параметры:
-
cert- сопоставляемыйX509Certificate(илиnull) - См. также:
setSerialNumber
public void setSerialNumber(BigInteger serial)
X509Certificate. Если null, то подходит любой номер последовательности сертификата.- Параметры:
-
serial- номер последовательности сертификата для сопоставления (илиnull) - См. также:
setIssuer
public void setIssuer(X500Principal issuer)
X509Certificate. Если null, подойдет любое имя с отличительными атрибутами издателя.- Параметры:
-
issuer- имя с отличительными атрибутами в виде X500Principal (илиnull) - С момента:
- 1.5
setIssuer
@Deprecated(since="16") public void setIssuer(String issuerDN) throws IOException
setIssuer(X500Principal) или setIssuer(byte[]) вместо этого. Не следует полагаться на этот метод, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в формате строки имени с отличительными атрибутами RFC 2253 некоторых имён.X509Certificate. Если null, то подойдет любое имя с отличительными атрибутами издателя. Если issuerDN не является null, оно должно содержать имя с отличительными атрибутами в формате RFC 2253.
- Параметры:
-
issuerDN- имя с отличительными атрибутами в формате RFC 2253 (илиnull) - Исключения:
-
IOException- если произошла ошибка разбора (неверный формат DN) - Внешние спецификации
setIssuer
public void setIssuer(byte[] issuerDN) throws IOException
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)
X509Certificate. Если null, то подойдет любое имя с отличительными атрибутами субъекта.- Параметры:
-
subject- имя с отличительными атрибутами в виде X500Principal (илиnull) - С момента:
- 1.5
setSubject
@Deprecated(since="16") public void setSubject(String subjectDN) throws IOException
setSubject(X500Principal) или setSubject(byte[]) вместо этого. Не следует полагаться на этот метод, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в формате строки имени с отличительными атрибутами RFC 2253 некоторых имён.X509Certificate. Если null, то подойдет любое имя с отличительными атрибутами субъекта. Если subjectDN не является null, оно должно содержать имя с отличительными атрибутами в формате RFC 2253.
- Параметры:
-
subjectDN- имя с отличительными атрибутами в формате RFC 2253 (илиnull) - Исключения:
-
IOException- если произошла ошибка разбора (неверный формат DN) - Внешние спецификации
setSubject
public void setSubject(byte[] subjectDN) throws IOException
X509Certificate. Если null, то подойдет любое имя с отличительными атрибутами субъекта. Если subjectDN не является null, оно должно содержать одно закодированное с помощью DER имя с отличительными атрибутами, как определено в X.501. ASN.1 обозначение для этой структуры см. в setIssuer(byte[]).
- Параметры:
-
subjectDN- массив байтов, содержащий имя с отличительными атрибутами в формате ASN.1 DER (илиnull) - Исключения:
-
IOException- если произошла ошибка кодирования (неверный формат DN)
setSubjectKeyIdentifier
public void setSubjectKeyIdentifier(byte[] subjectKeyID)
X509Certificate должен содержать расширение SubjectKeyIdentifier, содержимое которого соответствует указанному значению критерия. Если значение критерия null, проверка subjectKeyIdentifier не выполняется. Если subjectKeyID не является null, оно должно содержать одно закодированное с помощью DER значение, соответствующее содержанию значения расширения (без учёта идентификатора объекта, установки критичности и обертывающей строки OCTET) для расширения SubjectKeyIdentifier. ASN.1 обозначение для этой структуры приведено ниже.
SubjectKeyIdentifier ::= KeyIdentifier
KeyIdentifier ::= OCTET STRING
Поскольку формат идентификаторов ключевых элементов субъекта не регламентируется стандартом, идентификаторы ключевых элементов субъекта не анализируются X509CertSelector. Вместо этого значения сравниваются побайтово.
Обратите внимание, что массив байтов, предоставленный здесь, клонируется для защиты от последующих изменений.
- Параметры:
-
subjectKeyID- идентификатор ключевого элемента субъекта (илиnull) - См. также:
setAuthorityKeyIdentifier
public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
X509Certificate должен содержать расширение AuthorityKeyIdentifier, содержимое значения которого соответствует заданному критерию. Если значение критерия null, проверка authorityKeyIdentifier не будет выполнена. Если authorityKeyID не null, он должен содержать единственное закодированное в DER значение, соответствующее содержимому значения расширения (без учёта идентификатора объекта, установки критичности и окружающего OCTET STRING) для расширения AuthorityKeyIdentifier. ASN.1 обозначение для этой структуры приведено ниже.
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
KeyIdentifier ::= OCTET STRING
Идентификаторы ключей авторитета не анализируются X509CertSelector. Вместо этого значения сравниваются побайтово.
Когда поле keyIdentifier в AuthorityKeyIdentifier заполнено, значение обычно берётся из расширения SubjectKeyIdentifier в сертификате издателя. Однако обратите внимание, что результат X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object
Identifier>) для сертификата издателя НЕ может быть напрямую использован как вход для setAuthorityKeyIdentifier. Это потому, что SubjectKeyIdentifier содержит только KeyIdentifier OCTET STRING, а не SEQUENCE из KeyIdentifier, GeneralNames и CertificateSerialNumber. Для использования значения расширения в SubjectKeyIdentifier сертификата издателя необходимо извлечь значение вложенного KeyIdentifier OCTET STRING, а затем закодировать этот OCTET STRING в DER внутри SEQUENCE. Более подробную информацию об SubjectKeyIdentifier см. в setSubjectKeyIdentifier(byte[] subjectKeyID).
Также обратите внимание, что предоставленный массив байтов клонируется для защиты от последующих изменений.
- Parameters:
-
authorityKeyID- идентификатор ключа авторитета (илиnull) - See Also:
setCertificateValid
public void setCertificateValid(Date certValid)
X509Certificate. Если null, проверка certificateValid не будет выполнена. Обратите внимание, что предоставленная здесь Date клонируется, чтобы предотвратить последующие изменения.
- Parameters:
-
certValid- дата, подлежащая проверке (илиDate) - See Also:
setPrivateKeyValid
public void setPrivateKeyValid(Date privateKeyValid)
X509Certificate. Если null, проверка privateKeyValid не будет выполнена. Обратите внимание, что предоставленный здесь Date клонируется, чтобы предотвратить последующие изменения.
- Parameters:
-
privateKeyValid- дата, подлежащая проверке (илиnull) - See Also:
setSubjectPublicKeyAlgID
public void setSubjectPublicKeyAlgID(String oid) throws IOException
X509Certificate должен содержать открытый ключ субъекта со специфицированным алгоритмом. Если null, проверка subjectPublicKeyAlgID не будет выполнена.- Parameters:
-
oid- Идентификатор объекта (OID) алгоритма, подлежащий проверке (илиnull). OID представлен набором неотрицательных целых чисел, разделённых точками. - Throws:
-
IOException- если OID некорректен, например, первая компонента не равна 0, 1 или 2, или вторая компонента больше 39. - See Also:
setSubjectPublicKey
public void setSubjectPublicKey(PublicKey key)
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена.- Parameters:
-
key- открытый ключ субъекта, подлежащий проверке (илиnull) - See Also:
setSubjectPublicKey
public void setSubjectPublicKey(byte[] key) throws IOException
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена. Так как этот метод позволяет указать открытый ключ как массив байтов, он может использоваться для неизвестных типов ключей.
Если key не null, он должен содержать единственную структуру SubjectPublicKeyInfo, закодированную в DER в соответствии со спецификацией X.509. ASN.1 обозначение для этой структуры представлено ниже.
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
-- contains a value of the type
-- registered for use with the
-- algorithm object identifier value
Обратите внимание, что предоставленный массив байтов клонируется для защиты от последующих изменений.
- Parameters:
-
key- массив байтов, содержащий открытый ключ субъекта в формате ASN.1 DER (илиnull) - Throws:
-
IOException- если произошла ошибка кодирования (неправильная форма открытого ключа субъекта) - See Also:
setKeyUsage
public void setKeyUsage(boolean[] keyUsage)
X509Certificate должен допускать указанные значения keyUsage. Если null, проверка keyUsage не будет выполнена. Обратите внимание, что X509Certificate, у которого отсутствует расширение keyUsage, неявно допускает все значения keyUsage. Обратите внимание, что предоставленный массив boolean клонируется для защиты от последующих изменений.
- Parameters:
-
keyUsage- массив boolean в том же формате, что и массив boolean, возвращаемыйX509Certificate.getKeyUsage(). Илиnull. - See Also:
setExtendedKeyUsage
public void setExtendedKeyUsage(Set<String> keyPurposeSet) throws IOException
X509Certificate должен допускать указанные цели использования ключа в расширении extended key usage. Если keyPurposeSet пусто или null, проверка extendedKeyUsage не будет выполнена. Обратите внимание, что X509Certificate, у которого отсутствует расширение extendedKeyUsage, неявно допускает все цели использования ключа. Обратите внимание, что Set клонируется для защиты от последующих изменений.
- Parameters:
-
keyPurposeSet- набор идентификаторов OID целей использования ключа в строковом формате (илиnull). Каждый OID представлен набором неотрицательных целых чисел, разделённых точками. - Throws:
-
IOException- если OID некорректен, например, первая компонента не равна 0, 1 или 2, или вторая компонента больше 39. - See Also:
setMatchAllSubjectAltNames
public void setMatchAllSubjectAltNames(boolean matchAllNames)
setSubjectAlternativeNames или addSubjectAlternativeName. Если включено, X509Certificate должен содержать все указанные subject alternative names. Если выключено, X509Certificate должен содержать хотя бы одно из указанных subject alternative names. Флаг matchAllNames по умолчанию true.
- Parameters:
-
matchAllNames- еслиtrue, флаг включён; еслиfalse, флаг выключен. - See Also:
setSubjectAlternativeNames
public void setSubjectAlternativeNames(Collection<List<?>> names) throws IOException
X509Certificate должно содержать все или хотя бы один из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. setMatchAllSubjectAltNames). Этот метод позволяет вызывающей стороне указать весь набор альтернативных имён субъекта для критерия subjectAlternativeNames за один вызов. Указанное значение заменяет предыдущее значение для критерия subjectAlternativeNames.
Параметр names (если не null) представляет собой Collection со входом для каждого имени, которое должно быть включено в критерий альтернативных имён субъекта. Каждый вход — это List, где первый вход — это Integer (тип имени, 0-8), а второй вход — это String или массив байтов (имя в строковом или кодированном в ASN.1 DER формате соответственно). Может быть несколько имён одного типа. Если null используется в качестве значения для этого аргумента, проверка subjectAlternativeNames не будет выполнена.
Каждое альтернативное имя субъекта в Collection может быть указано либо как String, либо как массив байтов в кодировке ASN.1. Более подробную информацию о используемых форматах см. в addSubjectAlternativeName(int type, String name) и addSubjectAlternativeName(int type, byte [] name).
Примечание: для выделенных имён следует использовать формат массива байтов вместо строкового формата. См. примечание в addSubjectAlternativeName(int, String) для получения дополнительной информации.
Обратите внимание, что параметр names может содержать дублируемые имена (то же имя и тот же тип имени), но они могут быть удалены из Collection имён, возвращаемых методом getSubjectAlternativeNames.
Обратите внимание, что выполняется глубокая копия Collection, чтобы предотвратить последующие изменения.
- Parameters:
-
names- aCollectionимён (илиnull) - Throws:
-
IOException- если произошла ошибка разбора - See Also:
addSubjectAlternativeName
public void addSubjectAlternativeName(int type, String name) throws IOException
X509Certificate должно содержать все или хотя бы один из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. setMatchAllSubjectAltNames). Этот метод позволяет вызывающей стороне добавить имя в набор альтернативных имён субъекта. Указанное имя добавляется к любому предыдущему значению для критерия subjectAlternativeNames. Если указанное имя является дубликатом, оно может быть проигнорировано.
Имя предоставляется в строковом формате. Имена RFC 822, DNS и URI используют устоявшиеся строковые форматы для этих типов (в соответствии с ограничениями, указанными в RFC 5280). Имена адресов IPv4 предоставляются с использованием обозначений с точками. Имена адресов OID представляются как последовательность неотрицательных целых чисел, разделенных точками. Имена каталога (выделенные имена) предоставляются в формате RFC 2253. Для других типов имён (otherNames, X.400 имена, EDI party имена, имена адресов IPv6 или любые другие типы имён) стандартного строкового формата не определено. Их следует указывать с помощью метода addSubjectAlternativeName(int type, byte [] name).
Примечание: для выделенных имён используйте addSubjectAlternativeName(int, byte[]) вместо этого метода. Этот метод не следует использовать в качестве надежного средства, поскольку он может не соответствовать некоторым сертификатам из-за потери информации о кодировании в строковом формате RFC 2253 некоторых выделенных имён.
- Parameters:
-
type- тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6) -
name- имя в строковом формате (неnull) - Throws:
-
IOException- если произошла ошибка разбора - External Specifications
addSubjectAlternativeName
public void addSubjectAlternativeName(int type, byte[] name) throws IOException
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
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:
setBasicConstraints
public void setBasicConstraints(int minMaxPathLen)
X509Certificates должен включать расширение basicConstraints с pathLen не менее этого значения. Если значение равно -2, принимаются только сертификаты конечных сущностей. Если значение равно -1, проверка не выполняется. Это ограничение полезно при построении пути сертификации вперёд (от целевого сертификата к корневому сертификату доверия). Если частичный путь уже построен, любой кандидатный сертификат должен иметь значение maxPathLen, большее или равное количеству сертификатов в частичном пути.
- Parameters:
-
minMaxPathLen- значение для ограничения basic constraints - Throws:
-
IllegalArgumentException- если значение меньше -2 - See Also:
setPolicy
public void setPolicy(Set<String> certPolicySet) throws IOException
X509Certificate должен включать хотя бы одну из указанных политик в расширении certificate policies. Если certPolicySet пусто, то X509Certificate должен включать по крайней мере одну из указанных политик в расширении certificate policies. Если certPolicySet равно null, проверка политики не будет выполнена. Обратите внимание, что Set клонируется, чтобы предотвратить последующие изменения.
- Parameters:
-
certPolicySet- aSetидентификаторов политик сертификата в строковом формате (илиnull). Каждый OID представляется набором неотрицательных целых чисел, разделенных точками. - Throws:
-
IOException- если произошла ошибка разбора OID, например, первый компонент не равен 0, 1 или 2, или второй компонент больше 39. - See Also:
setPathToNames
public void setPathToNames(Collection<List<?>> names) throws IOException
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- aCollectionсо значением для каждого имени (илиnull) - Throws:
-
IOException- если произошла ошибка при разборе - See Also:
addPathToName
public void addPathToName(int type, String name) throws IOException
X509Certificate не должен содержать ограничений по имени, которые препятствовали бы построению пути к указанному имени. Этот метод позволяет добавить имя в набор имён, которые должны удовлетворять ограничениям по имени X509Certificates. Указанное имя добавляется к любому предыдущему значению критерия pathToNames. Если имя является дубликатом, оно может быть проигнорировано.
Имя предоставляется в строковом формате. RFC 822, DNS и URI имена используют общепринятые строковые форматы для этих типов (в соответствии с ограничениями, включёнными в RFC 5280). IPv4 адреса указываются в формате с точками. Имена адресов OID представлены как серия неотрицательных целых чисел, разделённых точками. Имена каталога (отличительные имена) указываются в формате RFC 2253. Для других типов имён (otherNames, X.400 имена, EDI party имена, IPv6 адреса или любых других типов имён) не определён стандартный строковой формат. Они должны быть указаны с помощью метода addPathToName(int type, byte [] name).
Примечание: для имён с отличительными характеристиками используйте addPathToName(int, byte[]). Не следует полагаться на этот метод, так как он может не соответствовать некоторым сертификатам из-за потери кодирования информации в строковом формате RFC 2253 некоторых имён с отличительными характеристиками.
- Parameters:
-
type- тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6) -
name- имя в строковом формате - Throws:
-
IOException- если произошла ошибка при разборе
addPathToName
public void addPathToName(int type, byte[] name) throws IOException
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()
X509Certificate должен быть равен X509Certificate, переданному методу match. Если null, эта проверка не применяется.- Returns:
- требуемый сертификат для сравнения (или
null) - See Also:
getSerialNumber
public BigInteger getSerialNumber()
X509Certificate. Если null, любой номер последовательности сертификата подойдёт.- Returns:
- номер последовательности сертификата для сравнения (или
null) - See Also:
getIssuer
public X500Principal getIssuer()
X500Principal. Это имя с отличительными характеристиками должно совпадать с именем с отличительными характеристиками эмитента в X509Certificate. Если null, критерий эмитента отключён и любое имя с отличительными характеристиками эмитента подойдёт.- Returns:
- необходимое имя с отличительными характеристиками эмитента как X500Principal (или
null) - Since:
- 1.5
getIssuerAsString
@Deprecated(since="16") public String getIssuerAsString()
getIssuer() или getIssuerAsBytes() вместо этого. Не следует полагаться на этот метод, так как он может не соответствовать некоторым сертификатам из-за потери кодирования информации в строковом формате RFC 2253 некоторых имён с отличительными характеристиками.String. Это имя с отличительными характеристиками должно совпадать с именем с отличительными характеристиками эмитента в X509Certificate. Если null, критерий эмитента отключён и любое имя с отличительными характеристиками эмитента подойдёт. Если возвращаемое значение не является null, это имя с отличительными характеристиками в формате RFC 2253.
- Returns:
- требуемое имя с отличительными характеристиками эмитента в формате RFC 2253 (или
null) - External Specifications
getIssuerAsBytes
public byte[] getIssuerAsBytes() throws IOException
X509Certificate. Если null, критерий эмитента отключён и любое имя с отличительными характеристиками эмитента подойдёт. Если возвращаемое значение не является null, это массив байтов, содержащий одно имя с отличительными характеристиками в кодировке DER, как определено в X.501. ASN.1 обозначение этой структуры представлено в документации к setIssuer(byte[]).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Returns:
- массив байтов, содержащий требуемое имя с отличительными характеристиками эмитента в формате ASN.1 DER (или
null) - Throws:
-
IOException- если произошла ошибка кодирования
getSubject
public X500Principal getSubject()
X500Principal. Это имя с отличительными характеристиками должно совпадать с именем с отличительными характеристиками субъекта в X509Certificate. Если null, критерий субъекта отключён и любое имя с отличительными характеристиками субъекта подойдёт.- Returns:
- требуемое имя с отличительными характеристиками субъекта как X500Principal (или
null) - Since:
- 1.5
getSubjectAsString
@Deprecated(since="16") public String getSubjectAsString()
getSubject() или getSubjectAsBytes() вместо этого. Этот метод не должен использоваться, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в формате RFC 2253 String для некоторых имен отличий.String. Это имя отличий должно совпадать с именем отличий субъекта в X509Certificate. Если null, критерий субъекта отключён, и любое имя отличий субъекта подойдёт. Если возвращаемое значение не является null, это имя отличий в формате RFC 2253.
- Возвращает:
- требуемое имя отличий субъекта в формате RFC 2253 (или
null) - Внешние спецификации
getSubjectAsBytes
public byte[] getSubjectAsBytes() throws IOException
X509Certificate. Если null, критерий субъекта отключён, и любое имя отличий субъекта подойдёт. Если возвращаемое значение не является null, это массив байтов, содержащий единственное закодированное в DER имя отличий, как определено в X.501. ASN.1 обозначение этой структуры представлено в документации для setSubject(byte[]).
Обратите внимание, что возвращаемый массив байтов клонируется, чтобы предотвратить последующие изменения.
- Возвращает:
- массив байтов, содержащий требуемое имя отличий субъекта в формате ASN.1 DER (или
null) - Исключения:
-
IOException- если произошла ошибка кодирования
getSubjectKeyIdentifier
public byte[] getSubjectKeyIdentifier()
X509Certificate должен содержать расширение SubjectKeyIdentifier со значением указанного значения. Если null, проверка subjectKeyIdentifier не будет выполнена. Обратите внимание, что возвращаемый массив байтов клонируется, чтобы предотвратить последующие изменения.
- Возвращает:
- идентификатор ключа (или
null) - См. также:
getAuthorityKeyIdentifier
public byte[] getAuthorityKeyIdentifier()
X509Certificate должен содержать расширение AuthorityKeyIdentifier со значением указанного значения. Если null, проверка authorityKeyIdentifier не будет выполнена. Обратите внимание, что возвращаемый массив байтов клонируется, чтобы предотвратить последующие изменения.
- Возвращает:
- идентификатор ключа (или
null) - См. также:
getCertificateValid
public Date getCertificateValid()
X509Certificate. Если null, проверка certificateValid не будет выполнена. Обратите внимание, что возвращаемая Date копия для защиты от последующих изменений.
- Возвращает:
Dateдля проверки (илиnull)- См. также:
getPrivateKeyValid
public Date getPrivateKeyValid()
X509Certificate. Если null, проверка privateKeyValid не будет выполнена. Обратите внимание, что возвращаемая Date копия для защиты от последующих изменений.
- Возвращает:
Dateдля проверки (илиnull)- См. также:
getSubjectPublicKeyAlgID
public String getSubjectPublicKeyAlgID()
X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID не будет выполнена.- Возвращает:
- идентификатор объекта (OID) алгоритма подписи для проверки (или
null). OID представлен набором неотрицательных целых чисел, разделённых точками. - См. также:
getSubjectPublicKey
public PublicKey getSubjectPublicKey()
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена.- Возвращает:
- открытый ключ субъекта для проверки (или
null) - См. также:
getKeyUsage
public boolean[] getKeyUsage()
X509Certificate должен допускать указанные значения keyUsage. Если null, проверка keyUsage не будет выполнена. Обратите внимание, что возвращаемый массив boolean клонируется, чтобы предотвратить последующие изменения.
- Возвращает:
- массив boolean в том же формате, что и возвращаемый массивом boolean
X509Certificate.getKeyUsage(). Илиnull. - См. также:
getExtendedKeyUsage
public Set<String> getExtendedKeyUsage()
X509Certificate должен допускать указанные цели ключа в его расширении extended key usage. Если возвращаемое keyPurposeSet пустое или null, проверка extendedKeyUsage не будет выполнена. Заметка: сертификат, у которого нет расширения extendedKeyUsage, подразумевает разрешение всех целей ключа.- Возвращает:
- неизменяемый
Setидентификаторов целей ключа в строковом формате (илиnull) - См. также:
getMatchAllSubjectAltNames
public boolean getMatchAllSubjectAltNames()
X509Certificate содержать все или хотя бы одно из subjectAlternativeNames, указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName. Если true, X509Certificate должен содержать все указанные имена subject alternative. Если false, X509Certificate должен содержать хотя бы одно из указанных имен subject alternative.- Возвращает:
-
true, если флаг включён;false, если флаг отключён. Флагtrueпо умолчанию. - См. также:
getSubjectAlternativeNames
public Collection<List<?>> getSubjectAlternativeNames()
X509Certificate должен содержать все или хотя бы одно из указанных значений subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. getMatchAllSubjectAltNames). Если возвращаемое значение равно null, проверка subjectAlternativeNames не будет выполнена. Если возвращаемое значение не равно null, то это Collection с одной записью для каждого имени, которое должно быть включено в критерий альтернативных имён субъекта. Каждая запись представляет собой List, первая запись которой — Integer (тип имени, 0-8), а вторая — String или массив байтов (соответственно, имя в строковом или кодированном в ASN.1 DER формате). Может быть несколько имён одного типа. Обратите внимание, что возвращаемое Collection может содержать дубликаты имён (одинаковые имя и тип имени).
Каждое альтернативное имя субъекта в Collection может быть указано либо как String, либо как массив байтов, закодированных в ASN.1. Более подробную информацию о используемых форматах см. в addSubjectAlternativeName(int type, String name) и addSubjectAlternativeName(int type, byte [] name).
Обратите внимание, что выполняется глубокая копия Collection для защиты от последующих изменений.
- Возвращает:
- a
Collectionимён (илиnull) - См. также:
getNameConstraints
public byte[] getNameConstraints()
X509Certificate должно иметь имена субъекта и альтернативные имена субъекта, которые соответствуют указанным ограничениям имён. Ограничения имён возвращаются в виде массива байтов. Этот массив байтов содержит DER-кодированную форму ограничений имён, как они появляются в структуре NameConstraints, определённой в RFC 5280 и X.509. ASN.1-нотация для этой структуры приведена в документации для setNameConstraints(byte [] bytes).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- массив байтов, содержащий ASN.1 DER-кодирование расширения NameConstraints, используемого для проверки ограничений имён.
null, если проверка ограничений имён не будет выполнена. - См. также:
getBasicConstraints
public int getBasicConstraints()
X509Certificates должен включать расширение basicConstraints с pathLen не менее этого значения. Если значение равно -2, принимаются только сертификаты конечных сущностей. Если значение равно -1, проверка basicConstraints не выполняется.- Возвращает:
- значение ограничения базовых свойств
- См. также:
getPolicy
public Set<String> getPolicy()
X509Certificate должен включать хотя бы одну из указанных политик в своём расширении certificate policies. Если возвращаемое Set пусто, то X509Certificate должен включать хотя бы какую-то указанную политику в своём расширении certificate policies. Если возвращаемое Set равно null, проверка политики не будет выполнена.- Возвращает:
- неизменяемый
Setидентификаторов политики сертификата в строковом формате (илиnull) - См. также:
getPathToNames
public Collection<List<?>> getPathToNames()
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) - См. также:
toString
match
public boolean match(Certificate cert)
Certificate.- Specified by:
-
matchв интерфейсеCertSelector - Parameters:
-
cert- проверяемыйCertificate - Возвращает:
-
true, еслиCertificateдолжен быть выбран,falseв противном случае
clone
public Object clone()
- Specified by:
-
cloneв интерфейсеCertSelector - Overrides:
-
cloneв классеObject - Возвращает:
- копию
- См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/security/cert/X509CertSelector.html
getIssuer()илиgetIssuerAsBytes()вместо этого.