diff options
Diffstat (limited to 'src')
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; |