我正在创建SignedXml文档,此过程的一部分是从证书初始化KeyInfoX509Data:
void Sign(
System.Security.Cryptography.Xml.SignedXml signedXml,
System.Security.Cryptography.X509Certificates.X509Certificate2 cert)
{
...
var keyInfo = new KeyInfoX509Data(cert, X509IncludeOption.ExcludeRoot);
signedXml.KeyInfo.AddClause(keyInfo);
...
}
此方法需要很长时间,我将其缩小到“newKeyInfoX509Data()”行。我的猜测是它正在用钥匙链做一些事情,它只是闲置10-15秒。
如果我重新使用证书签署多个XML,我想我应该能够创建一个KeyInfoX509Data并将其重用于所有签名的XML文档,甚至可以跨多个线程。
SignedXml是否会更改KeyInfoX509Data类的任何状态,使其在线程之间连续或同时重复使用是不安全的?