IO Completion Ports are a NT specific feature, used with non-blocking IO (also
called asynchronous IO or overlapped IO in NT terminology). If a socket is
registered with a completion port, a completion packet will be queued with the
port when a non-blocking IO operation completes. One can then fetch a
completion packet by calling the completion port. This is typically used when
you have a pool of threads serving a large number of simultaneous connections.
In order to determine what operation that has completed, a so called
OVERLAPPED structure is included in the read or write call. This structure is
included in the completion packet. This means that NT specific read() and
write() methods must be used.
My rough idea was to use a BIO_s_mem together with a BIO_f_ssl to convert my
application messages to ssl messages. Thereafter I could write the buffer
holding the ssl message to the socket, using the NT specific methods that take
the OVERLAPPED parameter. Reading would thus be handled the other way around.
Does BIO_f_ssl create a complete ssl message, or does it encrypt application
data only (and vice versa for reading)?
The BIO_pair module sounds very interesting. That would probably create a much
cleaner solution to my problem. Do you have any idea of when you could have
such a module ready?
--
Roger
Bodo Moeller wrote:
> On Fri, May 14, 1999 at 04:20:49PM +0200, Roger Bod�n wrote:
>
> > We have an application on Windows NT that uses IO Completion ports for
> > its socket communication. I now need to add SSL support to secure this
> > communication and we are considering using openssl for this.
> >
> > I had a look at header files, the documentation I could get hold of and
> > some of the apps that come with openssl, but was unable to find any
> > explicit IO Completion Port info.
> >
> > What is the best way to implement this? Is it to use BIO_f_ssl() to
> > encrypt/decrypt the data before writing and after reading, respectively?
>
> I have no idea what IO completion ports are; but BIO_f_ssl most
> probably is not the solution you are looking for. It is a filter BIO
> module that you have to push on top of some other BIO module to use
> it. For example, BIO_new_ssl_connect combines BIO_f_ssl with
> BIO_s_connect.
>
> I intend to write an additional BIO module BIO_pair, which will allow
> applications to handle data in whatever way they want to: The program
> will have to relay all data between the SSL library and some "real"
> I/O ports. I don't think this is currently possible using any of the
> existing modules.
> ______________________________________________________________________
> OpenSSL Project http://www.openssl.org
> Development Mailing List [EMAIL PROTECTED]
> Automated List Manager [EMAIL PROTECTED]
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]