Exemplo n.º 1
0
        void restoreKeysResponse(object sender, EventArgs e)
        {
            int messageIndex = serverConnection.unreadMessages.Count - 1;

            if (messageIndex < 0)
            {
                return;
            }
            JObject message = JObject.Parse(serverConnection.unreadMessages[messageIndex]);
            string  type    = serverConnection.interpretMessageType(message);

            if (type == "restoreKeys")
            {
                // Gets data
                string encryptedSerializedKeys = message[type].ToString();

                // Creates password helper. suppliedRestorePassword must be supplied
                PasswordBasedKeyHelper passHelper = new PasswordBasedKeyHelper("restoration" + mainUser.user_id);
                passHelper.CreateKey(suppliedRestorePassword, mainUser.email);

                // Deletes from memory
                suppliedRestorePassword = "";

                // Deserialies and decryptes the keys
                string decryptedSerializedKeys            = passHelper.DecryptDataFromString(encryptedSerializedKeys);
                Dictionary <string, string> chatsKeysPair = JsonConvert.DeserializeObject <Dictionary <string, string> >(decryptedSerializedKeys);

                // Puts keys into chat objects
                var chatNames = chatsKeysPair.Keys.ToArray <string>();
                for (int i = 0; i < chatNames.Length; i++)
                {
                    var name   = chatNames[i];
                    var symKey = chatsKeysPair[name];
                    myChats[name].loadChatKey(symKey);
                }

                // Saves to storage
                saveChatsAndUsersToStorage();
            }
        }