Exemple #1
0
 /// <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)
 {
 }
Exemple #2
0
        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);
        }
Exemple #3
0
 /// <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;
 }