Java プラットフォーム 1.2

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

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

public abstract interface X509Extension

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

X.509 v3 証明書および 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 getCriticalExtensionOIDs()
          このインタフェースを実装するオブジェクトによって管理されている証明書または CRL で、CRITICAL としてマーキングされている拡張の OID 文字列の Set を取得します。
 byte[] getExtensionValue(String oid)
          渡された oid String で識別される拡張値 (extnValue) の、DER で符号化された OCTET 文字列を取得します。
 Set getNonCriticalExtensionOIDs()
          このインタフェースを実装するオブジェクトによって管理されている証明書または CRL で、NON-CRITICAL としてマーキングされている拡張機能の OID 文字列の Set を取得します。
 boolean hasUnsupportedCriticalExtension()
          サポートされていないクリティカルな拡張機能が見つかった場合は true を返し、そうでない場合は false を返します。
 

メソッドの詳細

hasUnsupportedCriticalExtension

public boolean hasUnsupportedCriticalExtension()
サポートされていないクリティカルな拡張機能が見つかった場合は true を返し、そうでない場合は false を返します。

getCriticalExtensionOIDs

public Set 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

public Set 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

public 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

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.