private void DecryptFile(Stream inputFileStream, Stream outputFileStream, string passphrase) { _engine.DecryptFile(inputFileStream, outputFileStream, passphrase); }
/// <summary> /// Shows the details of an item clicked on in the <see cref="ItemPage"/> /// </summary> private async void ItemView_ItemClick(object sender, ItemClickEventArgs e) { // Navigate to the appropriate destination page, configuring the new page // by passing required information as a navigation parameter //var itemId = ((SampleDataItem)e.ClickedItem).UniqueId; //if (!Frame.Navigate(typeof(ItemPage), itemId)) //{ // throw new Exception(this.resourceLoader.GetString("NavigationFailedExceptionMessage")); //} Exception exception = null; try { var passphraseDialog = new PassphraseInputDialog(); ContentDialogResult passphraseDialogResult = await passphraseDialog.ShowAsync(); if (passphraseDialogResult == ContentDialogResult.Primary) { var passphrase = passphraseDialog.Passphrase; var fileData = (YCFileData)e.ClickedItem; StorageFolder tempFolder = Windows.Storage.ApplicationData.Current.LocalCacheFolder; StorageFile encryptedFile = await tempFolder.CreateFileAsync(fileData.InternalName, CreationCollisionOption.ReplaceExisting); StorageFile decryptedFile = await tempFolder.CreateFileAsync(fileData.FileName, CreationCollisionOption.ReplaceExisting); using (var encryptedFileStream = await encryptedFile.OpenStreamForWriteAsync()) { await client.GetFile(fileData.InternalName, encryptedFileStream); // reset encrypted file tape head encryptedFileStream.Seek(0, SeekOrigin.Begin); using (var decryptedFileStream = await decryptedFile.OpenStreamForWriteAsync()) { engine.DecryptFile(encryptedFileStream, decryptedFileStream, passphrase); } } //No further use for the local encrypted file await encryptedFile.DeleteAsync(StorageDeleteOption.PermanentDelete); // Lift Off! //var launcherOpts = new LauncherOptions() //{ // DisplayApplicationPicker = false //}; await Launcher.LaunchFileAsync(decryptedFile); //Burn after reading! //await decryptedFile.DeleteAsync(); } } catch (Exception ex) { exception = ex; } if (exception != null) { var dialog = new MessageDialog("An exception was thrown:" + Environment.NewLine + exception.Message, "Oh noes!"); await dialog.ShowAsync(); } }