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)); }
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); } }