From ae5233c149da78ddf1e92d1074701b681b5b3549 Mon Sep 17 00:00:00 2001 From: Luke Emmet Date: Fri, 16 Jul 2021 20:18:25 +0100 Subject: [PATCH 1/4] allow server to be initialised with X509Certificate, for better flexibility --- Cuipod/App.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Cuipod/App.cs b/Cuipod/App.cs index 17d57f2..edbb6c0 100644 --- a/Cuipod/App.cs +++ b/Cuipod/App.cs @@ -21,6 +21,7 @@ namespace Cuipod private RequestCallback _onBadRequestCallback; + //somewhat flaky implementation - probably deprecate it public App(string directoryToServe, string certificateFile, string privateRSAKeyFilePath) { _directoryToServe = directoryToServe; @@ -29,6 +30,15 @@ namespace Cuipod _serverCertificate = CertificateUtils.LoadCertificate(certificateFile, privateRSAKeyFilePath); } + public App(string directoryToServe, X509Certificate2 certificate) + { + + _directoryToServe = directoryToServe; + _listener = new TcpListener(IPAddress.Any, 1965); + _requestCallbacks = new Dictionary(); + _serverCertificate = certificate; + } + public void OnRequest(string route, RequestCallback callback) { _requestCallbacks.Add(route, callback); From 0647df528e0f6d25e6ce08dfb228c5a5a88e62d6 Mon Sep 17 00:00:00 2001 From: Luke Emmet Date: Fri, 16 Jul 2021 20:19:29 +0100 Subject: [PATCH 2/4] update example to use pfx file which seems more reliable --- CuipodExample/Server.cs | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/CuipodExample/Server.cs b/CuipodExample/Server.cs index 2b05256..4b8a4a3 100644 --- a/CuipodExample/Server.cs +++ b/CuipodExample/Server.cs @@ -1,6 +1,7 @@ using Cuipod; using Microsoft.Extensions.CommandLineUtils; using System; +using System.Security.Cryptography.X509Certificates; namespace CuipodExample { @@ -15,21 +16,38 @@ namespace CuipodExample "Directory to server (required)" ); CommandArgument certificateFile = commandLineApplication.Argument( - "certificate", + "pfx certificate file", "Path to certificate (required)" ); - CommandArgument privateRSAKeyFilePath = commandLineApplication.Argument( - "key", - "Path to private Pkcs8 RSA key (required)" + CommandArgument pfxPassword = commandLineApplication.Argument( + "pfx password", + "pfx password" ); commandLineApplication.OnExecute(() => { - if (directoryToServe.Value == null || certificateFile.Value == null || privateRSAKeyFilePath.Value == null) + if (directoryToServe.Value == null || certificateFile.Value == null ) { commandLineApplication.ShowHelp(); return 1; } - return AppMain(directoryToServe.Value, certificateFile.Value, privateRSAKeyFilePath.Value); + + string pass; + if (pfxPassword != null) + { + pass = pfxPassword.Value.ToString(); + } + else + { + pass = ""; + } + + Console.WriteLine("pass: " + pass.ToString()); + Console.WriteLine("cert: " + certificateFile.Value.ToString()); + + var cert = new X509Certificate2(certificateFile.Value.ToString(), pass); + + + return AppMain(directoryToServe.Value, cert); }); try @@ -42,12 +60,11 @@ namespace CuipodExample } } - private static int AppMain(string directoryToServe, string certificateFile, string privateRSAKeyFilePath) + private static int AppMain(string directoryToServe, X509Certificate2 certificate) { App app = new App( directoryToServe, - certificateFile, - privateRSAKeyFilePath + certificate ); // Serve files From a811f9dec59722b247d311c39f4e5b928e80ce28 Mon Sep 17 00:00:00 2001 From: Luke Emmet Date: Fri, 16 Jul 2021 20:19:54 +0100 Subject: [PATCH 3/4] ignore any Hg repository info --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index dba2b8c..f15010f 100644 --- a/.gitignore +++ b/.gitignore @@ -352,3 +352,5 @@ MigrationBackup/ CuipodExample/Properties/launchSettings.json .vscode/ +.hg/ +.hgignore From 3038a037e109bffdde9bd6db719b2a20fc766c7d Mon Sep 17 00:00:00 2001 From: Luke Emmet Date: Fri, 16 Jul 2021 23:04:11 +0100 Subject: [PATCH 4/4] tidy up --- CuipodExample/Server.cs | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/CuipodExample/Server.cs b/CuipodExample/Server.cs index 4b8a4a3..c359fdb 100644 --- a/CuipodExample/Server.cs +++ b/CuipodExample/Server.cs @@ -31,22 +31,9 @@ namespace CuipodExample return 1; } - string pass; - if (pfxPassword != null) - { - pass = pfxPassword.Value.ToString(); - } - else - { - pass = ""; - } - - Console.WriteLine("pass: " + pass.ToString()); - Console.WriteLine("cert: " + certificateFile.Value.ToString()); - + var pass = (pfxPassword != null) ? pfxPassword.Value.ToString() : ""; var cert = new X509Certificate2(certificateFile.Value.ToString(), pass); - return AppMain(directoryToServe.Value, cert); });