libsignal-rust 0.1.0

Complete and Powerful Rust implementation of libsignal protocol
Documentation
use thiserror::Error;

#[derive(Error, Debug)]
#[error("Signal protocol error")]
pub struct SignalError;

#[derive(Error, Debug)]
#[error("Untrusted identity key for address: {addr}")]
pub struct UntrustedIdentityKeyError {
    pub addr: String,
    pub identity_key: Vec<u8>,
}

impl UntrustedIdentityKeyError {
    pub fn new(addr: String, identity_key: Vec<u8>) -> Self {
        Self { addr, identity_key }
    }
}

#[derive(Error, Debug)]
#[error("Session error: {message}")]
pub struct SessionError {
    pub message: String,
}

impl SessionError {
    pub fn new(message: impl Into<String>) -> Self {
        Self {
            message: message.into(),
        }
    }
}

#[derive(Error, Debug)]
#[error("Message counter error: {message}")]
pub struct MessageCounterError {
    pub message: String,
}

impl MessageCounterError {
    pub fn new(message: impl Into<String>) -> Self {
        Self {
            message: message.into(),
        }
    }
}

#[derive(Error, Debug)]
#[error("PreKey error: {message}")]
pub struct PreKeyError {
    pub message: String,
}

impl PreKeyError {
    pub fn new(message: impl Into<String>) -> Self {
        Self {
            message: message.into(),
        }
    }
}