Hi! as the topic just popped up on openssl-users, I have clarified that SSL_read()/write() must be called with the same arguments when they have to be repeated. I also added a manual page for SSL_pending. I have further changed some to the "NOTES" style recommended by Richard Levitte and added SSL_CTX_set_ssl_version. Best, Lutz -- Lutz Jaenicke [EMAIL PROTECTED] BTU Cottbus http://www.aet.TU-Cottbus.DE/personen/jaenicke/ Lehrstuhl Allgemeine Elektrotechnik Tel. +49 355 69-4129 Universitaetsplatz 3-4, D-03044 Cottbus Fax. +49 355 69-4153
diff -r -u --new-file openssl-SNAP-20000920-vanilla/doc/ssl/SSL_CTX_set_ssl_version.pod openssl-SNAP-20000920/doc/ssl/SSL_CTX_set_ssl_version.pod --- openssl-SNAP-20000920-vanilla/doc/ssl/SSL_CTX_set_ssl_version.pod Thu Jan 1 01:00:00 1970 +++ openssl-SNAP-20000920/doc/ssl/SSL_CTX_set_ssl_version.pod Wed Sep 20 20:49:46 +2000 @@ -0,0 +1,60 @@ +=pod + +=head1 NAME + +SSL_CTX_set_ssl_version, SSL_set_ssl_method, SSL_get_ssl_method +- choose a new TLS/SSL method + +=head1 SYNOPSIS + + #include <openssl/ssl.h> + + int SSL_CTX_set_ssl_version(SSL_CTX *ctx, SSL_METHOD *method); + int SSL_set_ssl_method(SSL *s, SSL_METHOD *method); + SSL_METHOD *SSL_get_ssl_method(SSL *ssl); + +=head1 DESCRIPTION + +SSL_CTX_set_ssl_version() sets a new default TLS/SSL B<method> for SSL objects +newly created from this B<ctx>. SSL objects already created with +L<SSL_new(3)|SSL_new(3)> are not affected, except when SSL_clear() is +being called. + +SSL_set_ssl_method() sets a new TLS/SSL B<method> for a particular B<ssl> +object. It may be reset, when SSL_clear() is called. + +SSL_get_ssl_method() returns a function pointer to the TLS/SSL method +set in B<ssl>. + +=head1 NOTES + +The available B<method> choices are described in +L<SSL_CTX_new(3)|SSL_CTX_new(3)>. + +When SSL_clear() is called and no session is connected to an SSL object, +the method of the SSL object is reset to the method currently set in +the corresponding SSL_CTX object. + +=head1 RETURN VALUES + +The following return values can occur for SSL_CTX_set_ssl_version() +and SSL_set_ssl_method(): + +=over 4 + +=item 0 + +The new choice failed, check the error stack to find out the reason. + +=item 1 + +The operation succeeded. + +=back + +=head1 SEE ALSO + +L<SSL_CTX_new(3)|SSL_CTX_new(3)>, L<SSL_new(3)|SSL_new(3)>, +L<SSL_clear(3)|SSL_clear(3)>, L<ssl(3)|ssl(3)> + +=cut diff -r -u --new-file openssl-SNAP-20000920-vanilla/doc/ssl/SSL_accept.pod openssl-SNAP-20000920/doc/ssl/SSL_accept.pod --- openssl-SNAP-20000920-vanilla/doc/ssl/SSL_accept.pod Sat Sep 16 18:01:01 2000 +++ openssl-SNAP-20000920/doc/ssl/SSL_accept.pod Wed Sep 20 21:04:38 2000 @@ -14,8 +14,11 @@ SSL_accept() waits for a TLS/SSL client to initiate the TLS/SSL handshake. The communication channel must already have been set and assigned to the -B<ssl> by setting an underlying B<BIO>. The behaviour of SSL_accept() depends -on the underlying BIO. +B<ssl> by setting an underlying B<BIO>. + +=head1 NOTES + +The behaviour of SSL_accept() depends on the underlying BIO. If the underlying BIO is B<blocking>, SSL_accept() will only return once the handshake has been finished or an error occurred, except for SGC (Server diff -r -u --new-file openssl-SNAP-20000920-vanilla/doc/ssl/SSL_connect.pod openssl-SNAP-20000920/doc/ssl/SSL_connect.pod --- openssl-SNAP-20000920-vanilla/doc/ssl/SSL_connect.pod Sat Sep 16 19:00:30 2000 +++ openssl-SNAP-20000920/doc/ssl/SSL_connect.pod Wed Sep 20 21:04:59 2000 @@ -14,8 +14,11 @@ SSL_connect() initiates the TLS/SSL handshake with a server. The communication channel must already have been set and assigned to the B<ssl> by setting an -underlying B<BIO>. The behaviour of SSL_connect() depends on the underlying -BIO. +underlying B<BIO>. + +=head1 NOTES + +The behaviour of SSL_connect() depends on the underlying BIO. If the underlying BIO is B<blocking>, SSL_connect() will only return once the handshake has been finished or an error occurred. diff -r -u --new-file openssl-SNAP-20000920-vanilla/doc/ssl/SSL_pending.pod openssl-SNAP-20000920/doc/ssl/SSL_pending.pod --- openssl-SNAP-20000920-vanilla/doc/ssl/SSL_pending.pod Thu Jan 1 01:00:00 1970 +++ openssl-SNAP-20000920/doc/ssl/SSL_pending.pod Wed Sep 20 21:12:39 2000 @@ -0,0 +1,30 @@ +=pod + +=head1 NAME + +SSL_pending - obtain number of readable bytes buffered in an SSL object + +=head1 SYNOPSIS + + #include <openssl/ssl.h> + + int SSL_pending(SSL *ssl); + +=head1 DESCRIPTION + +SSL_pending() returns the number of bytes which are available inside +B<ssl> for immediate read. + +=head1 NOTES + +Data are received in blocks from the peer. Therefore data can be buffered +inside B<ssl> and are ready for immediate retrieval with +L<SSL_read(3)|SSL_read(3)>. + +=head1 RETURN VALUES + +The number of bytes pending is returned. + +L<SSL_read(3)|SSL_read(3)>, L<ssl(3)|ssl(3)> + +=cut diff -r -u --new-file openssl-SNAP-20000920-vanilla/doc/ssl/SSL_read.pod openssl-SNAP-20000920/doc/ssl/SSL_read.pod --- openssl-SNAP-20000920-vanilla/doc/ssl/SSL_read.pod Sat Sep 16 18:01:02 2000 +++ openssl-SNAP-20000920/doc/ssl/SSL_read.pod Wed Sep 20 21:02:45 2000 @@ -13,7 +13,11 @@ =head1 DESCRIPTION SSL_read() tries to read B<num> bytes from the specified B<ssl> into the -buffer B<buf>. If necessary, SSL_read() will negotiate a TLS/SSL session, if +buffer B<buf>. + +=head1 NOTES + +If necessary, SSL_read() will negotiate a TLS/SSL session, if not already explicitly performed by SSL_connect() or SSL_accept(). If the peer requests a re-negotiation, it will be performed transparently during the SSL_read() operation. The behaviour of SSL_read() depends on the @@ -33,6 +37,12 @@ non-blocking socket, nothing is to be done, but select() can be used to check for the required condition. When using a buffering BIO, like a BIO pair, data must be written into or retrieved out of the BIO before being able to continue. + +=head1 IMPORTANT + +When an SSL_read() operation has to be repeated because of +B<SSL_ERROR_WANT_READ> or B<SSL_ERROR_WANT_WRITE>, it must be repeated +with the same arguments. =head1 RETURN VALUES diff -r -u --new-file openssl-SNAP-20000920-vanilla/doc/ssl/SSL_write.pod openssl-SNAP-20000920/doc/ssl/SSL_write.pod --- openssl-SNAP-20000920-vanilla/doc/ssl/SSL_write.pod Sat Sep 16 18:01:02 2000 +++ openssl-SNAP-20000920/doc/ssl/SSL_write.pod Wed Sep 20 21:03:54 2000 @@ -13,7 +13,11 @@ =head1 DESCRIPTION SSL_write() writes B<num> bytes from the buffer B<buf> into the specified -B<ssl>. If necessary, SSL_write() will negotiate a TLS/SSL session, if +B<ssl> connection. + +=head1 NOTES + +If necessary, SSL_write() will negotiate a TLS/SSL session, if not already explicitly performed by SSL_connect() or SSL_accept(). If the peer requests a re-negotiation, it will be performed transparently during the SSL_write() operation. The behaviour of SSL_write() depends on the @@ -33,6 +37,12 @@ non-blocking socket, nothing is to be done, but select() can be used to check for the required condition. When using a buffering BIO, like a BIO pair, data must be written into or retrieved out of the BIO before being able to continue. + +=head1 IMPORTANT + +When an SSL_write() operation has to be repeated because of +B<SSL_ERROR_WANT_READ> or B<SSL_ERROR_WANT_WRITE>, it must be repeated +with the same arguments. =head1 RETURN VALUES