[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [stem/master] Use minimum valid circuit id by default for CREATE_FAST



commit 6a4f46614043e8423c8a45a203acf6ffcf736952
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date:   Fri Jan 26 12:23:19 2018 -0800

    Use minimum valid circuit id by default for CREATE_FAST
    
    To work a CREATE_FAST cell must specify a circuit id. Endosome picks one based
    on the link version with a similar comment to the one we're including here.
    Endosome also has an 'is_initiator' flag which I'm omitting right now since I
    suspect that's only relevant if we attempt to implement *being* a relay which
    isn't in the cards right now.
---
 stem/client/cell.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/stem/client/cell.py b/stem/client/cell.py
index a0737765..4062edcf 100644
--- a/stem/client/cell.py
+++ b/stem/client/cell.py
@@ -394,7 +394,7 @@ class CreateFastCell(CircuitCell):
     self.key_material = key_material
 
   @classmethod
-  def pack(cls, link_version, circ_id, key_material = None):
+  def pack(cls, link_version, circ_id = None, key_material = None):
     """
     Provides a randomized circuit construction payload.
 
@@ -405,6 +405,12 @@ class CreateFastCell(CircuitCell):
     :returns: **bytes** with our randomized key material
     """
 
+    if circ_id is None:
+      # When initiating a circuit the v4 link protocol requires us to set the
+      # most significant bit. Otherwise any id will do.
+
+      circ_id = 0x80000000 if link_version >= 4 else 0x01
+
     if key_material and len(key_material) != HASH_LEN:
       raise ValueError('Key material should be %i bytes, but was %i' % (HASH_LEN, len(key_material)))
 



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits