Merge pull request #1 from LukeEmmet/main

Allow users of cuipod to initialise with an X509Certificate
This commit is contained in:
Egidijus Lileika 2021-07-17 19:04:09 +03:00 committed by GitHub
commit a3a6a34e57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 9 deletions

2
.gitignore vendored
View File

@ -352,3 +352,5 @@ MigrationBackup/
CuipodExample/Properties/launchSettings.json
.vscode/
.hg/
.hgignore

View File

@ -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<string, RequestCallback>();
_serverCertificate = certificate;
}
public void OnRequest(string route, RequestCallback callback)
{
_requestCallbacks.Add(route, callback);

View File

@ -1,6 +1,7 @@
using Cuipod;
using Microsoft.Extensions.CommandLineUtils;
using System;
using System.Security.Cryptography.X509Certificates;
namespace CuipodExample
{
@ -15,21 +16,25 @@ 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);
var pass = (pfxPassword != null) ? pfxPassword.Value.ToString() : "";
var cert = new X509Certificate2(certificateFile.Value.ToString(), pass);
return AppMain(directoryToServe.Value, cert);
});
try
@ -42,12 +47,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