mirror of https://github.com/nucypher/nucypher.git
Bob includes the encrypted KFrag in the WorkOrder, which we previously used in Ursula's side to get the Kfrag from the re-encryption request
parent
c4d2aa8ff1
commit
cdb825bdbc
|
@ -713,13 +713,14 @@ class Bob(Character):
|
|||
|
||||
# TODO: Bob crashes if he hasn't learned about this Ursula #999
|
||||
ursula = self.known_nodes[ursula_address]
|
||||
|
||||
encrypted_kfrag = bytes(treasure_map[ursula_address])
|
||||
if capsules_to_include:
|
||||
work_order = WorkOrder.construct_by_bob(arrangement_id=arrangement_id,
|
||||
alice_verifying=alice_verifying_key,
|
||||
capsules=capsules_to_include,
|
||||
ursula=ursula,
|
||||
bob=self)
|
||||
bob=self,
|
||||
encrypted_kfrag=encrypted_kfrag)
|
||||
incomplete_work_orders[ursula_address] = work_order
|
||||
else:
|
||||
self.log.debug(f"All of these Capsules already have WorkOrders for this node: {ursula_address}")
|
||||
|
|
|
@ -342,6 +342,7 @@ class WorkOrder:
|
|||
def __init__(self,
|
||||
bob: Bob,
|
||||
arrangement_id,
|
||||
encrypted_kfrag: bytes,
|
||||
alice_address: bytes,
|
||||
tasks: dict,
|
||||
receipt_signature,
|
||||
|
@ -371,7 +372,7 @@ class WorkOrder:
|
|||
return len(self.tasks)
|
||||
|
||||
@classmethod
|
||||
def construct_by_bob(cls, arrangement_id, alice_verifying, capsules, ursula, bob):
|
||||
def construct_by_bob(cls, arrangement_id, alice_verifying, capsules, ursula, bob, encrypted_kfrag):
|
||||
ursula.mature()
|
||||
alice_address = canonical_address_from_umbral_key(alice_verifying)
|
||||
|
||||
|
@ -394,10 +395,14 @@ class WorkOrder:
|
|||
receipt_bytes = cls.HEADER + bytes(ursula.stamp) + capsules
|
||||
receipt_signature = bob.stamp(receipt_bytes)
|
||||
|
||||
return cls(bob=bob, arrangement_id=arrangement_id, tasks=tasks,
|
||||
return cls(bob=bob,
|
||||
arrangement_id=arrangement_id,
|
||||
encrypted_kfrag=encrypted_kfrag,
|
||||
tasks=tasks,
|
||||
receipt_signature=receipt_signature,
|
||||
alice_address=alice_address,
|
||||
ursula=ursula, blockhash=blockhash)
|
||||
ursula=ursula,
|
||||
blockhash=blockhash)
|
||||
|
||||
@classmethod
|
||||
def from_rest_payload(cls, arrangement_id, rest_payload, ursula, alice_address):
|
||||
|
@ -431,6 +436,7 @@ class WorkOrder:
|
|||
bob = Bob.from_public_keys(verifying_key=bob_verifying_key)
|
||||
return cls(bob=bob,
|
||||
ursula=ursula,
|
||||
encrypted_kfrag=None,
|
||||
arrangement_id=arrangement_id,
|
||||
tasks=tasks,
|
||||
alice_address=alice_address,
|
||||
|
|
|
@ -110,6 +110,7 @@ def test_work_order_with_multiple_capsules(mock_ursula_reencrypts,
|
|||
|
||||
# Test construction of WorkOrders by Bob
|
||||
work_order = WorkOrder.construct_by_bob(arrangement_id=arrangement_id,
|
||||
encrypted_kfrag=None, # FIXME
|
||||
bob=federated_bob,
|
||||
alice_verifying=federated_alice.stamp.as_umbral_pubkey(),
|
||||
ursula=ursula,
|
||||
|
|
|
@ -195,4 +195,15 @@ def _mock_ursula_reencrypts(ursula):
|
|||
cfrag_signature = ursula.stamp(bytes(cfrag))
|
||||
|
||||
bob = Bob.from_public_keys(verifying_key=pub_key_bob)
|
||||
return WorkOrder.PRETask(capsule, task_signature, cfrag, cfrag_signature)
|
||||
task = WorkOrder.PRETask(capsule, task_signature, cfrag, cfrag_signature)
|
||||
work_order = WorkOrder(bob=bob,
|
||||
encrypted_kfrag=None, # FIXME
|
||||
arrangement_id=None,
|
||||
alice_address=alice_address,
|
||||
tasks={capsule: task},
|
||||
receipt_signature=None,
|
||||
ursula=ursula,
|
||||
blockhash=blockhash)
|
||||
|
||||
evidence = IndisputableEvidence(task, work_order)
|
||||
return evidence
|
||||
|
|
Loading…
Reference in New Issue