public void CryptoDataFile_EncryptedEntireFileInvalidCredentialTest() { CryptoCredentials credentials = new CryptoCredentials { Passphrase = new CryptoString("My Passphrase"), Pin = 2222 }; CryptoCredentials credentialsWrongPassphrase = new CryptoCredentials { Passphrase = new CryptoString("My Wrong Passphrase"), Pin = 2222 }; CryptoCredentials credentialsWrongPin = new CryptoCredentials { Passphrase = new CryptoString("My Passphrase"), Pin = 1234 }; string dataFileName = "EncryptedFile.bin"; string fileContent = "My Test Content"; byte[] fileContentBytes = Encoding.UTF8.GetBytes(fileContent); using (AutoDeleteFiles autoDeleteFile = new AutoDeleteFiles(dataFileName)) { // Save some data CryptoDataFile dataFile = new CryptoDataFile(dataFileName); dataFile.Credentials = credentials; dataFile.EncryptFile = true; dataFile.Content = fileContentBytes; dataFile.Save(); try { // TEST WRONG PASSPHRASE CryptoDataFile dataFile2 = new CryptoDataFile(dataFileName); dataFile2.Credentials = credentialsWrongPassphrase; dataFile2.EncryptFile = true; dataFile2.Load(); } catch (CryptoDecryptionException exception) { Assert.IsTrue(exception is CryptoDecryptionException); } catch (CryptoFileInvalidFormatException) { Assert.Fail("Test was not expecting an Exception"); } catch (Exception) { Assert.Fail("Test was not expecting an Exception"); } //Assert.IsTrue(dataFile.Content.SequenceEqual(dataFile2.Content)); } }
public override int GetHashCode() { unchecked { var hashCode = Filters?.GetHashCode() ?? 0; hashCode = (hashCode * 397) ^ AutoAddFiles.GetHashCode(); hashCode = (hashCode * 397) ^ AutoDeleteFiles.GetHashCode(); hashCode = (hashCode * 397) ^ Recursive.GetHashCode(); hashCode = (hashCode * 397) ^ (WatchDirectory?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (SyncDirectory?.GetHashCode() ?? 0); hashCode = (hashCode * 397) ^ (Delay.GetHashCode()); return(hashCode); } }
public void ExtractToDirectoryFromBytes(string directoryName, byte[] bytes) { FileManager fileMan = new FileManager(); string tempFileName = fileMan.GenerateTempFileName("ExtractBytes"); using (AutoDeleteFiles autoDelete = new AutoDeleteFiles(tempFileName)) { // Create/Write the bytes to a file fileMan.CreateWriteBytes(tempFileName, bytes); // Create a temp archiver CryptoArchiver tempArchiver = new CryptoArchiver(tempFileName, this); tempArchiver.ExtractToDirectory(directoryName); } }
public byte[] GetBytesFromDirectory(string directoryName) { FileManager fileMan = new FileManager(); byte[] bytes; string tempFileName = fileMan.GenerateTempFileName("GetBytes"); using (AutoDeleteFiles autoDelete = new AutoDeleteFiles(tempFileName)) { // Create a temp archiver CryptoArchiver tempArchiver = new CryptoArchiver(tempFileName, this); tempArchiver.CreateFromDirectory(directoryName); // Read Bytes and delete file bytes = File.ReadAllBytes(tempFileName); } return(bytes); }
public void CryptoDataFile_EncryptedEntireFileTest() { string passphraseString = "My Passphrase"; CryptoString passphrase = new CryptoString(CryptoString.StringToSecureString(passphraseString)); CryptoCredentials credentials = new CryptoCredentials { Passphrase = passphrase, }; string dataFileName = "EncryptedFile.bin"; string fileContent = "My Test Content"; using (AutoDeleteFiles autoDeleteFile = new AutoDeleteFiles(dataFileName)) { // Save some data CryptoDataFile dataFile = new CryptoDataFile(dataFileName); byte[] content1 = Encoding.UTF8.GetBytes(fileContent); dataFile.Credentials = credentials; dataFile.EncryptFile = true; dataFile.Content = content1; dataFile.Save(); byte[] fileBytes1 = dataFile.SaveToBytes(); // Now load the data and compare CryptoDataFile dataLoader = new CryptoDataFile(dataFileName); dataLoader.Credentials = credentials; dataLoader.EncryptFile = true; dataLoader.Load(); dataLoader.LoadFromBytes(fileBytes1); byte[] content2 = dataLoader.Content; Assert.IsTrue(content1.SequenceEqual(content2)); Assert.IsTrue(dataFile.Content.SequenceEqual(dataLoader.Content)); } }
public void CryptoDataFile_CustomOptions() { string dataFileName = "EncryptedFileCustomOptions.bin"; string fileContent = "My Test Content"; using (AutoDeleteFiles autoDeleteFile = new AutoDeleteFiles(dataFileName)) { // Save some data CryptoDataFile dataFile = new CryptoDataFile(dataFileName); byte[] content1 = Encoding.UTF8.GetBytes(fileContent); dataFile.Content = content1; dataFile.Save(); // Now load the data and compare CryptoDataFile dataLoader = new CryptoDataFile(dataFileName); dataLoader.Load(); byte[] content2 = dataLoader.Content; Assert.IsTrue(content1.SequenceEqual(content2)); Assert.IsTrue(dataFile.Content.SequenceEqual(dataLoader.Content)); } }
public void CryptoDataFile_VersionNumbersTest() { FileManager fileOps = new FileManager(); Hasher hasher = new Hasher(); // Create Credentials CryptoCredentials credentials = new CryptoCredentials { Passphrase = new CryptoString("My Passphrase") }; CryptoDataFile file1 = null; CryptoDataFile file2 = null; string dataFileName1 = "VersionDataFileTest.dat"; byte[] testBytes = new byte[] { 0x11, 0x22 }; fileOps.DeleteFile(dataFileName1); using (AutoDeleteFiles deleteFiles = new AutoDeleteFiles(dataFileName1)) { //////////////////////////////////////////////////////////// // Write //////////////////////////////////////////////////////////// try { // Write Content to data file file1 = new CryptoDataFile(dataFileName1); file1.EncryptFile = true; file1.Credentials = credentials; file1.Content = testBytes; file1.Save(); } catch (Exception ex) { Assert.Fail(ex.Message); } //////////////////////////////////////////////////////////// // Read / Load //////////////////////////////////////////////////////////// try { // Read & Load File file2 = new CryptoDataFile(dataFileName1); file2.Credentials = credentials; file2.EncryptFile = true; file2.Load(); // Compare the files they should be exactly the same Assert.IsTrue(file1.Content.SequenceEqual(file2.Content)); } catch (Exception ex) { // Delete Files Assert.Fail(ex.Message); } finally { } } }
public void CryptoDataFile_BasicTest_EncryptedFile() { FileManager fileOps = new FileManager(); Hasher hasher = new Hasher(); // Create Credentials CryptoCredentials credentials = new CryptoCredentials { Passphrase = new CryptoString("My Passphrase") }; CryptoCredentials wrongCredentials = new CryptoCredentials { Passphrase = new CryptoString("My WRONG Passphrase") }; CryptoDataFile file1 = null; CryptoDataFile file2 = null; string dataFileName1 = "EncryptedTestDataFile1.dat"; string dataFileName2 = "EncryptedTestDataFile2.dat"; //byte[] testBytes = new ByteGenerator().GenerateBytes(1000); byte[] testBytes = new byte[] { 0x11, 0x22 }; List <FileInfo> fileList = new List <FileInfo> { new FileInfo(dataFileName1), new FileInfo(dataFileName2) }; fileOps.DeleteFile(dataFileName1); using (AutoDeleteFiles deleteFiles = new AutoDeleteFiles(fileList)) { //////////////////////////////////////////////////////////// // Write //////////////////////////////////////////////////////////// try { // Write Content to data file file1 = new CryptoDataFile(dataFileName1); file1.EncryptFile = true; // This is the default file1.Credentials = credentials; file1.Content = testBytes; file1.Save(); } catch (Exception ex) { Assert.Fail(ex.Message); } //////////////////////////////////////////////////////////// // Read / Load //////////////////////////////////////////////////////////// try { // Read & Load File file2 = new CryptoDataFile(dataFileName1); file2.Credentials = credentials; file2.EncryptFile = true; file2.Load(); // Compare the files they should be exactly the same Assert.IsTrue(file1.Content.SequenceEqual(file2.Content)); } catch (Exception ex) { // Delete Files Assert.Fail(ex.Message); } finally { } // THIS NEEDS REWORKING! //////////////////////////////////////////////////////////// // Read / Load Wrong Password //////////////////////////////////////////////////////////// try { // Read & Load File file1 = new CryptoDataFile(dataFileName1); file1.Credentials = wrongCredentials; file1.EncryptFile = true; file1.Load(); Assert.Fail("Load should fail with wrong password"); } catch (Exception ex) { Assert.IsTrue(true, ex.Message); } } }