mirror of https://github.com/nucypher/nucypher.git
commit
8e61f19c55
|
@ -368,7 +368,8 @@ class Bob(Character):
|
|||
|
||||
|
||||
class Ursula(Character, VerifiableNode, Miner):
|
||||
_internal_splitter = BytestringSplitter(Signature,
|
||||
_internal_splitter = BytestringSplitter((int, 4, {'byteorder': 'big'}),
|
||||
Signature,
|
||||
VariableLengthBytestring,
|
||||
(UmbralPublicKey, PUBLIC_KEY_LENGTH),
|
||||
(UmbralPublicKey, PUBLIC_KEY_LENGTH),
|
||||
|
@ -558,7 +559,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 +596,8 @@ class Ursula(Character, VerifiableNode, Miner):
|
|||
federated_only: bool = False,
|
||||
) -> 'Ursula':
|
||||
|
||||
(signature,
|
||||
(timestamp,
|
||||
signature,
|
||||
identity_evidence,
|
||||
verifying_key,
|
||||
encrypting_key,
|
||||
|
@ -623,7 +628,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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
import pytest
|
||||
from nucypher.characters.lawful import Ursula
|
||||
|
||||
|
||||
@pytest.mark.skip("To be implemented.")
|
||||
def test_serialize_ursula(ursulas):
|
||||
assert False
|
||||
def test_serialize_ursula(federated_ursulas):
|
||||
ursula = federated_ursulas.pop()
|
||||
ursula_as_bytes = bytes(ursula)
|
||||
ursula_object = Ursula.from_bytes(ursula_as_bytes, federated_only=True)
|
||||
assert ursula == ursula_object
|
||||
|
|
Loading…
Reference in New Issue