Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F33018466
D6940.1768382211.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D6940.1768382211.diff
View Options
diff --git a/services/identity/src/service.rs b/services/identity/src/service.rs
--- a/services/identity/src/service.rs
+++ b/services/identity/src/service.rs
@@ -87,41 +87,46 @@
) -> Result<Response<Self::RegisterUserStream>, Status> {
let mut in_stream = request.into_inner();
let (tx, rx) = mpsc::channel(MPSC_CHANNEL_BUFFER_CAPACITY);
- let first_message = in_stream.next().await;
- let mut registration_state = registration::handle_registration_request(
- first_message,
- self.client.clone(),
- tx.clone(),
- )
- .await?;
- // ServerRegistration in opaque-ke v1.2 doesn't implement Clone, so we
- // have to take the value out of registration_state, replacing it with None
- let pake_state =
- if let Some(pake_state) = registration_state.pake_state.take() {
- pake_state
- } else {
- error!("registration_state is missing opaque-ke ServerRegistration");
- return Err(Status::failed_precondition("internal error"));
- };
- let second_message = in_stream.next().await;
- let server_login =
- registration::handle_registration_upload_and_credential_request(
- second_message,
+ let client = self.client.clone();
+
+ tokio::spawn(async move {
+ let first_message = in_stream.next().await;
+ let mut registration_state = registration::handle_registration_request(
+ first_message,
+ &client,
tx.clone(),
- &self.client,
+ )
+ .await?;
+ // ServerRegistration in opaque-ke v1.2 doesn't implement Clone, so we
+ // have to take the value out of registration_state, replacing it with None
+ let pake_state =
+ if let Some(pake_state) = registration_state.pake_state.take() {
+ pake_state
+ } else {
+ error!("registration_state is missing opaque-ke ServerRegistration");
+ return Err(Status::failed_precondition("internal error"));
+ };
+ let second_message = in_stream.next().await;
+ let server_login =
+ registration::handle_registration_upload_and_credential_request(
+ second_message,
+ tx.clone(),
+ &client,
+ ®istration_state,
+ pake_state,
+ )
+ .await?;
+ let third_message = in_stream.next().await;
+ registration::handle_credential_finalization(
+ third_message,
+ tx,
+ &client,
®istration_state,
- pake_state,
+ server_login,
)
.await?;
- let third_message = in_stream.next().await;
- registration::handle_credential_finalization(
- third_message,
- tx,
- &self.client,
- ®istration_state,
- server_login,
- )
- .await?;
+ Ok(())
+ });
let out_stream = ReceiverStream::new(rx);
Ok(Response::new(
@@ -139,23 +144,26 @@
) -> Result<Response<Self::LoginUserStream>, Status> {
let mut in_stream = request.into_inner();
let (tx, rx) = mpsc::channel(MPSC_CHANNEL_BUFFER_CAPACITY);
-
- let first_message = in_stream.next().await;
- let login_state =
- login::handle_login_request(first_message, tx.clone(), &self.client)
+ let client = self.client.clone();
+
+ tokio::spawn(async move {
+ let first_message = in_stream.next().await;
+ let login_state =
+ login::handle_login_request(first_message, tx.clone(), &client).await?;
+
+ // login_state will be None if user is logging in with a wallet
+ if let Some(state) = login_state {
+ let second_message = in_stream.next().await;
+ login::handle_credential_finalization(
+ second_message,
+ tx,
+ &client,
+ state,
+ )
.await?;
-
- // login_state will be None if user is logging in with a wallet
- if let Some(state) = login_state {
- let second_message = in_stream.next().await;
- login::handle_credential_finalization(
- second_message,
- tx,
- self.client.clone(),
- state,
- )
- .await?;
- }
+ }
+ Ok::<(), Status>(())
+ });
let out_stream = ReceiverStream::new(rx);
Ok(Response::new(Box::pin(out_stream) as Self::LoginUserStream))
@@ -520,7 +528,12 @@
) -> Result<RegistrationResponseAndPakeState, Status> {
match ServerRegistration::<Cipher>::start(
rng,
- PakeRegistrationRequest::deserialize(registration_request_bytes).unwrap(),
+ PakeRegistrationRequest::deserialize(registration_request_bytes).map_err(
+ |e| {
+ error!("Failed to deserialize registration request bytes: {}", e);
+ Status::aborted("registration failed")
+ },
+ )?,
CONFIG.server_keypair.public(),
) {
Ok(server_registration_start_result) => {
diff --git a/services/identity/src/service/login.rs b/services/identity/src/service/login.rs
--- a/services/identity/src/service/login.rs
+++ b/services/identity/src/service/login.rs
@@ -64,7 +64,7 @@
pub async fn handle_credential_finalization(
message: Option<Result<LoginRequest, Status>>,
tx: mpsc::Sender<Result<LoginResponse, Status>>,
- client: DatabaseClient,
+ client: &DatabaseClient,
login_state: LoginState,
) -> Result<(), Status> {
match message {
@@ -77,7 +77,7 @@
let login_finish_result = pake_login_finish(
&login_state.user_id,
&login_state.signing_public_key,
- &client,
+ client,
login_state.pake_state,
&pake_credential_finalization,
&mut OsRng,
diff --git a/services/identity/src/service/registration.rs b/services/identity/src/service/registration.rs
--- a/services/identity/src/service/registration.rs
+++ b/services/identity/src/service/registration.rs
@@ -9,7 +9,7 @@
pub async fn handle_registration_request(
message: Option<Result<RegistrationRequest, Status>>,
- client: DatabaseClient,
+ client: &DatabaseClient,
tx: mpsc::Sender<Result<RegistrationResponse, Status>>,
) -> Result<RegistrationState, Status> {
match message {
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jan 14, 9:16 AM (3 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5931275
Default Alt Text
D6940.1768382211.diff (5 KB)
Attached To
Mode
D6940: [identity] some small fixes
Attached
Detach File
Event Timeline
Log In to Comment