Интерфейс X509Extension
- Все известные реализующие классы:
- X509Certificate, X509CRL, X509CRLEntry
public interface X509Extension
Интерфейс для расширения X.509.
Расширения, определенные для X.509 v3 Certificates и v2 CRLs (списки отозванных сертификатов) предоставляют методы для ассоциирования дополнительных атрибутов с пользователями или открытыми ключами, управления иерархией сертификации и управления распространением списков отозванных сертификатов. Формат расширений X.509 также позволяет сообществам определять собственные расширения для переноса информации, уникальной для этих сообществ.
Каждое расширение в сертификате/списке отозванных сертификатов может быть обозначено как критическое или некритическое. Система, использующая сертификат/список отозванных сертификатов (приложение, проверяющее сертификат/список), должна отклонить сертификат/список, если она обнаружит критическое расширение, которое ей не известно. Некритическое расширение может быть проигнорировано, если оно не распознается.
Определение ASN.1 для этого:
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {
extnId OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
-- contains a DER encoding of a value
-- of the type registered for use with
-- the extnId object identifier value
} Поскольку все расширения не известны, метод getExtensionValue возвращает DER-кодированный OCTET STRING значения расширения (т.е. extnValue). Это затем может быть обработано классом, который понимает расширение.Методы
| Модификатор и тип | Метод и описание |
|---|---|
Set<String> |
getCriticalExtensionOIDs() Получает набор строк OID для расширений, помеченных КРИТИЧЕСКИМИ в сертификате/списке отозванных сертификатов, управляемом объектом, реализующим этот интерфейс. |
byte[] |
getExtensionValue(String oid) Получает DER-кодированную строку OCTET для значения расширения (extnValue), идентифицированного переданной строкой |
Set<String> |
getNonCriticalExtensionOIDs() Получает набор строк OID для расширений, помеченных НЕКРИТИЧЕСКИМИ в сертификате/списке отозванных сертификатов, управляемом объектом, реализующим этот интерфейс. |
boolean |
hasUnsupportedCriticalExtension() Проверка наличия критического расширения, которое не поддерживается. |
Методы
hasUnsupportedCriticalExtension
boolean hasUnsupportedCriticalExtension()
Проверка наличия критического расширения, которое не поддерживается.
- Возвращает:
-
trueесли найдено критическое расширение, которое не поддерживается, иначеfalse.
getCriticalExtensionOIDs
Set<String> getCriticalExtensionOIDs()
Получает набор строк OID для расширений, помеченных КРИТИЧЕСКИМИ в сертификате/списке отозванных сертификатов, управляемом объектом, реализующим этот интерфейс. Вот пример кода, чтобы получить набор критических расширений из X509Certificate и вывести OID:
X509Certificate cert = null;
try (InputStream inStrm = new FileInputStream("DER-encoded-Cert")) {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
cert = (X509Certificate)cf.generateCertificate(inStrm);
}
Set<String> critSet = cert.getCriticalExtensionOIDs();
if (critSet != null && !critSet.isEmpty()) {
System.out.println("Set of critical extensions:");
for (String oid : critSet) {
System.out.println(oid);
}
}. - Возвращает:
- множество (или пустое множество, если таковых нет) строк OID расширений для расширений, помеченных как критические. Если расширений вообще нет, этот метод возвращает null.
getNonCriticalExtensionOIDs
Set<String> getNonCriticalExtensionOIDs()
Получает набор строк OID для расширений, помеченных НЕКРИТИЧЕСКИМИ в сертификате/списке отозванных сертификатов, управляемом объектом, реализующим этот интерфейс. Вот пример кода, чтобы получить набор некритических расширений из записи о ревоцированном сертификате X509CRL и вывести OID:
CertificateFactory cf = null;
X509CRL crl = null;
try (InputStream inStrm = new FileInputStream("DER-encoded-CRL")) {
cf = CertificateFactory.getInstance("X.509");
crl = (X509CRL)cf.generateCRL(inStrm);
}
byte[] certData = <DER-encoded certificate data>
ByteArrayInputStream bais = new ByteArrayInputStream(certData);
X509Certificate cert = (X509Certificate)cf.generateCertificate(bais);
X509CRLEntry badCert =
crl.getRevokedCertificate(cert.getSerialNumber());
if (badCert != null) {
Set<String> nonCritSet = badCert.getNonCriticalExtensionOIDs();
if (nonCritSet != null)
for (String oid : nonCritSet) {
System.out.println(oid);
}
}. - Возвращает:
- множество (или пустое множество, если таковых нет) строк OID расширений для расширений, помеченных как некритические. Если расширений вообще нет, этот метод возвращает null.
getExtensionValue
byte[] getExtensionValue(String oid)
Получает DER-кодированную строку OCTET для значения расширения (extnValue), идентифицированного переданной строкой oid. Строка oid представлена набором неотрицательных целых чисел, разделенных точками.
Например:
| OID (Идентификатор объекта) | Название расширения |
|---|---|
| 2.5.29.14 | SubjectKeyIdentifier |
| 2.5.29.15 | KeyUsage |
| 2.5.29.16 | PrivateKeyUsage |
| 2.5.29.17 | SubjectAlternativeName |
| 2.5.29.18 | IssuerAlternativeName |
| 2.5.29.19 | BasicConstraints |
| 2.5.29.30 | NameConstraints |
| 2.5.29.33 | PolicyMappings |
| 2.5.29.35 | AuthorityKeyIdentifier |
| 2.5.29.36 | PolicyConstraints |
- Параметры:
-
oid- значение идентификатора объекта для расширения. - Возвращает:
- DER-кодированную строку октетов значения расширения или null, если она отсутствует.
© 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.