1 /* Copyright (c) 2001 Matej Pfajfar.
2 * Copyright (c) 2001-2004, Roger Dingledine.
3 * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
4 * Copyright (c) 2007-2021, The Tor Project, Inc. */
5 /* See LICENSE for licensing information */
9 * \brief Header file for relay.c.
12 #ifndef TOR_RELAY_CRYPTO_H
13 #define TOR_RELAY_CRYPTO_H
15 int relay_crypto_init(relay_crypto_t
*crypto
,
16 const char *key_data
, size_t key_data_len
,
17 int reverse
, int is_hs_v3
);
19 int relay_decrypt_cell(circuit_t
*circ
, cell_t
*cell
,
20 cell_direction_t cell_direction
,
21 crypt_path_t
**layer_hint
, char *recognized
);
22 void relay_encrypt_cell_outbound(cell_t
*cell
, origin_circuit_t
*or_circ
,
23 crypt_path_t
*layer_hint
);
24 void relay_encrypt_cell_inbound(cell_t
*cell
, or_circuit_t
*or_circ
);
26 void relay_crypto_clear(relay_crypto_t
*crypto
);
28 void relay_crypto_assert_ok(const relay_crypto_t
*crypto
);
30 uint8_t *relay_crypto_get_sendme_digest(relay_crypto_t
*crypto
);
32 void relay_crypto_record_sendme_digest(relay_crypto_t
*crypto
,
33 bool is_foward_digest
);
36 relay_crypt_one_payload(crypto_cipher_t
*cipher
, uint8_t *in
);
39 relay_set_digest(crypto_digest_t
*digest
, cell_t
*cell
);
41 #endif /* !defined(TOR_RELAY_CRYPTO_H) */