public void TestSetupCertificateValidation_Amqp_ShouldSucceed() { ITransportSettings[] transportSettings = new ITransportSettings[] { new AmqpTransportSettings(TransportType.Amqp_Tcp_Only) }; var certs = TrustBundleProvider.ParseCertificates(certificatesString); var customCertificateValidator = CustomCertificateValidator.Create(certs, transportSettings); Assert.IsNotNull(((AmqpTransportSettings)transportSettings[0]).RemoteCertificateValidationCallback); }
public void TestSetupCertificateValidation_Amqp_CallbackAlreadySet_ShouldSucceed() { var certs = TrustBundleProvider.ParseCertificates(certificatesString); var setting = new AmqpTransportSettings(TransportType.Amqp_Tcp_Only); RemoteCertificateValidationCallback callback = (sender, certificate, chain, sslPolicyErrors) => { return(true); }; setting.RemoteCertificateValidationCallback = callback; ITransportSettings[] transportSettings = new ITransportSettings[] { setting }; var customCertificateValidator = CustomCertificateValidator.Create(certs, transportSettings); Assert.IsNotNull(((AmqpTransportSettings)transportSettings[0]).RemoteCertificateValidationCallback); }
public void TestSetupCertificateValidation_Mqtt_CallbackAlreadySet_ShouldSucceed() { var trustBundleProvider = new TrustBundleProvider(); var certs = trustBundleProvider.ParseCertificates(certificatesString); var setting = new MqttTransportSettings(TransportType.Mqtt_Tcp_Only); RemoteCertificateValidationCallback callback = (sender, certificate, chain, sslPolicyErrors) => { return(true); }; setting.RemoteCertificateValidationCallback = callback; ITransportSettings[] transportSettings = new ITransportSettings[] { setting }; var customCertificateValidator = CustomCertificateValidator.Create(certs, transportSettings); Assert.AreEqual(setting.RemoteCertificateValidationCallback, callback); }
public static RegisterGatewayResult RegisterGateway( string managementServerUrl, string managementCertificateThumbprint, string managementAccountName, string managementAccountPassword, NetbiosName gatewayNetbiosName, X509Certificate2 gatewayCertificate) { Contract.Requires(!managementServerUrl.IsNullOrWhiteSpace()); Contract.Requires(!managementCertificateThumbprint.IsNullOrWhiteSpace()); Contract.Requires(!managementAccountName.IsNullOrWhiteSpace()); Contract.Requires(!managementAccountPassword.IsNullOrWhiteSpace()); Contract.Requires(gatewayNetbiosName != null); Contract.Requires(gatewayCertificate != null); using (var webRequestHandler = new WebRequestHandler()) { webRequestHandler.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => { var customCertificateValidator = new CustomCertificateValidator(managementCertificateThumbprint); customCertificateValidator.Validate(new X509Certificate2(certificate)); return(true); }; using (var httpClient = new HttpClient(webRequestHandler)) { var managementUrl = $"{managementServerUrl}/Api"; try { var loginResponse = PostAsync <ManagementLoginResponse>( httpClient, $"{managementUrl}/Authentication/Login", new ManagementLoginRequest { AccountName = managementAccountName, Password = managementAccountPassword, }).Result; if (loginResponse.Status != ManagementLoginResponseStatus.Success) { return(new RegisterGatewayResult(RegisterGatewayResultStatus.FailedAuthentication)); } var gatewayConfiguration = PostAsync <GatewayConfiguration>( httpClient, $"{managementUrl}/SystemProfiles/Gateways/{gatewayNetbiosName}", new RegisterGatewayRequest { Certificate = gatewayCertificate, Version = GeneralInformation.FileVersion }).Result; return(new RegisterGatewayResult(gatewayConfiguration)); } catch (Exception exception) { if (exception.InnerException is HttpRequestException) { if (exception.InnerException.InnerException is WebException) { return(new RegisterGatewayResult( RegisterGatewayResultStatus.FailedConnectivity, exception.ToString())); } return(new RegisterGatewayResult( RegisterGatewayResultStatus.FailedInternal, exception.ToString())); } return(new RegisterGatewayResult( RegisterGatewayResultStatus.Failed, exception.ToString())); } } } }