public void SaveWithSignature(string fileName, string keyFileName) { EZRSA rsa = new EZRSA(1024); //rsa.MapHashAlgorithmOID( if (File.Exists(keyFileName)) { StreamReader sr = File.OpenText(keyFileName); string str = sr.ReadToEnd(); rsa.FromXmlString(str); sr.Close(); XmlDocument doc = SaveWithSignature(rsa); doc.Save(fileName); } // TODO: exception /*else * { * int poo; * }*/ }
public XmlDocument SaveWithSignature(string keyFileName) { // CspParameters cspParams = new CspParameters(); // cspParams.Flags = CspProviderFlags.UseExistingKey; // RSA rsa = new RSACryptoServiceProvider(cspParams); EZRSA rsa = new EZRSA(1024); rsa.FromXmlString(File.ReadAllText(keyFileName)); return(SaveWithSignature(rsa)); }
private static XmlDocument LoadLicenseXmlFromString(string encoded) { try { byte[] ar = Convert.FromBase64String(encoded); unchecked { for (int i = 0; i < ar.Length; i++) { ar[i] = (byte)(ar[i] ^ XOR_VALS[i % XOR_VALS.Length]); } } var mscmp = new MemoryStream(ar); using (var br = new BinaryReader(mscmp)) { int siglen = br.ReadInt32(); if (siglen <= 0 || siglen > 100000) { return(null); } byte[] signature = br.ReadBytes(siglen); int datalen = br.ReadInt32(); if (datalen <= 0 || datalen > 100000) { return(null); } byte[] data = br.ReadBytes(datalen); // check signature var key = new EZRSA(1024); key.FromXmlString(Framework.Instance.GetPublicKey()); if (!key.VerifyData(data, new SHA1CryptoServiceProvider(), signature)) { return(null); } var ms = new MemoryStream(data); var doc = new XmlDocument(); doc.Load(ms); return(doc); } } catch { return(null); } }
private static byte[] CreateLicenseBytes(string name, string email, string productattr, string productval, string licid, LicenseData licdata) { var doc = CreateNotSignedLicenseDoc(name, email, productattr, productval, licid); var ms = new MemoryStream(); using (var xw = XmlWriter.Create(ms)) { doc.Save(xw); } if (licdata != null) { var sw = new StringWriter(); doc.Save(sw); licdata.LicenseXml = sw.ToString(); } byte[] data = ms.ToArray(); // sign binary representation of license var key = new EZRSA(1024); key.FromXmlString(Resources.privatekey); byte[] signature = key.SignData(data, new SHA1CryptoServiceProvider()); var mscmp = new MemoryStream(); using (var bw = new BinaryWriter(mscmp)) { bw.Write((int)signature.Length); bw.Write(signature); bw.Write((int)data.Length); bw.Write(data); } byte[] ar = mscmp.ToArray(); unchecked { for (int i = 0; i < ar.Length; i++) { ar[i] = (byte)(ar[i] ^ XOR_VALS[i % XOR_VALS.Length]); } } return(ar); }