Spec-Zone.ru › OpenJDK 25

Интерфейс X509Extension

Все известные классы, реализующие этот интерфейс:
X509Certificate, X509CRL, X509CRLEntry
public interface X509Extension
Интерфейс для расширения X.509.

Расширения, определённые для Certificates версии 3 X.509 и CRLs версии 2 X.509 (списков отозванных сертификатов), предоставляют методы для связывания дополнительных атрибутов с пользователями или открытыми ключами, управления иерархией сертификации и распространением CRL. Формат расширений X.509 также позволяет сообществам определять частные расширения для хранения уникальной для этих сообществ информации.

Каждое расширение в сертификате/CRL может быть отмечено как критическое или некритическое. Система, использующая сертификат/CRL (приложение, проверяющее сертификат/CRL), должна отклонить сертификат/CRL, если обнаружит неизвестное ей критическое расширение. Неизвестное некритическое расширение можно игнорировать.

Определение 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). Затем её может обработать класс, которому это расширение известно.
Начиная с версии:
1.2

Краткое описание методов

Модификатор и тип Метод Описание
Set<String> getCriticalExtensionOIDs()
Возвращает набор строк OID расширений, отмеченных как КРИТИЧЕСКИЕ в сертификате/CRL, управляемом объектом, реализующим этот интерфейс.
byte[] getExtensionValue(String oid)
Возвращает закодированную в DER строку OCTET STRING значения расширения (extnValue), идентифицированного переданной строкой oid.
Set<String> getNonCriticalExtensionOIDs()
Возвращает набор строк OID расширений, отмеченных как НЕКРИТИЧЕСКИЕ в сертификате/CRL, управляемом объектом, реализующим этот интерфейс.
boolean hasUnsupportedCriticalExtension()
Проверяет, есть ли неподдерживаемое критическое расширение.

Подробное описание методов

hasUnsupportedCriticalExtension

boolean hasUnsupportedCriticalExtension()
Проверяет, есть ли неподдерживаемое критическое расширение.
Возвращает:
true, если обнаружено неподдерживаемое критическое расширение; в противном случае — false.

getCriticalExtensionOIDs

Set<String> getCriticalExtensionOIDs()
Возвращает набор строк OID расширений, отмеченных как КРИТИЧЕСКИЕ в сертификате/CRL, управляемом объектом, реализующим этот интерфейс. Ниже приведён пример кода, который получает набор критических расширений из 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 расширений, отмеченных как НЕКРИТИЧЕСКИЕ в сертификате/CRL, управляемом объектом, реализующим этот интерфейс. Ниже приведён пример кода, который получает набор некритических расширений из записи отозванного сертификата 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 STRING значения расширения (extnValue), идентифицированного переданной строкой oid. Строка oid представляется набором неотрицательных целых чисел, разделённых точками.

Например:

Примеры OID и названий расширений
OID (идентификатор объекта) Название расширения
1.3.6.1.5.5.7.1.1 AuthorityInformationAccess
2.5.29.14 SubjectKeyIdentifier
2.5.29.15 KeyUsage
2.5.29.17 SubjectAlternativeName
2.5.29.18 IssuerAlternativeName
2.5.29.19 BasicConstraints
2.5.29.30 NameConstraints
2.5.29.31 CRLDistributionPoints
2.5.29.32 CertificatePolicies
2.5.29.33 PolicyMappings
2.5.29.35 AuthorityKeyIdentifier
2.5.29.36 PolicyConstraints
2.5.29.37 ExtendedKeyUsage
Параметры:
oid — значение идентификатора объекта для расширения.
Возвращает:
закодированную в DER строку OCTET STRING значения расширения или null, если оно отсутствует.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзор концепций, определения терминов, способы обхода проблем и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/cert/X509Extension.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API