summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.lib/Plugins/Base/OptionsFactories/CsrPluginOptionsFactory.cs9
-rw-r--r--src/main.lib/Plugins/Base/OptionsFactories/Null/NullCsrOptionsFactory.cs5
-rw-r--r--src/main.lib/Plugins/CsrPlugins/CsrPlugin.cs11
-rw-r--r--src/main.lib/Plugins/CsrPlugins/Ec/EcOptionsFactory.cs9
-rw-r--r--src/main.lib/Plugins/CsrPlugins/Rsa/Rsa.cs5
-rw-r--r--src/main.lib/Plugins/CsrPlugins/Rsa/RsaOptionsFactory.cs9
-rw-r--r--src/main.lib/Plugins/Interfaces/ICsrPlugin.cs7
-rw-r--r--src/main.lib/Plugins/Interfaces/ICsrPluginOptionsFactory.cs5
-rw-r--r--src/main.lib/RenewalManager.cs4
-rw-r--r--src/main.lib/Services/CertificateService.cs6
10 files changed, 39 insertions, 31 deletions
diff --git a/src/main.lib/Plugins/Base/OptionsFactories/CsrPluginOptionsFactory.cs b/src/main.lib/Plugins/Base/OptionsFactories/CsrPluginOptionsFactory.cs
index af0951a..fb1d754 100644
--- a/src/main.lib/Plugins/Base/OptionsFactories/CsrPluginOptionsFactory.cs
+++ b/src/main.lib/Plugins/Base/OptionsFactories/CsrPluginOptionsFactory.cs
@@ -1,6 +1,7 @@
using PKISharp.WACS.Plugins.Base.Options;
using PKISharp.WACS.Plugins.Interfaces;
using PKISharp.WACS.Services;
+using System.Threading.Tasks;
namespace PKISharp.WACS.Plugins.Base.Factories
{
@@ -14,9 +15,9 @@ namespace PKISharp.WACS.Plugins.Base.Factories
where TPlugin : ICsrPlugin
where TOptions : CsrPluginOptions, new()
{
- public abstract TOptions Aquire(IInputService inputService, RunLevel runLevel);
- public abstract TOptions Default();
- CsrPluginOptions ICsrPluginOptionsFactory.Aquire(IInputService inputService, RunLevel runLevel) => Aquire(inputService, runLevel);
- CsrPluginOptions ICsrPluginOptionsFactory.Default() => Default();
+ public abstract Task<TOptions> Aquire(IInputService inputService, RunLevel runLevel);
+ public abstract Task<TOptions> Default();
+ async Task<CsrPluginOptions> ICsrPluginOptionsFactory.Aquire(IInputService inputService, RunLevel runLevel) => await Aquire(inputService, runLevel);
+ async Task<CsrPluginOptions> ICsrPluginOptionsFactory.Default() => await Default();
}
} \ No newline at end of file
diff --git a/src/main.lib/Plugins/Base/OptionsFactories/Null/NullCsrOptionsFactory.cs b/src/main.lib/Plugins/Base/OptionsFactories/Null/NullCsrOptionsFactory.cs
index 21e690e..92646c5 100644
--- a/src/main.lib/Plugins/Base/OptionsFactories/Null/NullCsrOptionsFactory.cs
+++ b/src/main.lib/Plugins/Base/OptionsFactories/Null/NullCsrOptionsFactory.cs
@@ -2,6 +2,7 @@
using PKISharp.WACS.Plugins.Interfaces;
using PKISharp.WACS.Services;
using System;
+using System.Threading.Tasks;
namespace PKISharp.WACS.Plugins.Base.Factories.Null
{
@@ -16,7 +17,7 @@ namespace PKISharp.WACS.Plugins.Base.Factories.Null
string IHasName.Description => null;
public int Order => int.MaxValue;
bool IHasName.Match(string name) => false;
- CsrPluginOptions ICsrPluginOptionsFactory.Aquire(IInputService inputService, RunLevel runLevel) => null;
- CsrPluginOptions ICsrPluginOptionsFactory.Default() => null;
+ Task<CsrPluginOptions> ICsrPluginOptionsFactory.Aquire(IInputService inputService, RunLevel runLevel) => null;
+ Task<CsrPluginOptions> ICsrPluginOptionsFactory.Default() => null;
}
}
diff --git a/src/main.lib/Plugins/CsrPlugins/CsrPlugin.cs b/src/main.lib/Plugins/CsrPlugins/CsrPlugin.cs
index 227848d..89e81a1 100644
--- a/src/main.lib/Plugins/CsrPlugins/CsrPlugin.cs
+++ b/src/main.lib/Plugins/CsrPlugins/CsrPlugin.cs
@@ -15,6 +15,7 @@ using System.Globalization;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
+using System.Threading.Tasks;
namespace PKISharp.WACS.Plugins.CsrPlugins
{
@@ -41,16 +42,16 @@ namespace PKISharp.WACS.Plugins.CsrPlugins
}
public virtual bool CanConvert() => false;
- public virtual AsymmetricAlgorithm Convert(AsymmetricAlgorithm privateKey) => null;
+ public virtual Task<AsymmetricAlgorithm> Convert(AsymmetricAlgorithm privateKey) => null;
- Pkcs10CertificationRequest ICsrPlugin.GenerateCsr(string cachePath, string commonName, List<string> identifiers)
+ async Task<Pkcs10CertificationRequest> ICsrPlugin.GenerateCsr(string cachePath, string commonName, List<string> identifiers)
{
var extensions = new Dictionary<DerObjectIdentifier, X509Extension>();
LoadFromCache(cachePath);
var dn = CommonName(commonName, identifiers);
- var keys = GetKeys();
+ var keys = await GetKeys();
ProcessMustStaple(extensions);
ProcessSan(identifiers, extensions);
@@ -122,7 +123,7 @@ namespace PKISharp.WACS.Plugins.CsrPlugins
/// Get public and private keys
/// </summary>
/// <returns></returns>
- public AsymmetricCipherKeyPair GetKeys()
+ public Task<AsymmetricCipherKeyPair> GetKeys()
{
if (_keyPair == null)
{
@@ -149,7 +150,7 @@ namespace PKISharp.WACS.Plugins.CsrPlugins
}
}
}
- return _keyPair;
+ return Task.FromResult(_keyPair);
}
/// <summary>
diff --git a/src/main.lib/Plugins/CsrPlugins/Ec/EcOptionsFactory.cs b/src/main.lib/Plugins/CsrPlugins/Ec/EcOptionsFactory.cs
index d90343d..3898e8f 100644
--- a/src/main.lib/Plugins/CsrPlugins/Ec/EcOptionsFactory.cs
+++ b/src/main.lib/Plugins/CsrPlugins/Ec/EcOptionsFactory.cs
@@ -1,5 +1,6 @@
using PKISharp.WACS.Plugins.Base.Factories;
using PKISharp.WACS.Services;
+using System.Threading.Tasks;
namespace PKISharp.WACS.Plugins.CsrPlugins
{
@@ -9,16 +10,16 @@ namespace PKISharp.WACS.Plugins.CsrPlugins
public EcOptionsFactory(IArgumentsService arguments) => _arguments = arguments;
- public override EcOptions Aquire(IInputService inputService, RunLevel runLevel) => Default();
+ public override Task<EcOptions> Aquire(IInputService inputService, RunLevel runLevel) => Default();
- public override EcOptions Default()
+ public override Task<EcOptions> Default()
{
var args = _arguments.GetArguments<CsrArguments>();
- return new EcOptions()
+ return Task.FromResult(new EcOptions()
{
OcspMustStaple = args.OcspMustStaple ? true : (bool?)null,
ReusePrivateKey = args.ReusePrivateKey ? true : (bool?)null
- };
+ });
}
}
}
diff --git a/src/main.lib/Plugins/CsrPlugins/Rsa/Rsa.cs b/src/main.lib/Plugins/CsrPlugins/Rsa/Rsa.cs
index ff9ead6..8851d00 100644
--- a/src/main.lib/Plugins/CsrPlugins/Rsa/Rsa.cs
+++ b/src/main.lib/Plugins/CsrPlugins/Rsa/Rsa.cs
@@ -5,6 +5,7 @@ using Org.BouncyCastle.Security;
using PKISharp.WACS.Services;
using System;
using System.Security.Cryptography;
+using System.Threading.Tasks;
namespace PKISharp.WACS.Plugins.CsrPlugins
{
@@ -36,7 +37,7 @@ namespace PKISharp.WACS.Plugins.CsrPlugins
/// </summary>
/// <param name="ackp"></param>
/// <returns></returns>
- public override AsymmetricAlgorithm Convert(AsymmetricAlgorithm ackp)
+ public override Task<AsymmetricAlgorithm> Convert(AsymmetricAlgorithm ackp)
{
try
{
@@ -50,7 +51,7 @@ namespace PKISharp.WACS.Plugins.CsrPlugins
var rsaProvider = new RSACryptoServiceProvider(cspParameters);
var parameters = ((RSACryptoServiceProvider)ackp).ExportParameters(true);
rsaProvider.ImportParameters(parameters);
- return rsaProvider;
+ return Task.FromResult<AsymmetricAlgorithm>(rsaProvider);
}
catch (Exception ex)
{
diff --git a/src/main.lib/Plugins/CsrPlugins/Rsa/RsaOptionsFactory.cs b/src/main.lib/Plugins/CsrPlugins/Rsa/RsaOptionsFactory.cs
index a0a712f..1c34bf3 100644
--- a/src/main.lib/Plugins/CsrPlugins/Rsa/RsaOptionsFactory.cs
+++ b/src/main.lib/Plugins/CsrPlugins/Rsa/RsaOptionsFactory.cs
@@ -1,5 +1,6 @@
using PKISharp.WACS.Plugins.Base.Factories;
using PKISharp.WACS.Services;
+using System.Threading.Tasks;
namespace PKISharp.WACS.Plugins.CsrPlugins
{
@@ -12,16 +13,16 @@ namespace PKISharp.WACS.Plugins.CsrPlugins
public string Name => "RSA";
public string Description => "RSA key";
- public override RsaOptions Aquire(IInputService inputService, RunLevel runLevel) => Default();
+ public override Task<RsaOptions> Aquire(IInputService inputService, RunLevel runLevel) => Default();
- public override RsaOptions Default()
+ public override Task<RsaOptions> Default()
{
var args = _arguments.GetArguments<CsrArguments>();
- return new RsaOptions()
+ return Task.FromResult(new RsaOptions()
{
OcspMustStaple = args.OcspMustStaple ? true : (bool?)null,
ReusePrivateKey = args.ReusePrivateKey ? true : (bool?)null
- };
+ });
}
}
}
diff --git a/src/main.lib/Plugins/Interfaces/ICsrPlugin.cs b/src/main.lib/Plugins/Interfaces/ICsrPlugin.cs
index 7f7681e..9a0901d 100644
--- a/src/main.lib/Plugins/Interfaces/ICsrPlugin.cs
+++ b/src/main.lib/Plugins/Interfaces/ICsrPlugin.cs
@@ -2,14 +2,15 @@
using Org.BouncyCastle.Pkcs;
using System.Collections.Generic;
using System.Security.Cryptography;
+using System.Threading.Tasks;
namespace PKISharp.WACS.Plugins.Interfaces
{
public interface ICsrPlugin
{
- AsymmetricCipherKeyPair GetKeys();
- Pkcs10CertificationRequest GenerateCsr(string cacheFile, string commonName, List<string> identifiers);
- AsymmetricAlgorithm Convert(AsymmetricAlgorithm privateKey);
+ Task<AsymmetricCipherKeyPair> GetKeys();
+ Task<Pkcs10CertificationRequest> GenerateCsr(string cacheFile, string commonName, List<string> identifiers);
+ Task<AsymmetricAlgorithm> Convert(AsymmetricAlgorithm privateKey);
bool CanConvert();
}
}
diff --git a/src/main.lib/Plugins/Interfaces/ICsrPluginOptionsFactory.cs b/src/main.lib/Plugins/Interfaces/ICsrPluginOptionsFactory.cs
index 953951a..d6bc52d 100644
--- a/src/main.lib/Plugins/Interfaces/ICsrPluginOptionsFactory.cs
+++ b/src/main.lib/Plugins/Interfaces/ICsrPluginOptionsFactory.cs
@@ -1,5 +1,6 @@
using PKISharp.WACS.Plugins.Base.Options;
using PKISharp.WACS.Services;
+using System.Threading.Tasks;
namespace PKISharp.WACS.Plugins.Interfaces
{
@@ -9,12 +10,12 @@ namespace PKISharp.WACS.Plugins.Interfaces
/// Check or get information needed for store (interactive)
/// </summary>
/// <param name="target"></param>
- CsrPluginOptions Aquire(IInputService inputService, RunLevel runLevel);
+ Task<CsrPluginOptions> Aquire(IInputService inputService, RunLevel runLevel);
/// <summary>
/// Check information needed for store (unattended)
/// </summary>
/// <param name="target"></param>
- CsrPluginOptions Default();
+ Task<CsrPluginOptions> Default();
}
}
diff --git a/src/main.lib/RenewalManager.cs b/src/main.lib/RenewalManager.cs
index bafba39..ca059ad 100644
--- a/src/main.lib/RenewalManager.cs
+++ b/src/main.lib/RenewalManager.cs
@@ -256,8 +256,8 @@ namespace PKISharp.WACS
try
{
var csrOptions = runLevel.HasFlag(RunLevel.Unattended) ?
- csrPluginOptionsFactory.Default() :
- csrPluginOptionsFactory.Aquire(_input, runLevel);
+ await csrPluginOptionsFactory.Default() :
+ await csrPluginOptionsFactory.Aquire(_input, runLevel);
if (csrOptions == null)
{
_exceptionHandler.HandleException(message: $"CSR plugin {csrPluginOptionsFactory.Name} was unable to generate options");
diff --git a/src/main.lib/Services/CertificateService.cs b/src/main.lib/Services/CertificateService.cs
index 6991f14..edf5f42 100644
--- a/src/main.lib/Services/CertificateService.cs
+++ b/src/main.lib/Services/CertificateService.cs
@@ -202,9 +202,9 @@ namespace PKISharp.WACS.Services
if (target.CsrBytes == null)
{
- var csr = csrPlugin.GenerateCsr(GetPath(renewal, ".keys"), commonNameAscii, identifiers);
+ var csr = await csrPlugin.GenerateCsr(GetPath(renewal, ".keys"), commonNameAscii, identifiers);
target.CsrBytes = csr.GetDerEncoded();
- target.PrivateKey = csrPlugin.GetKeys().Private;
+ target.PrivateKey = (await csrPlugin.GetKeys()).Private;
File.WriteAllText(GetPath(renewal, "-csr.pem"), _pemService.GetPem("CERTIFICATE REQUEST", target.CsrBytes));
}
@@ -262,7 +262,7 @@ namespace PKISharp.WACS.Services
{
try
{
- var converted = csrPlugin.Convert(tempPfx.PrivateKey);
+ var converted = await csrPlugin.Convert(tempPfx.PrivateKey);
if (converted != null)
{
tempPfx.PrivateKey = converted;