|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.security.cert
接口 X509Extension
- 所有已知实现类:
- X509Certificate, X509CRL, X509CRLEntry
-
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() 检查是否存在不支持的关键扩展。 |
方法详细信息 |
---|
hasUnsupportedCriticalExtension
boolean hasUnsupportedCriticalExtension()
- 检查是否存在不支持的关键扩展。
-
- 返回:
- 如果找到了不支持的关键扩展,则返回 true;否则返回 false。
getCriticalExtensionOIDs
Set<String> getCriticalExtensionOIDs()
-
获得实现此接口的对象所管理的证书/CRL 中,被标记为 CRITICAL 的扩展的 OID 字符串 Set。 下面的示例代码从 X509Certificate 中获得一个关键扩展的 Set 并打印 OID:
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); } }
-
- 返回:
- 标记为关键扩展的扩展 OID 字符串 Set(如果没有标记为关键的扩展,则返回一个空 Set)。如果根本没有扩展,则此方法返回 null。
getNonCriticalExtensionOIDs
Set<String> getNonCriticalExtensionOIDs()
-
获得实现此接口的对象所管理的证书/CRL 中,被标记为 NON-CRITICAL 的扩展的 OID 字符串 Set。 下面的示例代码从 X509CRL 已撤消证书项中获得一个非关键扩展的 Set 并打印 OID:
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); } }
-
- 返回:
- 标记为非关键扩展的扩展 OID 字符串 Set(如果没有标记为非关键的扩展,则返回一个空 Set)。如果根本没有扩展,则此方法返回 null。
getExtensionValue
byte[] getExtensionValue(String oid)
-
获得扩展值 (extnValue) 的 DER 编码 OCTET 字符串,该扩展值由传入的
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
- 该扩展的对象标识符值。 - 返回:
- 扩展值的 DER 编码的八位字节字符串,如果不存在,则返回 null。
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |