public JsonWebTokenController(ILogger <JsonWebTokenController> logger, IJsonWebTokenTools jsonWebTokenTools, ICertificateTools certificateTools)
 {
     _logger            = logger;
     _jsonWebTokenTools = jsonWebTokenTools;
     if (_fullCertificate == null)
     {
         _fullCertificate   = certificateTools.CreateSignedPrivateCertificate("ten_year_certificate", "ten_year_certificate_password", DateTime.UtcNow.AddYears(10));
         _publicCertificate = certificateTools.GetPublicCertificate(_fullCertificate);
     }
 }
        public async Task <ActionResult <string> > CreateCertificate(string certificateName = "certificate_name", string certificatePassword = "******", int expirationInYears = 10)
        {
            await Task.Delay(0);

            try
            {
                DateTime expiration = DateTime.UtcNow.AddYears(expirationInYears);
                using (X509Certificate2 certificate = _certificateTools.CreateSignedPrivateCertificate(certificateName, certificatePassword, expiration))
                {
                    string ret = _certificateTools.ExportToPEM(certificate);
                    return(this.Ok(ret));
                }
            }
            catch (Exception ex)
            {
                _logger?.LogError($"Unknown Exception. Type: {ex.GetType().ToString()} ; Message: {ex.Message} ; Details: {ex.ToString()}");
                return(this.StatusCode(StatusCodes.Status500InternalServerError));
            }
        }