public bool SendChatMessage(ChatMessage message, string target) { if (m_personalCryptoManagers.ContainsKey(target)) { } else { string keyBased = CryptoManager.GetAESKeyB64(); string response = SendMessageAndWaitResponseCrypted(ServerSpecificStrings.SendSessionKeyToUser(m_userName, target, keyBased)); if (response.Equals(ServerSpecificStrings.MesageOk)) { return(StartNewChatSession(target, keyBased)); } } return(false); }
bool StartNewChatSession(string username, string aesKey = "") { string keyBased = String.IsNullOrEmpty(aesKey) ? CryptoManager.GetAESKeyB64() : aesKey; CryptoManager cm = new CryptoManager(keyBased); if (m_personalCryptoManagers.ContainsKey(username)) { m_personalCryptoManagers[username] = cm; } else { m_personalCryptoManagers.Add(username, cm); } return(true); }
//Estabilish crypto tunnel and save session keys to CryptoManager object static CryptoManager Handshake(Networker networker) { CryptoManager cryptoManager = null; string AESKey = CryptoManager.GetAESKeyB64(); string response = networker.SendMessageAndWaitResponse( CryptoManager.EncryptRSA2B64("message=handshake&key=" + AESKey) ); if (!String.IsNullOrEmpty(response)) { CryptoManager cryptoManagerTest = new CryptoManager(AESKey, response); string responseConnected = ChatManager.SendMessageAndWaitResponseCrypted(ServerSpecificStrings.MesageOk, networker, cryptoManagerTest); if (responseConnected.Equals(ServerSpecificStrings.MesageOk)) { cryptoManager = cryptoManagerTest; } } return(cryptoManager); }
public bool AddChat(string chatname, string password) { if (String.IsNullOrEmpty(password)) { string keyBased = CryptoManager.GetAESKeyB64(); string response = SendMessageAndWaitResponseCrypted(ServerSpecificStrings.SendSessionKeyToUser(m_userName, chatname, keyBased)); if (response.Equals(ServerSpecificStrings.MesageOk)) { return(StartNewChatSession(chatname, keyBased)); } } else { string response = SendMessageAndWaitResponseCrypted(ServerSpecificStrings.SendMessageToEnterGroup(m_userName, chatname, password)); if (response.Equals(ServerSpecificStrings.MesageOk)) { return(true); } } return(false); }