## CamelTcpStreamSSL

CamelTcpStreamSSL

## Synopsis

                        CamelTcpStreamSSL;
    #define             CAMEL_TCP_STREAM_SSL_ENABLE_SSL2
    #define             CAMEL_TCP_STREAM_SSL_ENABLE_SSL3
    #define             CAMEL_TCP_STREAM_SSL_ENABLE_TLS
    CamelStream *       camel_tcp_stream_ssl_new            (struct _CamelSession *session,
                                                             const gchar *expected_host,
                                                             guint32 flags);
    CamelStream *       camel_tcp_stream_ssl_new_raw        (struct _CamelSession *session,
                                                             const gchar *expected_host,
                                                             guint32 flags);
    gint                camel_tcp_stream_ssl_enable_ssl     (CamelTcpStreamSSL *ssl);
    PRFileDesc *        camel_tcp_stream_ssl_sockfd         (CamelTcpStreamSSL *stream);

## Description

## Details

### CamelTcpStreamSSL

    typedef struct {
    	CamelTcpStream parent;
    	CamelTcpStreamSSLPrivate *priv;
    } CamelTcpStreamSSL;

### CAMEL_TCP_STREAM_SSL_ENABLE_SSL2

    #define CAMEL_TCP_STREAM_SSL_ENABLE_SSL2   (1 << 0)

### CAMEL_TCP_STREAM_SSL_ENABLE_SSL3

    #define CAMEL_TCP_STREAM_SSL_ENABLE_SSL3   (1 << 1)

### CAMEL_TCP_STREAM_SSL_ENABLE_TLS

    #define CAMEL_TCP_STREAM_SSL_ENABLE_TLS    (1 << 2)

### camel_tcp_stream_ssl_new ()

    CamelStream *       camel_tcp_stream_ssl_new            (struct _CamelSession *session,
                                                             const gchar *expected_host,
                                                             guint32 flags);

Since the SSL certificate authenticator may need to prompt the user, a CamelSession is needed. `expected_host` is needed as a protection against an MITM attack.

`session` : | an active CamelSession object
`expected_host` : | host that the stream is expected to connect with
`flags` : | a bitwise combination of any of CAMEL_TCP_STREAM_SSL_ENABLE_SSL2, CAMEL_TCP_STREAM_SSL_ENABLE_SSL3 or CAMEL_TCP_STREAM_SSL_ENABLE_TLS
Returns : | a new CamelTcpStreamSSL stream preset in SSL mode

### camel_tcp_stream_ssl_new_raw ()

    CamelStream *       camel_tcp_stream_ssl_new_raw        (struct _CamelSession *session,
                                                             const gchar *expected_host,
                                                             guint32 flags);

Since the SSL certificate authenticator may need to prompt the user, a CamelSession is needed. `expected_host` is needed as a protection against an MITM attack.

`session` : | an active CamelSession object
`expected_host` : | host that the stream is expected to connect with
`flags` : | a bitwise combination of any of CAMEL_TCP_STREAM_SSL_ENABLE_SSL2, CAMEL_TCP_STREAM_SSL_ENABLE_SSL3 or CAMEL_TCP_STREAM_SSL_ENABLE_TLS
Returns : | a new CamelTcpStreamSSL stream not yet toggled into SSL mode

### camel_tcp_stream_ssl_enable_ssl ()

    gint                camel_tcp_stream_ssl_enable_ssl     (CamelTcpStreamSSL *ssl);

Toggles an ssl-capable stream into ssl mode (if it isn't already).

`ssl` : | a CamelTcpStreamSSL object
Returns : | `0` on success or `-1` on fail

### camel_tcp_stream_ssl_sockfd ()

    PRFileDesc *        camel_tcp_stream_ssl_sockfd         (CamelTcpStreamSSL *stream);

FIXME Document me!

`stream` : | a CamelTcpStreamSSL
Returns : |

Since 2.30