モジュール java.xml.crypto

クラスKeyInfoFactory

java.lang.Object
javax.xml.crypto.dsig.keyinfo.KeyInfoFactory

public abstract class KeyInfoFactory
extends Object
ゼロからKeyInfoオブジェクトを作成するため、または対応するXML表現からKeyInfoオブジェクトを非整列化するためのファクトリ。

KeyInfoFactoryの各インスタンスは、特定のXMLメカニズム型をサポートします。 KeyInfoFactoryを作成するには、static getInstanceメソッドのうちの1つを呼び出し、目的のXMLメカニズム型内で渡します。次に例を示します。

KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");

このファクトリが生成するオブジェクトは、「DOMのメカニズム要件」で定義されているDOM相互運用性の要件に基づいて作成されます。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」KeyInfoFactoryのセクションを参照してください。

KeyInfoFactory実装は、Providerメカニズムを使用して登録およびロードされます。 たとえば、DOMメカニズムをサポートするサービス・プロバイダはProviderサブクラスで次のように指定されます。

     put("KeyInfoFactory.DOM", "org.example.DOMKeyInfoFactory");
 

また、このファクトリによって作成されるXMLStructureには、KeyInfoに固有で再利用には対応していない状態が格納されます。

実装は、デフォルトのメカニズム・タイプDOMを最低限サポートする必要があります。

呼出し側は同じKeyInfoFactoryインスタンスを使用して、特定のKeyInfoオブジェクトのXMLStructureを作成する必要があります。 異なるプロバイダからのXMLStructureまたは異なるメカニズム型がともに使用される場合、動作は定義されていません。

並行アクセス

このクラスのstaticメソッドは、スレッド・セーフであることが保証されています。 このクラスで定義されているstaticメソッドは、悪影響を与えることなく、複数スレッドが並行して呼び出すことができます。

しかしこのことは、このクラスで定義されている非staticメソッドには当てはまりません。 特定のプロバイダで特に説明がないかぎり、単一のKeyInfoFactoryインスタンスに並行してアクセスする必要のある複数スレッドは、スレッド間で同期を取り、必要に応じてロックしなければいけません。 異なるKeyInfoFactoryインスタンスを操作する複数スレッドは、同期化される必要はありません。

