trustchain_core/
controller.rs1use crate::attestor::Attestor;
3use crate::key_manager::KeyManagerError;
4use crate::utils::get_did_suffix;
5use ssi::jwk::JWK;
6use thiserror::Error;
7
8#[derive(Error, Debug, PartialEq, Eq, PartialOrd, Ord)]
10pub enum ControllerError {
11 #[error("DID: {0} as Trustchain subject does not exist.")]
13 NoTrustchainSubject(String),
14 #[error("DID: {0} recovery key does not exist.")]
16 NoRecoveryKey(String),
17 #[error("DID: {0} update key does not exist.")]
19 NoUpdateKey(String),
20}
21
22pub trait Controller {
24 fn controlled_did(&self) -> &str;
26 fn controlled_did_suffix(&self) -> &str {
28 get_did_suffix(self.controlled_did())
29 }
30 fn to_attestor(&self) -> Box<dyn Attestor>;
32 fn update_key(&self) -> Result<JWK, KeyManagerError>;
34 fn next_update_key(&self) -> Result<Option<JWK>, KeyManagerError>;
36 fn recovery_key(&self) -> Result<JWK, KeyManagerError>;
38 fn generate_next_update_key(&self) -> Result<(), KeyManagerError>;
40}