public static List <RSA> GetAllPrivateKeys()
        {
            List <RSA>         output   = new List <RSA>();
            EncryptionSettings settings = EncryptionSettings.GetEncryptionSettings();

            if (settings == null)
            {
                Trace.WriteLine("No encryption setting found in config file");
                return(output);
            }
            foreach (KeySettings keyinfo in settings.RSAKeys)
            {
                if (!String.IsNullOrEmpty(keyinfo.PrivateKey))
                {
                    Trace.WriteLine("Loading key " + keyinfo.Name);
                    RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
                    try
                    {
                        RSAKeyExtensions.FromXmlStringDotNetCore2(RSA, keyinfo.PrivateKey);
                    }
                    catch (Exception ex)
                    {
                        throw new PingCastleException("Unable to load the key \"" + keyinfo.Name + "\"", ex);
                    }
                    output.Add(RSA);
                }
            }
            return(output);
        }
        public static RSA GetRSAEncryptionKey()
        {
            EncryptionSettings settings      = EncryptionSettings.GetEncryptionSettings();
            string             EncryptionKey = settings.EncryptionKey;

            if (String.IsNullOrEmpty(EncryptionKey))
            {
                foreach (KeySettings keyinfo in settings.RSAKeys)
                {
                    if (!String.IsNullOrEmpty(keyinfo.PublicKey))
                    {
                        RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
                        RSAKeyExtensions.FromXmlStringDotNetCore2(RSA, keyinfo.PublicKey);
                        return(RSA);
                    }
                    if (!String.IsNullOrEmpty(keyinfo.PrivateKey))
                    {
                        RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
                        RSAKeyExtensions.FromXmlStringDotNetCore2(RSA, keyinfo.PrivateKey);
                        return(RSA);
                    }
                }
                throw new PingCastleException("No encryption key set in config file");
            }
            else
            {
                foreach (KeySettings keyinfo in settings.RSAKeys)
                {
                    if (keyinfo.Name == EncryptionKey)
                    {
                        RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
                        if (!String.IsNullOrEmpty(keyinfo.PublicKey))
                        {
                            RSAKeyExtensions.FromXmlStringDotNetCore2(RSA, keyinfo.PublicKey);
                        }
                        else if (!String.IsNullOrEmpty(keyinfo.PrivateKey))
                        {
                            RSAKeyExtensions.FromXmlStringDotNetCore2(RSA, keyinfo.PrivateKey);
                        }
                        else
                        {
                            throw new PingCastleException(@"The container """ + EncryptionKey + @""" does not contain a public or a private key");
                        }
                        return(RSA);
                    }
                }
            }
            throw new PingCastleException("Encryption key not found (name:" + EncryptionKey + ")");
        }