in tough/src/editor/targets.rs [492:529]
fn create_key_holder(&self, keys: &[Box<dyn KeySource>]) -> Result<KeyHolder> {
// There isn't a KeyHolder, so create one based on the provided keys
let mut delegations = Delegations::new();
// First create the tuf key pairs and keyids
let mut keyids = Vec::new();
let mut key_pairs = HashMap::new();
for source in keys {
let key_pair = source
.as_sign()
.context(error::KeyPairFromKeySourceSnafu)?
.tuf_key();
key_pairs.insert(
key_pair
.key_id()
.context(error::JsonSerializationSnafu {})?
.clone(),
key_pair.clone(),
);
keyids.push(
key_pair
.key_id()
.context(error::JsonSerializationSnafu {})?
.clone(),
);
}
// Then add the keys to the new delegations keys
delegations.keys = key_pairs;
// Now create a DelegatedRole for the new role
delegations.roles.push(DelegatedRole {
name: self.name.clone(),
threshold: NonZeroU64::new(1).unwrap(),
paths: PathSet::Paths([].to_vec()),
terminating: false,
keyids,
targets: None,
});
Ok(KeyHolder::Delegations(delegations))
}