示例#1
0
 /// <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);
 }
示例#2
0
        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));
        }
示例#3
0
 /// <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);
 }
示例#4
0
 /// <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);
 }
示例#5
0
        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);
        }
示例#6
0
 public OpenSslContext(OpenSslProtocol protocol, bool server)
 {
     _ctx = OpenSslUtility.AssertNotNull(OpenSslNative.SSL_CTX_new(GetMethodFromProtocol(protocol, server)));
 }
示例#7
0
 public OpenSslConnection(OpenSslProtocol protocol, bool server)
     : this(new OpenSslContext(protocol, server))
 {
 }
示例#8
0
 /// <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);
 }
示例#9
0
 public OpenSslConnection(OpenSslProtocol protocol, bool server)
     : this(new OpenSslContext(protocol, server))
 {
 }
示例#10
0
 public OpenSslContext(OpenSslProtocol protocol, bool server)
 {
     _ctx = OpenSslUtility.AssertNotNull(OpenSslNative.SSL_CTX_new(GetMethodFromProtocol(protocol, server)));
 }