| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
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 字符串,该扩展值由传入的 oidString 标识。 | 
|  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 Platform Standard Ed. 6 | |||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。