diff --git a/digicert-mpki-caplugin/Constants.cs b/digicert-mpki-caplugin/Constants.cs index 71a2954..c4e76f0 100644 --- a/digicert-mpki-caplugin/Constants.cs +++ b/digicert-mpki-caplugin/Constants.cs @@ -13,5 +13,6 @@ public class Constants public static string EmailConstName = "EmailConstName"; public static string UpnConstName = "UpnConstName"; public static string OuStartPoint = "OuStartPoint"; + public static string Enabled = "Enabled"; } } diff --git a/digicert-mpki-caplugin/DigicertMpkiCAPlugin.cs b/digicert-mpki-caplugin/DigicertMpkiCAPlugin.cs index c375855..8d80777 100644 --- a/digicert-mpki-caplugin/DigicertMpkiCAPlugin.cs +++ b/digicert-mpki-caplugin/DigicertMpkiCAPlugin.cs @@ -43,6 +43,13 @@ public void Initialize(IAnyCAPluginConfigProvider configProvider, ICertificateDa _config = DeserializeConfig(configProvider.CAConnectionData); _logger.MethodEntry(); + if (!_config.Enabled) + { + _logger.LogWarning($"The CA is currently in the Disabled state. It must be Enabled to perform operations."); + _logger.MethodExit(LogLevel.Trace); + return; + } + _requestManager = new RequestManager(_logger, _config); _client = new DigiCertSymClient(_config, _logger); @@ -297,6 +304,19 @@ private async Task ProcessRenewEnrollment(string csr, Enrollme public async Task ValidateCAConnectionInfo(Dictionary connectionInfo) { + try + { + if (!(bool)connectionInfo[Constants.Enabled]) + { + _logger.LogWarning($"The CA is currently in the Disabled state. It must be Enabled to perform operations. Skipping validation..."); + _logger.MethodExit(LogLevel.Trace); + return; + } + } + catch (Exception ex) + { + _logger.LogError($"Exception: {LogHandler.FlattenException(ex)}"); + } List errors = ValidateConnectionInfo(connectionInfo); if (errors.Any()) ThrowValidationException(errors); @@ -372,6 +392,13 @@ public Dictionary GetCAConnectorAnnotations() Hidden = false, DefaultValue = "", Type = "String" + }, + [Constants.Enabled] = new PropertyConfigInfo() + { + Comments = "Flag to Enable or Disable gateway functionality. Disabling is primarily used to allow creation of the CA prior to configuration information being available.", + Hidden = false, + DefaultValue = true, + Type = "Boolean" } }; } diff --git a/digicert-mpki-caplugin/DigicertMpkiConfig.cs b/digicert-mpki-caplugin/DigicertMpkiConfig.cs index 440ced4..8fa1b7a 100644 --- a/digicert-mpki-caplugin/DigicertMpkiConfig.cs +++ b/digicert-mpki-caplugin/DigicertMpkiConfig.cs @@ -17,5 +17,6 @@ public DigicertMpkiConfig() public string EmailConstName { get; set; } public string UpnConstName { get; set; } public int OuStartPoint { get; set; } + public bool Enabled { get; set; } = true; } }