(saveFileDialog.FileName, null) ;. Formatting=Formatting.Indented; .WriteContentTo (tr) ;. Close ();=new XmlDocument ();
}
} static void SignXml (XmlDocument xmlDoc, RSA Key)
{
//Перевірка аргументів (xmlDoc == null)
throw new ArgumentException ( xmlDoc ); (Key == null) new ArgumentException ( Key ); signedXml=new SignedXml (xmlDoc);
//Додавання ключа в SignedXml.SigningKey=Key;
//Посилання на підписується елемент документаreference=new Reference () ;. Uri= raquo ;;
//Створення трансформації документа для коректного відновлення
XmlDsigEnvelopedSignatureTransform env=new XmlDsigEnvelopedSignatureTransform () ;. AddTransform (env) ;. AddReference (reference);
//Обчислення подпісі.ComputeSignature ();
//Створення Xml елемента містить подпісьxmlDigitalSignature=signedXml.GetXml ();
//Добаленіе підписи у вихідний документ.DocumentElement.AppendChild (xmlDoc.ImportNode (xmlDigitalSignature, true));
}
}
}
Вихідний код другої програми
namespace WindowsFormsApplication6
{partial class Form1: Form
{fileName; doc=new XmlDocument (); numb1; numb2; sum; Form1 ()
{();
} void button1_Click (object sender, EventArgs e)
{(openFileDialog.ShowDialog () == DialogResult.OK)
{= openFileDialog.FileName; .Load (fileName);
}
//Створення об'єкта CspParameters і додавання контейнера ключів
CspParameters cspParams=new CspParameters () ;. KeyContainerName= XML_DSIG_RSA_KEY raquo ;;
//Створення ключа з контейнераrsaKey=new RSACryptoServiceProvider (cspParams);
//Перевірка подпісіresult=VerifyXml (doc, rsaKey);
//Відображення результатів перевірки (result)
{. Show ( Перевірка пройдена );
}
{. Show ( Перевірка не пройдена );
}
} void button2_Click (object sender, EventArgs e)
{firstEl=doc.SelectSingleNode ( numbers/firstEl );=Convert.ToInt32 (firstEl.InnerText); secondEl=doc.SelectSingleNode ( numbers/secondEl );=Convert. ToInt32 (secondEl.InnerText);=numb1 + numb2; .Text=sum.ToString ();
} static Boolean VerifyXml (XmlDocument Doc, RSA Key)
{
//Створення SignedXml об'єкта з документаsignedXml=new SignedXml (Doc);
//Пошук елемента SignaturenodeList=Doc.GetElementsByTagName ( Signature );
//Завантаження першого запису lt; signature gt; .LoadXml ((XmlElement) nodeList [0]);
//Перевірка подпісіsignedXml.CheckSignature (Key);
} void Form1_Load (object sender, EventArgs e)
{
}
}
}
Список літератури
1. Практичне керівництво. Підписання XML-документів за допомогою цифрових підписів # justify gt; 2. Інтеграція додатків: методи взаємодії, топологія, інструменти # justify gt ;. IPC: основи взаємодії між процесами # justify gt ;. Межпроцессное взаємодія # justify gt ;. Служби криптографії # justify gt ;. Нейгел К., Івьен Б., Глінн Дж., Уотсон К. - C # 4.0 і платформа .NET 4 для професіоналів - 2011