public void Cipher_FileContainsThreeBytes() { var e = BigNumber.FromBytes(new[] { 17 }); var n = BigNumber.FromBytes(new[] { 3, 81, 217, 6, 4, 255, 114, 123, 36 }); var key = new PublicKey(e, n); var sourceFile = Path.Combine(testFolder, "source.txt"); File.WriteAllBytes(sourceFile, new byte[] { 49, 50, 51 }); var destinationFile = Path.Combine(testFolder, "destination.rsa"); cipher = new RsaFileCipher(new FileFactory(5)); cipher.Cipher(key, sourceFile, destinationFile); var expectedBytes = new byte[] { 5, // версия 9, 0, // размер блока 3, 0, 0, 0, // размер исходного файла 0, 0, 0, 0, // размер исходного файла 32, 44, 185, 98, // хэш 172, 89, 7, 91, // хэш 150, 75, 7, 21, // хэш 45, 35, 75, 112, // хэш 51, 136, 212, 124, 2, 205, 81, 39, 34 }; TestHelper.CheckFile(destinationFile, expectedBytes); Assert.AreEqual(ProcessStatus.Complete, cipher.Status); }
public void Cipher_FileContainsFiveBytes() { var e = BigNumber.FromBytes(new[] { 7 }); var n = BigNumber.FromBytes(new[] { 217, 118, 184, 189, 114, 147, 142, 61 }); var key = new PublicKey(e, n); var sourceFile = Path.Combine(testFolder, "source.txt"); File.WriteAllBytes(sourceFile, new byte[] { 104, 101, 108, 108, 111 }); var destinationFile = Path.Combine(testFolder, "destination.rsa"); cipher = new RsaFileCipher(new FileFactory(10)); cipher.Cipher(key, sourceFile, destinationFile); var expectedBytes = new byte[] { 10, // версия 8, 0, // размер блока 5, 0, 0, 0, // размер исходного файла 0, 0, 0, 0, // размер исходного файла 93, 65, 64, 42, // хэш 188, 75, 42, 118, // хэш 185, 113, 157, 145, // хэш 16, 23, 197, 146, // хэш 18, 85, 184, 86, 212, 72, 244, 4 }; TestHelper.CheckFile(destinationFile, expectedBytes); Assert.AreEqual(ProcessStatus.Complete, cipher.Status); }
public void Cipher_SourceFileDoesntExist() { var e = BigNumber.FromBytes(new[] { 17 }); var n = BigNumber.FromBytes(new[] { 19, 241, 93, 252, 193, 101, 145, 14 }); var key = new PublicKey(e, n); cipher = new RsaFileCipher(new FileFactory(56)); Assert.Throws(typeof(SourceFileNotFoundException), () => cipher.Cipher(key, "hello", "world")); Assert.AreEqual(ProcessStatus.Stopped, cipher.Status); }
public void Cipher_CheckStatusIfErrorOccured() { var e = BigNumber.FromBytes(new[] { 7 }); var n = BigNumber.FromBytes(new[] { 217, 118, 184, 189, 114, 147, 142, 61 }); var key = new PublicKey(e, n); var sourceFile = Path.Combine(testFolder, "source.txt"); File.WriteAllBytes(sourceFile, new byte[] { 104, 101, 108, 108, 111 }); var destinationFile = Path.Combine(testFolder, "destination.rsa"); var fileFactory = new Mock <IFileFactory>(); fileFactory.Setup(x => x.CreateFileReader(It.IsAny <string>(), It.IsAny <short>())).Throws(new Exception()); cipher = new RsaFileCipher(fileFactory.Object); Assert.Throws(typeof(Exception), () => cipher.Cipher(key, sourceFile, destinationFile)); Assert.AreEqual(ProcessStatus.Stopped, cipher.Status); }
public void Decipher_ProcessWasStopped() { // public key: 0101#0F433A164419165B // private key: 02CA8D18E051C519#0F433A164419165B var sourceFileName = Path.Combine(testFolder, "source.rsa"); var destinationFileName = Path.Combine(testFolder, "destination.bin"); var e = BigNumber.FromBytes(new[] { 1, 1 }); var d = BigNumber.FromBytes(new[] { 25, 197, 81, 224, 24, 141, 202, 2 }); var n = BigNumber.FromBytes(new[] { 91, 22, 25, 68, 22, 58, 67, 15 }); var privateKey = new PrivateKey(d, n); var publicKey = new PublicKey(e, n); var cipher = new RsaFileCipher(fileFactory); var initialFileName = Path.Combine(testFolder, "initial.exe"); File.WriteAllBytes(initialFileName, new byte[1000]); cipher.Cipher(publicKey, initialFileName, sourceFileName); decipher.BlockCompleted += (sender, args) => decipher.Stop(); decipher.Decipher(privateKey, sourceFileName, destinationFileName); Assert.AreEqual(ProcessStatus.Stopped, decipher.Status); }
public void Cipher_Decipher() { var outputFileName = Path.Combine(testFolder, "outputFileName.rsa"); var temporaryFileName = Path.Combine(testFolder, "temporary.bin"); environmentHelper.Setup(x => x.GetTempFileName()).Returns(temporaryFileName); var fileFactory = new FileFactory(4); var rsaFileCipher = new RsaFileCipher(fileFactory); var fileUnifier = new FileUnifier(); var manager = new CipherManager(rsaFileCipher, fileUnifier, environmentHelper.Object, messageHelper.Object); // public key: 05#B781262C2090AD // private key: 6E1A49FEAC0471#B781262C2090AD var e = BigNumber.FromInt(5); var d = BigNumber.FromBytes(new[] { 113, 4, 172, 254, 73, 26, 110 }); var n = BigNumber.FromBytes(new[] { 173, 144, 32, 44, 38, 129, 183 }); var publicKey = new PublicKey(e, n); var privateKey = new PrivateKey(d, n); var sourceFileName = Path.Combine(testFolder, "file.bin"); File.WriteAllBytes(sourceFileName, new byte[] { 45, 129, 240 }); var directoryInfoWrapper = new DirectoryInfoWrapper(testFolder); var fileInfoWrapper = new FileInfoWrapper(new FileInfo(sourceFileName), directoryInfoWrapper); var fileEntity = new FileEntity(fileInfoWrapper); manager.Cipher(publicKey, new FileSystemEntity[] { fileEntity }, outputFileName); var decipherManager = new DecipherManager(environmentHelper.Object, new RsaFileDecipher(fileFactory), messageHelper.Object, fileUnifier); var outputPath = Path.Combine(testFolder, "outputPath"); decipherManager.Decipher(privateKey, outputFileName, outputPath); Assert.IsTrue(Directory.Exists(outputPath)); var fileName = Path.Combine(outputPath, "file.bin"); Assert.IsTrue(File.Exists(fileName)); TestHelper.CheckFile(fileName, new byte[] { 45, 129, 240 }); }
public void Cipher_KeyIsNull() { cipher = new RsaFileCipher(new FileFactory(56)); Assert.Throws(typeof(ArgumentNullException), () => cipher.Cipher(null, "hello", "world")); Assert.AreEqual(ProcessStatus.Stopped, cipher.Status); }