## CamelTcpStreamSSL CamelTcpStreamSSL |

## Synopsis

    struct              CamelTcpStreamSSL;
    enum                CamelTcpStreamSSLFlags;
    CamelStream *       camel_tcp_stream_ssl_new            (CamelSession *session,
                                                             const gchar *expected_host,
                                                             CamelTcpStreamSSLFlags flags);
    CamelStream *       camel_tcp_stream_ssl_new_raw        (CamelSession *session,
                                                             const gchar *expected_host,
                                                             CamelTcpStreamSSLFlags flags);
    gint                camel_tcp_stream_ssl_enable_ssl     (CamelTcpStreamSSL *ssl,
                                                             GCancellable *cancellable,
                                                             GError **error);

## Description

## Details

### struct CamelTcpStreamSSL

    struct CamelTcpStreamSSL {
    	CamelTcpStreamRaw parent_object;
    	CamelTcpStreamSSLPrivate *priv;
    };

### enum CamelTcpStreamSSLFlags

    typedef enum {
     /*< flags >*/
    	CAMEL_TCP_STREAM_SSL_ENABLE_SSL2 = 1 << 0,
    	CAMEL_TCP_STREAM_SSL_ENABLE_SSL3 = 1 << 1,
    	CAMEL_TCP_STREAM_SSL_ENABLE_TLS  = 1 << 2
    } CamelTcpStreamSSLFlags;

`CAMEL_TCP_STREAM_SSL_ENABLE_SSL2` |
`CAMEL_TCP_STREAM_SSL_ENABLE_SSL3` |
`CAMEL_TCP_STREAM_SSL_ENABLE_TLS` |

### camel_tcp_stream_ssl_new ()

    CamelStream *       camel_tcp_stream_ssl_new            (CamelSession *session,
                                                             const gchar *expected_host,
                                                             CamelTcpStreamSSLFlags 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 CamelTcpStreamSSLFlags
Returns : | a new CamelTcpStreamSSL stream preset in SSL mode

### camel_tcp_stream_ssl_new_raw ()

    CamelStream *       camel_tcp_stream_ssl_new_raw        (CamelSession *session,
                                                             const gchar *expected_host,
                                                             CamelTcpStreamSSLFlags 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 CamelTcpStreamSSLFlags
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,
                                                             GCancellable *cancellable,
                                                             GError **error);

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

`ssl` : | a CamelTcpStreamSSL object
`cancellable` : | optional GCancellable object, or `NULL`
`error` : | return location for a GError, or `NULL`
Returns : | `0` on success or `-1` on fail