モジュール java.xml.crypto
パッケージ javax.xml.crypto.dsig

クラスXMLSignatureFactory


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

    XMLSignatureFactory型

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

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

    このファクトリが生成するオブジェクトはDOMに基づいており、APIの概要の「DOMのメカニズム要件」セクションで定義されているDOM相互運用性の要件を遵守します。 標準機構タイプのリストについては、APIの概要の「サービス・プロバイダ」セクションを参照してください。

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

         put("XMLSignatureFactory.DOM", "org.example.DOMXMLSignatureFactory");
     

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

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

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

    ゼロからXMLSignatureを作成する

    XMLSignatureFactoryが作成されると、オブジェクトは適切なメソッドを呼び出してインスタンス化できます。 たとえば、Referenceインスタンスは、newReferenceメソッドの1つを呼び出すことで作成できます。

    XMLからXMLSignatureを非整列化する

    または、unmarshalXMLSignatureメソッドを呼び出してXMLコンテンツを格納するメカニズム固有のXMLValidateContextインスタンスを渡すことによって、既存のXML表現からXMLSignatureを作成できます。

     DOMValidateContext context = new DOMValidateContext(key, signatureElement);
     XMLSignature signature = factory.unmarshalXMLSignature(context);
     
    XMLSignatureFactoryは、そのファクトリ型用に必須のXMLValidateContext型をサポートする必要がありますが、その他をサポートすることもできます。 DOM XMLSignatureFactoryは、DOMValidateContextオブジェクトをサポートする必要があります。

    XMLへのXMLSignatureの署名および整列化

    ファクトリによって作成される各XMLSignatureは、XMLSignatureオブジェクトのsignメソッドを呼び出して、署名鍵および整列化パラメータを格納するメカニズム固有のXMLSignContextオブジェクトを渡すことによって、XML表現に対して整列化し署名することもできます(DOMSignContextを参照)。 次に例を示します。
        DOMSignContext context = new DOMSignContext(privateKey, document);
        signature.sign(context);
     
    並行アクセス

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

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

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

      • XMLSignatureFactory

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

      • getInstance

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

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

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

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

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

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

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

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

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

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

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

        戻り値:
        新しいXMLSignatureFactory
        例外:
        NoSuchMechanismException - DOMメカニズムのXMLSignatureFactory実装をサポートするProviderが存在しない場合
        関連項目:
        Provider
      • getMechanismType

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

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

        public abstract XMLSignature newXMLSignature​(SignedInfo si,
                                                     KeyInfo ki)
        XMLSignatureを作成し、その内容を指定したSignedInfoオブジェクトおよびKeyInfoオブジェクトで初期化します。
        パラメータ:
        si - 署名情報
        ki - 鍵情報。nullも可
        戻り値:
        XMLSignature
        例外:
        NullPointerException - sinullである場合
      • newXMLSignature

        public abstract XMLSignature newXMLSignature​(SignedInfo si,
                                                     KeyInfo ki,
                                                     List<? extends XMLObject> objects,
                                                     String id,
                                                     String signatureValueId)
        指定したパラメータを使用して、XMLSignatureを作成して初期化します。
        パラメータ:
        si - 署名情報
        ki - 鍵情報。nullも可
        objects - XMLObjectのリスト。空またはnullも可
        id - Id。nullも可
        signatureValueId - SignatureValue Id。nullも可
        戻り値:
        XMLSignature
        例外:
        NullPointerException - sinullである場合
        ClassCastException - どのobjectsXMLObject型ではない場合
      • newReference

        public abstract Reference newReference​(String uri,
                                               DigestMethod dm)
        指定されたURIおよびダイジェスト・メソッドでReferenceを作成します。
        パラメータ:
        uri - 参照URI。nullも可
        dm - ダイジェスト・メソッド
        戻り値:
        Reference
        例外:
        IllegalArgumentException - uriがRFC 2396に準拠していない場合
        NullPointerException - dmnullである場合
      • newReference

        public abstract Reference newReference​(String uri,
                                               DigestMethod dm,
                                               List<? extends Transform> transforms,
                                               String type,
                                               String id)
        指定したパラメータでReferenceを作成します。
        パラメータ:
        uri - 参照URI。nullも可
        dm - ダイジェスト・メソッド
        transforms - Transformのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。 nullまたは空文字列も可。
        type - 参照型、URIとして。nullも可
        id - 参照ID。nullも可
        戻り値:
        Reference
        例外:
        ClassCastException - どのtransformsTransform型ではない場合
        IllegalArgumentException - uriがRFC 2396に準拠していない場合
        NullPointerException - dmnullである場合
      • newReference

        public abstract Reference newReference​(String uri,
                                               DigestMethod dm,
                                               List<? extends Transform> transforms,
                                               String type,
                                               String id,
                                               byte[] digestValue)
        指定されたパラメータおよびあらかじめ計算されたダイジェスト値でReferenceを作成します。

        このメソッドは、Referenceのダイジェスト値が以前に計算されていた場合に便利です。 たとえば、OASIS-DSS (Digital Signature Services)仕様を参照してください。

        パラメータ:
        uri - 参照URI。nullも可
        dm - ダイジェスト・メソッド
        transforms - Transformのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。 nullまたは空文字列も可。
        type - 参照型、URIとして。nullも可
        id - 参照ID。nullも可
        digestValue - ダイジェスト値。 以後の変更から保護するために、この配列は複製される。
        戻り値:
        Reference
        例外:
        ClassCastException - どのtransformsTransform型ではない場合
        IllegalArgumentException - uriがRFC 2396に準拠していない場合
        NullPointerException - dmまたはdigestValuenullの場合
      • newReference

        public abstract Reference newReference​(String uri,
                                               DigestMethod dm,
                                               List<? extends Transform> appliedTransforms,
                                               Data result,
                                               List<? extends Transform> transforms,
                                               String type,
                                               String id)
        指定したパラメータでReferenceを作成します。

        このメソッドは、変換のリストがすでにReferenceに対して適用されている場合に便利です。 たとえば、OASIS-DSS (Digital Signature Services)仕様を参照してください。

        この参照を含むXMLSignatureが生成される場合、指定したtransforms (nullでない場合)は指定したresultに適用されます。 Reference要素の結果として得られるTransforms要素は、appliedTransformstransformsを連結したものに設定されます。

        パラメータ:
        uri - 参照URI。nullも可
        dm - ダイジェスト・メソッド
        appliedTransforms - すでに適用されたTransformのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。 リストには少なくとも1つのエントリが含まれている必要がある。
        result - appliedTransformsのシーケンスを処理した結果
        transforms - 署名を生成したときに適用されるTransformのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。 nullまたは空文字列も可。
        type - 参照型、URIとして。nullも可
        id - 参照ID。nullも可
        戻り値:
        Reference
        例外:
        ClassCastException - (どちらかのリストの)変換がどれもTransform型ではない場合
        IllegalArgumentException - uriがRFC 2396に準拠していない場合、またはappliedTransformsが空の場合
        NullPointerException - dmappliedTransforms、またはresultnullの場合
      • newSignedInfo

        public abstract SignedInfo newSignedInfo​(CanonicalizationMethod cm,
                                                 SignatureMethod sm,
                                                 List<? extends Reference> references)
        指定した標準化メソッドおよび署名メソッド、1つ以上の参照のリストを使用してSignedInfoを作成します。
        パラメータ:
        cm - 標準化メソッド
        sm - 署名メソッド
        references - 1つ以上のReferenceのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。
        戻り値:
        SignedInfo
        例外:
        ClassCastException - どの参照もReference型でない場合
        IllegalArgumentException - referencesが空である場合
        NullPointerException - いずれかのパラメータがnullの場合
      • newXMLObject

        public abstract XMLObject newXMLObject​(List<? extends XMLStructure> content,
                                               String id,
                                               String mimeType,
                                               String encoding)
        指定したパラメータからXMLObjectを作成します。
        パラメータ:
        content - XMLStructureのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。 nullまたは空文字列も可。
        id - Id。nullも可
        mimeType - MIMEタイプ。nullも可
        encoding - エンコーディング。nullも可
        戻り値:
        XMLObject
        例外:
        ClassCastException - contentXMLStructure型ではないエントリが含まれている場合
      • newManifest

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

        public abstract Manifest newManifest​(List<? extends Reference> references,
                                             String id)
        指定されたReferenceのリストとオプションのIDを格納するManifestを作成します。
        パラメータ:
        references - 1つ以上のReferenceのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。
        id - Id。nullも可
        戻り値:
        Manifest
        例外:
        NullPointerException - referencesnullである場合
        IllegalArgumentException - referencesが空である場合
        ClassCastException - referencesReference型ではないエントリが含まれている場合
      • newSignatureProperty

        public abstract SignatureProperty newSignatureProperty​(List<? extends XMLStructure> content,
                                                               String target,
                                                               String id)
        指定したXMLStructure、ターゲットURI、およびオプションのidのリストを格納するSignaturePropertyを作成します。
        パラメータ:
        content - 1つ以上のXMLStructureのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。
        target - このプロパティの適用先のSignatureのターゲットURI
        id - Id。nullも可
        戻り値:
        SignatureProperty
        例外:
        NullPointerException - contentまたはtargetnullの場合
        IllegalArgumentException - contentが空である場合
        ClassCastException - contentXMLStructure型ではないエントリが含まれている場合
      • newSignatureProperties

        public abstract SignatureProperties newSignatureProperties​(List<? extends SignatureProperty> properties,
                                                                   String id)
        指定されたSignaturePropertyのリストとオプションのIDを格納するSignaturePropertiesを作成します。
        パラメータ:
        properties - 1つ以上のSignaturePropertyのリスト。 以後の変更から保護するために、このリストは防御的にコピーされる。
        id - Id。nullも可
        戻り値:
        SignatureProperties
        例外:
        NullPointerException - propertiesnullである場合
        IllegalArgumentException - propertiesが空である場合
        ClassCastException - propertiesSignatureProperty型ではないエントリが含まれている場合
      • newTransform

        public abstract Transform newTransform​(String algorithm,
                                               XMLStructure params)
                                        throws NoSuchAlgorithmException,
                                               InvalidAlgorithmParameterException
        指定したアルゴリズムURIおよびパラメータ用にTransformを作成します。 パラメータはメカニズム固有のXMLStructureとして指定されます(例: DOMStructure)。 このメソッドは、パラメータがXML形式でありパラメータ指定のための標準クラスがない場合に便利です。
        パラメータ:
        algorithm - 変換アルゴリズムを識別するURI
        params - パラメータの非整列化を開始するメカニズム固有のXML構造。必須ではない場合またはオプションの場合はnullも可
        戻り値:
        Transform
        例外:
        ClassCastException - paramsの型がこのXMLSignatureFactoryには不適切な場合
        InvalidAlgorithmParameterException - 指定されたパラメータが、要求されたアルゴリズムには不適切な場合
        NoSuchAlgorithmException - 指定されたアルゴリズムの実装が見つからない場合
        NullPointerException - algorithmnullである場合
      • newCanonicalizationMethod

        public abstract CanonicalizationMethod newCanonicalizationMethod​(String algorithm,
                                                                         XMLStructure params)
                                                                  throws NoSuchAlgorithmException,
                                                                         InvalidAlgorithmParameterException
        指定したアルゴリズムURIおよびパラメータ用にCanonicalizationMethodを作成します。 パラメータはメカニズム固有のXMLStructureとして指定されます(例: DOMStructure)。 このメソッドは、パラメータがXML形式でありパラメータ指定のための標準クラスがない場合に便利です。
        パラメータ:
        algorithm - 標準化アルゴリズムを識別するURI
        params - パラメータの非整列化を開始するメカニズム固有のXML構造。必須ではない場合またはオプションの場合はnullも可
        戻り値:
        CanonicalizationMethod
        例外:
        ClassCastException - paramsの型がこのXMLSignatureFactoryには不適切な場合
        InvalidAlgorithmParameterException - 指定されたパラメータが、要求されたアルゴリズムには不適切な場合
        NoSuchAlgorithmException - 指定されたアルゴリズムの実装が見つからない場合
        NullPointerException - algorithmnullである場合
      • getKeyInfoFactory

        public final KeyInfoFactory getKeyInfoFactory()
        KeyInfoオブジェクトを作成するKeyInfoFactoryを返します。 返されたKeyInfoFactoryは、このXMLSignatureFactoryと同じメカニズム型およびプロバイダを持ちます。
        戻り値:
        KeyInfoFactory
        例外:
        NoSuchMechanismException - 同じメカニズム型およびプロバイダを持つKeyFactory実装が利用可能でない場合
      • unmarshalXMLSignature

        public abstract XMLSignature unmarshalXMLSignature​(XMLValidateContext context)
                                                    throws MarshalException
        メカニズム固有のXMLValidateContextインスタンスからの新しいXMLSignatureインスタンスを非整列化します。
        パラメータ:
        context - 署名の非整列化を開始するメカニズム固有のコンテキスト
        戻り値:
        XMLSignature
        例外:
        NullPointerException - contextnullである場合
        ClassCastException - contextの型がこのファクトリには不適切な場合
        MarshalException - 非整列化の実行中に回復不可能な例外が発生した場合
      • unmarshalXMLSignature

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

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

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