モジュール 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