Boss/Receive: add 'side' to got_message
this will be used later by Dilation
This commit is contained in:
		
							parent
							
								
									e260369be1
								
							
						
					
					
						commit
						a693b1fc48
					
				| 
						 | 
				
			
			@ -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", {})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user