Класс X509CertSelector
- java.lang.Object
-
- java.security.cert.X509CertSelector
- Все реализованные интерфейсы:
- Cloneable, CertSelector
public class X509CertSelector extends Object implements CertSelector
Класс, который выбирает сертификаты, соответствующие всем указанным критериям. Этот класс особенно полезен при выборе сертификатов из хранилища сертификатов для построения совместимого с PKIX цепочки сертификатов.
При первом создании у класса нет включенных критериев, и каждый из методов выбора возвращает значение по умолчанию (null, или -1 для метода getBasicConstraints). Поэтому метод match вернёт true для любого X509Certificate. Обычно несколько критериев включаются (вызовом setIssuer или setKeyUsage, например), а затем этот объект передаётся в метод CertStore.getCertificates или в какой-либо аналогичный метод.
Несколько критериев могут быть включены (вызовом setIssuer и setSerialNumber, например), так что метод match обычно однозначно находит единственный X509Certificate. Мы говорим обычно, так как возможно, что у двух ЦС (центра сертификации) есть одинаковое имя и каждый из них выпустил сертификат с тем же серийным номером. Другие уникальные комбинации включают в себя критерий эмитента, субъекта, идентификатора открытого ключа субъекта и/или критерий открытого ключа субъекта.
Определения расширений сертификатов X.509, упомянутых ниже, см. в RFC 5280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile.
Доступность из нескольких потоков
Если не указано иное, методы, определённые в этом классе, не потокобезопасны. Несколько потоков, которым требуется одновременный доступ к одному объекту, должны синхронизироваться друг с другом и обеспечить необходимую блокировку. Несколько потоков, работающих с разными объектами, не нуждаются в синхронизации.
- С тех пор:
- 1.4
- См. также:
-
CertSelector,X509Certificate
Конструкторы
| Конструктор и описание |
|---|
X509CertSelector() Создаёт экземпляр |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
addPathToName(int type,
byte[] name) Добавляет имя в критерий pathToNames. |
void |
addPathToName(int type,
String name) Добавляет имя в критерий pathToNames. |
void |
addSubjectAlternativeName(int type,
byte[] name) Добавляет имя в критерий subjectAlternativeNames. |
void |
addSubjectAlternativeName(int type,
String name) Добавляет имя в критерий subjectAlternativeNames. |
Object |
clone() Возвращает копию этого объекта. |
byte[] |
getAuthorityKeyIdentifier() Возвращает критерий authorityKeyIdentifier. |
int |
getBasicConstraints() Возвращает критерий basic constraints. |
X509Certificate |
getCertificate() Возвращает критерий certificateEquals. |
Date |
getCertificateValid() Возвращает критерий certificateValid. |
Set<String> |
getExtendedKeyUsage() Возвращает критерий extendedKeyUsage. |
X500Principal |
getIssuer() Возвращает критерий эмитента как объект |
byte[] |
getIssuerAsBytes() Возвращает критерий эмитента как массив байтов. |
String |
getIssuerAsString() Устаревший, используйте getIssuer() или getIssuerAsBytes() вместо этого. |
boolean[] |
getKeyUsage() Возвращает критерий keyUsage. |
boolean |
getMatchAllSubjectAltNames() Указывает, должен ли сертификат содержать все или хотя бы одно из subjectAlternativeNames, указанных в методах |
byte[] |
getNameConstraints() Возвращает критерий name constraints. |
Collection<List<?>> |
getPathToNames() Возвращает копию критерия pathToNames. |
Set<String> |
getPolicy() Возвращает критерий policy. |
Date |
getPrivateKeyValid() Возвращает критерий privateKeyValid. |
BigInteger |
getSerialNumber() Возвращает критерий serialNumber. |
X500Principal |
getSubject() Возвращает критерий субъекта как объект |
Collection<List<?>> |
getSubjectAlternativeNames() Возвращает копию критерия subjectAlternativeNames. |
byte[] |
getSubjectAsBytes() Возвращает критерий субъекта как массив байтов. |
String |
getSubjectAsString() Устаревший, используйте getSubject() или getSubjectAsBytes() вместо этого. |
byte[] |
getSubjectKeyIdentifier() Возвращает критерий subjectKeyIdentifier. |
PublicKey |
getSubjectPublicKey() Возвращает критерий subjectPublicKey. |
String |
getSubjectPublicKeyAlgID() Возвращает критерий subjectPublicKeyAlgID. |
boolean |
match(Certificate cert) Определяет, должен ли быть выбран |
void |
setAuthorityKeyIdentifier(byte[] authorityKeyID) Устанавливает критерий authorityKeyIdentifier. |
void |
setBasicConstraints(int minMaxPathLen) Устанавливает критерий basic constraints. |
void |
setCertificate(X509Certificate cert) Устанавливает критерий certificateEquals. |
void |
setCertificateValid(Date certValid) Устанавливает критерий certificateValid. |
void |
setExtendedKeyUsage(Set<String> keyPurposeSet) Устанавливает критерий extendedKeyUsage. |
void |
setIssuer(byte[] issuerDN) Устанавливает критерий эмитента. |
void |
setIssuer(String issuerDN) Устаревший, используйте setIssuer(X500Principal) или setIssuer(byte[]) вместо этого. |
void |
setIssuer(X500Principal issuer) Устанавливает критерий эмитента. |
void |
setKeyUsage(boolean[] keyUsage) Устанавливает критерий keyUsage. |
void |
setMatchAllSubjectAltNames(boolean matchAllNames) Включает/отключает соответствие всем subjectAlternativeNames, указанным в методах |
void |
setNameConstraints(byte[] bytes) Устанавливает критерий name constraints. |
void |
setPathToNames(Collection<List<?>> names) Устанавливает критерий pathToNames. |
void |
setPolicy(Set<String> certPolicySet) Устанавливает критерий policy. |
void |
setPrivateKeyValid(Date privateKeyValid) Устанавливает критерий privateKeyValid. |
void |
setSerialNumber(BigInteger serial) Устанавливает критерий serialNumber. |
void |
setSubject(byte[] subjectDN) Устанавливает критерий субъекта. |
void |
setSubject(String subjectDN) Устаревший, используйте setSubject(X500Principal) или setSubject(byte[]) вместо этого. |
void |
setSubject(X500Principal subject) Устанавливает критерий субъекта. |
void |
setSubjectAlternativeNames(Collection<List<?>> names) Устанавливает критерий subjectAlternativeNames. |
void |
setSubjectKeyIdentifier(byte[] subjectKeyID) Устанавливает критерий subjectKeyIdentifier. |
void |
setSubjectPublicKey(byte[] key) Устанавливает критерий subjectPublicKey. |
void |
setSubjectPublicKey(PublicKey key) Устанавливает критерий subjectPublicKey. |
void |
setSubjectPublicKeyAlgID(String oid) Устанавливает критерий subjectPublicKeyAlgID. |
String |
toString() Возвращает удобочитаемое представление |
Методы, унаследованные от класса java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Конструкторы
X509CertSelector
public X509CertSelector()
Создаёт X509CertSelector. Изначально критерии не установлены, поэтому любой X509Certificate будет соответствовать.
Методы
setCertificate
public void setCertificate(X509Certificate cert)
Устанавливает критерий certificateEquals. Указанный X509Certificate должен быть равен X509Certificate , переданному в метод match. Если null, эта проверка не применяется.
Этот метод особенно полезен, когда необходимо сопоставить один сертификат. Хотя другие критерии могут быть заданы совместно с критерием certificateEquals, это обычно непрактично или не нужно.
- Параметры:
-
cert- сопоставляемыйX509Certificate(илиnull) - См. также:
getCertificate()
setSerialNumber
public void setSerialNumber(BigInteger serial)
Устанавливает критерий serialNumber. Указанный номер серии должен совпадать с номером серии сертификата в X509Certificate. Если null, подойдёт любой номер серии сертификата.
- Параметры:
-
serial- номер серии сертификата для сопоставления (илиnull) - См. также:
getSerialNumber()
setIssuer
public void setIssuer(X500Principal issuer)
Устанавливает критерий issuer. Указанное имя должен совпадать с именем эмитента в X509Certificate. Если null, подойдёт любое имя эмитента.
- Параметры:
-
issuer- имя, как X500Principal (илиnull) - С:
- 1.5
setIssuer
public void setIssuer(String issuerDN)
throws IOException Отклоняется, используйте setIssuer(X500Principal) или setIssuer(byte[]) вместо этого. Этот метод не следует использовать, так как он может не сопоставить некоторые сертификаты из-за потери информации об кодировании в RFC 2253 строковой форме некоторых имён.
Устанавливает критерий issuer. Указанное имя должно совпадать с именем эмитента в X509Certificate. Если null, подойдёт любое имя эмитента.
Если issuerDN не null, оно должно содержать имя, в формате RFC 2253.
- Параметры:
-
issuerDN- имя в формате RFC 2253 (илиnull) - Исключения:
-
IOException- если произошла ошибка при разборе (неправильный формат для имени)
setIssuer
public void setIssuer(byte[] issuerDN)
throws IOException Устанавливает критерий issuer. Указанное имя должно совпадать с именем эмитента в X509Certificate. Если null указано, критерий issuer отключён, и подойдёт любое имя эмитента.
Если issuerDN не null, оно должно содержать одно DER-закодированное имя, как определено в X.501. ASN.1 обозначение для этой структуры приведено ниже.
Name ::= CHOICE {
RDNSequence }
RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::=
SET SIZE (1 .. MAX) OF AttributeTypeAndValue
AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }
AttributeType ::= OBJECT IDENTIFIER
AttributeValue ::= ANY DEFINED BY AttributeType
....
DirectoryString ::= CHOICE {
teletexString TeletexString (SIZE (1..MAX)),
printableString PrintableString (SIZE (1..MAX)),
universalString UniversalString (SIZE (1..MAX)),
utf8String UTF8String (SIZE (1.. MAX)),
bmpString BMPString (SIZE (1..MAX)) } Обратите внимание, что переданный массив байтов клонируется, чтобы предотвратить последующие изменения.
- Параметры:
-
issuerDN- массив байтов, содержащий имя в ASN.1 DER-кодированной форме (илиnull) - Исключения:
-
IOException- если произошла ошибка при кодировании (неправильный формат для имени)
setSubject
public void setSubject(X500Principal subject)
Устанавливает критерий subject. Указанное имя должно совпадать с именем субъекта в X509Certificate. Если null, подойдёт любое имя субъекта.
- Параметры:
-
subject- имя как X500Principal (илиnull) - С:
- 1.5
setSubject
public void setSubject(String subjectDN)
throws IOException Отклоняется, используйте setSubject(X500Principal) или setSubject(byte[]) вместо этого. Этот метод не следует использовать, так как он может не сопоставить некоторые сертификаты из-за потери информации об кодировании в строковой форме некоторых имён в RFC 2253.
Устанавливает критерий subject. Указанное имя должно совпадать с именем субъекта в X509Certificate. Если null, подойдёт любое имя субъекта.
Если subjectDN не null, оно должно содержать имя в формате RFC 2253.
- Параметры:
-
subjectDN- имя в формате RFC 2253 (илиnull) - Исключения:
-
IOException- если произошла ошибка при разборе (неправильный формат для имени)
setSubject
public void setSubject(byte[] subjectDN)
throws IOException Устанавливает критерий subject. Указанное имя должно совпадать с именем субъекта в X509Certificate. Если null, подойдёт любое имя субъекта.
Если subjectDN не null, оно должно содержать одно DER-закодированное имя, как определено в X.501. ASN.1 обозначение для этой структуры см. в setIssuer(byte [] issuerDN).
- Параметры:
-
subjectDN- массив байтов, содержащий имя в ASN.1 DER формате (илиnull) - Исключения:
-
IOException- если произошла ошибка при кодировании (неправильный формат для имени)
setSubjectKeyIdentifier
public void setSubjectKeyIdentifier(byte[] subjectKeyID)
Устанавливает критерий subjectKeyIdentifier. X509Certificate должен содержать расширение SubjectKeyIdentifier, содержимое которого соответствует указанному критерию. Если значение критерия null, проверка subjectKeyIdentifier не будет выполняться.
Если subjectKeyID не null, оно должно содержать одно DER-закодированное значение, соответствующее содержимому значения расширения (без учёта идентификатора объекта, критической установки и включающего OCTET STRING) для расширения SubjectKeyIdentifier. ASN.1 обозначение для этой структуры приведено ниже.
SubjectKeyIdentifier ::= KeyIdentifier KeyIdentifier ::= OCTET STRING
Поскольку формат идентификаторов ключей субъекта не регламентирован никаким стандартом, идентификаторы ключей субъекта не анализируются X509CertSelector. Вместо этого значения сравниваются побайтово.
Обратите внимание, что массив байтов, предоставленный здесь, клонируется, чтобы предотвратить последующие изменения.
- Параметры:
-
subjectKeyID- идентификатор ключа субъекта (илиnull) - См. также:
getSubjectKeyIdentifier()
setAuthorityKeyIdentifier
public void setAuthorityKeyIdentifier(byte[] authorityKeyID)
Устанавливает критерий authorityKeyIdentifier. X509Certificate должен содержать расширение AuthorityKeyIdentifier, содержимое значения которого соответствует указанному критерию. Если значение критерия null, проверка authorityKeyIdentifier не будет выполняться.
Если authorityKeyID не null, оно должно содержать одно DER-закодированное значение, соответствующее содержимому значения расширения (без учёта идентификатора объекта, критической установки и включающего OCTET STRING) для расширения AuthorityKeyIdentifier. ASN.1 обозначение для этой структуры приведено ниже.
AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
KeyIdentifier ::= OCTET STRING Идентификаторы ключей авторитета не анализируются X509CertSelector. Вместо этого значения сравниваются побайтово.
Когда поле keyIdentifier в AuthorityKeyIdentifier заполнено, значение обычно берётся из расширения SubjectKeyIdentifier сертификата эмитента. Обратите внимание, однако, что результат X509Certificate.getExtensionValue(<SubjectKeyIdentifier Object
Identifier>) для сертификата эмитента НЕ может использоваться напрямую в качестве входных данных для setAuthorityKeyIdentifier. Это потому, что SubjectKeyIdentifier содержит только OCTET STRING KeyIdentifier, а не SEQUENCE из KeyIdentifier, GeneralNames и CertificateSerialNumber. Для использования значения расширения расширения SubjectKeyIdentifier сертификата эмитента необходимо извлечь значение вложенного OCTET STRING KeyIdentifier, затем DER-закодировать этот OCTET STRING внутри SEQUENCE. Более подробную информацию об SubjectKeyIdentifier см. в setSubjectKeyIdentifier(byte[] subjectKeyID).
Также обратите внимание, что переданный массив байтов клонируется, чтобы предотвратить последующие изменения.
- Параметры:
-
authorityKeyID- идентификатор ключа авторитета (илиnull) - См. также:
getAuthorityKeyIdentifier()
setCertificateValid
public void setCertificateValid(Date certValid)
Устанавливает критерий certificateValid. Указанная дата должна попадать в срок действия сертификата для X509Certificate. Если null, проверка certificateValid не будет выполняться.
Обратите внимание, что переданная Date клонируется, чтобы предотвратить последующие изменения.
- Параметры:
-
certValid- проверяемаяDate(илиnull) - См. также:
getCertificateValid()
setPrivateKeyValid
public void setPrivateKeyValid(Date privateKeyValid)
Устанавливает критерий privateKeyValid. Указанная дата должна попадать в срок действия закрытого ключа для X509Certificate. Если null, проверка privateKeyValid не будет выполняться.
Обратите внимание, что переданная Date клонируется, чтобы предотвратить последующие изменения.
- Параметры:
-
privateKeyValid- проверяемаяDate(илиnull) - См. также:
getPrivateKeyValid()
setSubjectPublicKeyAlgID
public void setSubjectPublicKeyAlgID(String oid)
throws IOException Устанавливает критерий subjectPublicKeyAlgID. Значение X509Certificate должно содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID не будет выполнена.
- Параметры:
-
oid- идентификатор объекта (OID) алгоритма для проверки (илиnull). OID представлен набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException- если OID недействителен, например, первый компонент не равен 0, 1 или 2, или второй компонент больше 39. - См. также:
getSubjectPublicKeyAlgID()
setSubjectPublicKey
public void setSubjectPublicKey(PublicKey key)
Устанавливает критерий subjectPublicKey. Значение X509Certificate должно содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена.
- Параметры:
-
key- открытый ключ субъекта для проверки (илиnull) - См. также:
getSubjectPublicKey()
setSubjectPublicKey
public void setSubjectPublicKey(byte[] key)
throws IOException Устанавливает критерий subjectPublicKey. Значение X509Certificate должно содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена.
Так как этот метод позволяет указать открытый ключ в виде массива байтов, он может использоваться для неизвестных типов ключей.
Если key не равно null, оно должно содержать одну закодированную в 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- если произошла ошибка кодирования (неверный формат для открытого ключа субъекта) - См. также:
getSubjectPublicKey()
setKeyUsage
public void setKeyUsage(boolean[] keyUsage)
Устанавливает критерий keyUsage. Значение X509Certificate должно разрешать указанные значения keyUsage. Если null, проверка keyUsage не будет выполнена. Обратите внимание, что сертификат X509Certificate, у которого отсутствует расширение keyUsage, неявно разрешает все значения keyUsage.
Обратите внимание, что массив булевых значений, предоставленный здесь, дублируется для защиты от последующих изменений.
- Параметры:
-
keyUsage- массив булевых значений в том же формате, что и массив булевых значений, возвращаемый методомX509Certificate.getKeyUsage(). Илиnull. - См. также:
getKeyUsage()
setExtendedKeyUsage
public void setExtendedKeyUsage(Set<String> keyPurposeSet)
throws IOException Устанавливает критерий extendedKeyUsage. Значение X509Certificate должно разрешать указанные цели использования ключа в расширении extended key usage. Если keyPurposeSet пусто или null, проверка extendedKeyUsage не будет выполнена. Обратите внимание, что сертификат X509Certificate, у которого отсутствует расширение extendedKeyUsage, неявно разрешает все цели использования ключа.
Обратите внимание, что Set дублируется для защиты от последующих изменений.
- Параметры:
-
keyPurposeSet- набор OID целей использования ключа в строковом формате (илиnull). Каждый OID представлен набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException- если OID недействителен, например, первый компонент не равен 0, 1 или 2, или второй компонент больше 39. - См. также:
getExtendedKeyUsage()
setMatchAllSubjectAltNames
public void setMatchAllSubjectAltNames(boolean matchAllNames)
Включает/отключает сопоставление всех указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName альтернативных имен subjectAlternativeNames. Если включено, значение X509Certificate должно содержать все указанные альтернативные имена. Если отключено, значение X509Certificate должно содержать по крайней мере одно из указанных альтернативных имен.
Флаг matchAllNames включен по умолчанию.
- Параметры:
-
matchAllNames- еслиtrue, флаг включен; еслиfalse, флаг отключен. - См. также:
getMatchAllSubjectAltNames()
setSubjectAlternativeNames
public void setSubjectAlternativeNames(Collection<List<?>> names)
throws IOException Устанавливает критерий subjectAlternativeNames. Значение X509Certificate должно содержать все или по крайней мере одно из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. setMatchAllSubjectAltNames).
Этот метод позволяет вызывающему коду задать полный набор альтернативных имен subjectAlternativeNames для критерия subjectAlternativeNames за один вызов. Указанное значение заменяет предыдущее значение для критерия subjectAlternativeNames.
Параметр names (если не null) - коллекция с одним элементом для каждого имени, которое должно быть включено в критерий subject alternative name. Каждый элемент представляет собой массив, первый элемент которого — Integer (тип имени, 0-8), а второй элемент — String или массив байтов (само имя, в строковом или кодированном в ASN.1 DER формате соответственно). Может быть несколько имен одного типа. Если для этого аргумента передано null, проверка subjectAlternativeNames не будет выполнена.
Каждое альтернативное имя субъекта в Collection может быть задано либо как String, либо как закодированный в ASN.1 массив байтов. Более подробную информацию о используемых форматах см. в addSubjectAlternativeName(int type, String name) и addSubjectAlternativeName(int type, byte [] name).
Примечание: для имен с выделенными атрибутами (distinguished names) используйте форму массива байтов вместо строковой формы. См. примечание в addSubjectAlternativeName(int, String) для получения дополнительной информации.
Обратите внимание, что параметр names может содержать дублирующиеся имена (с одинаковым именем и типом), но они могут быть удалены из Collection списка имен, возвращаемых методом getSubjectAlternativeNames.
Обратите внимание, что для параметра Collection выполняется глубокая копия для защиты от последующих изменений.
- Параметры:
-
names- набор имен (илиnull) - Исключения:
-
IOException- если произошла ошибка при разборе - См. также:
getSubjectAlternativeNames()
addSubjectAlternativeName
public void addSubjectAlternativeName(int type,
String name)
throws IOException Добавляет имя в критерий subjectAlternativeNames. Значение X509Certificate должно содержать все или по крайней мере одно из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. setMatchAllSubjectAltNames).
Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к любому предыдущему значению для критерия subjectAlternativeNames. Если указанное имя является дубликатом, оно может быть проигнорировано.
Имя предоставляется в строковом формате. Имена RFC 822, DNS и URI используют стандартные строковые форматы (в соответствии с ограничениями, включенными в RFC 5280). Имена IPv4-адресов предоставляются с использованием обозначения "точка-тире". Имена OID-адресов представлены серией неотрицательных целых чисел, разделенных точками. А имена каталога (имена с выделенными атрибутами) предоставляются в формате RFC 2253. Для других типов имен (otherNames, имена X.400, имена сторон EDI, имена IPv6-адресов и т.д.) не определен стандартный строковый формат. Они должны быть указаны с помощью метода addSubjectAlternativeName(int type, byte [] name).
Примечание: для имен с выделенными атрибутами используйте addSubjectAlternativeName(int, byte[]). Этот метод не должен использоваться, так как он может не соответствовать некоторым сертификатам из-за потери кодировочной информации в строковой форме RFC 2253 некоторых имен с выделенными атрибутами.
- Параметры:
-
type- тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6) -
name- имя в строковом формате (неnull) - Исключения:
-
IOException- если произошла ошибка при разборе
addSubjectAlternativeName
public void addSubjectAlternativeName(int type,
byte[] name)
throws IOException Добавляет имя в критерий subjectAlternativeNames. Значение X509Certificate должно содержать все или по крайней мере одно из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. setMatchAllSubjectAltNames).
Этот метод позволяет вызывающему коду добавить имя в набор альтернативных имен субъекта. Указанное имя добавляется к любому предыдущему значению для критерия subjectAlternativeNames. Если указанное имя является дубликатом, оно может быть проигнорировано.
Имя предоставляется в виде массива байтов. Этот массив байтов должен содержать закодированное в DER имя, как оно отображается в структуре GeneralName, определенной в RFC 5280 и X.509. Кодированный массив байтов должен содержать только закодированное значение имени и не должен включать тег, связанный с именем в структуре GeneralName. ASN.1 определение этой структуры приведено ниже.
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER} Обратите внимание, что массив байтов, предоставленный здесь, дублируется для защиты от последующих изменений.
- Параметры:
-
type- тип имени (0-8, как указано выше) -
name- массив байтов, содержащий имя в формате ASN.1 DER - Исключения:
-
IOException- если произошла ошибка при разборе
setNameConstraints
public void setNameConstraints(byte[] bytes)
throws IOException Устанавливает критерий ограничений имени. X509Certificate должен иметь субъект и альтернативные имена субъекта, которые соответствуют заданным ограничениям имени.
Ограничения имени задаются в виде массива байтов. Этот массив байтов должен содержать DER-кодированную форму ограничений имени, как она представлена в структуре NameConstraints в RFC 5280 и X.509. Определение ASN.1 этой структуры приведено ниже.
NameConstraints ::= SEQUENCE {
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL }
GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
GeneralSubtree ::= SEQUENCE {
base GeneralName,
minimum [0] BaseDistance DEFAULT 0,
maximum [1] BaseDistance OPTIONAL }
BaseDistance ::= INTEGER (0..MAX)
GeneralName ::= CHOICE {
otherName [0] OtherName,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER} Обратите внимание, что массив байтов, предоставленный здесь, клонируется для защиты от последующих изменений.
- Параметры:
-
bytes- массив байтов, содержащий ASN.1 DER-кодирование расширения NameConstraints, предназначенного для проверки ограничений имени. Включается только значение расширения, а не OID или флаг критичности. Может бытьnull, в этом случае проверка ограничений имени не будет выполняться. - Исключения:
-
IOException- если произошла ошибка разбора - См. также:
getNameConstraints()
setBasicConstraints
public void setBasicConstraints(int minMaxPathLen)
Устанавливает ограничение базовых свойств. Если значение больше или равно нулю, X509Certificates должен включать расширение basicConstraints с pathLen не меньше этого значения. Если значение равно -2, принимаются только сертификаты конечных сущностей. Если значение равно -1, проверка не выполняется.
Это ограничение полезно при построении сертификационного пути вперёд (от цели к якорю доверия). Если частичный путь уже построен, любой кандидат на сертификат должен иметь значение maxPathLen, большее или равное числу сертификатов в частичном пути.
- Параметры:
-
minMaxPathLen- значение для ограничения базовых свойств - Исключения:
-
IllegalArgumentException- если значение меньше -2 - См. также:
getBasicConstraints()
setPolicy
public void setPolicy(Set<String> certPolicySet)
throws IOException Устанавливает ограничение политики. X509Certificate должен включать по крайней мере одну из указанных политик в расширении политик сертификата. Если certPolicySet пусто, то X509Certificate должен включать по крайней мере какую-либо указанную политику в расширении политик сертификата. Если certPolicySet равно null, проверка политики не будет выполняться.
Обратите внимание, что Set клонируется для защиты от последующих изменений.
- Параметры:
-
certPolicySet- aSetмножества OID политики сертификата в строковом формате (илиnull). Каждый OID представлен набором неотрицательных целых чисел, разделенных точками. - Исключения:
-
IOException- если при разборе OID произошла ошибка, например, первый компонент не равен 0, 1 или 2, или второй компонент больше 39. - См. также:
getPolicy()
setPathToNames
public void setPathToNames(Collection<List<?>> names)
throws IOException Устанавливает критерий pathToNames. X509Certificate не должен включать ограничения имени, которые запрещали бы построение пути к указанным именам.
Этот метод позволяет вызывающей стороне указать полный набор имён, которые ограничения имени X509Certificates должны допускать. Указанное значение заменяет предыдущее значение для критерия pathToNames.
Это ограничение полезно при построении сертификационного пути вперёд (от цели к якорю доверия). Если частичный путь уже построен, любой кандидат на сертификат не должен включать ограничения имени, которые запрещали бы построение пути к любому из имён в частичном пути.
Параметр names (если он не null) представляет собой Collection с одним элементом для каждого имени, которое должно быть включено в критерий pathToNames. Каждый элемент — это List, первый элемент которого — Integer (тип имени, 0-8), а второй — String или массив байтов (имя, соответственно, в строковом или ASN.1 DER-кодированном формате). Может быть несколько имён одного типа. Если null предоставлено в качестве значения для этого аргумента, проверка pathToNames не будет выполняться.
Каждое имя в Collection может быть указано либо как String, либо как закодированный в ASN.1 массив байтов. Подробности о используемых форматах см. в addPathToName(int type, String name) и addPathToName(int type, byte [] name).
Примечание: для имён с отличительными характеристиками укажите форму массива байтов, а не строковую форму. См. примечание в addPathToName(int, String) для получения дополнительной информации.
Обратите внимание, что параметр names может содержать дубликаты имён (то же имя и тип имени), но они могут быть удалены из Collection имён, возвращаемых методом getPathToNames.
Обратите внимание, что выполняется глубокая копия Collection для защиты от последующих изменений.
- Параметры:
-
names- aCollectionс одним элементом на имя (илиnull) - Исключения:
-
IOException- если произошла ошибка разбора - См. также:
getPathToNames()
addPathToName
public void addPathToName(int type,
String name)
throws IOException Добавляет имя в критерий pathToNames. X509Certificate не должен включать ограничения имени, которые запрещали бы построение пути к указанному имени.
Этот метод позволяет вызывающей стороне добавить имя в набор имён, которые ограничения имени X509Certificates должны допускать. Указанное имя добавляется к любому предыдущему значению критерия pathToNames. Если имя является дубликатом, оно может быть проигнорировано.
Имя предоставляется в строковом формате. Имена RFC 822, DNS и URI используют хорошо установленные строковые форматы для этих типов (с ограничениями, указанными в RFC 5280). Имена адресов IPv4 предоставляются с использованием нотации с точками. Имена адресов OID представляются как серия неотрицательных целых чисел, разделенных точками. Имена каталога (отличительные имена) предоставляются в формате RFC 2253. Для otherNames, имён X.400, имён сторон EDI, имён адресов IPv6 или любых других типов имён не определён стандартный строковый формат. Они должны указываться с помощью метода addPathToName(int type, byte [] name).
Примечание: для имён с отличительными характеристиками используйте addPathToName(int, byte[]). Этот метод не следует использовать надёжно, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в строковой форме RFC 2253 некоторых отличительных имён.
- Параметры:
-
type- тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6) -
name- имя в строковом формате - Исключения:
-
IOException- если произошла ошибка разбора
addPathToName
public void addPathToName(int type,
byte[] name)
throws IOException Добавляет имя в критерий pathToNames. X509Certificate не должен включать ограничения имени, которые запрещали бы построение пути к указанному имени.
Этот метод позволяет вызывающей стороне добавить имя в набор имён, которые ограничения имени X509Certificates должны допускать. Указанное имя добавляется к любому предыдущему значению критерия pathToNames. Если имя является дубликатом, оно может быть проигнорировано.
Имя предоставляется в виде массива байтов. Этот массив байтов должен содержать DER-закодированное имя, как оно представлено в структуре GeneralName в RFC 5280 и X.509. Определение ASN.1 этой структуры приведено в документации для addSubjectAlternativeName(int type, byte [] name).
Обратите внимание, что массив байтов, предоставленный здесь, клонируется для защиты от последующих изменений.
- Параметры:
-
type- тип имени (0-8, как указано в RFC 5280, раздел 4.2.1.6) -
name- массив байтов, содержащий имя в ASN.1 DER-закодированном формате - Исключения:
-
IOException- если произошла ошибка разбора
getCertificate
public X509Certificate getCertificate()
Возвращает критерий certificateEquals. Указанный X509Certificate должен быть равен X509Certificate , переданному методу match. Если null, эта проверка не применяется.
- Возвращает:
X509Certificateдля сопоставления (илиnull)- См. также:
setCertificate(java.security.cert.X509Certificate)
getSerialNumber
public BigInteger getSerialNumber()
Возвращает критерий serialNumber. Указанный номер серии должен соответствовать номеру серии сертификата в X509Certificate. Если null, любой номер серии сертификата подойдет.
- Возвращает:
- номер серии сертификата для сопоставления (или
null) - См. также:
setSerialNumber(java.math.BigInteger)
getIssuer
public X500Principal getIssuer()
Возвращает критерий издателя в виде X500Principal. Это отличительное имя должно соответствовать отличительному имени издателя в X509Certificate. Если null, критерий издателя отключён и любое отличительное имя издателя подойдёт.
- Возвращает:
- требуемое отличительное имя издателя в виде X500Principal (или
null) - С момента:
- 1.5
getIssuerAsString
public String getIssuerAsString()
Отжившее своё, используйте getIssuer() или getIssuerAsBytes() вместо этого. Этот метод не следует использовать надёжно, так как он может не соответствовать некоторым сертификатам из-за потери информации об кодировании в строковой форме RFC 2253 некоторых отличительных имён.
Возвращает критерий издателя в виде String. Это отличительное имя должно соответствовать отличительному имени издателя в X509Certificate. Если null, критерий издателя отключён и любое отличительное имя издателя подойдёт.
Если возвращённое значение не null, это имя с отличительными характеристиками в формате RFC 2253.
- Возвращает:
- требуемое отличительное имя издателя в формате RFC 2253 (или
null)
getIssuerAsBytes
public byte[] getIssuerAsBytes()
throws IOException Возвращает критерий эмитента в виде массива байтов. Это имя должно совпадать с именем эмитента в X509Certificate. Если null, критерий эмитента отключён, и любое имя эмитента подойдёт.
Если возвращаемое значение не null, это массив байтов, содержащий единственное имя, закодированное в DER, как определено в X.501. Нотация ASN.1 для этой структуры приведена в документации для setIssuer(byte [] issuerDN).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- массив байтов, содержащий требуемое имя эмитента в формате ASN.1 DER (или
null) - Исключения:
-
IOException- если произошла ошибка кодирования
getSubject
public X500Principal getSubject()
Возвращает критерий субъекта в виде X500Principal. Это имя должно совпадать с именем субъекта в X509Certificate. Если null, критерий субъекта отключён, и любое имя субъекта подойдёт.
- Возвращает:
- требуемое имя субъекта в формате X500Principal (или
null) - С момента:
- 1.5
getSubjectAsString
public String getSubjectAsString()
Отменено, используйте getSubject() или getSubjectAsBytes() вместо этого. Не полагайтесь на этот метод, так как он может не соответствовать некоторым сертификатам из-за потери информации о кодировании в формате RFC 2253 String для некоторых имён.
Возвращает критерий субъекта в виде String. Это имя должно совпадать с именем субъекта в X509Certificate. Если null, критерий субъекта отключён, и любое имя субъекта подойдёт.
Если возвращаемое значение не null, это имя в формате RFC 2253.
- Возвращает:
- требуемое имя субъекта в формате RFC 2253 (или
null)
getSubjectAsBytes
public byte[] getSubjectAsBytes()
throws IOException Возвращает критерий субъекта в виде массива байтов. Это имя должно совпадать с именем субъекта в X509Certificate. Если null, критерий субъекта отключён, и любое имя субъекта подойдёт.
Если возвращаемое значение не null, это массив байтов, содержащий единственное имя, закодированное в DER, как определено в X.501. Нотация ASN.1 для этой структуры приведена в документации для setSubject(byte [] subjectDN).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- массив байтов, содержащий требуемое имя субъекта в формате ASN.1 DER (или
null) - Исключения:
-
IOException- если произошла ошибка кодирования
getSubjectKeyIdentifier
public byte[] getSubjectKeyIdentifier()
Возвращает критерий subjectKeyIdentifier. X509Certificate должен содержать расширение SubjectKeyIdentifier со значением, указанным в коде. Если null, проверка subjectKeyIdentifier не будет выполнена.
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- идентификатор ключа (или
null) - См. также:
setSubjectKeyIdentifier(byte[])
getAuthorityKeyIdentifier
public byte[] getAuthorityKeyIdentifier()
Возвращает критерий authorityKeyIdentifier. X509Certificate должен содержать расширение AuthorityKeyIdentifier со значением, указанным в коде. Если null, проверка authorityKeyIdentifier не будет выполнена.
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих изменений.
- Возвращает:
- идентификатор ключа (или
null) - См. также:
setAuthorityKeyIdentifier(byte[])
getCertificateValid
public Date getCertificateValid()
Возвращает критерий certificateValid. Указанная дата должна находиться в пределах срока действия сертификата для X509Certificate. Если null, проверка certificateValid не будет выполнена.
Обратите внимание, что возвращаемая Date клонируется для защиты от последующих изменений.
- Возвращает:
- дата для проверки (или
null) - См. также:
setCertificateValid(java.util.Date)
getPrivateKeyValid
public Date getPrivateKeyValid()
Возвращает критерий privateKeyValid. Указанная дата должна находиться в пределах срока действия закрытого ключа для X509Certificate. Если null, проверка privateKeyValid не будет выполнена.
Обратите внимание, что возвращаемая Date клонируется для защиты от последующих изменений.
- Возвращает:
- дата для проверки (или
null) - См. также:
setPrivateKeyValid(java.util.Date)
getSubjectPublicKeyAlgID
public String getSubjectPublicKeyAlgID()
Возвращает критерий subjectPublicKeyAlgID. X509Certificate должен содержать открытый ключ субъекта с указанным алгоритмом. Если null, проверка subjectPublicKeyAlgID не будет выполнена.
- Возвращает:
- идентификатор объекта (OID) алгоритма подписи для проверки (или
null). OID представлен набором неотрицательных целых чисел, разделённых точками. - См. также:
setSubjectPublicKeyAlgID(java.lang.String)
getSubjectPublicKey
public PublicKey getSubjectPublicKey()
Возвращает критерий subjectPublicKey. X509Certificate должен содержать указанный открытый ключ субъекта. Если null, проверка subjectPublicKey не будет выполнена.
- Возвращает:
- открытый ключ субъекта для проверки (или
null) - См. также:
setSubjectPublicKey(java.security.PublicKey)
getKeyUsage
public boolean[] getKeyUsage()
Возвращает критерий keyUsage. X509Certificate должен допускать указанные значения keyUsage. Если null, проверка keyUsage не будет выполнена.
Обратите внимание, что возвращаемый массив булевых значений клонируется для защиты от последующих изменений.
- Возвращает:
- массив булевых значений в том же формате, что и возвращаемый
X509Certificate.getKeyUsage(). Илиnull. - См. также:
setKeyUsage(boolean[])
getExtendedKeyUsage
public Set<String> getExtendedKeyUsage()
Возвращает критерий extendedKeyUsage. X509Certificate должен допускать указанные цели ключа в своём расширении extended key usage. Если возвращаемый keyPurposeSet пуст или null, проверка extendedKeyUsage не будет выполнена. Обратите внимание, что X509Certificate без расширения extendedKeyUsage неявно допускает все цели ключа.
- Возвращает:
- неизменяемый
Setидентификаторов целей ключа в строковом формате (илиnull) - См. также:
setExtendedKeyUsage(java.util.Set<java.lang.String>)
getMatchAllSubjectAltNames
public boolean getMatchAllSubjectAltNames()
Указывает, должен ли X509Certificate содержать все или хотя бы одно из subjectAlternativeNames, указанных в методах setSubjectAlternativeNames или addSubjectAlternativeName. Если true, X509Certificate должен содержать все указанные subject alternative names. Если false, X509Certificate должен содержать хотя бы одно из указанных subject alternative names.
- Возвращает:
-
trueесли флаг включен;falseесли флаг отключён. Флаг включён по умолчанию. - См. также:
setMatchAllSubjectAltNames(boolean)
getSubjectAlternativeNames
public Collection<List<?>> getSubjectAlternativeNames()
Возвращает копию критерия subjectAlternativeNames. X509Certificate должен содержать все или хотя бы одно из указанных subjectAlternativeNames, в зависимости от значения флага matchAllNames (см. getMatchAllSubjectAltNames). Если возвращаемое значение null, проверка subjectAlternativeNames не будет выполнена.
Если возвращаемое значение не null, это Collection, содержащее по одной записи на каждое имя, которое должно быть включено в критерий subject alternative name. Каждая запись — это List, первая запись которой — Integer (тип имени, 0-8), а вторая — String или массив байтов (само имя, в строковом или ASN.1 DER закодированном формате соответственно). Может быть несколько имён одного типа. Обратите внимание, что возвращаемый Collection может содержать дублируемые имена (одно и то же имя и тип имени).
Каждое subject alternative name в Collection может быть указано либо как String, либо как закодированный в ASN.1 массив байтов. Более подробную информацию о используемых форматах можно найти в addSubjectAlternativeName(int type, String name) и addSubjectAlternativeName(int type, byte [] name).
Обратите внимание, что выполняется глубокая копия Collection для защиты от последующих изменений.
- Возвращает:
- множество имён (или
null) - См. также:
setSubjectAlternativeNames(java.util.Collection<java.util.List<?>>)
getNameConstraints
public byte[] getNameConstraints()
Возвращает критерий ограничений имени. У X509Certificate должны быть субъект и альтернативные имена субъекта, которые соответствуют указанным ограничениям имени.
Ограничения имени возвращаются в виде массива байтов. Этот массив байтов содержит DER-кодированную форму ограничений имени, как они представлены в структуре NameConstraints, определенной в RFC 5280 и X.509. ASN.1 обозначение для этой структуры приведено в документации для setNameConstraints(byte [] bytes).
Обратите внимание, что возвращаемый массив байтов клонируется для защиты от последующих модификаций.
- Возвращает:
- массив байтов, содержащий ASN.1 DER-кодирование расширения NameConstraints, используемого для проверки ограничений имени.
nullесли проверка ограничений имени не будет выполняться. - См. также:
setNameConstraints(byte[])
getBasicConstraints
public int getBasicConstraints()
Возвращает ограничение базовых свойств. Если значение больше или равно нулю, X509Certificates должен включать расширение basicConstraints с pathLen, по крайней мере, равным этому значению. Если значение равно -2, принимаются только сертификаты конечных сущностей. Если значение равно -1, проверка basicConstraints не выполняется.
- Возвращает:
- значение для ограничения базовых свойств
- См. также:
setBasicConstraints(int)
getPolicy
public Set<String> getPolicy()
Возвращает критерий политики. X509Certificate должен включать как минимум одну из указанных политик в своем расширении политики сертификата. Если Set возвращаемое значение пусто, тогда X509Certificate должен включать как минимум одну из указанных политик в своем расширении политики сертификата. Если Set возвращает null, проверка политики не будет выполнена.
- Возвращает:
- неизменяемый
Setидентификаторов политики сертификата в формате строки (илиnull) - См. также:
setPolicy(java.util.Set<java.lang.String>)
getPathToNames
public Collection<List<?>> getPathToNames()
Возвращает копию критерия pathToNames. X509Certificate не должен включать ограничения имени, которые запрещали бы построение пути к указанным именам. Если возвращаемое значение null, проверка pathToNames не будет выполняться.
Если возвращаемое значение не null, это Collection с одной записью для каждого имени, которое должно быть включено в критерий pathToNames. Каждая запись — это List, первая запись которого — Integer (тип имени, 0-8), а вторая запись — String или массив байтов (само имя, соответственно в строковом или ASN.1 DER-кодированном формате). Может быть несколько имён одного типа. Обратите внимание, что возвращаемый Collection может содержать дубликаты имён (одно и то же имя и тип имени).
Каждое имя в Collection может быть указано либо как String , либо как закодированный в ASN.1 массив байтов. Более подробная информация о используемых форматах представлена в addPathToName(int type, String name) и addPathToName(int type, byte [] name).
Обратите внимание, что выполняется глубокая копия Collection для защиты от последующих изменений.
- Возвращает:
- a
Collectionимён (илиnull) - См. также:
setPathToNames(java.util.Collection<java.util.List<?>>)
toString
public String toString()
Возвращает удобочитаемое представление CertSelector.
match
public boolean match(Certificate cert)
Определяет, должен ли Certificate быть выбран.
- Задано в:
-
matchв интерфейсеCertSelector - Параметры:
-
cert- проверяемыйCertificate - Возвращает:
-
trueеслиCertificateдолжен быть выбран,falseв противном случае
clone
public Object clone()
Возвращает копию этого объекта.
- Задано в:
-
cloneв интерфейсеCertSelector - Переопределяет:
-
cloneв классеObject - Возвращает:
- копию
- См. также:
Cloneable
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.