use crate::TinkError;
pub trait KeyManager: Send + Sync {
fn primitive(&self, serialized_key: &[u8]) -> Result<crate::Primitive, TinkError>;
fn new_key(&self, serialized_key_format: &[u8]) -> Result<Vec<u8>, TinkError>;
fn does_support(&self, type_url: &str) -> bool {
type_url == self.type_url()
}
fn type_url(&self) -> &'static str;
fn key_material_type(&self) -> tink_proto::key_data::KeyMaterialType;
fn new_key_data(&self, serialized_key_format: &[u8]) -> Result<tink_proto::KeyData, TinkError> {
let serialized_key = self.new_key(serialized_key_format)?;
Ok(tink_proto::KeyData {
type_url: self.type_url().to_string(),
value: serialized_key,
key_material_type: self.key_material_type() as i32,
})
}
fn supports_private_keys(&self) -> bool {
false
}
fn public_key_data(&self, _serialized_key: &[u8]) -> Result<tink_proto::KeyData, TinkError> {
Err("private keys not supported".into())
}
}