Рутокен, ЭЦП и C#
Здравствуйте. Заранее оговорюсь, что с токенами до этого дел не имел, поэтому мои вопросы могут быть несколько глупыми, или в корне не верными, поэтому прошу поправить меня, если что.
У меня есть программа на C#, генерирующая xml файлы. Эти файлы нужно подписывать ЭЦП, при помощи токена. Вопрос такой - можно - ли использовать стандартные C#-библиотеки, для подписывания xml файлов, или же работать будет только ваша SDK?
Вот мой текущий код(с токеном пока не проверялся):
/// <summary>
/// Подписывание xml-файла
/// </summary>
/// <param name="path">Путь к подписываемому файлу</param>
public bool SignXml(string path)
{
CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = "XML_DSIG_RSA_KEY";
RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams);
if (rsaKey.CspKeyContainerInfo.HardwareDevice)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlDoc.Load(path);
SignedXml signedXml = new SignedXml(xmlDoc);
signedXml.SigningKey = rsaKey;
Reference reference = new Reference();
reference.Uri = "";
XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
reference.AddTransform(env);
signedXml.AddReference(reference);
signedXml.ComputeSignature();
XmlElement xmlDigitalSignature = signedXml.GetXml();
xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true));
xmlDoc.Save(path);
return true;
}
else
MessageBox.Show("Вставьте USB-Токен, для подписания документа.", "Ошибка подписывания", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}