lair_keystore_api/lair_api/
crypto_box_xsalsa_by_sign_pub_key.rs1use super::*;
2
3#[derive(Debug, serde::Serialize, serde::Deserialize)]
5#[serde(rename_all = "camelCase")]
6pub struct LairApiReqCryptoBoxXSalsaBySignPubKey {
7 pub msg_id: Arc<str>,
9
10 pub sender_pub_key: Ed25519PubKey,
12
13 pub recipient_pub_key: Ed25519PubKey,
15
16 #[serde(skip_serializing_if = "Option::is_none", default)]
18 pub deep_lock_passphrase: Option<SecretDataSized<64, 81>>,
19
20 pub data: Arc<[u8]>,
22}
23
24impl LairApiReqCryptoBoxXSalsaBySignPubKey {
25 pub fn new(
27 sender_pub_key: Ed25519PubKey,
28 recipient_pub_key: Ed25519PubKey,
29 deep_lock_passphrase: Option<SecretDataSized<64, 81>>,
30 data: Arc<[u8]>,
31 ) -> Self {
32 Self {
33 msg_id: new_msg_id(),
34 sender_pub_key,
35 recipient_pub_key,
36 deep_lock_passphrase,
37 data,
38 }
39 }
40}
41
42impl std::convert::TryFrom<LairApiEnum>
43 for LairApiReqCryptoBoxXSalsaBySignPubKey
44{
45 type Error = one_err::OneErr;
46
47 fn try_from(e: LairApiEnum) -> Result<Self, Self::Error> {
48 if let LairApiEnum::ReqCryptoBoxXSalsaBySignPubKey(s) = e {
49 Ok(s)
50 } else {
51 Err(format!("Invalid response type: {e:?}").into())
52 }
53 }
54}
55
56impl AsLairCodec for LairApiReqCryptoBoxXSalsaBySignPubKey {
57 fn into_api_enum(self) -> LairApiEnum {
58 LairApiEnum::ReqCryptoBoxXSalsaBySignPubKey(self)
59 }
60}
61
62#[derive(Debug, serde::Serialize, serde::Deserialize)]
64#[serde(rename_all = "camelCase")]
65#[non_exhaustive]
66pub struct LairApiResCryptoBoxXSalsaBySignPubKey {
67 pub msg_id: Arc<str>,
69
70 pub nonce: [u8; 24],
72
73 pub cipher: Arc<[u8]>,
75}
76
77impl std::convert::TryFrom<LairApiEnum>
78 for LairApiResCryptoBoxXSalsaBySignPubKey
79{
80 type Error = one_err::OneErr;
81
82 fn try_from(e: LairApiEnum) -> Result<Self, Self::Error> {
83 if let LairApiEnum::ResCryptoBoxXSalsaBySignPubKey(s) = e {
84 Ok(s)
85 } else {
86 Err(format!("Invalid response type: {e:?}").into())
87 }
88 }
89}
90
91impl AsLairCodec for LairApiResCryptoBoxXSalsaBySignPubKey {
92 fn into_api_enum(self) -> LairApiEnum {
93 LairApiEnum::ResCryptoBoxXSalsaBySignPubKey(self)
94 }
95}
96
97impl AsLairRequest for LairApiReqCryptoBoxXSalsaBySignPubKey {
98 type Response = LairApiResCryptoBoxXSalsaBySignPubKey;
99}
100
101impl AsLairResponse for LairApiResCryptoBoxXSalsaBySignPubKey {
102 type Request = LairApiReqCryptoBoxXSalsaBySignPubKey;
103}