use std::collections::HashMap;
use crate::header::KeyId;
use super::DecryptionKey;
pub trait KeyStore {
fn get_key<K>(&self, key_id: K) -> Option<&DecryptionKey>
where
K: Into<KeyId>;
}
impl KeyStore for DecryptionKey {
fn get_key<K>(&self, key_id: K) -> Option<&DecryptionKey>
where
K: Into<KeyId>,
{
let key_id = key_id.into();
if self.key_id() == key_id {
Some(self)
} else {
None
}
}
}
impl KeyStore for HashMap<KeyId, DecryptionKey> {
fn get_key<K>(&self, key_id: K) -> Option<&DecryptionKey>
where
K: Into<KeyId>,
{
let key_id = key_id.into();
self.get(&key_id)
}
}