void SetupCertificateValidation()

in smoke/LeafDevice/details/CustomCertificateValidator.cs [35:73]


        void SetupCertificateValidation()
        {
            Debug.WriteLine("CustomCertificateValidator.SetupCertificateValidation()");

            foreach (ITransportSettings transportSetting in this.transportSettings)
            {
                switch (transportSetting.GetTransportType())
                {
                    case TransportType.Amqp_WebSocket_Only:
                    case TransportType.Amqp_Tcp_Only:
                        if (transportSetting is AmqpTransportSettings amqpTransportSettings)
                        {
                            if (amqpTransportSettings.RemoteCertificateValidationCallback == null)
                            {
                                amqpTransportSettings.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => ValidateCertificate(this.certs.First(), certificate, chain, sslPolicyErrors);
                            }
                        }

                        break;
                    case TransportType.Http1:
                        // InvokeMethodAsync is over HTTP even when transportSettings set a different protocol
                        // So set the callback in HttpClientHandler for InvokeMethodAsync
                        break;
                    case TransportType.Mqtt_WebSocket_Only:
                    case TransportType.Mqtt_Tcp_Only:
                        if (transportSetting is MqttTransportSettings mqttTransportSettings)
                        {
                            if (mqttTransportSettings.RemoteCertificateValidationCallback == null)
                            {
                                mqttTransportSettings.RemoteCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => ValidateCertificate(this.certs.First(), certificate, chain, sslPolicyErrors);
                            }
                        }

                        break;
                    default:
                        throw new InvalidOperationException("Unsupported Transport Type {0}".FormatInvariant(transportSetting.GetTransportType()));
                }
            }
        }