20#define CRYPT_PATH_PRIVATE
45 new_hop->
next = (*head_ptr);
48 (*head_ptr)->
prev = new_hop;
51 new_hop->
prev = new_hop->
next = new_hop;
66 hop->magic = CRYPT_PATH_MAGIC;
67 hop->
state = CPATH_STATE_CLOSED;
89 if (cp->
state == CPATH_STATE_AWAITING_KEYS) {
91 }
else if (cp->
state == CPATH_STATE_OPEN) {
97 }
while (cp != start);
112 case CPATH_STATE_OPEN:
115 case CPATH_STATE_CLOSED:
119 case CPATH_STATE_AWAITING_KEYS:
149 const char *key_data,
size_t key_data_len,
150 int reverse,
int is_hs_v3)
193 return cpath->pvt_crypto.b_digest;
231 if (hop->
state != CPATH_STATE_OPEN)
234 }
while (hop != cpath);
244 unsigned int n_hops = 0;
255 }
while (tmp != *head_ptr);
Fixed-size cell structure.
Header file for circuitbuild.c.
int32_t circuit_initial_package_window(void)
Header file for circuitlist.c.
Public APIs for congestion control.
#define congestion_control_free(cc)
crypt_path_t * cpath_get_next_non_open_hop(crypt_path_t *cpath)
int cpath_append_hop(crypt_path_t **head_ptr, extend_info_t *choice)
struct crypto_digest_t * cpath_get_incoming_digest(const crypt_path_t *cpath)
void cpath_assert_layer_ok(const crypt_path_t *cp)
int cpath_init_circuit_crypto(crypt_path_t *cpath, const char *key_data, size_t key_data_len, int reverse, int is_hs_v3)
void cpath_crypt_cell(const crypt_path_t *cpath, uint8_t *payload, bool is_decrypt)
void cpath_assert_ok(const crypt_path_t *cp)
void cpath_sendme_record_cell_digest(crypt_path_t *cpath, bool is_foward_digest)
void cpath_extend_linked_list(crypt_path_t **head_ptr, crypt_path_t *new_hop)
uint8_t * cpath_get_sendme_digest(crypt_path_t *cpath)
void cpath_set_cell_forward_digest(crypt_path_t *cpath, cell_t *cell)
void cpath_free(crypt_path_t *victim)
Header file for crypt_path.c.
Path structures for origin circuits.
void memwipe(void *mem, uint8_t byte, size_t sz)
Common functions for cryptographic routines.
extend_info_t * extend_info_dup(extend_info_t *info)
Header for core/or/extendinfo.c.
#define log_fn(severity, domain, args,...)
void onion_handshake_state_release(onion_handshake_state_t *state)
Header file for onion_crypto.c.
Master header file for Tor-specific functionality.
Header for relay_crypto.c.
uint8_t * relay_crypto_get_sendme_digest(relay_crypto_t *crypto)
void relay_crypto_assert_ok(const relay_crypto_t *crypto)
int relay_crypto_init(relay_crypto_t *crypto, const char *key_data, size_t key_data_len, int reverse, int is_hs_v3)
void relay_crypto_record_sendme_digest(relay_crypto_t *crypto, bool is_foward_digest)
void relay_set_digest(crypto_digest_t *digest, cell_t *cell)
void relay_crypto_clear(relay_crypto_t *crypto)
void relay_crypt_one_payload(crypto_cipher_t *cipher, uint8_t *in)
struct crypt_path_t * prev
struct crypt_path_t * next
struct crypto_dh_t * rend_dh_handshake_state
extend_info_t * extend_info
onion_handshake_state_t handshake_state
struct congestion_control_t * ccontrol