relay_crypto.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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-2019, The Tor Project, Inc. */
  5. /* See LICENSE for licensing information */
  6. /**
  7. * \file relay.h
  8. * \brief Header file for relay.c.
  9. **/
  10. #ifndef TOR_RELAY_CRYPTO_H
  11. #define TOR_RELAY_CRYPTO_H
  12. int relay_crypto_init(relay_crypto_t *crypto,
  13. const char *key_data, size_t key_data_len,
  14. int reverse, int is_hs_v3);
  15. int relay_decrypt_cell(circuit_t *circ, cell_t *cell,
  16. cell_direction_t cell_direction,
  17. crypt_path_t **layer_hint, char *recognized);
  18. void relay_encrypt_cell_outbound(cell_t *cell, origin_circuit_t *or_circ,
  19. crypt_path_t *layer_hint);
  20. void relay_encrypt_cell_inbound(cell_t *cell, or_circuit_t *or_circ);
  21. void relay_crypto_clear(relay_crypto_t *crypto);
  22. void relay_crypto_assert_ok(const relay_crypto_t *crypto);
  23. uint8_t *relay_crypto_get_sendme_digest(relay_crypto_t *crypto);
  24. void relay_crypto_record_sendme_digest(relay_crypto_t *crypto,
  25. bool is_foward_digest);
  26. void
  27. relay_crypt_one_payload(crypto_cipher_t *cipher, uint8_t *in);
  28. void
  29. relay_set_digest(crypto_digest_t *digest, cell_t *cell);
  30. #endif /* !defined(TOR_RELAY_CRYPTO_H) */