Trait http_signatures::GetKey [] [src]

pub trait GetKey {
    type Key: Read;
    type Error;
    fn get_key(self, key_id: &str) -> Result<Self::Key, Self::Error>;
}

The GetKey trait is used during HTTP Signature verification to access the required decryption key based on a given key_id.

The key_id is provided in the Authorization or Signature header of the request as KeyId.

Example

use http_signatures::GetKey;

struct MyKeyGetter {
    keys: HashMap<String, Vec<u8>>,
}

impl MyKeyGetter {
    pub fn new() -> Self {
        MyKeyGetter {
            keys: HashMap::new(),
        }
    }

    pub fn add_key(&mut self, key_id: String, key: Vec<u8>) {
        self.keys.insert(key_id, key);
    }
}

impl GetKey for MyKeyGetter {
    type Key = Cursor<Vec<u8>>;
    type Error = ();

    fn get_key(self, key_id: &str) -> Result<Self::Key, Self::Error> {
        self.keys.get(key_id).map(|key| Cursor::new(key.clone())).ok_or(())
    }
}

let mut key_getter = MyKeyGetter::new();
key_getter.add_key("key-1".into(), vec![1, 2, 3, 4, 5]);

key_getter.get_key("key-1")?;

Associated Types

Required Methods

Implementors