From f2f8a8bece52ade30f2e667110a01a90757a5dc4 Mon Sep 17 00:00:00 2001 From: tuxxy Date: Fri, 14 Sep 2018 13:34:43 -0600 Subject: [PATCH] Add timestamp to Ursula for serialization Add timestamp to deserialized vars in verify_node Add timestamp when deserializing from batch --- nucypher/characters/lawful.py | 11 ++++++++--- nucypher/network/nodes.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/nucypher/characters/lawful.py b/nucypher/characters/lawful.py index 16ef63cb9..947ceb5af 100644 --- a/nucypher/characters/lawful.py +++ b/nucypher/characters/lawful.py @@ -558,7 +558,10 @@ class Ursula(Character, VerifiableNode, Miner): certificate = self.rest_server_certificate() cert_vbytes = VariableLengthBytestring(certificate.public_bytes(Encoding.PEM)) - as_bytes = bytes().join((bytes(self._interface_signature), + timestamp = maya.now().epoch.to_bytes(4, 'big') + + as_bytes = bytes().join((timestamp, + bytes(self._interface_signature), bytes(identity_evidence), bytes(self.public_keys(SigningPower)), bytes(self.public_keys(EncryptingPower)), @@ -592,7 +595,8 @@ class Ursula(Character, VerifiableNode, Miner): federated_only: bool = False, ) -> 'Ursula': - (signature, + (timestamp, + signature, identity_evidence, verifying_key, encrypting_key, @@ -623,7 +627,8 @@ class Ursula(Character, VerifiableNode, Miner): stranger_ursulas = [] ursulas_attrs = cls._internal_splitter.repeat(ursulas_as_bytes) - for (signature, + for (timestamp, + signature, identity_evidence, verifying_key, encrypting_key, diff --git a/nucypher/network/nodes.py b/nucypher/network/nodes.py index 82a068ef9..b32b45e8c 100644 --- a/nucypher/network/nodes.py +++ b/nucypher/network/nodes.py @@ -117,7 +117,7 @@ class VerifiableNode: port=self.rest_information()[0].port) if not response.status_code == 200: raise RuntimeError("Or something.") # TODO: Raise an error here? Or return False? Or something? - signature, identity_evidence, verifying_key, encrypting_key, public_address, certificate_vbytes, rest_info = self._internal_splitter(response.content) + timestamp, signature, identity_evidence, verifying_key, encrypting_key, public_address, certificate_vbytes, rest_info = self._internal_splitter(response.content) verifying_keys_match = verifying_key == self.public_keys(SigningPower) encrypting_keys_match = encrypting_key == self.public_keys(EncryptingPower)