Интерфейс X509Extension
- Все известные классы, реализующие этот интерфейс:
X509Certificate, X509CRL, X509CRLEntry
public interface X509Extension
Расширения, определённые для 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 |
getCriticalExtensionOIDs() |
Возвращает набор строк OID расширений, отмеченных как КРИТИЧЕСКИЕ в сертификате/CRL, управляемом объектом, реализующим этот интерфейс. |
byte[] |
getExtensionValue |
Возвращает закодированную в DER строку OCTET STRING значения расширения (extnValue), идентифицированного переданной строкой oid. |
Set |
getNonCriticalExtensionOIDs() |
Возвращает набор строк OID расширений, отмеченных как НЕКРИТИЧЕСКИЕ в сертификате/CRL, управляемом объектом, реализующим этот интерфейс. |
boolean |
hasUnsupportedCriticalExtension() |
Проверяет, есть ли неподдерживаемое критическое расширение. |
Подробное описание методов
hasUnsupportedCriticalExtension
boolean hasUnsupportedCriticalExtension()
- Возвращает:
-
true, если обнаружено неподдерживаемое критическое расширение; в противном случае —false.
getCriticalExtensionOIDs
Set<String> getCriticalExtensionOIDs()
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()
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)
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, если оно отсутствует.
© 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