Класс 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. «Обычно» — потому что возможна ситуация, когда два центра сертификации имеют одинаковые различительные имена и каждый выпускает сертификат с одинаковым серийным номером. Другие уникальные комбинации включают критерии издателя, субъекта, subjectKeyIdentifier и/или subjectPublicKey.
Определения упомянутых ниже расширений сертификата X.509 см. в документе RFC 5280: профиль сертификатов и списков отзыва сертификатов (CRL) для инфраструктуры открытых ключей Internet 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() |
Возвращает ограничение базовых ограничений. |
X509Certificate |
getCertificate() |
Возвращает критерий certificateEquals. |
Date |
getCertificateValid() |
Возвращает критерий certificateValid. |
Set |
getExtendedKeyUsage() |
Возвращает критерий extendedKeyUsage. |
X500Principal |
getIssuer() |
Возвращает критерий издателя в виде X500Principal. |
byte[] |
getIssuerAsBytes() |
Возвращает критерий издателя в виде массива байтов. |
String |
getIssuerAsString() |
Устарел. |
boolean[] |
getKeyUsage() |
Возвращает критерий keyUsage. |
boolean |
getMatchAllSubjectAltNames() |
Указывает, должен ли X509Certificate содержать все или хотя бы одно из имён subjectAlternativeNames, указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName. |
byte[] |
getNameConstraints() |
Возвращает критерий ограничений имён. |
Collection |
getPathToNames() |
Возвращает копию критерия pathToNames. |
Set |
getPolicy() |
Возвращает критерий политик. |
Date |
getPrivateKeyValid() |
Возвращает критерий privateKeyValid. |
BigInteger |
getSerialNumber() |
Возвращает критерий серийного номера. |
X500Principal |
getSubject() |
Возвращает критерий субъекта в виде X500Principal. |
Collection |
getSubjectAlternativeNames() |
Возвращает копию критерия subjectAlternativeNames. |
byte[] |
getSubjectAsBytes() |
Возвращает критерий субъекта в виде массива байтов. |
String |
getSubjectAsString() |
Устарел. Вместо него используйте getSubject() или getSubjectAsBytes(). |
byte[] |
getSubjectKeyIdentifier() |
Возвращает критерий subjectKeyIdentifier. |
PublicKey |
getSubjectPublicKey() |
Возвращает критерий subjectPublicKey. |
String |
getSubjectPublicKeyAlgID() |
Возвращает критерий subjectPublicKeyAlgID. |
boolean |
match |
Определяет, следует ли выбирать Certificate. |
void |
setAuthorityKeyIdentifier |
Задаёт критерий authorityKeyIdentifier. |
void |
setBasicConstraints |
Задаёт ограничение базовых ограничений. |
void |
setCertificate |
Задаёт критерий certificateEquals. |
void |
setCertificateValid |
Задаёт критерий certificateValid. |
void |
setExtendedKeyUsage |
Задаёт критерий extendedKeyUsage. |
void |
setIssuer |
Задаёт критерий издателя. |
void |
setIssuer |
Устарел. Вместо него используйте setIssuer(X500Principal) или setIssuer(byte[]). |
void |
setIssuer |
Задаёт критерий издателя. |
void |
setKeyUsage |
Задаёт критерий keyUsage. |
void |
setMatchAllSubjectAltNames |
Включает или отключает сопоставление со всеми именами subjectAlternativeNames, указанными в методах setSubjectAlternativeNames или addSubjectAlternativeName. |
void |
setNameConstraints |
Задаёт критерий ограничений имён. |
void |
setPathToNames |
Задаёт критерий pathToNames. |
void |
setPolicy |
Задаёт ограничение политик. |
void |
setPrivateKeyValid |
Задаёт критерий privateKeyValid. |
void |
setSerialNumber |
Задаёт критерий серийного номера. |
void |
setSubject |
Задаёт критерий субъекта. |
void |
setSubject |
Устарел. Вместо него используйте setSubject(X500Principal) или setSubject(byte[]). |
void |
setSubject |
Задаёт критерий субъекта. |
void |
setSubjectAlternativeNames |
Задаёт критерий subjectAlternativeNames. |
void |
setSubjectKeyIdentifier |
Задаёт критерий subjectKeyIdentifier. |
void |
setSubjectPublicKey |
Задаёт критерий subjectPublicKey. |
void |
setSubjectPublicKey |
Задаёт критерий subjectPublicKey. |
void |
setSubjectPublicKeyAlgID |
Задаёт критерий subjectPublicKeyAlgID. |
String |
toString() |
Возвращает текстовое представление CertSelector. |
Методы, объявленные в классе Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарел и будет удалён: этот элемент API может быть удалён в будущей версии. Финализация устарела и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени. |
Подробное описание конструкторов
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, критерий издателя отключается и подойдет любое различающееся имя издателя. Если 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, соответствующее содержимому значения расширения SubjectKeyIdentifier (без идентификатора объекта, настройки критичности и объемлющей строки OCTET STRING). Обозначение ASN.1 для этой структуры приведено ниже.
SubjectKeyIdentifier ::= KeyIdentifier
KeyIdentifier ::= OCTET STRING
Так как формат идентификаторов ключей субъекта не определен ни одним стандартом, X509CertSelector не выполняет их разбор. Вместо этого значения сравниваются побайтно.
Обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
subjectKeyID— идентификатор ключа субъекта (илиnull) - См. также:
setAuthorityKeyIdentifier
public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
X509Certificate должен содержать расширение AuthorityKeyIdentifier, значение которого соответствует указанному значению критерия. Если значение критерия равно null, проверка authorityKeyIdentifier не выполняется. Если authorityKeyID не является null, оно должно содержать одно значение в кодировке DER, соответствующее содержимому значения расширения AuthorityKeyIdentifier (без идентификатора объекта, настройки критичности и объемлющей строки OCTET STRING). Обозначение ASN.1 для этой структуры приведено ниже.
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
KeyIdentifier ::= OCTET STRING
X509CertSelector не выполняет разбор идентификаторов ключей центра сертификации. Вместо этого значения сравниваются побайтно.
Когда заполняется поле keyIdentifier объекта AuthorityKeyIdentifier, значение обычно берется из расширения SubjectKeyIdentifier сертификата издателя. Однако обратите внимание: результат X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object
Identifier>) для сертификата издателя НЕЛЬЗЯ напрямую использовать в качестве входных данных для setAuthorityKeyIdentifier. Это связано с тем, что SubjectKeyIdentifier содержит только строку OCTET STRING с KeyIdentifier, а не SEQUENCE из KeyIdentifier, GeneralNames и CertificateSerialNumber. Чтобы использовать значение расширения SubjectKeyIdentifier сертификата издателя, необходимо извлечь значение вложенной строки OCTET STRING KeyIdentifier, а затем закодировать эту строку OCTET STRING в DER внутри SEQUENCE. Подробнее о SubjectKeyIdentifier см. в setSubjectKeyIdentifier(byte[] subjectKeyID).
Также обратите внимание, что указанный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
authorityKeyID— идентификатор ключа центра сертификации (илиnull) - См. также:
setCertificateValid
public void setCertificateValid(Date certValid)
X509Certificate. Если null, проверка certificateValid не выполняется. Обратите внимание, что переданный здесь Date клонируется для защиты от последующих изменений.
- Параметры:
-
certValid—Dateдля проверки (илиnull) - См. также:
setPrivateKeyValid
public void setPrivateKeyValid(Date privateKeyValid)
X509Certificate. Если null, проверка privateKeyValid не выполняется. Обратите внимание, что переданный здесь Date клонируется для защиты от последующих изменений.
- Параметры:
-
privateKeyValid—Dateдля проверки (илиnull) - См. также:
setSubjectPublicKeyAlgID
public void setSubjectPublicKeyAlgID(String oid) throws IOException
X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID не выполняется.- Параметры:
-
oid— идентификатор объекта (OID) алгоритма для проверки (илиnull). OID представляется набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException— если OID недопустим, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39. - См. также:
setSubjectPublicKey
public void setSubjectPublicKey(PublicKey key)
X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не выполняется.- Параметры:
-
key— открытый ключ субъекта для проверки (илиnull) - См. также:
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
Обратите внимание, что переданный здесь массив байтов клонируется для защиты от последующих изменений.
- Параметры:
-
key— массив байтов, содержащий открытый ключ субъекта в формате ASN.1 DER (илиnull) - Исключения:
-
IOException— если произошла ошибка кодирования (неверный формат открытого ключа субъекта) - См. также:
setKeyUsage
public void setKeyUsage(boolean[] keyUsage)
X509Certificate должен разрешать указанные значения keyUsage. Если null, проверка keyUsage не выполняется. Обратите внимание, что X509Certificate без расширения keyUsage неявно разрешает все значения keyUsage. Обратите внимание, что переданный здесь массив boolean клонируется для защиты от последующих изменений.
- Параметры:
-
keyUsage— массив boolean в том же формате, что и массив boolean, возвращаемый методомX509Certificate.getKeyUsage(). Илиnull. - См. также:
setExtendedKeyUsage
public void setExtendedKeyUsage(Set<String> keyPurposeSet) throws IOException
X509Certificate должен разрешать указанные назначения ключа в своем расширении extended key usage. Если keyPurposeSet пуст или равен null, проверка extendedKeyUsage не выполняется. Обратите внимание, что X509Certificate без расширения extendedKeyUsage неявно разрешает все назначения ключа. Обратите внимание, что Set клонируется для защиты от последующих изменений.
- Параметры:
-
keyPurposeSet—Setидентификаторов OID назначений ключа в строковом формате (илиnull). Каждый OID представляется набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException— если OID недопустим, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39. - См. также:
setMatchAllSubjectAltNames
public void setMatchAllSubjectAltNames(boolean matchAllNames)
setSubjectAlternativeNames или addSubjectAlternativeName. Если сопоставление включено, X509Certificate должен содержать все указанные альтернативные имена субъекта. Если оно отключено, X509Certificate должен содержать хотя бы одно из указанных альтернативных имен субъекта. По умолчанию флаг matchAllNames равен true.
- Параметры:
-
matchAllNames— еслиtrue, флаг включен; еслиfalse, флаг отключен. - См. также:
setSubjectAlternativeNames
public void setSubjectAlternativeNames(Collection<List<?>> names) throws IOException
X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них (см. 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—Collectionимен (илиnull) - Исключения:
-
IOException— если произошла ошибка разбора - См. также:
addSubjectAlternativeName
public void addSubjectAlternativeName(int type, String name) throws IOException
X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них (см. setMatchAllSubjectAltNames). Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к предыдущему значению критерия subjectAlternativeNames. Если указанное имя является дубликатом, оно может быть проигнорировано.
Имя задается в строковом формате. Для имен RFC 822, DNS и URI используются общепринятые строковые форматы соответствующих типов (с учетом ограничений, приведенных в RFC 5280). Имена IPv4-адресов задаются в формате четырех десятичных октетов, разделенных точками. Имена OID-адресов представляются последовательностью неотрицательных целых чисел, разделенных точками. Имена каталогов (различающиеся имена) задаются в формате RFC 2253. Для otherNames, имен X.400, имен сторон EDI, имен IPv6-адресов и имен других типов стандартный строковый формат не определен. Их следует задавать с помощью метода addSubjectAlternativeName(int type, byte [] name).
Примечание: для различающихся имен используйте вместо этого addSubjectAlternativeName(int, byte[]). Не следует полагаться на этот метод: он может не сопоставить некоторые сертификаты из-за потери информации о кодировании в строковом представлении некоторых различающихся имен в формате RFC 2253.
- Параметры:
-
type— тип имени (0–8, как указано в RFC 5280, разделе 4.2.1.6) -
name— имя в строковом формате (неnull) - Исключения:
-
IOException— если произошла ошибка разбора - Внешние спецификации
addSubjectAlternativeName
public void addSubjectAlternativeName(int type, byte[] name) throws IOException
X509Certificate должен содержать все указанные subjectAlternativeNames или хотя бы одно из них (см. 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
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— если произошла ошибка разбора - См. также:
setBasicConstraints
public void setBasicConstraints(int minMaxPathLen)
X509Certificates должен содержать расширение basicConstraints со значением pathLen не меньше этого значения. Если значение равно -2, принимаются только сертификаты конечных сущностей. Если значение равно -1, проверка не выполняется. Это ограничение полезно при построении пути сертификации в прямом направлении (от целевого сертификата к якорю доверия). Если построена частичная цепочка, значение maxPathLen каждого сертификата-кандидата должно быть не меньше количества сертификатов в частичной цепочке.
- Параметры:
-
minMaxPathLen— значение ограничения basic constraints - Исключения:
-
IllegalArgumentException— если значение меньше -2 - См. также:
setPolicy
public void setPolicy(Set<String> certPolicySet) throws IOException
X509Certificate должен включать хотя бы одну из указанных политик в расширение certificate policies. Если certPolicySet пуст, то X509Certificate должен включать хотя бы одну указанную политику в расширение certificate policies. Если certPolicySet равен null, проверка политик выполняться не будет. Обратите внимание, что Set клонируется для защиты от последующих изменений.
- Параметры:
-
certPolicySet—Setидентификаторов OID политик сертификата в строковом формате (илиnull). Каждый OID представляется набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException— если произошла ошибка разбора OID, например, если первый компонент не равен 0, 1 или 2 либо второй компонент больше 39. - См. также:
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.
- Параметры:
-
names—Collectionс одной записью для каждого имени (илиnull) - Исключения:
-
IOException— если произошла ошибка разбора - См. также:
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, имен IPv6-адресов и других типов имен стандартный строковый формат не определен. Их следует указывать с помощью метода addPathToName(int type, byte [] name).
Примечание: для различительных имен используйте вместо этого addPathToName(int, byte[]). На этот метод не следует полагаться, поскольку он может не сопоставить некоторые сертификаты из-за потери сведений о кодировке в строковом представлении некоторых различительных имен в формате RFC 2253.
- Параметры:
-
type— тип имени (0–8, согласно разделу 4.2.1.6 RFC 5280) -
name— имя в строковом формате - Исключения:
-
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).
Обратите внимание, что переданный здесь массив байтов копируется для защиты от последующих изменений.
- Параметры:
-
type— тип имени (0–8, согласно разделу 4.2.1.6 RFC 5280) -
name— массив байтов, содержащий имя в кодировке ASN.1 DER - Исключения:
-
IOException— если произошла ошибка разбора
getCertificate
public X509Certificate getCertificate()
X509Certificate должен быть равен X509Certificate, переданному методу match. Если null, эта проверка не выполняется.- Возвращает:
X509Certificateдля сопоставления (илиnull)- См. также:
getSerialNumber
public BigInteger getSerialNumber()
X509Certificate. Если null, подойдет любой серийный номер сертификата.- Возвращает:
- серийный номер сертификата для сопоставления (или
null) - См. также:
getIssuer
public X500Principal getIssuer()
X500Principal. Это различительное имя должно совпадать с различительным именем издателя в X509Certificate. Если null, критерий издателя отключен, и подойдет любое различительное имя издателя.- Возвращает:
- требуемое различительное имя издателя в виде X500Principal (или
null) - С версии:
- 1.5
getIssuerAsString
@Deprecated(since="16") 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[]).
Обратите внимание, что возвращаемый массив байтов копируется для защиты от последующих изменений.
- Возвращает:
- массив байтов, содержащий требуемое различительное имя издателя в формате ASN.1 DER (или
null) - Исключения:
-
IOException— если произошла ошибка кодирования
getSubject
public X500Principal getSubject()
X500Principal. Это различительное имя должно совпадать с различительным именем субъекта в X509Certificate. Если null, критерий субъекта отключен, и подойдет любое различительное имя субъекта.- Возвращает:
- требуемое различительное имя субъекта в виде X500Principal (или
null) - С версии:
- 1.5
getSubjectAsString
@Deprecated(since="16") public String getSubjectAsString()
getSubject() или getSubjectAsBytes(). На этот метод не следует полагаться, поскольку он может не сопоставить некоторые сертификаты из-за потери сведений о кодировке в строковом представлении некоторых различительных имен в формате RFC 2253.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 выполняться не будет. Обратите внимание, что возвращаемый массив логических значений копируется для защиты от последующих изменений.
- Возвращает:
- массив логических значений в том же формате, что и массив, возвращаемый методом
X509Certificate.getKeyUsage(). Илиnull. - См. также:
getExtendedKeyUsage
public Set<String> getExtendedKeyUsage()
X509Certificate должен допускать указанные назначения ключа в расширении extended key usage. Если возвращаемое keyPurposeSet пусто или равно null, проверка extendedKeyUsage выполняться не будет. Обратите внимание, что X509Certificate без расширения extendedKeyUsage неявно допускает все назначения ключа.- Возвращает:
- неизменяемый
SetOID назначений ключа в строковом формате (илиnull) - См. также:
getMatchAllSubjectAltNames
public boolean getMatchAllSubjectAltNames()
X509Certificate содержать все или хотя бы одно из subjectAlternativeNames, заданных методами setSubjectAlternativeNames или addSubjectAlternativeName. Если true, X509Certificate должен содержать все указанные альтернативные имена субъекта. Если false, X509Certificate должен содержать хотя бы одно из указанных альтернативных имен субъекта.- Возвращает:
-
true, если флаг включен;false, если флаг отключен. По умолчанию флаг имеет значениеtrue. - См. также:
getSubjectAlternativeNames
public Collection<List<?>> getSubjectAlternativeNames()
getMatchAllSubjectAltNames), X509Certificate должен содержать все или хотя бы одно из указанных subjectAlternativeNames. Если возвращаемое значение равно 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)- См. также:
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 должен включать как минимум одну из указанных политик в расширении certificate policies. Если возвращаемое Set пусто, X509Certificate должен включать в расширение certificate policies хотя бы какую-либо указанную политику. Если возвращаемое Set равно null, проверка политики выполняться не будет.- Возвращает:
- неизменяемый
SetOID политик сертификата в строковом формате (или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.
- Возвращает:
Collectionимен (илиnull)- См. также:
toString
match
public boolean match(Certificate cert)
Certificate.- Определен в:
-
matchв интерфейсеCertSelector - Параметры:
-
cert—Certificateдля проверки - Возвращает:
-
true, еслиCertificateследует выбрать, иначеfalse
clone
public Object clone()
- Определен в:
-
cloneв интерфейсеCertSelector - Переопределяет:
-
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.
getIssuer()илиgetIssuerAsBytes().