Exemplo n.º 1
0
 public MenuViewModel(User user)
 {
     this.user       = user;
     this.tangle     = new TangleMessenger(this.user.Seed);
     this.ntru       = new NtruKex();
     this.ipfsHelper = new IpfsHelper();
 }
Exemplo n.º 2
0
 public ChatViewModel(ListView messagesListView, Contact contact)
 {
     this.ntruKex          = new NtruKex();
     this.contact          = contact;
     this.messagesListView = messagesListView;
     this.Messages         = new ObservableCollection <MessageViewModel>();
     this.OutGoingText     = null;
 }
Exemplo n.º 3
0
        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(); });
        }
Exemplo n.º 4
0
        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);
        }