/// <summary> /// Used for Recieving RSAKeyValues /// and XML Streams /// </summary> public string RecieveEncryptedWithRsa() { try { XmlSerializer ser = new XmlSerializer(typeof(Message)); StreamReader reader = new StreamReader(Stream); //Creates a StringBuilder to build the message StringBuilder message = new StringBuilder(); //Reads the Datastream into the Buffer //and adds it to the StringBuilder //and clears whitespace char[] buffer = new char[3000]; reader.Read(buffer, 0, buffer.Length); foreach (char b in buffer) { message.Append(b); } message = message.Remove(message.ToString().IndexOf("</Message>") + "</Message>".Length, "</Message>".Length); if (message.ToString().Contains("RSAKeyValue")) { using (StringReader sr = new StringReader(message.ToString())) { var m = ser.Deserialize(sr) as Message; if (m.Users != null) { m.Users.ForEach(CheckUsersIp); } } } //Opens a String Reader to have a //stream to deserialize and feeds it //the string builder as a string using (StringReader sr = new StringReader(message.ToString())) { var m = ser.Deserialize(sr) as Message; if (m.Mb.Body != null || m.Mb.Body != "") { m.Mb.Body = CryptoTool.Decrypt(m.Mb.Body); foreach (char c in m.Mb.Body) { if (c != ' ') { return(m.From.Name + ">>" + m.To.Name + ": " + m.Mb.Body); } } } } return(null); } catch (Exception) { return(null); throw; } }