1#[cfg(feature = "network")]
2pub mod net;
3
4use sentc_crypto_light::sdk_common::user::{UserPublicKeyData, UserVerifyKeyData};
5use sentc_crypto_light::sdk_common::{DeviceId, UserId};
6use sentc_crypto_light::sdk_keys::util::{PublicKey, SecretKey, SignKey, VerifyKey};
7use sentc_crypto_light::user::{generate_user_register_data, prepare_register_device};
8use sentc_crypto_light::UserDataInt;
9
10use crate::error::SentcError;
11
12pub struct User
13{
14 user_id: UserId,
15 user_identifier: String,
16 device_id: DeviceId,
17
18 jwt: String,
19 refresh_token: String,
20
21 mfa: bool,
22
23 private_device_key: SecretKey,
25 public_device_key: PublicKey,
26 sign_device_key: SignKey,
27 verify_device_key: VerifyKey,
28 exported_verify_device_key: UserVerifyKeyData,
29 exported_public_device_key: UserPublicKeyData,
30
31 base_url: String,
32 app_token: String,
33}
34
35impl User
36{
37 fn new_user(base_url: String, app_token: String, user_identifier: String, data: UserDataInt, mfa: bool) -> Result<Self, SentcError>
38 {
39 Ok(Self {
40 user_id: data.user_id,
41 user_identifier,
42 device_id: data.device_id,
43 jwt: data.jwt,
44 refresh_token: data.refresh_token,
45 mfa,
46 private_device_key: data.device_keys.private_key,
47 public_device_key: data.device_keys.public_key,
48 sign_device_key: data.device_keys.sign_key,
49 verify_device_key: data.device_keys.verify_key,
50 exported_verify_device_key: data.device_keys.exported_verify_key,
51 exported_public_device_key: data.device_keys.exported_public_key,
52
53 base_url,
54 app_token,
55 })
56 }
57
58 #[cfg(not(feature = "network"))]
59 pub fn new(base_url: String, app_token: String, user_identifier: String, data: UserDataInt, mfa: bool) -> Result<Self, SentcError>
60 {
61 Self::new_user(base_url, app_token, user_identifier, data, mfa)
62 }
63
64 pub fn get_user_id(&self) -> &str
65 {
66 &self.user_id
67 }
68
69 pub fn get_identifier(&self) -> &str
70 {
71 &self.user_identifier
72 }
73
74 pub fn get_device_id(&self) -> &str
75 {
76 &self.device_id
77 }
78
79 pub fn get_jwt_sync(&self) -> &str
80 {
81 &self.jwt
82 }
83
84 pub fn get_refresh_token(&self) -> &str
85 {
86 &self.refresh_token
87 }
88
89 pub fn set_jwt(&mut self, jwt: String)
90 {
91 self.jwt = jwt;
92 }
93
94 pub fn set_refresh_token(&mut self, refresh_token: String)
95 {
96 self.refresh_token = refresh_token;
97 }
98
99 pub fn prepare_register_device_keys(&self, sever_output: &str) -> Result<String, SentcError>
100 {
101 Ok(prepare_register_device(sever_output)?)
102 }
103
104 pub fn get_mfa(&self) -> bool
105 {
106 self.mfa
107 }
108
109 pub fn get_private_device_key(&self) -> &SecretKey
110 {
111 &self.private_device_key
112 }
113
114 pub fn get_public_device_key(&self) -> &PublicKey
115 {
116 &self.public_device_key
117 }
118
119 pub fn get_verify_device_key(&self) -> &VerifyKey
120 {
121 &self.verify_device_key
122 }
123
124 pub fn get_sign_device_key(&self) -> &SignKey
125 {
126 &self.sign_device_key
127 }
128
129 pub fn get_exported_verify_device_key(&self) -> &UserVerifyKeyData
130 {
131 &self.exported_verify_device_key
132 }
133
134 pub fn get_exported_public_device_key(&self) -> &UserPublicKeyData
135 {
136 &self.exported_public_device_key
137 }
138}
139
140pub fn generate_register_data() -> Result<(String, String), SentcError>
141{
142 Ok(generate_user_register_data()?)
143}
144
145pub fn prepare_register(user_identifier: &str, password: &str) -> Result<String, SentcError>
146{
147 if user_identifier.is_empty() || password.is_empty() {
148 return Err(SentcError::UsernameOrPasswordRequired);
149 }
150
151 Ok(sentc_crypto_light::user::register(user_identifier, password)?)
152}
153
154pub fn done_register(server_output: &str) -> Result<UserId, SentcError>
155{
156 Ok(sentc_crypto_light::user::done_register(server_output)?)
157}
158
159pub fn prepare_register_device_start(device_identifier: &str, password: &str) -> Result<String, SentcError>
160{
161 prepare_register(device_identifier, password)
162}
163
164pub fn done_register_device_start(server_output: &str) -> Result<(), SentcError>
165{
166 Ok(sentc_crypto_light::user::done_register_device_start(server_output)?)
167}