]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
sendme: Add helper to note the cell digest
authorDavid Goulet <dgoulet@torproject.org>
Wed, 24 Apr 2019 15:57:20 +0000 (11:57 -0400)
committerDavid Goulet <dgoulet@torproject.org>
Mon, 29 Apr 2019 16:17:57 +0000 (12:17 -0400)
Signed-off-by: David Goulet <dgoulet@torproject.org>
src/core/or/sendme.c
src/core/or/sendme.h

index c66e947bc441863800947230f042bff4ebd7fa0d..b384a19164b639708389b099a8853810aef8a4f0 100644 (file)
@@ -286,10 +286,37 @@ send_circuit_level_sendme(circuit_t *circ, crypt_path_t *layer_hint,
   return 0;
 }
 
+/* Put the crypto.b_digest in the sendme_digest. */
+static void
+note_cell_digest(const relay_crypto_t *crypto)
+{
+  tor_assert(crypto);
+  crypto_digest_get_digest(crypto->b_digest, (char *) crypto->sendme_digest,
+                           sizeof(crypto->sendme_digest));
+}
+
 /*
  * Public API
  */
 
+/** Keep the current inbound cell digest for the next SENDME digest. This part
+ * is only done by the client as the circuit came back from the Exit. */
+void
+sendme_circuit_note_outbound_cell(or_circuit_t *or_circ)
+{
+  tor_assert(or_circ);
+  note_cell_digest(&or_circ->crypto);
+}
+
+/** Keep the current inbound cell digest for the next SENDME digest. This part
+ * is only done by the client as the circuit came back from the Exit. */
+void
+sendme_circuit_note_inbound_cell(crypt_path_t *cpath)
+{
+  tor_assert(cpath);
+  note_cell_digest(&cpath->crypto);
+}
+
 /** Return true iff the next cell for the given cell window is expected to be
  * a SENDME.
  *
index 0965b5b22a304f6a27a1d4f479d53858d2275ff3..5889b41e9cf26f7afe0d6e3c65313a929e6278cd 100644 (file)
@@ -36,6 +36,8 @@ int sendme_note_stream_data_packaged(edge_connection_t *conn);
 
 /* Track cell digest. */
 void sendme_note_cell_digest(circuit_t *circ);
+void sendme_circuit_note_inbound_cell(crypt_path_t *cpath);
+void sendme_circuit_note_outbound_cell(or_circuit_t *or_circ);
 
 /* Circuit level information. */
 bool sendme_circuit_is_next_cell(int window);