lair_keystore_api/lair_api/
new_wka_tls_cert.rs

1use super::*;
2
3/// Instruct lair to generate a new wka tls certificate
4/// from cryptographically secure random data with given tag.
5#[derive(Debug, serde::Serialize, serde::Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct LairApiReqNewWkaTlsCert {
8    /// Msg id to relate request / response.
9    pub msg_id: Arc<str>,
10
11    /// User-defined tag to associate with the new seed.
12    pub tag: Arc<str>,
13}
14
15impl LairApiReqNewWkaTlsCert {
16    /// Make a new_seed request.
17    pub fn new(tag: Arc<str>) -> Self {
18        Self {
19            msg_id: new_msg_id(),
20            tag,
21        }
22    }
23}
24
25impl std::convert::TryFrom<LairApiEnum> for LairApiReqNewWkaTlsCert {
26    type Error = one_err::OneErr;
27
28    fn try_from(e: LairApiEnum) -> Result<Self, Self::Error> {
29        if let LairApiEnum::ReqNewWkaTlsCert(s) = e {
30            Ok(s)
31        } else {
32            Err(format!("Invalid response type: {e:?}").into())
33        }
34    }
35}
36
37impl AsLairCodec for LairApiReqNewWkaTlsCert {
38    fn into_api_enum(self) -> LairApiEnum {
39        LairApiEnum::ReqNewWkaTlsCert(self)
40    }
41}
42
43/// On new cert generation, lair will respond with info about
44/// that cert.
45#[derive(Debug, serde::Serialize, serde::Deserialize)]
46#[serde(rename_all = "camelCase")]
47#[non_exhaustive]
48pub struct LairApiResNewWkaTlsCert {
49    /// Msg id to relate request / response.
50    pub msg_id: Arc<str>,
51
52    /// User-defined tag associated with the generated seed.
53    pub tag: Arc<str>,
54
55    /// The associated cert info.
56    pub cert_info: CertInfo,
57}
58
59impl std::convert::TryFrom<LairApiEnum> for LairApiResNewWkaTlsCert {
60    type Error = one_err::OneErr;
61
62    fn try_from(e: LairApiEnum) -> Result<Self, Self::Error> {
63        if let LairApiEnum::ResNewWkaTlsCert(s) = e {
64            Ok(s)
65        } else {
66            Err(format!("Invalid response type: {e:?}").into())
67        }
68    }
69}
70
71impl AsLairCodec for LairApiResNewWkaTlsCert {
72    fn into_api_enum(self) -> LairApiEnum {
73        LairApiEnum::ResNewWkaTlsCert(self)
74    }
75}
76
77impl AsLairRequest for LairApiReqNewWkaTlsCert {
78    type Response = LairApiResNewWkaTlsCert;
79}
80
81impl AsLairResponse for LairApiResNewWkaTlsCert {
82    type Request = LairApiReqNewWkaTlsCert;
83}