| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Security.Cryptography;
- using System.Threading.Tasks;
- using System.Xml;
- namespace NcGamesWebView.Extensions
- {
- public static class Encryption
- {
- public static void FromXmlFile(this RSA rsa, string xmlFilePath)
- {
- RSAParameters parameters = new RSAParameters();
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(File.ReadAllText(xmlFilePath));
- if (xmlDoc.DocumentElement.Name.Equals("RSAKeyValue"))
- {
- foreach (XmlNode node in xmlDoc.DocumentElement.ChildNodes)
- {
- switch (node.Name)
- {
- case "Modulus": parameters.Modulus = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
- case "Exponent": parameters.Exponent = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
- case "P": parameters.P = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
- case "Q": parameters.Q = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
- case "DP": parameters.DP = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
- case "DQ": parameters.DQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
- case "InverseQ": parameters.InverseQ = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
- case "D": parameters.D = (string.IsNullOrEmpty(node.InnerText) ? null : Convert.FromBase64String(node.InnerText)); break;
- }
- }
- }
- else
- {
- throw new Exception("Invalid XML RSA key.");
- }
- rsa.ImportParameters(parameters);
- }
- public static void ToXmlFile(this RSA rsa, bool includePrivateParameters, string xmlFilePath)
- {
- RSAParameters parameters = rsa.ExportParameters(includePrivateParameters);
- File.WriteAllText(xmlFilePath,
- string.Format("<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent><P>{2}</P><Q>{3}</Q><DP>{4}</DP><DQ>{5}</DQ><InverseQ>{6}</InverseQ><D>{7}</D></RSAKeyValue>",
- parameters.Modulus != null ? Convert.ToBase64String(parameters.Modulus) : null,
- parameters.Exponent != null ? Convert.ToBase64String(parameters.Exponent) : null,
- parameters.P != null ? Convert.ToBase64String(parameters.P) : null,
- parameters.Q != null ? Convert.ToBase64String(parameters.Q) : null,
- parameters.DP != null ? Convert.ToBase64String(parameters.DP) : null,
- parameters.DQ != null ? Convert.ToBase64String(parameters.DQ) : null,
- parameters.InverseQ != null ? Convert.ToBase64String(parameters.InverseQ) : null,
- parameters.D != null ? Convert.ToBase64String(parameters.D) : null)
- );
- }
- }
- }
|