public static WriteMessageDto EncodeMessage(string message, ChatDto chat) { UserChatKeys keys = GetChatKeys(chat); ICollection <EncodedMessageDto> encodedMessages = new List <EncodedMessageDto>(); foreach (MemberDto member in chat.Members) { int commonKey = DIFFIE.GetCommonPrivateKey(member.PublicKey, keys.PrivateKey, keys.Chat.P); Console.WriteLine($"***Encoded for {member.Name} with key {commonKey}***"); string encodedMessage = NOTEPAD.Encode(message, commonKey); encodedMessages.Add(new EncodedMessageDto(encodedMessage, member.Name)); } return(new WriteMessageDto(chat.Name, LOGIN, encodedMessages)); }
public static IEnumerable <DecodedMessage> DecodeChat(ChatDto chat) { UserChatKeys keys = GetChatKeys(chat); ICollection <DecodedMessage> messages = new List <DecodedMessage>(); foreach (MessageDto encodedMessage in chat.Messages) { if (encodedMessage.EncodedText == "******") { messages.Add(new DecodedMessage(encodedMessage.EncodedText, encodedMessage.Sender.Name, encodedMessage.TimeSpan, null)); continue; } int commonKey = DIFFIE.GetCommonPrivateKey(encodedMessage.Sender.PublicKey, keys.PrivateKey, keys.Chat.P); string decodedMessage = NOTEPAD.GetCodeText(NOTEPAD.Decode(encodedMessage.EncodedText, commonKey)); messages.Add(new DecodedMessage(decodedMessage, encodedMessage.Sender.Name, encodedMessage.TimeSpan, commonKey)); } return(messages); }