public async Task <bool> ValidateAsync(X509Certificate2 userCertificate, bool skipVerification = false)
        {
            var isValid    = false;
            var exceptions = new List <string>();

            try
            {
                if (skipVerification || userCertificate.Verify())
                {
                    if (_allowedCerts == null)
                    {
                        isValid = true;
                    }
                    else
                    {
                        foreach (var allowedCertificate in await _allowedCerts.GetAllCertificatesAsync())
                        {
                            isValid |= userCertificate.Equals(allowedCertificate);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                exceptions.Add(ex.Message);
            }

            return(isValid);
        }
        public async Task <HttpClient> GetHttpClientAsync(string url)
        {
            var requestHandler = new WebRequestHandler();

            if (_certificationProvider != null)
            {
                var certificates = await _certificationProvider.GetAllCertificatesAsync();

                if (certificates != null)
                {
                    foreach (var certificate in certificates)
                    {
                        requestHandler.ClientCertificates.Add(certificate);
                    }
                }
            }

            if (!String.IsNullOrWhiteSpace(WebProxyUrl))
            {
                requestHandler.Proxy = new WebProxy(WebProxyUrl);
            }

            if (SkipSslValidationCheck)
            {
                requestHandler.ServerCertificateValidationCallback += (sender, certificate, chain, errors) => true;
            }

            return(new HttpClient(requestHandler)
            {
                BaseAddress = new Uri(url)
            });
        }