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

クラスXMLSignatureFactory

java.lang.Object
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のメカニズム要件」で定義されているDOM相互運用性の要件に基づいて作成されます。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」XMLSignatureFactoryのセクションを参照してください。

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処理メカニズムおよび表現の型。 標準メカニズムのタイプのリストは、「Javaセキュリティ標準アルゴリズム名仕様」XMLSignatureFactoryのセクションを参照してください。
      戻り値:
      新しいXMLSignatureFactory
      例外:
      NullPointerException - mechanismTypenullである場合
      NoSuchMechanismException - 指定したメカニズムのXMLSignatureFactory実装をサポートするProviderが存在しない場合
      関連項目:
    • getInstance

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

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

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

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

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

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

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

      戻り値:
      新しいXMLSignatureFactory
      例外:
      NoSuchMechanismException - DOMメカニズムのXMLSignatureFactory実装をサポートする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の場合
    • newSignedInfo

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

      指定したアルゴリズムURIおよびパラメータ用にDigestMethodを作成します。
      パラメータ:
      algorithm - ダイジェスト・アルゴリズムを識別するURI
      params - アルゴリズム固有のダイジェスト・パラメータ。nullも可
      戻り値:
      DigestMethod
      例外:
      InvalidAlgorithmParameterException - 指定されたパラメータが、要求されたアルゴリズムには不適切な場合
      NoSuchAlgorithmException - 指定されたアルゴリズムの実装が見つからない場合
      NullPointerException - algorithmnullである場合
    • newSignatureMethod

      指定したアルゴリズムURIおよびパラメータ用にSignatureMethodを作成します。
      パラメータ:
      algorithm - 署名アルゴリズムを識別するURI
      params - アルゴリズム固有の署名パラメータ。nullも可
      戻り値:
      SignatureMethod
      例外:
      InvalidAlgorithmParameterException - 指定されたパラメータが、要求されたアルゴリズムには不適切な場合
      NoSuchAlgorithmException - 指定されたアルゴリズムの実装が見つからない場合
      NullPointerException - algorithmnullである場合
    • newTransform

      public abstract Transform newTransform(String algorithm, TransformParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
      指定したアルゴリズムURIおよびパラメータ用にTransformを作成します。
      パラメータ:
      algorithm - 変換アルゴリズムを識別するURI
      params - アルゴリズム固有の変換パラメータ。nullも可
      戻り値:
      Transform
      例外:
      InvalidAlgorithmParameterException - 指定されたパラメータが、要求されたアルゴリズムには不適切な場合
      NoSuchAlgorithmException - 指定されたアルゴリズムの実装が見つからない場合
      NullPointerException - algorithmnullである場合
    • 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, C14NMethodParameterSpec params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
      指定したアルゴリズムURIおよびパラメータ用にCanonicalizationMethodを作成します。
      パラメータ:
      algorithm - 標準化アルゴリズムを識別するURI
      params - アルゴリズム固有の標準化パラメータ。nullも可
      戻り値:
      CanonicalizationMethod
      例外:
      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になることはない