Here's a lengthy description of a situation where a better error message would be nice. I have a program that was working fine with OpenSSL 0.9.4 on both Linux and Solaris. I updated to OpenSSL 0.9.6 and it still works fine on Linux, but failed on Solaris. The program uses nonblocking I/O. The problem happened on the client side, while trying to establish the connection. The symptom was, SSL_write returned -1. SSL_get_error returned 1 (SSL_ERROR_SSL). ERR_error_string returned "error:FFFFFFFF:lib(255):func(4095):reason(4095)". Tracing through using printf, I saw the error seemed to come from the following code in ssl3_connect: case SSL3_ST_CW_KEY_EXCH_A: case SSL3_ST_CW_KEY_EXCH_B: ret=ssl3_send_client_key_exchange(s); if (ret <= 0) goto end; Tracing back further in ssl3_send_client_key_exchange(), tmp_buf[0]=s->client_version>>8; tmp_buf[1]=s->client_version&0xff; if (RAND_bytes(&(tmp_buf[2]),SSL_MAX_MASTER_KEY_LENGTH-2) <= 0) goto err; Turns out this is covered by the FAQ, http://www.openssl.org/support/faq.html#USER1 So it looks like it's caused by my Solaris environment not setting up the random number generator. Cool, the new checking in 0.9.6 found a bug in my app! I 'fixed' it by using RAND_add to jam in a little entropy, and checking RAND_status explicitly. Hey, it'd be great if ERR_error_string said something like "error:you need to seed your random number generator, you fool!" Thanks, Dan ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]