|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
public interface X509Extension
X.509 扩展的接口。
为 X.509 v3 Certificates
和 v2 CRLs
(证书撤消列表)所定义的扩展提供了各种方法,用于将其他属性与用户或公钥相关联、管理证书层次结构和管理 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
方法返回扩展值(也就是 extnValue
)的 DER 编码形式的 OCTET STRING。然后可由识别该扩展的类 来处理该返回值。
方法摘要 | |
---|---|
Set<String> |
getCriticalExtensionOIDs()
获得实现此接口的对象所管理的证书/CRL 中,被标记为 CRITICAL 的扩展的 OID 字符串 Set。 |
byte[] |
getExtensionValue(String oid)
获得扩展值 (extnValue) 的 DER 编码 OCTET 字符串,该扩展值由传入的 oid String 标识。 |
Set<String> |
getNonCriticalExtensionOIDs()
获得实现此接口的对象所管理的证书/CRL 中,被标记为 NON-CRITICAL 的扩展的 OID 字符串 Set。 |
boolean |
hasUnsupportedCriticalExtension()
检查是否存在不支持的关键扩展。 |
方法详细信息 |
---|
boolean hasUnsupportedCriticalExtension()
Set<String> getCriticalExtensionOIDs()
InputStream inStrm = new FileInputStream("DER-encoded-Cert");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate)cf.generateCertificate(inStrm);
inStrm.close();
Set critSet = cert.getCriticalExtensionOIDs();
if (critSet != null && !critSet.isEmpty()) {
System.out.println("Set of critical extensions:");
for (Iterator i = critSet.iterator(); i.hasNext();) {
String oid = (String)i.next();
System.out.println(oid);
}
}
Set<String> getNonCriticalExtensionOIDs()
InputStream inStrm = new FileInputStream("DER-encoded-CRL");
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509CRL crl = (X509CRL)cf.generateCRL(inStrm);
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 (Iterator i = nonCritSet.iterator(); i.hasNext();) {
String oid = (String)i.next();
System.out.println(oid);
}
}
byte[] getExtensionValue(String oid)
oid
String 标识。该 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
- 该扩展的对象标识符值。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。