#include "or.h"
Functions | |
int | rend_mid_establish_intro (or_circuit_t *circ, const char *request, size_t request_len) |
int | rend_mid_introduce (or_circuit_t *circ, const char *request, size_t request_len) |
int | rend_mid_establish_rendezvous (or_circuit_t *circ, const char *request, size_t request_len) |
int | rend_mid_rendezvous (or_circuit_t *circ, const char *request, size_t request_len) |
int rend_mid_establish_intro | ( | or_circuit_t * | circ, | |
const char * | request, | |||
size_t | request_len | |||
) |
Respond to an ESTABLISH_INTRO cell by checking the signed data and setting the circuit's purpose and service pk digest.
References or_circuit_t::_base, base32_encode(), circuit_get_intro_point(), CIRCUIT_PURPOSE_INTRO_POINT, CIRCUIT_PURPOSE_OR, crypto_digest(), crypto_free_pk_env(), crypto_pk_asn1_decode(), crypto_pk_get_digest(), crypto_pk_public_checksig_digest(), DIGEST_LEN, get_uint16(), or_circuit_t::handshake_digest, LD_BUG, LD_GENERAL, LD_PROTOCOL, LD_REND, circuit_t::n_conn, note_crypto_pk_op(), or_circuit_t::p_circ_id, circuit_t::purpose, relay_send_command_from_edge(), REND_SERVICE_ID_LEN, REND_SERVICE_ID_LEN_BASE32, or_circuit_t::rend_token, safe_str(), and TO_CIRCUIT.
Referenced by rend_process_relay_cell().
int rend_mid_establish_rendezvous | ( | or_circuit_t * | circ, | |
const char * | request, | |||
size_t | request_len | |||
) |
Process an ESTABLISH_RENDEZVOUS cell by setting the circuit's purpose and rendezvous cookie.
References or_circuit_t::_base, base16_encode(), circuit_get_rendezvous(), CIRCUIT_PURPOSE_OR, CIRCUIT_PURPOSE_REND_POINT_WAITING, LD_PROTOCOL, LD_REND, circuit_t::n_conn, or_circuit_t::p_circ_id, circuit_t::purpose, relay_send_command_from_edge(), REND_COOKIE_LEN, or_circuit_t::rend_token, and TO_CIRCUIT.
Referenced by rend_process_relay_cell().
int rend_mid_introduce | ( | or_circuit_t * | circ, | |
const char * | request, | |||
size_t | request_len | |||
) |
Process an INTRODUCE1 cell by finding the corresponding introduction circuit, and relaying the body of the INTRODUCE1 cell inside an INTRODUCE2 cell.
References or_circuit_t::_base, base32_encode(), CIPHER_KEY_LEN, circuit_get_intro_point(), CIRCUIT_PURPOSE_OR, DIGEST_LEN, LD_GENERAL, LD_PROTOCOL, LD_REND, MAX_NICKNAME_LEN, circuit_t::n_conn, or_circuit_t::p_circ_id, PKCS1_OAEP_PADDING_OVERHEAD, circuit_t::purpose, relay_send_command_from_edge(), REND_COOKIE_LEN, REND_SERVICE_ID_LEN, REND_SERVICE_ID_LEN_BASE32, safe_str(), and TO_CIRCUIT.
Referenced by rend_process_relay_cell().
int rend_mid_rendezvous | ( | or_circuit_t * | circ, | |
const char * | request, | |||
size_t | request_len | |||
) |
Process a RENDEZVOUS1 cell by looking up the correct rendezvous circuit by its relaying the cell's body in a RENDEZVOUS2 cell, and connecting the two circuits.
References or_circuit_t::_base, base16_encode(), circuit_get_rendezvous(), CIRCUIT_PURPOSE_OR, CIRCUIT_PURPOSE_REND_ESTABLISHED, DIGEST_LEN, LD_GENERAL, LD_PROTOCOL, LD_REND, circuit_t::n_conn, or_circuit_t::p_circ_id, circuit_t::purpose, relay_send_command_from_edge(), REND_COOKIE_LEN, or_circuit_t::rend_splice, or_circuit_t::rend_token, and TO_CIRCUIT.
Referenced by rend_process_relay_cell().