導入されたバージョン:
1.6
  • コンストラクタのサマリー

    コンストラクタ
    修飾子 コンストラクタ 説明
    protected KeyInfoFactory()
    デフォルトのコンストラクタ、サブクラスによる呼出し用。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    static KeyInfoFactory getInstance()
    デフォルトのXML処理メカニズムおよび表現型("DOM")をサポートするKeyInfoFactoryを返します。
    static KeyInfoFactory getInstance​(String mechanismType)
    指定されたXML処理メカニズムおよび表現の型(例: 「DOM」)をサポートするKeyInfoFactoryを返します。
    static KeyInfoFactory getInstance​(String mechanismType, String provider)
    指定したプロバイダが提供する、要求されたXML処理メカニズムおよび表現型(例: 「DOM」)をサポートするKeyInfoFactoryを返します。
    static KeyInfoFactory getInstance​(String mechanismType, Provider provider)
    指定したプロバイダが提供する、要求されたXML処理メカニズムおよび表現型(例: 「DOM」)をサポートするKeyInfoFactoryを返します。
    String getMechanismType()
    このKeyInfoFactoryがサポートするXML処理メカニズムおよび表現の型を返します(例: 「DOM」)。
    Provider getProvider()
    このKeyInfoFactoryのプロバイダを返します。
    abstract URIDereferencer getURIDereferencer()
    RetrievalMethodオブジェクト内でデフォルトの間接参照URIに使用されるURIDereferencerへの参照を返します。
    abstract boolean isFeatureSupported​(String feature)
    指定した機能がサポートされるかどうかを示します。
    abstract KeyInfo newKeyInfo​(List<? extends XMLStructure> content)
    指定されたキー情報の型のリストを格納するKeyInfoを作成します。
    abstract KeyInfo newKeyInfo​(List<? extends XMLStructure> content, String id)
    指定されたキー情報の型およびオプションの識別子のリストを格納するKeyInfoを作成します。
    abstract KeyName newKeyName​(String name)
    指定された名前からKeyNameを作成します。
    abstract KeyValue newKeyValue​(PublicKey key)
    指定された公開キーからKeyValueを作成します。
    abstract PGPData newPGPData​(byte[] keyId)
    指定したPGP公開キー識別子からPGPDataを作成します。
    abstract PGPData newPGPData​(byte[] keyId, byte[] keyPacket, List<? extends XMLStructure> other)
    指定したPGP公開キー識別子、およびオプションのキー・データ・パケットと外部要素のリストからPGPDataを作成します。
    abstract PGPData newPGPData​(byte[] keyPacket, List<? extends XMLStructure> other)
    指定したPGPキー・データ・パケット、およびオプションの外部要素のリストからPGPDataを作成します。
    abstract RetrievalMethod newRetrievalMethod​(String uri)
    指定されたURIからRetrievalMethodを作成します。
    abstract RetrievalMethod newRetrievalMethod​(String uri, String type, List<? extends Transform> transforms)
    指定されたパラメータからRetrievalMethodを作成します。
    abstract X509Data newX509Data​(List<?> content)
    指定したX.509コンテンツのリストを格納するX509Dataを作成します。
    abstract X509IssuerSerial newX509IssuerSerial​(String issuerName, BigInteger serialNumber)
    指定したX.500発行者識別名およびシリアル番号からX509IssuerSerialを作成します。
    abstract KeyInfo unmarshalKeyInfo​(XMLStructure xmlStructure)
    メカニズム固有のXMLStructure (例: DOMStructure)インスタンスからの新しいKeyInfoインスタンスを非整列化します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • KeyInfoFactory

      protected KeyInfoFactory()
      デフォルトのコンストラクタ、サブクラスによる呼出し用。
  • メソッドの詳細

    • getInstance

      public static KeyInfoFactory getInstance​(String mechanismType)
      指定されたXML処理メカニズムおよび表現の型(例: 「DOM」)をサポートするKeyInfoFactoryを返します。

      このメソッドは標準JCAプロバイダ検索メカニズムを使用して、目的のメカニズム型のKeyInfoFactory実装を検出およびインスタンス化します。 登録済みのセキュリティProviderのリストを、最優先のProviderからトラバースします。 指定したメカニズムをサポートする最初のProviderからの新しいKeyInfoFactoryオブジェクトが返されます。

      登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

      実装上のノート:
      JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
      パラメータ:
      mechanismType - XML処理メカニズムおよび表現の型。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」KeyInfoFactoryのセクションを参照してください。
      戻り値:
      新しいKeyInfoFactory
      例外:
      NullPointerException - mechanismTypenullである場合
      NoSuchMechanismException - 指定したメカニズムのKeyInfoFactory実装をサポートするProviderが存在しない場合
      関連項目:
      Provider
    • getInstance

      public static KeyInfoFactory getInstance​(String mechanismType, Provider provider)
      指定したプロバイダが提供する、要求されたXML処理メカニズムおよび表現型(例: 「DOM」)をサポートするKeyInfoFactoryを返します。 指定したProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。
      パラメータ:
      mechanismType - XML処理メカニズムおよび表現の型。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」KeyInfoFactoryのセクションを参照してください。
      provider - Providerオブジェクト
      戻り値:
      新しいKeyInfoFactory
      例外:
      NullPointerException - mechanismTypeまたはprovidernullの場合
      NoSuchMechanismException - 指定したメカニズム用のKeyInfoFactory実装が指定したProviderオブジェクトで使用できない場合
      関連項目:
      Provider
    • getInstance

      public static KeyInfoFactory getInstance​(String mechanismType, String provider) throws NoSuchProviderException
      指定したプロバイダが提供する、要求されたXML処理メカニズムおよび表現型(例: 「DOM」)をサポートするKeyInfoFactoryを返します。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。

      登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

      パラメータ:
      mechanismType - XML処理メカニズムおよび表現の型。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」KeyInfoFactoryのセクションを参照してください。
      provider - プロバイダ名の文字列名
      戻り値:
      新しいKeyInfoFactory
      例外:
      NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
      NullPointerException - mechanismTypeまたはprovidernullの場合
      NoSuchMechanismException - 指定したメカニズム用のKeyInfoFactory実装が指定したプロバイダで使用できない場合
      関連項目:
      Provider
    • getInstance

      public static KeyInfoFactory getInstance()
      デフォルトのXML処理メカニズムおよび表現型("DOM")をサポートするKeyInfoFactoryを返します。

      このメソッドは標準JCAプロバイダ検索メカニズムを使用して、デフォルトのメカニズム型のKeyInfoFactory実装を検出およびインスタンス化します。 登録済みのセキュリティProviderのリストを、最優先のProviderからトラバースします。 DOMメカニズムをサポートする最初のProviderからの新しいKeyInfoFactoryオブジェクトが返されます。

      登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

      実装上のノート:
      JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
      戻り値:
      新しいKeyInfoFactory
      例外:
      NoSuchMechanismException - DOMメカニズムのKeyInfoFactory実装をサポートするProviderが存在しない場合
      関連項目:
      Provider
    • getMechanismType

      public final String getMechanismType()
      このKeyInfoFactoryがサポートするXML処理メカニズムおよび表現の型を返します(例: 「DOM」)。
      戻り値:
      このKeyInfoFactoryがサポートするXML処理メカニズム型
    • getProvider

      public final Provider getProvider()
      このKeyInfoFactoryのプロバイダを返します。
      戻り値:
      このKeyInfoFactoryのプロバイダ
    • newKeyInfo

      public abstract KeyInfo newKeyInfo​(List<? extends XMLStructure> content)
      指定されたキー情報の型のリストを格納するKeyInfoを作成します。
      パラメータ:
      content - キー情報の型を表現する1つ以上のXMLStructureのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。
      戻り値:
      KeyInfo
      例外:
      NullPointerException - contentnullである場合
      IllegalArgumentException - contentが空である場合
      ClassCastException - contentXMLStructure型ではないエントリが含まれている場合
    • newKeyInfo

      public abstract KeyInfo newKeyInfo​(List<? extends XMLStructure> content, String id)
      指定されたキー情報の型およびオプションの識別子のリストを格納するKeyInfoを作成します。 idパラメータはXML ID属性の値を表現し、ほかのXML構造からKeyInfoを参照する場合に便利です。
      パラメータ:
      content - キー情報の型を表現する1つ以上のXMLStructureのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。
      id - XML IDの値。nullも可
      戻り値:
      KeyInfo
      例外:
      NullPointerException - contentnullである場合
      IllegalArgumentException - contentが空である場合
      ClassCastException - contentXMLStructure型ではないエントリが含まれている場合
    • newKeyName

      public abstract KeyName newKeyName​(String name)
      指定された名前からKeyNameを作成します。
      パラメータ:
      name - キーを識別する名前
      戻り値:
      KeyName
      例外:
      NullPointerException - namenullである場合
    • newKeyValue

      public abstract KeyValue newKeyValue​(PublicKey key) throws KeyException
      指定された公開キーからKeyValueを作成します。
      パラメータ:
      key - 公開キー
      戻り値:
      KeyValue
      例外:
      KeyException - keyのアルゴリズムがこのKeyInfoFactoryによって認識またはサポートされない場合
      NullPointerException - keynullである場合
    • newPGPData

      public abstract PGPData newPGPData​(byte[] keyId)
      指定したPGP公開キー識別子からPGPDataを作成します。
      パラメータ:
      keyId - RFC 2440、セクション11.2で定義されているPGP公開キー識別子。 以後の変更から保護するために、この配列は複製される。
      戻り値:
      PGPData
      例外:
      NullPointerException - keyIdnullである場合
      IllegalArgumentException - キー識別子の形式が正しくない場合
    • newPGPData

      public abstract PGPData newPGPData​(byte[] keyId, byte[] keyPacket, List<? extends XMLStructure> other)
      指定したPGP公開キー識別子、およびオプションのキー・データ・パケットと外部要素のリストからPGPDataを作成します。
      パラメータ:
      keyId - RFC 2440、セクション11.2で定義されているPGP公開キー識別子。 以後の変更から保護するために、この配列は複製される。
      keyPacket - RFC 2440、セクション5.5で定義されているPGPキー・データ・パケット。 以後の変更から保護するために、この配列は複製される。 nullも可。
      other - 外部名前空間からの要素を表現するXMLStructureのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。 nullまたは空文字列も可。
      戻り値:
      PGPData
      例外:
      NullPointerException - keyIdnullである場合
      IllegalArgumentException - keyIdまたはkeyPacketの形式が正しくない場合。 keyPacketの場合、パケット・ヘッダーの形式が判定され、タグはキー・データの型であるか検査される。 パケット本体のコンテンツと形式は検査されない。
      ClassCastException - otherXMLStructure型ではないエントリが含まれている場合
    • newPGPData

      public abstract PGPData newPGPData​(byte[] keyPacket, List<? extends XMLStructure> other)
      指定したPGPキー・データ・パケット、およびオプションの外部要素のリストからPGPDataを作成します。
      パラメータ:
      keyPacket - RFC 2440、セクション5.5で定義されているPGPキー・データ・パケット。 以後の変更から保護するために、この配列は複製される。
      other - 外部名前空間からの要素を表現するXMLStructureのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。 nullまたは空文字列も可。
      戻り値:
      PGPData
      例外:
      NullPointerException - keyPacketnullである場合
      IllegalArgumentException - keyPacketの形式が正しくない場合。 keyPacketの場合、パケット・ヘッダーの形式が判定され、タグはキー・データの型であるか検査される。 パケット本体のコンテンツと形式は検査されない。
      ClassCastException - otherXMLStructure型ではないエントリが含まれている場合
    • newRetrievalMethod

      public abstract RetrievalMethod newRetrievalMethod​(String uri)
      指定されたURIからRetrievalMethodを作成します。
      パラメータ:
      uri - 取得されるKeyInfo情報を識別するURI
      戻り値:
      RetrievalMethod
      例外:
      NullPointerException - urinullである場合
      IllegalArgumentException - uriがRFC 2396に準拠していない場合
    • newRetrievalMethod

      public abstract RetrievalMethod newRetrievalMethod​(String uri, String type, List<? extends Transform> transforms)
      指定されたパラメータからRetrievalMethodを作成します。
      パラメータ:
      uri - 取得されるKeyInfo情報を識別するURI
      type - 取得されるKeyInfo情報の型を識別するURI。nullも可
      transforms - Transformのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。 nullまたは空文字列も可。
      戻り値:
      RetrievalMethod
      例外:
      NullPointerException - urinullである場合
      IllegalArgumentException - uriがRFC 2396に準拠していない場合
      ClassCastException - transformsTransform型ではないエントリが含まれている場合
    • newX509Data

      public abstract X509Data newX509Data​(List<?> content)
      指定したX.509コンテンツのリストを格納するX509Dataを作成します。
      パラメータ:
      content - 1つ以上のX.509コンテンツ型のリスト。 有効な型は、String (被認証者名)、byte[] (被認証者のキー識別子)、X509CertificateX509CRL、またはXMLStructure (X509IssuerSerialオブジェクトまたは外部名前空間からの要素)です。 被認証者名はRFC 2253 String形式の識別名である。 実装は、RFC 2253で定義されている属性の型キーワード(CN、L、ST、O、OU、C、STREET、DC、およびUID)をサポートする必要がある。 実装は、追加のキーワードをサポートすることもできる。 以後の変更から保護するために、このリストは防御的にコピーされる。
      戻り値:
      X509Data
      例外:
      NullPointerException - contentnullである場合
      IllegalArgumentException - contentが空の場合、被認証者名がRFC 2253に準拠していない場合、または属性の型キーワードの1つが認識されない場合。
      ClassCastException - contentに上記の有効な型のどれでもないエントリが含まれている場合
    • newX509IssuerSerial

      public abstract X509IssuerSerial newX509IssuerSerial​(String issuerName, BigInteger serialNumber)
      指定したX.500発行者識別名およびシリアル番号からX509IssuerSerialを作成します。
      パラメータ:
      issuerName - RFC 2253 String形式の発行者の識別名。 実装は、RFC 2253で定義されている属性の型キーワード(CN、L、ST、O、OU、C、STREET、DC、およびUID)をサポートする必要がある。 実装は、追加のキーワードをサポートすることもできる。
      serialNumber - シリアル番号
      戻り値:
      X509IssuerSerial
      例外:
      NullPointerException - issuerNameまたはserialNumbernullの場合
      IllegalArgumentException - 発行者名がRFC 2253に準拠していない場合、または属性の型キーワードの1つが認識されない場合。
    • isFeatureSupported

      public abstract boolean isFeatureSupported​(String feature)
      指定した機能がサポートされるかどうかを示します。
      パラメータ:
      feature - 機能名(絶対URIとして)
      戻り値:
      指定した機能がサポートされる場合はtrue、そうでない場合はfalse
      例外:
      NullPointerException - featurenullである場合
    • getURIDereferencer

      public abstract URIDereferencer getURIDereferencer()
      RetrievalMethodオブジェクト内でデフォルトの間接参照URIに使用されるURIDereferencerへの参照を返します。
      戻り値:
      デフォルトのURIDereferencerへの参照
    • unmarshalKeyInfo

      public abstract KeyInfo unmarshalKeyInfo​(XMLStructure xmlStructure) throws MarshalException
      メカニズム固有のXMLStructure (例: DOMStructure)インスタンスからの新しいKeyInfoインスタンスを非整列化します。
      パラメータ:
      xmlStructure - keyinfoの非整列化を開始するメカニズム固有のXML構造
      戻り値:
      KeyInfo
      例外:
      NullPointerException - xmlStructurenullである場合
      ClassCastException - xmlStructureの型がこのファクトリには不適切な場合
      MarshalException - 非整列化の実行中に回復不可能な例外が発生した場合