public ReadPage() { InitializeComponent(); try { var json = Uri.UnescapeDataString(new Uri(App.UriData).Query.Replace("?data=", string.Empty)); var message = JsonConvert.DeserializeObject <KriptalMessage>(json); var aes = new AesCrypto(); var rsa = new RsaCrypto(); var localDataManager = new LocalDataManager(App.Password); var privateKey = localDataManager.GetPrivateKey(); var textAesKey = rsa.DecryptWithPrivate(message.TextAesKey, privateKey); var textAesIv = rsa.DecryptWithPrivate(message.TextAesIv, privateKey); var text = aes.Decrypt(message.TextData, textAesKey, Convert.FromBase64String(textAesIv)); MessageText = text; if (!string.IsNullOrEmpty(message.BlockchainStampUrl)) { var blockchainUrl = rsa.DecryptWithPrivate(message.BlockchainStampUrl, privateKey); BlockchainReciptUrl = blockchainUrl; } if (message.FileName != string.Empty) { FileName = rsa.DecryptWithPrivate(message.FileName, privateKey); var fileAesKey = rsa.DecryptWithPrivate(message.FileAesKey, privateKey); var fileAesIv = rsa.DecryptWithPrivate(message.FileAesIv, privateKey); FileData = aes.Decrypt(message.FileData, fileAesKey, Convert.FromBase64String(fileAesIv)); HasAttachment = true; } else { HasAttachment = false; } var fromId = rsa.DecryptWithPrivate(message.FromId, privateKey); var user = localDataManager.Get <User>(u => u.Id == fromId); UserName = user.Name; App.UriData = string.Empty; BindingContext = this; } catch { DisplayAlert(AppResources.Title, AppResources.CantRead, AppResources.OK); } }
private void LoadCacheContents() { if (cacheContents != null) { return; } var cacheData = LocalDataManager.Get <CacheData>(); if (cacheData.files == null) { cacheData.files = new CacheFileData[0]; } cacheContents = cacheData.files.ToDictionary(x => x.Source); }