im-core 0.1.0

Rust IM SDK for Awiki clients built on Agent Network Protocol (ANP)
Documentation
mod did_auth;
mod file;
mod hosted;
pub(crate) mod vault;

pub(crate) use self::did_auth::ProviderBackedDidAuth;
pub(crate) use self::file::FileBackedKeyMaterialProvider;
pub(crate) use self::hosted::HostedKeyMaterialProvider;
pub(crate) use self::vault::VaultKeyMaterialRefs;

pub(crate) trait KeyMaterialProvider: Send + Sync {
    fn did_document(&self) -> crate::ImResult<serde_json::Value>;

    fn optional_did_document(&self) -> crate::ImResult<Option<serde_json::Value>>;

    fn default_signing_private_pem(&self) -> crate::ImResult<String>;

    fn e2ee_agreement_private_pem(&self) -> crate::ImResult<String>;

    fn auth_state(&self) -> crate::ImResult<crate::internal::auth::state::AuthStateSnapshot>;

    fn valid_auth_token(&self) -> crate::ImResult<Option<String>>;

    fn persist_auth_token(&self, token: &str) -> crate::ImResult<()>;
}