[ https://issues.apache.org/jira/browse/MESOS-10010?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16953113#comment-16953113 ]
Joseph Wu edited comment on MESOS-10010 at 10/16/19 7:02 PM: ------------------------------------------------------------- Once the BIO (MESOS-10009) is complete, this part will boil down to implementing the SSL handshake (i.e. putting {{SSL_do_handshake}} in the right places). I can probably only split out the SSL downgrade feature into a separate ticket. was (Author: kaysoky): Once the BIO (MESOS-10009) is complete, this part will boil down to implementing the SSL handshake. I can probably only split out the SSL downgrade feature into a separate ticket. > Implement an SSL socket for Windows, using OpenSSL directly > ----------------------------------------------------------- > > Key: MESOS-10010 > URL: https://issues.apache.org/jira/browse/MESOS-10010 > Project: Mesos > Issue Type: Task > Components: libprocess > Reporter: Joseph Wu > Assignee: Joseph Wu > Priority: Major > Labels: foundations > > {code} > class WindowsSSLSocketImpl : public SocketImpl > { > public: > // This will be the entry point for Socket::create(SSL). > static Try<std::shared_ptr<SocketImpl>> create(int_fd s); > WindowsSSLSocketImpl(int_fd _s); > ~WindowsSSLSocketImpl() override; > // Overrides for the 'SocketImpl' interface below. > // Unreachable. > Future<Nothing> connect(const Address& address) override; > // This will initialize SSL objects then call windows::connect() > // and chain that onto the appropriate call to SSL_do_handshake. > Future<Nothing> connect( > const Address& address, > const openssl::TLSClientConfig& config) override; > // These will call SSL_read or SSL_write as appropriate. > // As long as the SSL context is set up correctly, these will be > // thin wrappers. (More details after the code block.) > Future<size_t> recv(char* data, size_t size) override; > Future<size_t> send(const char* data, size_t size) override; > Future<size_t> sendfile(int_fd fd, off_t offset, size_t size) override; > // Nothing SSL here, just a plain old listener. > Try<Nothing> listen(int backlog) override; > // This will initialize SSL objects then call windows::accept() > // and then perform handshaking. Any downgrading will > // happen here. Since we control the event loop, we can > // easily peek at the first few bytes to check SSL-ness. > Future<std::shared_ptr<SocketImpl>> accept() override; > SocketImpl::Kind kind() const override { return SocketImpl::Kind::SSL; } > } > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)