/// <summary> /// Initializes server connection /// </summary> /// <param name="socket"></param> /// <param name="protocol"></param> /// <param name="certificate"></param> /// <param name="privatekey"></param> public OpenSslStream(Socket socket, OpenSslProtocol protocol, OpenSslCertificate certificate, OpenSslPrivateKey privatekey) { context = new OpenSslContext(protocol, true); connection = new OpenSslConnection(context); connection.Certificate = certificate; connection.PrivateKey = privatekey; connection.Accept(socket); }
private static IntPtr GetMethodFromProtocol(OpenSslProtocol protocol, bool server) { IntPtr method = IntPtr.Zero; switch (protocol) { case OpenSslProtocol.AutoDetect: if (server) { method = OpenSslNative.SSLv23_server_method(); } else { method = OpenSslNative.SSLv23_client_method(); } break; case OpenSslProtocol.SSLv2: if (server) { method = OpenSslNative.SSLv2_server_method(); } else { method = OpenSslNative.SSLv2_client_method(); } break; case OpenSslProtocol.SSLv3: if (server) { method = OpenSslNative.SSLv3_server_method(); } else { method = OpenSslNative.SSLv3_client_method(); } break; case OpenSslProtocol.TLSv1: if (server) { method = OpenSslNative.TLSv1_server_method(); } else { method = OpenSslNative.TLSv1_client_method(); } break; default: break; } return(OpenSslUtility.AssertNotNull(method)); }
/// <summary> /// Initializes client connection /// </summary> /// <param name="socket"></param> public OpenSslStream(Socket socket, OpenSslProtocol protocol) { context = new OpenSslContext(protocol, false); connection = new OpenSslConnection(context); connection.Connect(socket); }
private static IntPtr GetMethodFromProtocol(OpenSslProtocol protocol, bool server) { IntPtr method = IntPtr.Zero; switch (protocol) { case OpenSslProtocol.AutoDetect: if (server) method = OpenSslNative.SSLv23_server_method(); else method = OpenSslNative.SSLv23_client_method(); break; case OpenSslProtocol.SSLv2: if (server) method = OpenSslNative.SSLv2_server_method(); else method = OpenSslNative.SSLv2_client_method(); break; case OpenSslProtocol.SSLv3: if (server) method = OpenSslNative.SSLv3_server_method(); else method = OpenSslNative.SSLv3_client_method(); break; case OpenSslProtocol.TLSv1: if (server) method = OpenSslNative.TLSv1_server_method(); else method = OpenSslNative.TLSv1_client_method(); break; default: break; } return OpenSslUtility.AssertNotNull(method); }
public OpenSslContext(OpenSslProtocol protocol, bool server) { _ctx = OpenSslUtility.AssertNotNull(OpenSslNative.SSL_CTX_new(GetMethodFromProtocol(protocol, server))); }
public OpenSslConnection(OpenSslProtocol protocol, bool server) : this(new OpenSslContext(protocol, server)) { }