public interface X509Extension
对X.509 v3 Certificates
和V2 CRLs
定义的扩展(证书撤销列表)将额外的属性与用户或公共密钥提供方法,管理层次和管理认证,CRL分发。扩展的X.509格式还允许社区的定义进行扩展社区独特的私人信息。
在证书/CRL每个分机可以指定为关键或非关键。证书/CRL使用系统(应用程序验证证书/CRL)必须拒绝证书/CRL如果遇到关键扩展它不承认。一个非关键的扩展可能会被忽略,如果它不被认可。
ASN。此1定义:
扩展:=序列大小(1 ..最大)的扩展扩展::=序列extnid对象标识符,临界布尔默认值,extnvalue八进制字符串-包含值的一个-已注册使用的类型——extnid对象标识符的值}因为不是所有已知的扩展,
getExtensionValue
方法返回的DER编码的扩展值字符串(例如,“
extnValue
)。然后可以通过一个理解扩展的类来处理这个。
Modifier and Type | Method and Description |
---|---|
Set<String> |
getCriticalExtensionOIDs()
获取扩展的一套老的字符串(s)标志的证书/CRL由对象实现该接口管理的关键。
|
byte[] |
getExtensionValue(String oid)
得到的DER编码的扩展值字符串(extnvalue)由通过
oid 串识别。
|
Set<String> |
getNonCriticalExtensionOIDs()
获取扩展的一套老的字符串(s)标志的证书/CRL由对象实现该接口管理非关键。
|
boolean |
hasUnsupportedCriticalExtension()
检查是否有一个不支持的关键扩展。
|
boolean hasUnsupportedCriticalExtension()
true
如果关键扩展发现不支持,否则
false
。
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
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);
}
}
byte[] getExtensionValue(String oid)
oid
串识别。的
oid
字符串是由一组非负整数用句点分隔的代表。
例如:
OID (Object Identifier) | Extension Name |
---|---|
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
-扩展对象标识符值。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.