sentc_light/user/
mod.rs

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	//device keys
24	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}