Fixed race condition when timed-out link receives a late establishment proof a few milliseconds after it has timed out

This commit is contained in:
Mark Qvist 2023-06-02 21:24:49 +02:00
parent a8a7af4b74
commit 4f78973751

View File

@ -225,15 +225,18 @@ class Link:
self.hash = self.link_id self.hash = self.link_id
def handshake(self): def handshake(self):
self.status = Link.HANDSHAKE if self.status == Link.PENDING and self.prv != None:
self.shared_key = self.prv.exchange(self.peer_pub) self.status = Link.HANDSHAKE
self.shared_key = self.prv.exchange(self.peer_pub)
self.derived_key = RNS.Cryptography.hkdf( self.derived_key = RNS.Cryptography.hkdf(
length=32, length=32,
derive_from=self.shared_key, derive_from=self.shared_key,
salt=self.get_salt(), salt=self.get_salt(),
context=self.get_context(), context=self.get_context(),
) )
else:
RNS.log("Handshake attempt on "+str(self)+" with invalid state "+str(self.status), RNS.LOG_ERROR)
def prove(self): def prove(self):