Класс X509CertSelector
- Все реализованные интерфейсы:
-
Cloneable,CertSelector
public class X509CertSelector extends Object implements CertSelector
CertSelector для выбора X509Certificates, которые соответствуют всем указанным критериям. Этот класс особенно полезен при выборе сертификатов из CertStore, чтобы построить совместимый с PKIX путь сертификации. При первом создании у объекта класса X509CertSelector нет включенных критериев, и каждый из методов get возвращает значение по умолчанию (null, или -1 для метода getBasicConstraints). Поэтому метод match вернёт true для любого X509Certificate. Обычно несколько критериев включаются (например, вызовом setIssuer(X500Principal) или setKeyUsage), а затем объект X509CertSelector передаётся в метод CertStore.getCertificates или в какой-либо аналогичный метод.
Несколько критериев могут быть включены (например, вызовом setIssuer(X500Principal) и setSerialNumber), поэтому метод match обычно уникально соответствует одному X509Certificate. Мы говорим «обычно», так как возможно, что у двух выпустивших центров сертификации одинаковое полное имя и каждый выпустил сертификат с одинаковым номером. Другие уникальные комбинации включают критерий эмитента, субъекта, идентификатора открытого ключа субъекта и/или открытого ключа субъекта.
Обратитесь к документу RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile для определений расширений сертификата X.509, упомянутых ниже.
Доступность из нескольких потоков
Если не указано иное, методы, определённые в этом классе, не потокобезопасны. Несколько потоков, которым требуется одновременный доступ к одному объекту, должны синхронизироваться между собой и обеспечить необходимое блокирование. Несколько потоков, каждый из которых манипулирует отдельными объектами, синхронизироваться не должны.
- С тех пор:
- 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) - C тех пор:
- 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 указано, то критерий издателя отключен, и подойдет любое имя издателя. Если 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) - C тех пор:
- 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 STRING) для расширения 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, затем DER-кодировать этот OCTET STRING внутри SEQUENCE. Для более подробной информации о SubjectKeyIdentifier, см. setSubjectKeyIdentifier(byte[] subjectKeyID).
Обратите также внимание, что массив байтов, предоставленный здесь, клонируется для защиты от последующих изменений.
- Параметры:
-
authorityKeyID- идентификатор ключа авторитета (илиnull) - См. также:
УстановитьДействительностьСертификата
public void setCertificateValid(Date certValid)
X509Certificate. Если null, проверка certificateValid не будет выполнена. Обратите внимание, что Date предоставляемый здесь, клонируется для защиты от последующих изменений.
- Параметры:
-
certValid- проверяемаяDate(илиnull) - См. также:
УстановитьДействительностьЗакрытогоКлюча
public void setPrivateKeyValid(Date privateKeyValid)
X509Certificate. Если null, проверка privateKeyValid не будет выполнена. Обратите внимание, что Date предоставляемый здесь, клонируется для защиты от последующих изменений.
- Параметры:
-
privateKeyValid- проверяемыйDate(илиnull) - См. также:
УстановитьИдентификаторАлгоритмаОткрытогоКлючаСубъекта
public void setSubjectPublicKeyAlgID(String oid) throws IOException
X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID не будет выполнена.- Параметры:
-
oid- идентификатор объекта (OID) алгоритма для проверки (илиnull). OID представлен набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException- если OID недействителен, например, первая составляющая не равна 0, 1 или 2, или вторая составляющая больше 39. - См. также:
УстановитьОткрытыйКлючСубъекта
public void setSubjectPublicKey(PublicKey key)
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена.- Параметры:
-
key- проверяемый открытый ключ субъекта (илиnull) - См. также:
УстановитьОткрытыйКлючСубъекта
public void setSubjectPublicKey(byte[] key) throws IOException
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена. Поскольку этот метод позволяет указать открытый ключ в виде массива байтов, он может использоваться для неизвестных типов ключей.
Если key не null, он должен содержать одну закодированную в DER структуру SubjectPublicKeyInfo, как определено в 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- если произошла ошибка кодирования (неправильная форма для открытого ключа субъекта) - См. также:
УстановитьИспользованиеКлюча
public void setKeyUsage(boolean[] keyUsage)
X509Certificate должен допускать указанные значения keyUsage. Если null, проверка keyUsage не будет выполнена. Обратите внимание, что X509Certificate без расширения keyUsage неявно разрешает все значения keyUsage. Обратите внимание, что массив boolean, предоставленный здесь, клонируется для защиты от последующих изменений.
- Параметры:
-
keyUsage- массив boolean в том же формате, что и массив boolean, возвращаемыйX509Certificate.getKeyUsage(). Илиnull. - См. также:
УстановитьРасширенноеИспользованиеКлюча
public void setExtendedKeyUsage(Set<String> keyPurposeSet) throws IOException
X509Certificate должен разрешать указанные цели использования ключа в его расширении extended key usage. Если keyPurposeSet пусто или null, проверка extendedKeyUsage не будет выполнена. Обратите внимание, что X509Certificate без расширения extendedKeyUsage неявно разрешает все цели использования ключа. Обратите внимание, что Set клонируется для защиты от последующих изменений.
- Параметры:
-
keyPurposeSet- набор OID целей использования ключа в строковом формате (илиnull). Каждый OID представлен набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException- если OID недействителен, например, первая составляющая не равна 0, 1 или 2, или вторая составляющая больше 39. - См. также:
УстановитьСовпадениеВсехSubjectAlternativeNames
public void setMatchAllSubjectAltNames(boolean matchAllNames)
setSubjectAlternativeNames или addSubjectAlternativeName. При включении X509Certificate должен содержать все указанные альтернативные имена субъекта. При отключении X509Certificate должен содержать по крайней мере одно из указанных альтернативных имен субъекта. Флаг matchAllNames по умолчанию true.
- Параметры:
-
matchAllNames- еслиtrue, флаг включен; еслиfalse, флаг выключен. - См. также:
УстановитьSubjectAlternativeNames
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 для защиты от последующих изменений.
- Параметры:
-
names- набор имен (илиnull) - Исключения:
-
IOException- если произошла ошибка разбора - См. также:
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. Для других имён, имён X.400, имён сторон EDI, имён адресов IPv6 или любых других типов имён не определён стандартный строковый формат. Они должны быть указаны с помощью метода addSubjectAlternativeName(int type, byte [] name).
Примечание: для различительных имён используйте addSubjectAlternativeName(int, byte[]) вместо этого. На этот метод не следует полагаться, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в строковой форме RFC 2253 некоторых различительных имён.
- Parameters:
-
type- тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6) -
name- имя в строковом формате (неnull) - Throws:
-
IOException- если произошла ошибка парсинга
addSubjectAlternativeName
public void addSubjectAlternativeName(int type, byte[] name) throws IOException
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- значение ограничения базовых ограничений - 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- множество OID сертификационной политики в строковом формате (или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) — коллекция с одним элементом для каждого имени, которое должно быть включено в критерий pathToNames. Каждый элемент — пара, содержащая Integer (тип имени, 0-8) и String или массив байтов (имя в строковом или ASN.1 DER закодированном формате соответственно). Может быть несколько имён одного типа. Если null используется в качестве значения для этого аргумента, проверка pathToNames не будет выполняться.
Каждое имя в Collection может быть указано либо как строка, либо как ASN.1 закодированный массив байтов. Более подробная информация о используемых форматах см. в addPathToName(int type, String name) и addPathToName(int type, byte [] name).
Примечание: для различительных имён используйте массив байтов вместо строкового формата. См. примечание в addPathToName(int, String) для получения дополнительной информации.
Параметр names может содержать дублирующиеся имена (одинаковое имя и тип имени), но они могут быть удалены из множества имён, возвращаемых методом getPathToNames.
Обратите внимание, что выполняется глубокая копия Collection для защиты от последующих изменений.
- Parameters:
-
names- коллекция с одним элементом на имя (или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. Для других имён, имён X.400, имён сторон EDI, имён адресов IPv6 или любых других типов имён не определён стандартный строковый формат. Они должны быть указаны с помощью метода addPathToName(int type, byte [] name).
Примечание: для различительных имён используйте addPathToName(int, byte[]) вместо этого. На этот метод не следует полагаться, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в строковой форме RFC 2253 некоторых различительных имён.
- Parameters:
-
type- тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6) -
name- имя в строковом формате - Throws:
-
IOException- если произошла ошибка парсинга
addPathToName
public void addPathToName(int type, byte[] name) throws IOException
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:
- требуемое
X509Certificateдля соответствия (или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)
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. Это имя каталога должно соответствовать имени каталога субъекта в X509Certificate. Если null, критерий субъекта отключён и любое имя каталога субъекта подойдёт. Если возвращаемое значение не null, это имя каталога в формате RFC 2253.
- Returns:
- требуемое имя каталога субъекта в формате RFC 2253 (или
null)
getSubjectAsBytes
public byte[] getSubjectAsBytes() throws IOException
X509Certificate. Если null, критерий субъекта отключён и любое имя каталога субъекта подойдёт. Если возвращаемое значение не null, это массив байтов, содержащий одно закодированное в DER имя каталога, как определено в X.501. Нотация ASN.1 этой структуры приведена в документации для setSubject(byte[]).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Returns:
- массив байтов, содержащий требуемое имя каталога субъекта в формате ASN.1 DER (или
null) - Throws:
-
IOException- если произошла ошибка кодирования
getSubjectKeyIdentifier
public byte[] getSubjectKeyIdentifier()
X509Certificate должен содержать расширение SubjectKeyIdentifier со значением. Если null, проверка subjectKeyIdentifier не будет выполнена. Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Returns:
- идентификатор ключа (или
null) - See Also:
getAuthorityKeyIdentifier
public byte[] getAuthorityKeyIdentifier()
X509Certificate должен содержать расширение AuthorityKeyIdentifier со значением. Если null, проверка authorityKeyIdentifier не будет выполнена. Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Returns:
- идентификатор ключа (или
null) - See Also:
getCertificateValid
public Date getCertificateValid()
X509Certificate. Если null, проверка certificateValid не будет выполнена. Обратите внимание, что возвращаемая Date дата клонируется для защиты от последующих изменений.
- Returns:
- требуемую
Dateдату (илиnull) - See Also:
getPrivateKeyValid
public Date getPrivateKeyValid()
X509Certificate. Если null, проверка privateKeyValid не будет выполнена. Обратите внимание, что возвращаемая Date дата клонируется для защиты от последующих изменений.
- Returns:
- требуемую
Dateдату (илиnull) - See Also:
getSubjectPublicKeyAlgID
public String getSubjectPublicKeyAlgID()
X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID не будет выполнена.- Returns:
- идентификатор объекта (OID) алгоритма подписи для проверки (или
null). OID представлен набором неотрицательных целых чисел, разделённых точками. - See Also:
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 не будет выполнена. Обратите внимание, что сертификат X509Certificate, у которого отсутствует расширение extendedKeyUsage, подразумевает разрешение всех целей ключа.- Возвращает:
- неизменяемый
Setидентификаторов целей ключа в строковом формате (илиnull) - См. также:
getMatchAllSubjectAltNames
public boolean getMatchAllSubjectAltNames()
X509Certificate содержать все или хотя бы один из указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName subjectAlternativeNames. Если true, X509Certificate должен содержать все указанные альтернативные имена субъекта. Если false, X509Certificate должен содержать по крайней мере одно из указанных альтернативных имен субъекта.- Возвращает:
-
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 не выполняется.- Возвращает:
- значение ограничения basic constraints
- См. также:
getPolicy
public Set<String> getPolicy()
X509Certificate должен включать по крайней мере одну из указанных политик в своем расширении политики сертификата. Если возвращаемое Set пустое, тогда X509Certificate должен включать по крайней мере какую-то указанную политику в расширении политики сертификата. Если возвращаемое 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
public String toString()
CertSelector.- Переопределяет:
-
toStringв классеObject - Возвращает:
- a
Stringописывающее содержимоеCertSelector
match
public boolean match(Certificate cert)
Certificate.- Задано:
-
matchв интерфейсеCertSelector - Параметры:
-
cert- проверяемыйCertificate - Возвращает:
-
trueеслиCertificateдолжен быть выбран,falseв противном случае
clone
public Object clone()
- Задано:
-
cloneв интерфейсеCertSelector - Переопределяет:
-
cloneв классеObject - Возвращает:
- копию
- См. также:
© 1993, 2023, 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/21/docs/api/java.base/java/security/cert/X509CertSelector.html
getIssuer()илиgetIssuerAsBytes()вместо него.