use crate::{
core::{CredFormat, TicketCred, TicketCreds},
KrbUser, Result,
};
pub trait Vault
{
fn id(&self) -> &str;
fn support_cred_format(&self) -> Result<Option<CredFormat>>;
fn dump(&self) -> Result<TicketCreds>;
fn add(&mut self, ticket_info: TicketCred) -> Result<()>;
fn save(&self, creds: TicketCreds) -> Result<()>;
fn save_as(&self, creds: TicketCreds, cred_format: CredFormat) -> Result<()>;
fn change_format(&self, cred_format: CredFormat) -> Result<()>;
fn get_user_tgts(&self, user: &KrbUser) -> Result<TicketCreds>;
fn s4u2self_tgss(&self,
user: &KrbUser,
impersonate_user: &KrbUser,
user_service: Option<&String>)
-> Result<TicketCreds>;
}