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()));
}
}
}