Hiding crypt_path_t: Move some more init funcs in crypt_path.c.

Everything is moved, but the argument of the function is edited to access
->private->crypto.
This commit is contained in:
George Kadianakis 2019-04-08 15:32:23 +03:00
parent 0c5176d00c
commit 5f96b7abcc
4 changed files with 34 additions and 31 deletions

View File

@ -1360,34 +1360,6 @@ circuit_extend(cell_t *cell, circuit_t *circ)
return 0;
}
/** Initialize cpath-\>{f|b}_{crypto|digest} from the key material in key_data.
*
* If <b>is_hs_v3</b> is set, this cpath will be used for next gen hidden
* service circuits and <b>key_data</b> must be at least
* HS_NTOR_KEY_EXPANSION_KDF_OUT_LEN bytes in length.
*
* If <b>is_hs_v3</b> is not set, key_data must contain CPATH_KEY_MATERIAL_LEN
* bytes, which are used as follows:
* - 20 to initialize f_digest
* - 20 to initialize b_digest
* - 16 to key f_crypto
* - 16 to key b_crypto
*
* (If 'reverse' is true, then f_XX and b_XX are swapped.)
*
* Return 0 if init was successful, else -1 if it failed.
*/
int
circuit_init_cpath_crypto(crypt_path_t *cpath,
const char *key_data, size_t key_data_len,
int reverse, int is_hs_v3)
{
tor_assert(cpath);
return relay_crypto_init(&cpath->crypto, key_data, key_data_len, reverse,
is_hs_v3);
}
/** A "created" cell <b>reply</b> came back to us on circuit <b>circ</b>.
* (The body of <b>reply</b> varies depending on what sort of handshake
* this is.)

View File

@ -34,9 +34,6 @@ int circuit_timeout_want_to_count_circ(const origin_circuit_t *circ);
int circuit_send_next_onion_skin(origin_circuit_t *circ);
void circuit_note_clock_jumped(int64_t seconds_elapsed, bool was_idle);
int circuit_extend(cell_t *cell, circuit_t *circ);
int circuit_init_cpath_crypto(crypt_path_t *cpath,
const char *key_data, size_t key_data_len,
int reverse, int is_hs_v3);
struct created_cell_t;
int circuit_finish_handshake(origin_circuit_t *circ,
const struct created_cell_t *created_cell);

View File

@ -114,6 +114,36 @@ assert_cpath_layer_ok(const crypt_path_t *cp)
tor_assert(cp->deliver_window >= 0);
}
/** Initialize cpath-\>{f|b}_{crypto|digest} from the key material in key_data.
*
* If <b>is_hs_v3</b> is set, this cpath will be used for next gen hidden
* service circuits and <b>key_data</b> must be at least
* HS_NTOR_KEY_EXPANSION_KDF_OUT_LEN bytes in length.
*
* If <b>is_hs_v3</b> is not set, key_data must contain CPATH_KEY_MATERIAL_LEN
* bytes, which are used as follows:
* - 20 to initialize f_digest
* - 20 to initialize b_digest
* - 16 to key f_crypto
* - 16 to key b_crypto
*
* (If 'reverse' is true, then f_XX and b_XX are swapped.)
*
* Return 0 if init was successful, else -1 if it failed.
*/
int
circuit_init_cpath_crypto(crypt_path_t *cpath,
const char *key_data, size_t key_data_len,
int reverse, int is_hs_v3)
{
tor_assert(cpath);
return relay_crypto_init(&cpath->private->crypto, key_data, key_data_len, reverse,
is_hs_v3);
}
/********************** cpath crypto API *******************************/
/** Encrypt or decrypt <b>payload</b> using the crypto of <b>cpath</b>. Actual

View File

@ -12,6 +12,10 @@ void assert_cpath_ok(const crypt_path_t *cp);
/* rename */
int onion_append_hop(crypt_path_t **head_ptr, extend_info_t *choice);
int circuit_init_cpath_crypto(crypt_path_t *cpath,
const char *key_data, size_t key_data_len,
int reverse, int is_hs_v3);
/* rename */
void onion_append_to_cpath(crypt_path_t **head_ptr, crypt_path_t *new_hop);