Boss/Receive: add 'side' to got_message

this will be used later by Dilation
This commit is contained in:
Brian Warner 2018-06-30 13:56:32 -07:00
parent e260369be1
commit a693b1fc48
3 changed files with 22 additions and 20 deletions

View File

@ -252,11 +252,12 @@ class Boss(object):
def scared(self):
pass
def got_message(self, phase, plaintext):
def got_message(self, side, phase, plaintext):
# this is only called for side != ours
assert isinstance(phase, type("")), type(phase)
assert isinstance(plaintext, type(b"")), type(plaintext)
if phase == "version":
self._got_version(plaintext)
self._got_version(side, plaintext)
elif re.search(r'^\d+$', phase):
self._got_phase(int(phase), plaintext)
else:
@ -265,7 +266,7 @@ class Boss(object):
log.err(_UnknownPhaseError("received unknown phase '%s'" % phase))
@m.input()
def _got_version(self, plaintext):
def _got_version(self, side, plaintext):
pass
@m.input()
@ -290,9 +291,10 @@ class Boss(object):
self._W.got_code(code)
@m.output()
def process_version(self, plaintext):
def process_version(self, side, plaintext):
# most of this is wormhole-to-wormhole, ignored for now
# in the future, this is how Dilation is signalled
self._their_side = side
self._their_versions = bytes_to_dict(plaintext)
# but this part is app-to-app
app_versions = self._their_versions.get("app_versions", {})

View File

@ -53,10 +53,10 @@ class Receive(object):
except CryptoError:
self.got_message_bad()
return
self.got_message_good(phase, plaintext)
self.got_message_good(side, phase, plaintext)
@m.input()
def got_message_good(self, phase, plaintext):
def got_message_good(self, side, phase, plaintext):
pass
@m.input()
@ -73,23 +73,23 @@ class Receive(object):
self._key = key
@m.output()
def S_got_verified_key(self, phase, plaintext):
def S_got_verified_key(self, side, phase, plaintext):
assert self._key
self._S.got_verified_key(self._key)
@m.output()
def W_happy(self, phase, plaintext):
def W_happy(self, side, phase, plaintext):
self._B.happy()
@m.output()
def W_got_verifier(self, phase, plaintext):
def W_got_verifier(self, side, phase, plaintext):
self._B.got_verifier(derive_key(self._key, b"wormhole:verifier"))
@m.output()
def W_got_message(self, phase, plaintext):
def W_got_message(self, side, phase, plaintext):
assert isinstance(phase, type("")), type(phase)
assert isinstance(plaintext, type(b"")), type(plaintext)
self._B.got_message(phase, plaintext)
self._B.got_message(side, phase, plaintext)
@m.output()
def W_scared(self):

View File

@ -167,7 +167,7 @@ class Receive(unittest.TestCase):
("s.got_verified_key", key),
("b.happy", ),
("b.got_verifier", verifier),
("b.got_message", u"phase1", data1),
("b.got_message", u"side", u"phase1", data1),
])
phase2_key = derive_phase_key(key, u"side", u"phase2")
@ -178,8 +178,8 @@ class Receive(unittest.TestCase):
("s.got_verified_key", key),
("b.happy", ),
("b.got_verifier", verifier),
("b.got_message", u"phase1", data1),
("b.got_message", u"phase2", data2),
("b.got_message", u"side", u"phase1", data1),
("b.got_message", u"side", u"phase2", data2),
])
def test_early_bad(self):
@ -217,7 +217,7 @@ class Receive(unittest.TestCase):
("s.got_verified_key", key),
("b.happy", ),
("b.got_verifier", verifier),
("b.got_message", u"phase1", data1),
("b.got_message", u"side", u"phase1", data1),
])
phase2_key = derive_phase_key(key, u"side", u"bad")
@ -228,7 +228,7 @@ class Receive(unittest.TestCase):
("s.got_verified_key", key),
("b.happy", ),
("b.got_verifier", verifier),
("b.got_message", u"phase1", data1),
("b.got_message", u"side", u"phase1", data1),
("b.scared", ),
])
r.got_message(u"side", u"phase1", good_body)
@ -237,7 +237,7 @@ class Receive(unittest.TestCase):
("s.got_verified_key", key),
("b.happy", ),
("b.got_verifier", verifier),
("b.got_message", u"phase1", data1),
("b.got_message", u"side", u"phase1", data1),
("b.scared", ),
])
@ -1320,8 +1320,8 @@ class Boss(unittest.TestCase):
b.got_key(b"key")
b.happy()
b.got_verifier(b"verifier")
b.got_message("version", b"{}")
b.got_message("0", b"msg1")
b.got_message("side", "version", b"{}")
b.got_message("side", "0", b"msg1")
self.assertEqual(events, [
("w.got_key", b"key"),
("w.got_verifier", b"verifier"),
@ -1477,7 +1477,7 @@ class Boss(unittest.TestCase):
b.happy() # phase=version
b.got_message("unknown-phase", b"spooky")
b.got_message("side", "unknown-phase", b"spooky")
self.assertEqual(events, [])
self.flushLoggedErrors(errors._UnknownPhaseError)