4.XML文書に署名する (Java)

4.5 各要素を構成する

 XML署名に含まれる各要素の構成を説明します。
 それぞれの要素の意味やXMLスキーマなどはW3Cのサイトで確認してください。

4.5.1 <Reference>を構成する

 Referenceインスタンスは、XMLSignatureFactoryクラスのnewReferenceメソッドをコールすることで生成されます。<Reference>は、これによって構成されます。
 以下に、メソッドの詳細を記します。
public abstract Reference newReference(
			String uri,
			DigestMethod dm,
			List transforms,
			String type,
			String id)
  • uri
  • <Reference>のURI属性の値を指定します。ここでは、""を指定します。
  • dm
  • ダイジェストメソッドを指定します。SHA1、SHA256、SHA512、RIPEMD160 などを指定できます。
  • transforms
  • 変換アルゴリズムのリスト。変更不能なリストとしてコピーされます。4.5.2<Transform>を構成する を参照してください。
  • type
  • 参照形URIを指定しますが、ここでは指定しませんので、 null とします。
  • id
  • 参照形IDを指定しますが、ここでは null とします。

4.5.2 <Transform>を構成する

 Transformインスタンスは、XMLSignatureFactoryクラスのnewTransformメソッドをコールすることで生成されます。<Reference>には、これのリストを指定します。
 以下に、メソッドの詳細を記します。
public abstract Transform newTransform(
			String algorithm,
			TransformParameterSpec params)
  • algorithm
  • 変換アルゴリズムを識別するURIを指定します。ここでは、Transform.ENVELOPED("http://www.w3.org/2000/09/xmldsig#enveloped-signature")を指定します。
  • params
  • 変換アルゴリズム固有のパラメータをしていますが、ここでは null を指定します。

4.5.3 <SignedInfo>を構成する

 SignedInfoインスタンスは、XMLSignatureFactoryクラスのnewSignedInfoメソッドをコールすることで生成されます。<Reference>には、これのリストを指定します。
 以下に、メソッドの詳細を記します。
public abstract SignedInfo newSignedInfo(
			CanonicalizationMethod cm,
			SignatureMethod sm,
			List references)

4.5.4 <CanonicalizationMethod>を構成する

CanonicalizationMethodインスタンスは、XMLSignatureFactoryクラスのnewCanonicalizationMethodメソッドをコールすることで生成されます。<SignedInfo>には、これを指定します。
 以下に、メソッドの詳細を記します。
public abstract CanonicalizationMethod newCanonicalizationMethod(
			String algorithm,
			C14NMethodParameterSpec params)
  • algorithm
  • 正規化のアルゴリズムを識別するURIを指定します。ここでは、INCLUSIVE_WITH_COMMENTS("http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments")を指定しています。
  • params
  • アルゴリズム固有の正規化パラメータを指定しますが、ここでは null を指定します。

4.5.5 <SignatureMethod>を構成する

SignatureMethodインスタンスは、XMLSignatureFactoryクラスのnewSignatureMethodメソッドをコールすることで生成されます。<SignedInfo>には、これを指定します。
 以下に、メソッドの詳細を記します。
public abstract SignatureMethod newSignatureMethod(
			String algorithm,
			SignatureMethodParameterSpec params)
  • algorithm
  • 署名のアルゴリズムを識別するURIを指定します。ここでは、DSA_SHA1("http://www.w3.org/2000/09/xmldsig#dsa-sha1")を指定しています。
  • params
  • アルゴリズム固有の署名パラメータを指定しますが、ここでは null を指定します。

4.5.6 <KeyValue>を構成する

 KeyValueインスタンスを生成するには、まず、XMLSignatureFactoryクラスのgetKeyInfoFactoryメソッドをコールすることでKeyInfoFactoryを得ます。次に、このKeyInfoFactoryクラスのnewKeyValueをコールすることで生成します。<KeyValue>は、これによって構成されます。
 以下に、getKeyInfoFactoryメソッドの詳細を記します。
public final KeyInfoFactory getKeyInfoFactory()
 このメソッドから返された KeyInfoFactory は、この XMLSignatureFactory と同じ機構型およびプロバイダを持ちます。

次に、newKeyValueメソッドの詳細を記します。
public abstract KeyValue newKeyValue(PublicKey key)

4.5.7 鍵ペアを生成する

 鍵ペアは、まず、KeyPairGeneratorクラスのgetInstanceをコールして生成します。次に、そのインスタンスのgenerateKeyPair()をコールすることで鍵ペアが生成されます。
 以下に、getInstanceメソッドの詳細を記します。
public static KeyPairGenerator getInstance(String algorithm)
  • algorithm
  • アルゴリズムの標準名の文字列を指定します。アルゴリズムの標準名は、以下のとおりです。
    DSA: FIPS PUB 186 で定義されているデジタル署名アルゴリズム
    RSA: PKCS #1 で定義されている RSA 暗号化アルゴリズム
次に、鍵ペアを生成するgenerateKeyPairメソッドの詳細を記します。
public KeyPair generateKeyPair()
これによって、指定された鍵ペアが戻ります。

4.5.8 <KeyInfo>を構成する

 KeyInfoインスタンスは、KeyInfoFactoryクラスのnewKeyInfoメソッドをコールすることで生成します。
 以下に、メソッドの詳細を記します。
public abstract KeyInfo newKeyInfo(List content)
  • content
  • 鍵情報の型を表現する XMLStructure のリスト。このリストは、変更不能としてコピーされます。

続きます。

お問い合わせは、こちらからお願いします。



(記載の会社名および製品名は、各社の登録商標および商標です。)

4.1 XML文書に署名する (Java)
4.1 XML署名とは
4.3 署名された文書(結果)
4.4 電子署名 Javaアプリ
株)トラスト・ソフトウェア・システム
暗号化・電子署名・タイムスタンプ ライブラリ作成します。
お問い合わせください。
会員用ログイン
ID:
パスワード:
ログインすると、一般公開していないページを閲覧できます。