Exemplo n.º 1
0
        /// <summary>
        /// Decrypte file form temporary file.
        /// </summary>
        /// <param name="tempFile">Temporary file containg only encrypted data</param>
        /// <param name="aes">Configured api</param>
        private async void DecrypteFile(string tempFile, AesEncryptionApi aes)
        {
            try
            {
                using (var input = File.OpenRead(tempFile))
                {
                    using (var decryptedStream = aes.DecrypteStream(input, viewModel.User, passwordBox.Password))
                    {
                        using (var output = File.OpenWrite(viewModel.OutputPath))
                        {
                            Task copyTask = decryptedStream.CopyToAsync(output);

                            var th = new Thread(() => StartUpdatingprogress(input, copyTask, 50, 100));
                            th.Start();

                            await copyTask;
                            th.Join();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Preperation of the aes and data;
        /// </summary>
        /// <param name="tempFile">Temporary file to wich data are coopied</param>
        /// <returns>Configured AesEncryptionApi</returns>
        private AesEncryptionApi PrepareAesEncryption(string tempFile)
        {
            AesEncryptionApi aes;

            using (var input = File.OpenRead(viewModel.InputPath))
            {
                using (var reader = XmlReader.Create(input))
                {
                    aes = AesEncryptionApi.FromXml(reader);

                    using (var output = File.OpenWrite(tempFile))
                    {
                        input.Position = (reader as IXmlLineInfo).LinePosition + "</Header>".Length;//Set proper position beacues xmlReader loads to much

                        Task copyTask = input.CopyToAsync(output);

                        var th = new Thread(() => StartUpdatingprogress(input, copyTask, 0, 50));
                        th.Start();
                        copyTask.Wait();
                        th.Join();
                    }
                }
            }

            return(aes);
        }
        public void SmallFiles__CBC()
        {
            //Arrange
            string filename = "Julian.jpg";
            string file     = Path.Combine(testPath, filename);

            File.Copy(Path.Combine(resourcePath, filename), file);

            var aes = new AesEncryptionApi(CipherMode.CBC, 128, 128);

            aes.Initialize();

            int orginalByte;
            int finnalByte;

            //Act

            //Encrypte
            using (var inputStream = File.OpenRead(file))
            {
                using (var cryptoStream = aes.EncrypteStream(inputStream, CryptoStreamMode.Read))
                {
                    using (var outputStream = File.OpenWrite(encryptedFile))
                    {
                        cryptoStream.CopyTo(outputStream);
                    }
                }
            }

            //Decrypte
            using (var inputStream = File.OpenRead(encryptedFile))
            {
                using (var cryptoStream = aes.DecrypteStream(inputStream))
                {
                    using (var outputStream = File.OpenWrite(decryptedFile))
                    {
                        cryptoStream.CopyTo(outputStream);
                    }
                }
            }
            int i = 0;

            //Assert
            using (var inputOrginalStream = File.OpenRead(file))
            {
                using (var inputFinnalStream = File.OpenRead(decryptedFile))
                {
                    Assert.AreEqual(inputOrginalStream.Length, inputFinnalStream.Length);

                    while (inputOrginalStream.Position < inputOrginalStream.Length)
                    {
                        orginalByte = inputOrginalStream.ReadByte();
                        finnalByte  = inputFinnalStream.ReadByte();

                        Assert.AreEqual(orginalByte, finnalByte);
                    }
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Temporary start method.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Start_Click(object sender, RoutedEventArgs e)
        {
            string tempFile = System.IO.Path.GetTempFileName();

            AesEncryptionApi aes = await PrepareAesEncryptionAsync(tempFile);

            DecrypteFile(tempFile, aes);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Temporary start method.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void Start_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                viewModel.Progress     = 0;
                viewModel.IsNotRunning = false;
                var aes = new AesEncryptionApi(viewModel.Cipher, 128, viewModel.KeySize);
                aes.Initialize();
                if (viewModel.Users == null || viewModel.Users?.Count == 0)
                {
                    MessageBox.Show("No Recipient was assigned", "Error", MessageBoxButton.OK);
                    return;
                }
                foreach (string nickname in viewModel.Users)
                {
                    aes.addUser(nickname);
                }
                using (var output = File.Open(viewModel.OutputPath, FileMode.Create))
                {
                    using (var xmlOutput = XmlWriter.Create(output))
                    {
                        xmlOutput.WriteStartDocument();

                        aes.WriteToXml(xmlOutput);

                        xmlOutput.Flush();

                        xmlOutput.WriteEndDocument();
                    }
                    using (var source = File.Open(viewModel.InputPath, FileMode.Open))
                    {
                        using (var sourceEncypted = aes.EncrypteStream(source))
                        {
                            Task copyTask = sourceEncypted.CopyToAsync(output);

                            var th = new Thread(() => StartUpdatingprogress(source, copyTask));
                            th.Start();

                            await copyTask;
                            th.Join();
                        }
                    }
                    output.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK);
            }
            finally
            {
                viewModel.IsNotRunning = true;
            }
        }