@@ -70,7 +70,12 @@ async def etsi_status(self, slave_sae_id: str):
7070 "max_sae_id_count" : 0 ,
7171 }
7272
73- async def etsi_get_key (self , _slave_sae_id : str , size : int | None = None ):
73+ async def etsi_get_key (
74+ self ,
75+ master_sae_id : str ,
76+ slave_sae_id : str ,
77+ size : int | None = None ,
78+ ):
7479 """
7580 ETSI QKD 014 V1.1.1 Get key API.
7681 """
@@ -89,25 +94,25 @@ async def etsi_get_key(self, _slave_sae_id: str, size: int | None = None):
8994 )
9095 size_in_bytes = size // 8
9196 key = UserKey .create_random_key (size_in_bytes )
92- await self .scatter_key_amongst_peer_hubs (key )
97+ await self .scatter_key_amongst_peer_hubs (master_sae_id , slave_sae_id , key )
9398 return {
9499 "keys" : {
95100 "key_ID" : key .key_id ,
96101 "key" : utils .bytes_to_str (key .value ),
97102 }
98103 }
99104
100- async def etsi_get_key_with_key_ids (self , _master_sae_id : str , key_id : str ):
105+ async def etsi_get_key_with_key_ids (
106+ self , master_sae_id : str , slave_sae_id : str , key_id : str
107+ ):
101108 """
102109 ETSI QKD 014 V1.1.1 Get key with key IDs API.
103110 """
104- # TODO: Pass the master SAE ID and the slave SAE ID along with the relayed shares
105- # and check that they match here.
106111 try :
107112 key_id = UUID (key_id )
108113 except ValueError as exc :
109114 raise exceptions .InvalidKeyIDError (key_id ) from exc
110- key = await self .gather_key_from_peer_hubs (key_id )
115+ key = await self .gather_key_from_peer_hubs (master_sae_id , slave_sae_id , key_id )
111116 return {
112117 "keys" : [
113118 {
@@ -124,15 +129,22 @@ def start_all_peer_hubs(self) -> None:
124129 for peer_hub in self ._peer_hubs :
125130 peer_hub .start_register_task ()
126131
127- async def scatter_key_amongst_peer_hubs (self , key : UserKey ) -> None :
132+ async def scatter_key_amongst_peer_hubs (
133+ self ,
134+ master_sae_id : str ,
135+ slave_sae_id : str ,
136+ key : UserKey ,
137+ ) -> None :
128138 """
129139 Split the key into key shares, and send each key share to a peer hub.
130140 """
131141 nr_shares = len (self ._peer_hubs )
132- shares = key .split_into_shares (nr_shares , _MIN_NR_SHARES )
142+ shares = key .split_into_shares (
143+ master_sae_id , slave_sae_id , nr_shares , _MIN_NR_SHARES
144+ )
133145 assert len (shares ) == nr_shares
134146 coroutines = [
135- peer_hub .post_share (share )
147+ peer_hub .post_share (master_sae_id , slave_sae_id , share )
136148 for peer_hub , share in zip (self ._peer_hubs , shares )
137149 ]
138150 results = await asyncio .gather (* coroutines , return_exceptions = True )
@@ -152,13 +164,21 @@ async def scatter_key_amongst_peer_hubs(self, key: UserKey) -> None:
152164 key .key_id , nr_shares_successfully_scattered , _MIN_NR_SHARES , causes
153165 )
154166
155- async def gather_key_from_peer_hubs (self , key_id : UUID ) -> UserKey :
167+ async def gather_key_from_peer_hubs (
168+ self ,
169+ master_sae_id : str ,
170+ slave_sae_id : str ,
171+ key_id : UUID ,
172+ ) -> UserKey :
156173 """
157174 Gather key shares from the peer hubs, and reconstruct the key out of (a subset of)
158175 the key shares.
159176 """
160177 nr_shares_attempted_to_gather = len (self ._peer_hubs )
161- coroutines = [peer_hub .get_share (key_id ) for peer_hub in self ._peer_hubs ]
178+ coroutines = [
179+ peer_hub .get_share (master_sae_id , slave_sae_id , key_id )
180+ for peer_hub in self ._peer_hubs
181+ ]
162182 results = await asyncio .gather (* coroutines , return_exceptions = True )
163183 shares = [result for result in results if not isinstance (result , Exception )]
164184 nr_shares_successfully_gathered = len (shares )
0 commit comments