モジュール java.xml.crypto

クラス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インスタンスを非整列化します。
    • コンストラクタの詳細

      • 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 - 非整列化の実行中に回復不可能な例外が発生した場合