tor  master
channeltls.h
Go to the documentation of this file.
1 /* * Copyright (c) 2012-2017, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
3 
9 #ifndef TOR_CHANNELTLS_H
10 #define TOR_CHANNELTLS_H
11 
12 #include "or.h"
13 #include "channel.h"
14 
15 #define BASE_CHAN_TO_TLS(c) (channel_tls_from_base((c)))
16 #define TLS_CHAN_TO_BASE(c) (channel_tls_to_base((c)))
17 
18 #define TLS_CHAN_MAGIC 0x8a192427U
19 
20 #ifdef TOR_CHANNEL_INTERNAL_
21 
22 struct channel_tls_s {
23  /* Base channel_t struct */
24  channel_t base_;
25  /* or_connection_t pointer */
26  or_connection_t *conn;
27 };
28 
29 #endif /* defined(TOR_CHANNEL_INTERNAL_) */
30 
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);
37 
38 /* Casts */
39 
40 channel_t * channel_tls_to_base(channel_tls_t *tlschan);
41 channel_tls_t * channel_tls_from_base(channel_t *chan);
42 
43 /* Things for connection_or.c to call back into */
45 void channel_tls_handle_state_change_on_orconn(channel_tls_t *chan,
46  or_connection_t *conn,
47  uint8_t old_state,
48  uint8_t state);
50  or_connection_t *conn);
52 
53 /* Cleanup at shutdown */
54 void channel_tls_free_all(void);
55 
56 extern uint64_t stats_n_authorize_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;
63 
64 #ifdef CHANNELTLS_PRIVATE
66  channel_tls_t *tlschan);
68  channel_tls_t *tlschan);
69 STATIC void channel_tls_common_init(channel_tls_t *tlschan);
71  channel_tls_t *tlschan);
72 #endif /* defined(CHANNELTLS_PRIVATE) */
73 
74 #endif /* !defined(TOR_CHANNELTLS_H) */
75 
channel_listener_t * channel_tls_get_listener(void)
Definition: channeltls.c:238
void channel_tls_handle_state_change_on_orconn(channel_tls_t *chan, or_connection_t *conn, uint8_t old_state, uint8_t state)
Definition: channeltls.c:937
void channel_tls_free_all(void)
Definition: channeltls.c:281
Definition: crypto_ed25519.h:23
Definition: or.h:1177
Definition: address.h:56
channel_t * channel_tls_handle_incoming(or_connection_t *orconn)
Definition: channeltls.c:313
STATIC void channel_tls_process_authenticate_cell(var_cell_t *cell, channel_tls_t *chan)
Definition: channeltls.c:2245
uint64_t stats_n_netinfo_cells_processed
Definition: channeltls.c:68
uint64_t stats_n_vpadding_cells_processed
Definition: channeltls.c:70
Header file for channel.c.
Master header file for Tor-specific functionality.
STATIC void channel_tls_process_auth_challenge_cell(var_cell_t *cell, channel_tls_t *chan)
Definition: channeltls.c:2144
channel_listener_t * channel_tls_start_listener(void)
Definition: channeltls.c:250
uint64_t stats_n_authorize_cells_processed
Definition: channeltls.c:78
channel_t * channel_tls_to_base(channel_tls_t *tlschan)
Definition: channeltls.c:355
channel_t * channel_tls_connect(const tor_addr_t *addr, uint16_t port, const char *id_digest, const ed25519_public_key_t *ed_id)
Definition: channeltls.c:175
void channel_tls_handle_cell(cell_t *cell, or_connection_t *conn)
Definition: channeltls.c:1033
uint64_t stats_n_auth_challenge_cells_processed
Definition: channeltls.c:74
STATIC void channel_tls_common_init(channel_tls_t *tlschan)
Definition: channeltls.c:135
Definition: channel.h:326
Definition: or.h:1185
STATIC void channel_tls_process_certs_cell(var_cell_t *cell, channel_tls_t *chan)
Definition: channeltls.c:1885
void channel_tls_update_marks(or_connection_t *conn)
Definition: channeltls.c:1323
uint64_t stats_n_authenticate_cells_processed
Definition: channeltls.c:76
Definition: or.h:1610
uint64_t stats_n_versions_cells_processed
Definition: channeltls.c:66
void channel_tls_handle_var_cell(var_cell_t *var_cell, or_connection_t *conn)
Definition: channeltls.c:1150
channel_tls_t * channel_tls_from_base(channel_t *chan)
Definition: channeltls.c:367
Definition: channel.h:41
uint64_t stats_n_certs_cells_processed
Definition: channeltls.c:72