Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface X509Extension
Расширения, определенные для X.509 v3 Certificates
и v2 CRLs
(Списки аннулированных сертификатов) обеспечивают методы для того, чтобы они связали дополнительные атрибуты с пользователями или открытыми ключами, для того, чтобы управлять иерархией сертификации, и для того, чтобы управлять распределением CRL. Формат расширений X.509 также позволяет сообществам определять частные расширения, чтобы перенести информацию, уникальную для тех сообществ.
Каждое расширение в сертификате/CRL может определяться как критическое или некритическое. certificate/CRL-using система (приложение, проверяющее сертификата/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-закодированную СТРОКУ ОКТЕТА значения расширения (то есть, extnValue
). Это может тогда быть обработано Классом, который понимает расширение.Модификатор и Тип | Метод и Описание |
---|---|
Set<String> |
getCriticalExtensionOIDs()
Получает ряд строк OID для расширения (й), отмеченного КРИТИЧЕСКИЙ в сертификате/CRL, которым управляет объект, реализовывая этот интерфейс.
|
byte[] |
getExtensionValue(String oid)
Получает DER-закодированную строку ОКТЕТА для значения расширения (extnValue) идентифицированный переданным - в
oid Строка. |
Set<String> |
getNonCriticalExtensionOIDs()
Получает ряд строк OID для расширения (й), отмеченного НЕКРИТИЧЕСКИЙ в сертификате/CRL, которым управляет объект, реализовывая этот интерфейс.
|
boolean |
hasUnsupportedCriticalExtension()
Проверьте, есть ли критическое расширение, которое не поддерживается.
|
boolean hasUnsupportedCriticalExtension()
Set<String> getCriticalExtensionOIDs()
InputStream inStrm = null;
X509Certificate cert = null;
try {
inStrm = new FileInputStream("DER-encoded-Cert");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
cert = (X509Certificate)cf.generateCertificate(inStrm);
} finally {
if (inStrm != null) {
inStrm.close();
}
}
Set critSet = cert.getCriticalExtensionOIDs();
if (critSet != null && !critSet.isEmpty()) {
System.out.println("Set of critical extensions:");
for (String oid : critSet) {
System.out.println(oid);
}
}
Set<String> getNonCriticalExtensionOIDs()
InputStream inStrm = null;
CertificateFactory cf = null;
X509CRL crl = null;
try {
inStrm = new FileInputStream("DER-encoded-CRL");
cf = CertificateFactory.getInstance("X.509");
crl = (X509CRL)cf.generateCRL(inStrm);
} finally {
if (inStrm != null) {
inStrm.close();
}
}
byte[] certData = <DER-encoded certificate data>
ByteArrayInputStream bais = new ByteArrayInputStream(certData);
X509Certificate cert = (X509Certificate)cf.generateCertificate(bais);
bais.close();
X509CRLEntry badCert =
crl.getRevokedCertificate(cert.getSerialNumber());
if (badCert != null) {
Set nonCritSet = badCert.getNonCriticalExtensionOIDs();
if (nonCritSet != null)
for (String oid : nonCritSet) {
System.out.println(oid);
}
}
byte[] getExtensionValue(String oid)
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
- Объектный Идентификатор оценивает за расширение.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.