pub type RequiredSigners<E, K> = BTreeMap<E, Vec<OwnedSigningKeyId<K>>>;Expand description
This is a helper type when calling verify_signatures().
§Example
The following example code shows how one could enforce/check that some device keys are signed by a self-signing key.
let signer_user_id = owned_user_id!("@nina:example.org");
let self_signing_key_pair = generate_test_key_pair();
// Generate a self-signing key, signed by itself.
let mut self_signing_key = generate_test_cross_signing_key(
&signer_user_id,
KeyUsage::SelfSigning,
Some(&self_signing_key_pair),
);
let signing_key_id = self_signing_key.key_id().expect("Failed to extract key id");
sign_object(
&mut self_signing_key,
signer_user_id.as_str(),
&signing_key_id.to_string(),
&self_signing_key_pair,
);
// Generate a device, and additionally sign it with the self-signing key.
let mut device_keys =
generate_test_device_keys(&signer_user_id, &owned_device_id!("syJo6qIkff"), None);
sign_object(
&mut device_keys,
signer_user_id.as_str(),
&signing_key_id.to_string(),
&self_signing_key_pair,
);
// First, extract a PublicKeyMap from the self-signing key.
let keymap = self_signing_key.keymap().expect("Failed to extract keymap");
// Then, configure the required signers to contain that key.
let required_signers = BTreeMap::from([(signer_user_id, vec![signing_key_id])]);
// And finally, call the verification function
assert!(verify_signatures(vec![&keymap], &device_keys,
Some(&required_signers)).is_ok());Aliased Type§
pub struct RequiredSigners<E, K> { /* private fields */ }