@@ -271,16 +271,16 @@ def sign(
271271
272272 def verify_delegate (
273273 self ,
274- role_name : str ,
275- delegate : "Metadata" ,
274+ delegated_role : str ,
275+ delegated_metadata : "Metadata" ,
276276 signed_serializer : Optional [SignedSerializer ] = None ,
277- ):
278- """Verifies that 'delegate ' is signed with the required threshold of
279- keys for the delegated role 'role_name '.
277+ ) -> None :
278+ """Verifies that 'delegated_metadata ' is signed with the required
279+ threshold of keys for the delegated role 'delegated_role '.
280280
281281 Args:
282- role_name : Name of the delegated role to verify
283- delegate : The Metadata object for the delegated role
282+ delegated_role : Name of the delegated role to verify
283+ delegated_metadata : The Metadata object for the delegated role
284284 signed_serializer: Optional; serializer used for delegate
285285 serialization. Default is CanonicalJSONSerializer.
286286
@@ -289,38 +289,41 @@ def verify_delegate(
289289 threshold of keys for 'role_name'
290290 """
291291
292- # Find the keys and role in our metadata
292+ # Find the keys and role in delegator metadata
293293 role = None
294294 if isinstance (self .signed , Root ):
295295 keys = self .signed .keys
296- role = self .signed .roles .get (role_name )
296+ role = self .signed .roles .get (delegated_role )
297297 elif isinstance (self .signed , Targets ):
298- if self .signed .delegations :
299- keys = self .signed .delegations .keys
300- # Assume role names are unique in delegations.roles: #1426
301- roles = self .signed .delegations .roles
302- role = next ((r for r in roles if r .name == role_name ), None )
298+ if self .signed .delegations is None :
299+ raise ValueError (f"No delegation found for { delegated_role } " )
300+
301+ keys = self .signed .delegations .keys
302+ roles = self .signed .delegations .roles
303+ # Assume role names are unique in delegations.roles: #1426
304+ # Find first role in roles with matching name (or None if no match)
305+ role = next ((r for r in roles if r .name == delegated_role ), None )
303306 else :
304307 raise TypeError ("Call is valid only on delegator metadata" )
305308
306309 if role is None :
307- raise ValueError (f"No delegation found for { role_name } " )
310+ raise ValueError (f"No delegation found for { delegated_role } " )
308311
309- # verify that delegate is signed by required threshold of unique keys
312+ # verify that delegated_metadata is signed by threshold of unique keys
310313 signing_keys = set ()
311314 for keyid in role .keyids :
312315 key = keys [keyid ]
313316 try :
314- key .verify_signature (delegate , signed_serializer )
317+ key .verify_signature (delegated_metadata , signed_serializer )
315318 signing_keys .add (key .keyid )
316319 except exceptions .UnsignedMetadataError :
317- logger .info ("Key %s failed to verify %s" , keyid , role_name )
320+ logger .info ("Key %s failed to verify %s" , keyid , delegated_role )
318321
319322 if len (signing_keys ) < role .threshold :
320323 raise exceptions .UnsignedMetadataError (
321- f"{ role_name } was signed by { len (signing_keys )} /"
324+ f"{ delegated_role } was signed by { len (signing_keys )} /"
322325 f"{ role .threshold } keys" ,
323- delegate .signed ,
326+ delegated_metadata .signed ,
324327 )
325328
326329
0 commit comments