public void SignFile_NoAnonymousSigning_Fails() { var configuration = new SigningServerConfiguration { Certificates = new[] { new CertificateConfiguration { Username = "******", Password = "******", Thumbprint = _certificateHelper.Certificate.Thumbprint, StoreName = (StoreName)Enum.Parse(typeof(StoreName), _certificateHelper.Store.Name), StoreLocation = _certificateHelper.Store.Location } }, WorkingDirectory = "WorkingDirectory" }; var server = new Server.SigningServer(configuration, _emptySigningToolProvider); var testData = new MemoryStream(File.ReadAllBytes(Path.Combine(ExecutionDirectory, "TestFiles/unsigned/unsigned.exe"))); var request = new SignFileRequest { FileName = "unsigned.exe", FileSize = testData.Length, FileContent = testData }; var response = server.SignFile(request); Assert.AreEqual(SignFileResponseResult.FileNotSignedUnauthorized, response.Result); }
public void SignFile_EmptyFile_Fails() { var server = new Server.SigningServer(_configuration, _emptySigningToolProvider); var request = new SignFileRequest { FileSize = 0, FileContent = null }; var response = server.SignFile(request); Assert.AreEqual(SignFileResponseResult.FileNotSignedError, response.Result); request = new SignFileRequest { FileSize = 100, FileContent = null }; response = server.SignFile(request); Assert.AreEqual(SignFileResponseResult.FileNotSignedError, response.Result); request = new SignFileRequest { FileSize = 0, FileContent = new MemoryStream() }; response = server.SignFile(request); Assert.AreEqual(SignFileResponseResult.FileNotSignedError, response.Result); }
public void SignFile_ResponseDisposeCleansFile() { var server = new Server.SigningServer(_configuration, _simultateSigningToolProvider); var testData = new MemoryStream(File.ReadAllBytes(Path.Combine(ExecutionDirectory, "TestFiles/unsigned/unsigned.exe"))); var request = new SignFileRequest { FileName = "unsigned.exe", FileSize = testData.Length, FileContent = testData }; var response = server.SignFile(request); Assert.AreEqual(SignFileResponseResult.FileSigned, response.Result); var files = Directory.GetFileSystemEntries(_configuration.WorkingDirectory).ToArray(); Assert.AreEqual(1, files.Length); response.Dispose(); files = Directory.GetFileSystemEntries(_configuration.WorkingDirectory).ToArray(); Assert.AreEqual(0, files.Length); }
public void SignFile_UnsupportedFormat_Fails() { var server = new Server.SigningServer(_configuration, _emptySigningToolProvider); var testData = new MemoryStream(File.ReadAllBytes(Path.Combine(ExecutionDirectory, "TestFiles/unsigned/unsigned.exe"))); var request = new SignFileRequest { FileName = "unsigned.exe", FileSize = testData.Length, FileContent = testData }; var response = server.SignFile(request); Assert.AreEqual(SignFileResponseResult.FileNotSignedUnsupportedFormat, response.Result); }
public void InvalidWorkingDirectoryThrowsError() { var emptyConfig = new SigningServerConfiguration { Certificates = new[] { new CertificateConfiguration { Certificate = new X509Certificate2("Certificates/SigningServer.Test.pfx") } }, WorkingDirectory = "T:\\NotExisting" }; var server = new Server.SigningServer(emptyConfig, CreateEmptySigningToolProvider()); server.GetSupportedFileExtensions(); }
public void RelativeWorkingDirectoryGetsCreated() { var config = new SigningServerConfiguration { Certificates = new[] { new CertificateConfiguration { Certificate = new X509Certificate2("Certificates/SigningServer.Test.pfx") } }, WorkingDirectory = "WorkingDirectory" }; var server = new Server.SigningServer(config, CreateEmptySigningToolProvider()); Assert.IsTrue(Directory.Exists(Path.Combine(Environment.CurrentDirectory, config.WorkingDirectory))); Directory.Delete(Path.Combine(Environment.CurrentDirectory, config.WorkingDirectory), true); }
public void AbsoluteWorkingDirectoryGetsCreated() { var temp = Path.Combine(Path.GetTempPath(), "WorkingDirectory"); var config = new SigningServerConfiguration { Certificates = new[] { new CertificateConfiguration { Certificate = new X509Certificate2("Certificates/SigningServer.Test.pfx") } }, WorkingDirectory = temp }; var server = new Server.SigningServer(config, CreateEmptySigningToolProvider()); Assert.IsTrue(Directory.Exists(temp)); Directory.Delete(temp, true); }
public void SignFile_AlreadySigned_ResponseDisposeCleansFile() { var simulateSigningTool = new Mock <ISigningTool>(); simulateSigningTool.Setup(t => t.SupportedFileExtensions).Returns(new[] { "*" }); simulateSigningTool.Setup(t => t.SupportedHashAlgorithms).Returns(new[] { "*" }); simulateSigningTool.Setup(t => t.IsFileSigned(It.IsAny <string>())).Returns(true); simulateSigningTool.Setup(t => t.IsFileSupported(It.IsAny <string>())).Returns(true); simulateSigningTool.Setup(t => t.SignFile(It.IsAny <string>(), It.IsAny <X509Certificate2>(), It.IsAny <string>(), It.IsAny <SignFileRequest>(), It.IsAny <SignFileResponse>())).Callback( (string file, X509Certificate2 cert, string timestampserver, SignFileRequest rq, SignFileResponse rs) => { rs.Result = SignFileResponseResult.FileAlreadySigned; var fs = new FileStream(file, FileMode.Open, FileAccess.Read); rs.FileContent = fs; rs.FileSize = fs.Length; }); var simultateSigningToolProvider = new EnumerableSigningToolProvider(new[] { simulateSigningTool.Object }); var server = new Server.SigningServer(_configuration, simultateSigningToolProvider); var testData = new MemoryStream(File.ReadAllBytes("TestFiles/unsigned/unsigned.exe")); var request = new SignFileRequest { FileName = "unsigned.exe", FileSize = testData.Length, FileContent = testData }; var response = server.SignFile(request); Assert.AreEqual(SignFileResponseResult.FileAlreadySigned, response.Result); var files = Directory.GetFileSystemEntries(_configuration.WorkingDirectory).ToArray(); Assert.AreEqual(1, files.Length); response.Dispose(); files = Directory.GetFileSystemEntries(_configuration.WorkingDirectory).ToArray(); Assert.AreEqual(0, files.Length); }
public void LoadCertificateFromStoreWorks() { using (var cert = new CertificateStoreHelper("Certificates/SigningServer.Test.pfx", StoreName.My, StoreLocation.LocalMachine)) { var emptyConfig = new SigningServerConfiguration { Certificates = new[] { new CertificateConfiguration { Thumbprint = cert.Certificate.Thumbprint, StoreName = (StoreName)Enum.Parse(typeof(StoreName), cert.Store.Name), StoreLocation = cert.Store.Location, } }, WorkingDirectory = "WorkingDirectory" }; var server = new Server.SigningServer(emptyConfig, CreateEmptySigningToolProvider()); Assert.AreEqual(1, server.Configuration.Certificates.Length); Assert.AreEqual(emptyConfig.Certificates[0].Thumbprint, server.Configuration.Certificates[0].Certificate.Thumbprint); } }
public void RelativeWorkingDirectoryGetsCleaned() { var config = new SigningServerConfiguration { Certificates = new[] { new CertificateConfiguration { Certificate = new X509Certificate2("Certificates/SigningServer.Test.pfx") } }, WorkingDirectory = "WorkingDirectory" }; Directory.CreateDirectory("WorkingDirectory"); File.WriteAllText("WorkingDirectory/test.txt", "test"); var server = new Server.SigningServer(config, CreateEmptySigningToolProvider()); Assert.IsTrue(Directory.Exists(Path.Combine(Environment.CurrentDirectory, config.WorkingDirectory))); Assert.AreEqual(0, Directory.GetFiles("WorkingDirectory").Length); Directory.Delete(Path.Combine(Environment.CurrentDirectory, config.WorkingDirectory), true); }
public void TestNoCertificatesThrowsError() { var emptyConfig = new SigningServerConfiguration(); var server = new Server.SigningServer(emptyConfig, CreateEmptySigningToolProvider()); }