@@ -417,6 +417,7 @@ class Key:
417
417
"""A container class representing the public portion of a Key.
418
418
419
419
Attributes:
420
+ keyid: An identifier string
420
421
keytype: A string denoting a public key signature system,
421
422
such as "rsa", "ed25519", and "ecdsa-sha2-nistp256".
422
423
scheme: A string denoting a corresponding signature scheme. For example:
@@ -428,26 +429,28 @@ class Key:
428
429
429
430
def __init__ (
430
431
self ,
432
+ keyid : str ,
431
433
keytype : str ,
432
434
scheme : str ,
433
435
keyval : Dict [str , str ],
434
436
unrecognized_fields : Optional [Mapping [str , Any ]] = None ,
435
437
) -> None :
436
438
if not keyval .get ("public" ):
437
439
raise ValueError ("keyval doesn't follow the specification format!" )
440
+ self .keyid = keyid
438
441
self .keytype = keytype
439
442
self .scheme = scheme
440
443
self .keyval = keyval
441
444
self .unrecognized_fields : Mapping [str , Any ] = unrecognized_fields or {}
442
445
443
446
@classmethod
444
- def from_dict (cls , key_dict : Dict [str , Any ]) -> "Key" :
447
+ def from_dict (cls , keyid : str , key_dict : Dict [str , Any ]) -> "Key" :
445
448
"""Creates Key object from its dict representation."""
446
449
keytype = key_dict .pop ("keytype" )
447
450
scheme = key_dict .pop ("scheme" )
448
451
keyval = key_dict .pop ("keyval" )
449
452
# All fields left in the key_dict are unrecognized.
450
- return cls (keytype , scheme , keyval , key_dict )
453
+ return cls (keyid , keytype , scheme , keyval , key_dict )
451
454
452
455
def to_dict (self ) -> Dict [str , Any ]:
453
456
"""Returns the dictionary representation of self."""
@@ -558,7 +561,7 @@ def from_dict(cls, root_dict: Dict[str, Any]) -> "Root":
558
561
roles = root_dict .pop ("roles" )
559
562
560
563
for keyid , key_dict in keys .items ():
561
- keys [keyid ] = Key .from_dict (key_dict )
564
+ keys [keyid ] = Key .from_dict (keyid , key_dict )
562
565
for role_name , role_dict in roles .items ():
563
566
roles [role_name ] = Role .from_dict (role_dict )
564
567
@@ -584,10 +587,10 @@ def to_dict(self) -> Dict[str, Any]:
584
587
return root_dict
585
588
586
589
# Update key for a role.
587
- def add_key (self , role : str , keyid : str , key_metadata : Key ) -> None :
588
- """Adds new key for 'role' and updates the key store ."""
589
- self .roles [role ].keyids .add (keyid )
590
- self .keys [keyid ] = key_metadata
590
+ def add_key (self , role : str , key : Key ) -> None :
591
+ """Adds new signing key for delegated role 'role'."""
592
+ self .roles [role ].keyids .add (key . keyid )
593
+ self .keys [key . keyid ] = key
591
594
592
595
def remove_key (self , role : str , keyid : str ) -> None :
593
596
"""Removes key from 'role' and updates the key store.
@@ -863,7 +866,7 @@ def from_dict(cls, delegations_dict: Dict[str, Any]) -> "Delegations":
863
866
keys = delegations_dict .pop ("keys" )
864
867
keys_res = {}
865
868
for keyid , key_dict in keys .items ():
866
- keys_res [keyid ] = Key .from_dict (key_dict )
869
+ keys_res [keyid ] = Key .from_dict (keyid , key_dict )
867
870
roles = delegations_dict .pop ("roles" )
868
871
roles_res = []
869
872
for role_dict in roles :
0 commit comments