|
JavaTM 2 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 字元串,該擴展值由傳入的 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. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。