1
//! An error type for [`ArtiEphemeralKeystore`](crate::ArtiEphemeralKeystore).
2

            
3
use std::sync::Arc;
4

            
5
use tor_error::{ErrorKind, HasKind};
6

            
7
use crate::KeystoreError;
8

            
9
/// An error returned by [`ArtiEphemeralKeystore`](crate::ArtiEphemeralKeystore)'s
10
/// [`Keystore`](crate::Keystore) implementation.
11
#[derive(thiserror::Error, Debug, Clone)]
12
pub(crate) enum ArtiEphemeralKeystoreError {
13
    /// An error that occurred  building an ArtiPath from a KeySpecifier
14
    #[error("unable to build ArtiPath from KeySpecifier")]
15
    ArtiPathUnavailableError(#[from] crate::key_specifier::ArtiPathUnavailableError),
16
    /// An error that occurred serializing a key to OpenSSH text format
17
    #[error("{0}")]
18
    SshKeySerialize(#[from] ssh_key::Error),
19
}
20

            
21
impl KeystoreError for ArtiEphemeralKeystoreError {}
22

            
23
impl HasKind for ArtiEphemeralKeystoreError {
24
    fn kind(&self) -> ErrorKind {
25
        ErrorKind::Other
26
    }
27
}
28

            
29
impl From<ArtiEphemeralKeystoreError> for crate::Error {
30
    fn from(e: ArtiEphemeralKeystoreError) -> Self {
31
        crate::Error::Keystore(Arc::new(e))
32
    }
33
}