public void CreateLicenseFile(LicenseDto dto, string fileName) { var ms = new MemoryStream(); new XmlSerializer(typeof(LicenseDto)).Serialize(ms, dto); // Create a new CspParameters object to specify // a key container. string secretKey = File.ReadAllText("private.xml"); // Create a new RSA signing key and save it in the container. RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(); rsaKey.FromXmlString(secretKey); // Create a new XML document. XmlDocument xmlDoc = new XmlDocument(); // Load an XML file into the XmlDocument object. xmlDoc.PreserveWhitespace = true; ms.Seek(0, SeekOrigin.Begin); xmlDoc.Load(ms); // Sign the XML document. SignXml(xmlDoc, rsaKey); // Save the document. xmlDoc.Save(fileName); }
static void Main(string[] args) { Console.WriteLine("Генератор лицензий"); string del = new string('-', 30); Console.WriteLine(del); LicenseDto lic = new LicenseDto(); Console.Write("Организация/частное лицо: "); lic.LicenseeName = Console.ReadLine(); Console.Write("Срок действия (день.месяц.год): "); var date = Console.ReadLine().Split(new char[] { '.' }); lic.ValidUntil = new DateTime(int.Parse(date[2]), int.Parse(date[1]), int.Parse(date[0])); Console.WriteLine("Доступные функции системы"); Console.WriteLine("Включить возможность сохранить данные в файл? Y/N"); string answer = Console.ReadLine(); switch (answer) { case "Y": lic.AllowedFeatures.Add("AllowSaveInFile"); break; } Console.WriteLine("Включить возможность загрузить данные из файла? Y/N"); answer = Console.ReadLine(); switch (answer) { case "Y": lic.AllowedFeatures.Add("AllowReadFromFile"); break; } GeneratorManager manager = new GeneratorManager(); manager.GenerateNewKeyPair(); manager.CreateLicenseFile(lic, "license.xml"); Console.WriteLine("Файл лицензии успешно создан!"); Console.ReadKey(); }