12#ifndef TOR_CORE_CRYPTO_ONION_NTOR_V3_H
13#define TOR_CORE_CRYPTO_ONION_NTOR_V3_H
34#define ntor3_handshake_state_free(ptr) \
35 FREE_AND_NULL(ntor3_handshake_state_t, ntor3_handshake_state_free_, (ptr))
37#define ntor3_server_handshake_state_free(ptr) \
38 FREE_AND_NULL(ntor3_server_handshake_state_t, \
39 ntor3_server_handshake_state_free_, (ptr))
43 const uint8_t *verification,
44 const size_t verification_len,
45 const uint8_t *message,
46 const size_t message_len,
48 uint8_t **onion_skin_out,
49 size_t *onion_skin_len_out);
53 const uint8_t *handshake_reply,
55 const uint8_t *verification,
56 size_t verification_len,
59 uint8_t **message_out,
60 size_t *message_len_out);
67 const uint8_t *client_handshake,
68 size_t client_handshake_len,
69 const uint8_t *verification,
70 size_t verification_len,
71 uint8_t **client_message_out,
72 size_t *client_message_len_out,
77 const uint8_t *verification,
78 size_t verification_len,
79 const uint8_t *server_message,
80 size_t server_message_len,
81 uint8_t **handshake_out,
82 size_t *handshake_len_out,
86#ifdef ONION_NTOR_V3_PRIVATE
118 const uint8_t *verification,
119 const size_t verification_len,
120 const uint8_t *message,
121 const size_t message_len,
123 uint8_t **onion_skin_out,
124 size_t *onion_skin_len_out);
129 const uint8_t *verification,
130 size_t verification_len,
131 const uint8_t *server_message,
132 size_t server_message_len,
133 uint8_t **handshake_out,
134 size_t *handshake_len_out,
136 size_t keys_out_len);
Headers for crypto_cipher.c.
Header for crypto_curve25519.c.
Header for crypto_ed25519.c.
Headers for util_malloc.c.
STATIC int onion_skin_ntor3_create_nokeygen(const curve25519_keypair_t *client_keypair, const ed25519_public_key_t *relay_id, const curve25519_public_key_t *relay_key, const uint8_t *verification, const size_t verification_len, const uint8_t *message, const size_t message_len, ntor3_handshake_state_t **handshake_state_out, uint8_t **onion_skin_out, size_t *onion_skin_len_out)
int onion_skin_ntor3_server_handshake_part1(const di_digest256_map_t *private_keys, const curve25519_keypair_t *junk_key, const ed25519_public_key_t *my_id, const uint8_t *client_handshake, size_t client_handshake_len, const uint8_t *verification, size_t verification_len, uint8_t **client_message_out, size_t *client_message_len_out, ntor3_server_handshake_state_t **state_out)
STATIC int onion_skin_ntor3_server_handshake_part2_nokeygen(const curve25519_keypair_t *relay_keypair_y, const ntor3_server_handshake_state_t *state, const uint8_t *verification, size_t verification_len, const uint8_t *server_message, size_t server_message_len, uint8_t **handshake_out, size_t *handshake_len_out, uint8_t *keys_out, size_t keys_out_len)
int onion_ntor3_client_handshake(const ntor3_handshake_state_t *handshake_state, const uint8_t *handshake_reply, size_t reply_len, const uint8_t *verification, size_t verification_len, uint8_t *keys_out, size_t keys_out_len, uint8_t **message_out, size_t *message_len_out)
struct ntor3_handshake_state_t ntor3_handshake_state_t
int onion_skin_ntor3_create(const ed25519_public_key_t *relay_id, const curve25519_public_key_t *relay_key, const uint8_t *verification, const size_t verification_len, const uint8_t *message, const size_t message_len, ntor3_handshake_state_t **handshake_state_out, uint8_t **onion_skin_out, size_t *onion_skin_len_out)
struct ntor3_server_handshake_state_t ntor3_server_handshake_state_t
void ntor3_handshake_state_free_(ntor3_handshake_state_t *st)
int onion_skin_ntor3_server_handshake_part2(const ntor3_server_handshake_state_t *state, const uint8_t *verification, size_t verification_len, const uint8_t *server_message, size_t server_message_len, uint8_t **handshake_out, size_t *handshake_len_out, uint8_t *keys_out, size_t keys_out_len)
void ntor3_server_handshake_state_free_(ntor3_server_handshake_state_t *st)
Macros to implement mocking and selective exposure for the test code.
Integer definitions used throughout Tor.
#define CURVE25519_OUTPUT_LEN