How can I upgrade a socket to TLS in node?

I'm trying to write an FTP server in Node which supports TLS with explicit AUTH. In this mode, the client sends an AUTH TLS command to the server, which responds with an acknowledgement, prompting the client to begin negotiating a secure connection.

I'm using this code to upgrade the connection: https://github.com/andris9/rai/blob/master/lib/starttls.js . I've verified that this works by writing a simple echo server using net.Server, and then using the starttls function to immediately upgrade the socket to a secure connection. Connecting to this test server using openssl s_client works as expected.

However, when I try to connect to my test FTP server using an FTP client supporting TLS with explicit auth, the following exception is raised by the object returned by createSecurePair:

[Error: 140735236446560:error:1408A0B7:SSL routines:SSL3_GET_CLIENT_HELLO:no ciphers     
 specified:../deps/openssl/openssl/ssl/s3_srvr.c:1009:
]

I have in fact specified ciphers (createSecurePair is passed an options dict with ciphers set to 'RC4-SHA:AES128-SHA:AES256-SHA'). I've packet-sniffed the connection, and what seems to happen is that after the server responds to the client's AUTH TLS command, there is a brief interchange between client and server which I assume is the (failed) TLS negotiation. But I don't really understand enough about TLS to investigate any further. How should I go about investigating the source of this error?

I am running node 0.8.1, and had the same issue with 0.6.19.

This turned out just to be a silly mistake. The FTP server code I was modifying used socket.setEncoding. Of course, having this turned on screwed up the TLS negotiation.