/// <summary> /// Initializes a new instance of the <see cref="Kubernetes" /> class. /// </summary> /// <param name='config'> /// Optional. The delegating handlers to add to the http client pipeline. /// </param> /// <param name="handlers"> /// Optional. The delegating handlers to add to the http client pipeline. /// </param> public Kubernetes(KubernetesClientConfiguration config, params DelegatingHandler[] handlers) : this(new Xamarin.Android.Net.AndroidClientHandler(), handlers) { if (string.IsNullOrWhiteSpace(config.Host)) { throw new KubeConfigException("Host url must be set"); } try { BaseUri = new Uri(config.Host); } catch (UriFormatException e) { throw new KubeConfigException("Bad host url", e); } CaCert = config.SslCaCert; SkipTlsVerify = config.SkipTlsVerify; if (BaseUri.Scheme == "https") { if (config.SkipTlsVerify) { System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return(true); }; } else { if (CaCert == null) { throw new KubeConfigException("a CA must be set when SkipTlsVerify === false"); } using (System.IO.MemoryStream certStream = new System.IO.MemoryStream(config.SslCaCert.RawData)) { Java.Security.Cert.Certificate cert = Java.Security.Cert.CertificateFactory.GetInstance("X509").GenerateCertificate(certStream); Xamarin.Android.Net.AndroidClientHandler handler = (Xamarin.Android.Net.AndroidClientHandler) this.HttpClientHandler; handler.TrustedCerts = new System.Collections.Generic.List <Java.Security.Cert.Certificate>() { cert }; } } } // set credentails for the kubernernet client SetCredentials(config, HttpClientHandler); }
private void InitializeFromConfig(KubernetesClientConfiguration config) { if (BaseUri.Scheme == "https") { if (config.SkipTlsVerify) { #if NET452 ((WebRequestHandler)HttpClientHandler).ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; #elif XAMARINIOS1_0 || MONOANDROID8_1 System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { return(true); }; #else HttpClientHandler.ServerCertificateCustomValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; #endif } else { if (CaCerts == null) { throw new KubeConfigException("A CA must be set when SkipTlsVerify === false"); } #if NET452 ((WebRequestHandler)HttpClientHandler).ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => { return(Kubernetes.CertificateValidationCallBack(sender, CaCerts, certificate, chain, sslPolicyErrors)); }; #elif XAMARINIOS1_0 System.Net.ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => { var cert = new X509Certificate2(certificate); return(Kubernetes.CertificateValidationCallBack(sender, CaCerts, cert, chain, sslPolicyErrors)); }; #elif MONOANDROID8_1 var certList = new System.Collections.Generic.List <Java.Security.Cert.Certificate>(); foreach (X509Certificate2 caCert in CaCerts) { using (var certStream = new System.IO.MemoryStream(caCert.RawData)) { Java.Security.Cert.Certificate cert = Java.Security.Cert.CertificateFactory.GetInstance("X509").GenerateCertificate(certStream); certList.Add(cert); } } var handler = (Xamarin.Android.Net.AndroidClientHandler) this.HttpClientHandler; handler.TrustedCerts = certList; #else HttpClientHandler.ServerCertificateCustomValidationCallback = (sender, certificate, chain, sslPolicyErrors) => { return(Kubernetes.CertificateValidationCallBack(sender, CaCerts, certificate, chain, sslPolicyErrors)); }; #endif } } // set credentails for the kubernetes client SetCredentials(config); config.AddCertificates(HttpClientHandler); }
public CouchbaseLiteHttpClient GetHttpClient(CookieStore cookieStore, IRetryStrategy strategy, Java.Security.Cert.Certificate cert)
/// <summary> /// Build a pipeline of HttpMessageHandlers. /// </summary> #if __ANDROID__ internal HttpMessageHandler BuildHandlerPipeline(CookieStore store, IRetryStrategy retryStrategy, Java.Security.Cert.Certificate selfSignedCert)