Beispiel #1
0
        public async Task <string> DecryptMessage(DecryptionPackage decryptionPackage)
        {
            var keyPair = await GenerateKeyPair();

            var decryptedMessage = Sodium.PublicKeyBox
                                   .Open(decryptionPackage.Message, decryptionPackage.Nonce, keyPair.PrivateKey, decryptionPackage.PublicKey);

            return(Encoding.UTF8.GetString(decryptedMessage));
        }
Beispiel #2
0
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            var packetElements = _messageText.Split("|");

            contactService = new ContactService();
            var contacts = contactService.GetContacts();
            var sender   = contacts.SingleOrDefault(x => x.Id == packetElements[0]);

            if (sender == null)
            {
                // TODO: If sender is null then user could be re-opening a message they sent - check contactId
            }
            else
            {
                var nonce            = Convert.FromBase64String(packetElements[1]);
                var encryptedMessage = Convert.FromBase64String(packetElements[2]);
                var senderPublicKey  = Convert.FromBase64String(sender.PublicKey);
                decryptionPackage = new DecryptionPackage(encryptedMessage, nonce, senderPublicKey);
            }
        }