JavaTM Platform
Standard Ed. 6

java.security.cert
インタフェース X509Extension

既知の実装クラスの一覧:
X509Certificate, X509CRL, X509CRLEntry

public interface X509Extension

X.509 拡張機能のためのインタフェースです。

X.509 v3 Certificates および v2 CRL (証明書の取り消しリスト) で定義される拡張機能は、追加属性をユーザーまたは公開鍵に関連付けたり、認証の階層を管理したり、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 を返します。これは拡張機能を認識できる Class によって処理できます。


メソッドの概要
 Set<String> getCriticalExtensionOIDs()
          このインタフェースを実装するオブジェクトによって管理されている証明書または CRL で、CRITICAL としてマーキングされている拡張の OID 文字列の Set を取得します。
 byte[] getExtensionValue(String oid)
          渡された oid String で識別される拡張値 (extnValue) の、DER で符号化された OCTET 文字列を取得します。
 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)
渡された oid String で識別される拡張値 (extnValue) の、DER で符号化された OCTET 文字列を取得します。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

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。