替换分离的XML签名(.NET)中的文件引用

时间:2014-02-21 13:16:25

标签: c# xml signature

我需要签署一些带有分离签名的XML文档,然后通过电子邮件将其发送给某人,以便他以后可以验证签名。 我的问题是,对签名文件的引用是一个URI,只接受绝对路径和文件名。怎么能改成只有文件名? Beacsue,我不能保证这个文件存在于接收器的完全相同的位置。 像

这样的东西
 reference.Uri = "file_to_sign.xml";

只是不起作用,因为它不是有效的URI。 这是代码:

var signer = new SignedXml(xmlDoc);
signer.KeyInfo = new KeyInfo();
signer.KeyInfo.AddClause(new RSAKeyValue(key));
signer.SigningKey = key;

var reference = new Reference();
reference.Uri = "file://C:/data/path/file_to_sign.xml";
signer.AddReference(reference);
signer.ComputeSignature();

提前致谢, 京特

1 个答案:

答案 0 :(得分:0)

将当前工作目录更改为XML文件位置:

var current=Directory.GetCurrentDirectory();
Directory.SetCurrentDirectory(xml_file_directory);
//sign/verify with relative URIs references
Directory.SetCurrentDirectory(curent);

您还可以编写自己的XmlResolver