public MenuViewModel(User user) { this.user = user; this.tangle = new TangleMessenger(this.user.Seed); this.ntru = new NtruKex(); this.ipfsHelper = new IpfsHelper(); }
public ChatViewModel(ListView messagesListView, Contact contact) { this.ntruKex = new NtruKex(); this.contact = contact; this.messagesListView = messagesListView; this.Messages = new ObservableCollection <MessageViewModel>(); this.OutGoingText = null; }
public ChatViewModel(Contact contact, User user) { this.ntruKex = new NtruKex(); this.profileImageUrl = contact.ImageUrl; this.user = user; this.contact = contact; var trytes = this.user.TangleMessenger.GetMessages(this.contact.PublicKeyAdress); var contactInfos = IotaHelper.FilterRequestInfos(trytes); contact.PublicNtruKey = contactInfos.PublicNtruKey; this.Messages = new ObservableCollection <MessageViewModel>(); this.GetMessagesAsync(this.Messages); this.OutGoingText = null; this.SendCommand = new Command(async() => { await this.SendMessage(); }); }
public static List <ChatMessage> FilterChatMessages(IEnumerable <TryteString> trytes, NtruKex ntruKex, IAsymmetricKeyPair keyPair) { var chatMessages = new List <ChatMessage>(); foreach (var tryte in trytes) { try { var trytesString = tryte.ToString(); var indexBreak = trytesString.IndexOf("9CHIOTAYOURIOTACHATAPP9", StringComparison.Ordinal); var messageTrytes = new TryteString(trytesString.Substring(0, indexBreak)); var dateTrytes = new TryteString(trytesString.Substring(indexBreak + 23, trytesString.Length - indexBreak - 23)); // can only decrypt messages from other user (send with own public key)! var decryptedMessage = ntruKex.Decrypt(keyPair, messageTrytes.ToBytes()); var date = DateTime.Parse(dateTrytes.ToUtf8String()); var chatMessage = new ChatMessage { Message = decryptedMessage, Date = date }; chatMessages.Add(chatMessage); } catch { continue; } } return(chatMessages); }