I searched the archives and surprisingly (for me anyway) I didn't find
anything about this:

I'm writing an IMAP server, and STARTTLS is currently in my focus.

Firstly, my service runs under tcpserver (DjB), or inetd/xinetd. Is it
immediately impossible for my program to implement TLS over a link like
this?

The client, in my case Kmail, connects and runs the STARTTLS command. The 
TLS negotiation that follows doesn't work.

Anyway, here's my error, using SSLv23:

  SSL_CTX *ctx = SSL_CTX_new(SSLv23_method());

error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol

using TLSv1:

 SSL_CTX *ctx = SSL_CTX_new(TLSv1_method());

16689:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:290:

-----------------------------------------------------------------

This is what I'm doing:

  SSL_load_error_strings();
  SSL_library_init();
  OpenSSL_add_ssl_algorithms();
  SSL_CTX *ctx = SSL_CTX_new(SSLv23_method());
  SSL_CTX_set_options(ctx, SSL_OP_ALL);
  SSL_CTX_set_cipher_list(ctx,"!ADH:RC4+RSA:HIGH:MEDIUM:LOW:EXP:+SSLv2:+EXP");
  SSL_CTX_set_timeout(ctx,0);
  if (!SSL_CTX_use_certificate_file(ctx, certname.c_str(), SSL_FILETYPE_PEM))
    ssl_error();
  if (!SSL_CTX_use_PrivateKey_file(ctx, certname.c_str(), SSL_FILETYPE_PEM))
    ssl_error();
  if (!SSL_CTX_check_private_key(ctx))
    ssl_error();
  SSL_CTX_set_default_verify_paths(ctx);
  SSL *ssl = SSL_new(ctx);
  if (ssl == NULL)
    ssl_error();

  SSL_set_rfd(ssl, 0);
  SSL_set_wfd(ssl, 1);

  int result = SSL_accept(ssl); // returns -1

-----------------------------------------------------------------------

Can anyone explain to me what I'm (not) doing wrong here? :-)

Andy

-- 
Andreas Aardal Hanssen


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to