/// <summary> /// Initializes a new instance of the <see cref="ServerConnectionDetails"/> class. /// </summary> /// <param name="ipEndPoint">The IP Endpoint.</param> /// <param name="encoding">The encoding. default is ASCII.</param> /// <param name="securityDetails">The security details to be used by the server (if any).</param> public ServerConnectionDetails(IPEndPoint ipEndPoint, Encoding encoding = null, ServerSecurityDetails securityDetails = null) : this(ipEndPoint.Address.ToString(), ipEndPoint.Port, encoding, securityDetails) { }
public static async Task <MllpHost> Create(TcpClient tcpClient, IHl7MessageMiddleware middleware, Encoding encoding = null, ServerSecurityDetails securityDetails = null, CancellationToken cancellationToken = default(CancellationToken)) { Stream stream; NetworkStream networkStream = tcpClient.GetStream(); if (securityDetails != null) { var sslStream = new SslStream(networkStream, true, securityDetails.ClientCertificateValidationCallback, null); try { bool askForClientCertificate = securityDetails.ForceClientAuthentciation; await sslStream.AuthenticateAsServerAsync(securityDetails.ServerCertificate, askForClientCertificate, securityDetails.SupportedSslProtocols, false); if (askForClientCertificate && !sslStream.IsMutuallyAuthenticated) { throw new AuthenticationException("mutual authentication failed."); } } catch (Exception) { sslStream.Dispose(); throw; } stream = sslStream; } else { stream = networkStream; } var host = new MllpHost(tcpClient, encoding ?? Encoding.ASCII, middleware, stream, cancellationToken); host.ReadStream(host._token); return(host); }
/// <summary> /// Initializes a new instance of the <see cref="ServerConnectionDetails"/> class. /// </summary> /// <param name="address">The address.</param> /// <param name="port">The port.</param> /// <param name="encoding">The encoding. default is ASCII.</param> /// <param name="securityDetails">The security details to be used by the server (if any).</param> public ServerConnectionDetails(string address, int port, Encoding encoding = null, ServerSecurityDetails securityDetails = null) { this.Address = address; this.Port = port; this.Encoding = encoding ?? Encoding.ASCII; this.SecurityDetails = securityDetails; }