PV0電子証明書情報を基にXMLファイルの電子署名を作成するプログラムを作成しています。環境はasp.net(vb.net)でフレームワークは4.0です。証明書情報をX509Storeから取得し、署名を付与するXMLファイルの特定のIDを持つノードに対して署名を付与します。IDには日本語文字列が指定されており、SignedXMLクラスのComputeSignatureメソッドで署名情報を作成しているのですが、その際に、SignedInfoのReferenceには日本語文字列をURIエンコードした値をセットするように指示されています。SignedXmクラスのAddReferenceメソッドでURIエンコードした値をセットすると、ComputeSignatureを実行するときに「参照要素の形式が正しくありません」というエラーになってしまいます。以下、コードの抜粋です。XmlDsigC14NTransformreference.AddTransform(env)signedXml.AddReference(reference)signedXml.ComputeSignature()SignedInfoのReferenceにURIエンコードした文字列をセットし、署名を行う方法はないでしょうか。更新順0自己レスです。SignedXmlクラスをオーバーライドすることで解決しました。(0)0int32_tさんすみません。コードに漏れと誤りがありました。XmlDsigC14NTransformreference.AddTransform(env)signedXml.AddReference(reference)signedXml.ComputeSignature()になります。日本語文字列をURIエンコードしたのち、先頭に#を付加しています。エンコードした文字列では「参照要素の形式が正しくありません」というエラーになってしまいます。日本語文字列のままであれば署名は付与できるのですが、相手先のシステムで日本語文字列をデコードして要素を検索するため、当然ながらまったく違う文字列になってしまうため、やはりエラーになってしまいます。何なのか」が示されていません。付ける必要があります。(0)ウォッチこの質問への回答やコメントをメールでお知らせします。