1 /* * Copyright (c) 2012-2017, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
6 * \brief Header file for channeltls.c
9 #ifndef TOR_CHANNELTLS_H
10 #define TOR_CHANNELTLS_H
15 #define BASE_CHAN_TO_TLS(c) (channel_tls_from_base((c)))
16 #define TLS_CHAN_TO_BASE(c) (channel_tls_to_base((c)))
18 #define TLS_CHAN_MAGIC 0x8a192427U
20 #ifdef TOR_CHANNEL_INTERNAL_
22 struct channel_tls_s
{
23 /* Base channel_t struct */
25 /* or_connection_t pointer */
26 or_connection_t
*conn
;
29 #endif /* defined(TOR_CHANNEL_INTERNAL_) */
31 channel_t
* channel_tls_connect(const tor_addr_t
*addr
, uint16_t port
,
32 const char *id_digest
,
33 const ed25519_public_key_t
*ed_id
);
34 channel_listener_t
* channel_tls_get_listener(void);
35 channel_listener_t
* channel_tls_start_listener(void);
36 channel_t
* channel_tls_handle_incoming(or_connection_t
*orconn
);
40 channel_t
* channel_tls_to_base(channel_tls_t
*tlschan
);
41 channel_tls_t
* channel_tls_from_base(channel_t
*chan
);
43 /* Things for connection_or.c to call back into */
44 void channel_tls_handle_cell(cell_t
*cell
, or_connection_t
*conn
);
45 void channel_tls_handle_state_change_on_orconn(channel_tls_t
*chan
,
46 or_connection_t
*conn
,
49 void channel_tls_handle_var_cell(var_cell_t
*var_cell
,
50 or_connection_t
*conn
);
51 void channel_tls_update_marks(or_connection_t
*conn
);
53 /* Cleanup at shutdown */
54 void channel_tls_free_all(void);
56 extern uint64_t stats_n_authorize_cells_processed
;
57 extern uint64_t stats_n_authenticate_cells_processed
;
58 extern uint64_t stats_n_versions_cells_processed
;
59 extern uint64_t stats_n_netinfo_cells_processed
;
60 extern uint64_t stats_n_vpadding_cells_processed
;
61 extern uint64_t stats_n_certs_cells_processed
;
62 extern uint64_t stats_n_auth_challenge_cells_processed
;
64 #ifdef CHANNELTLS_PRIVATE
65 STATIC
void channel_tls_process_certs_cell(var_cell_t
*cell
,
66 channel_tls_t
*tlschan
);
67 STATIC
void channel_tls_process_auth_challenge_cell(var_cell_t
*cell
,
68 channel_tls_t
*tlschan
);
69 STATIC
void channel_tls_common_init(channel_tls_t
*tlschan
);
70 STATIC
void channel_tls_process_authenticate_cell(var_cell_t
*cell
,
71 channel_tls_t
*tlschan
);
72 #endif /* defined(CHANNELTLS_PRIVATE) */
74 #endif /* !defined(TOR_CHANNELTLS_H) */