From: Christopher Kohlhoff (chris_at_[hidden])
Date: 2006-12-19 23:00:35


Hi George,

On Mon, 18 Dec 2006 17:50:03 -0500, "George M. Garner Jr."
<gmgarner_at_[hidden]> said:
> Actually, SSL is almost trivial on Windows, particularly when you
> compare it with the OpenSSL implementation. See e.g.,
> http://www.codeproject.com/internet/sslsocket.asp. Doing SSL within
> the context of IOCompletion ports is a bit more complicated, which
> this sample doesn't deal with. But presumable you have already
> cracked that nut with your OpenSSL implementation.

The openssl support was contributed, but I take your point. However this
would be a good opportunity to rework the async support so that it
supports stuff like custom memory allocation etc (the current one
doesn't).

> Actually, to answer my own question, it looks like I would need to
> parameterize the service_impl_type in the context_service class:
[...]

I suggest doing an initial implementation that doesn't need to modify
asio itself, and so simply provide new implementations of the
ssl::basic_context's Service template parameter and the ssl::stream's
Service template parameter. E.g.:

class schannel_context_service { ... };
class schannel_stream_service { ... };

typedef ssl::basic_context<schannel_context_service>
  my_ssl_context;

typedef ssl::stream<ip::tcp::socket, schannel_stream_service>
  my_ssl_socket;

Once that's working we can look at merging it in as the default
implementation on Windows.

> Is 0.3.7 still the current release?

It would be much better to work against what's in CVS, if you can.

Cheers,
Chris