> IIRC the reason is size of SSL protocol - several times of size of
     > Core :-)
     >

     Using OpenSSL (http://www.openssl.org) it is not too difficult to add
     SSL support to an existing sockets package. I added SSL support to my
     Lisp Socket package in very few lines [1]. This included using SSL
     through a generic proxy. I've also done the same with Dylan, adding
     SSL support to the existing Dylan sockets library [2].

     If you can call call/link external libraries to include OpenSSL
     (Rebol/Command for example) you could might be able to add the support
     yourself in a few hours.

     Note that I've only done this on Windows - not other OS's - so it may
     be more involved than that.

     The basic steps once you've got a socket connected using the standard
     OS calls were to use the OpenSSL calls:

       method = sslv23_client_method();
       ctx = ssl_ctx_new(method);
       handle = ssl_new(ctx);
       ssl_set_fd( handle, socket_descriptor);
       ssl_connect( handle );

     Once the above is done you use the ssl_write and ssl_read functions
     instead of the OS send and recv functions, passing the 'handle' above,
     not the socket descriptor:

       ssl_write(handle, buffer, length);
       ssl_read(handle, buffer, length);

     When closing the socket you first need to do some SSL cleanup:

       ssl_shutdown(handle);
       closesocket(socket_descriptor);
       ssl_free(handle);
       ssl_ctx_free(ctx);


     That's all there is too it. The source to my Lisp version is at my
     site if anyone wants to try a REBOL vesion.

     [1] http://www.double.co.nz/cl
     [2] http://www.double.co.nz/dylan

     Chris.



Reply via email to