Ejemplo n.º 1
0
        public void HelixFile_IllegalFileNameChar()
        {
            //Delete("original1.txt", "encr1.hx", "decrypted1.txt");
            if (File.Exists("encr1.hx"))
            {
                File.Delete("encr1.hx");
            }

            File.WriteAllText("original1.txt", "hello world");
            HelixFile.Encrypt("original1.txt", "encr1.hx", "password", new FileEncryptOptions
            {
                BeforeWriteHeader = (header) =>
                {
                    header.FileName = "./original1.txt";
                },
                FileVersion = HelixFileVersion.UnitTest,
            });

            try
            {
                HelixFile.Decrypt("encr1.hx", "decrypted1.txt", "password");
                Assert.IsTrue(false, "Failed to detect file name curruption");
            }
            catch (HeaderCorruptionException) { }
        }
Ejemplo n.º 2
0
 public void HelixFile_EncryptDecrypt()
 {
     if (File.Exists("encr1.hx"))
     {
         File.Delete("encr1.hx");
     }
     File.WriteAllText("original1.txt", "hello world");
     HelixFile.Encrypt("original1.txt", "encr1.hx", "password", new FileEncryptOptions {
         FileVersion = HelixFileVersion.UnitTest
     });
     HelixFile.Decrypt("encr1.hx", "decrypted1.txt", "password");
     Assert.AreEqual("hello world", File.ReadAllText("decrypted1.txt"));
 }
Ejemplo n.º 3
0
        public void HelixFile_LargerFile()
        {
            byte[] b = new byte[50000];
            System.Security.Cryptography.RandomNumberGenerator.Create().GetBytes(b);
            string file1    = nameof(HelixFile_LargerFile);
            string encrFile = file1 + ".hx";
            string file2    = file1 + "_2";

            Delete(file1, encrFile, file2);

            File.WriteAllBytes(file1, b);
            HelixFile.Encrypt(file1, encrFile, "password", new FileEncryptOptions {
                FileVersion = HelixFileVersion.UnitTest
            });
            HelixFile.Decrypt(encrFile, file2, "password");
            byte[] b2 = File.ReadAllBytes(file2);
            Assert.IsTrue(Util.BytesEqual(b, b2));

            Delete(file1, encrFile, file2);
        }
Ejemplo n.º 4
0
        private static byte TestRandomCurruption(string inp, int pos, byte adj)
        {
            Delete("temp.txt", "temp.decr", "temp.hx");

            File.WriteAllText("temp.txt", inp);
            HelixFile.Encrypt("temp.txt", "temp.hx", "password", new FileEncryptOptions {
                FileVersion = HelixFileVersion.UnitTest
            });
            try
            {
                if (adj == 0)
                {
                    adj = 1;
                }
                using (var file = File.Open("temp.hx", FileMode.Open, FileAccess.ReadWrite))
                {
                    byte[] content = new byte[1];
                    file.Seek(pos % file.Length, SeekOrigin.Begin);
                    file.Read(content, 0, 1);
                    file.Seek(pos % file.Length, SeekOrigin.Begin);
                    unchecked
                    {
                        content[0] = (byte)(content[0] + adj);
                    }
                    file.Write(content, 0, 1);
                }
                HelixFile.Decrypt("temp.hx", "temp.decr", "password");
                throw new Exception("Expected to see curruption none present");
            }
            catch (HelixException)
            {
            }
            Assert.IsFalse(File.Exists("temp.decr"), "File temp.decr expected to have been deleted however has not");
            Delete("temp.txt", "temp.decr", "temp.hx");
            return(adj);
        }
Ejemplo n.º 5
0
        public void HelixFile_LargerFileTruncate()
        {
            byte[] b = new byte[50000];
            System.Security.Cryptography.RandomNumberGenerator.Create().GetBytes(b);
            string file1    = nameof(HelixFile_LargerFileTruncate);
            string encrFile = file1 + ".hx";
            string file2    = file1 + "_2";

            Delete(file1, encrFile, file2);

            File.WriteAllBytes(file1, b);
            HelixFile.Encrypt(file1, encrFile, "password", new FileEncryptOptions {
                FileVersion = HelixFileVersion.UnitTest
            });

            //Truncates File by 10 bytes
            byte[] encryptBytes = File.ReadAllBytes(encrFile);
            Assert.IsTrue(encryptBytes.Length > 50000);
            Delete(encrFile);
            Array.Resize(ref encryptBytes, encryptBytes.Length - 10);
            File.WriteAllBytes(encrFile, encryptBytes);


            try
            {
                HelixFile.Decrypt(encrFile, file2, "password");
                Assert.IsTrue(false, "Expected FileCurruptionException");
            }
            catch (FileCorruptionException)
            {
            }

            Assert.IsFalse(File.Exists(file2));

            Delete(file1, encrFile, file2);
        }