Changeset View
Changeset View
Standalone View
Standalone View
services/identity/src/client_service.rs
Show First 20 Lines • Show All 60 Lines • ▼ Show 20 Lines | pub struct UpdateState { | ||||
pub user_id: String, | pub user_id: String, | ||||
} | } | ||||
#[derive(Clone)] | #[derive(Clone)] | ||||
pub struct FlattenedDeviceKeyUpload { | pub struct FlattenedDeviceKeyUpload { | ||||
pub device_id_key: String, | pub device_id_key: String, | ||||
pub key_payload: String, | pub key_payload: String, | ||||
pub key_payload_signature: String, | pub key_payload_signature: String, | ||||
pub identity_prekey: String, | pub content_prekey: String, | ||||
pub identity_prekey_signature: String, | pub content_prekey_signature: String, | ||||
pub identity_onetime_keys: Vec<String>, | pub content_onetime_keys: Vec<String>, | ||||
pub notif_prekey: String, | pub notif_prekey: String, | ||||
pub notif_prekey_signature: String, | pub notif_prekey_signature: String, | ||||
pub notif_onetime_keys: Vec<String>, | pub notif_onetime_keys: Vec<String>, | ||||
} | } | ||||
#[derive(derive_more::Constructor)] | #[derive(derive_more::Constructor)] | ||||
pub struct ClientService { | pub struct ClientService { | ||||
client: DatabaseClient, | client: DatabaseClient, | ||||
Show All 27 Lines | if let client_proto::RegistrationStartRequest { | ||||
device_key_upload: | device_key_upload: | ||||
Some(client_proto::DeviceKeyUpload { | Some(client_proto::DeviceKeyUpload { | ||||
device_key_info: | device_key_info: | ||||
Some(client_proto::IdentityKeyInfo { | Some(client_proto::IdentityKeyInfo { | ||||
payload, | payload, | ||||
payload_signature, | payload_signature, | ||||
social_proof: _social_proof, | social_proof: _social_proof, | ||||
}), | }), | ||||
identity_upload: | content_upload: | ||||
Some(client_proto::PreKey { | Some(client_proto::PreKey { | ||||
pre_key: identity_prekey, | pre_key: content_prekey, | ||||
pre_key_signature: identity_prekey_signature, | pre_key_signature: content_prekey_signature, | ||||
}), | }), | ||||
notif_upload: | notif_upload: | ||||
Some(client_proto::PreKey { | Some(client_proto::PreKey { | ||||
pre_key: notif_prekey, | pre_key: notif_prekey, | ||||
pre_key_signature: notif_prekey_signature, | pre_key_signature: notif_prekey_signature, | ||||
}), | }), | ||||
onetime_identity_prekeys, | onetime_content_prekeys, | ||||
onetime_notif_prekeys, | onetime_notif_prekeys, | ||||
}), | }), | ||||
} = message | } = message | ||||
{ | { | ||||
let server_registration = comm_opaque2::server::Registration::new(); | let server_registration = comm_opaque2::server::Registration::new(); | ||||
let server_message = server_registration | let server_message = server_registration | ||||
.start(&CONFIG.server_setup, ®ister_message, username.as_bytes()) | .start(&CONFIG.server_setup, ®ister_message, username.as_bytes()) | ||||
.map_err(protocol_error_to_grpc_status)?; | .map_err(protocol_error_to_grpc_status)?; | ||||
let key_info = KeyPayload::from_str(&payload) | let key_info = KeyPayload::from_str(&payload) | ||||
.map_err(|_| tonic::Status::invalid_argument("malformed payload"))?; | .map_err(|_| tonic::Status::invalid_argument("malformed payload"))?; | ||||
let registration_state = UserRegistrationInfo { | let registration_state = UserRegistrationInfo { | ||||
username, | username, | ||||
flattened_device_key_upload: FlattenedDeviceKeyUpload { | flattened_device_key_upload: FlattenedDeviceKeyUpload { | ||||
device_id_key: key_info.primary_identity_public_keys.ed25519, | device_id_key: key_info.primary_identity_public_keys.ed25519, | ||||
key_payload: payload, | key_payload: payload, | ||||
key_payload_signature: payload_signature, | key_payload_signature: payload_signature, | ||||
identity_prekey, | content_prekey, | ||||
identity_prekey_signature, | content_prekey_signature, | ||||
identity_onetime_keys: onetime_identity_prekeys, | content_onetime_keys: onetime_content_prekeys, | ||||
notif_prekey, | notif_prekey, | ||||
notif_prekey_signature, | notif_prekey_signature, | ||||
notif_onetime_keys: onetime_notif_prekeys, | notif_onetime_keys: onetime_notif_prekeys, | ||||
}, | }, | ||||
}; | }; | ||||
let session_id = generate_uuid(); | let session_id = generate_uuid(); | ||||
self | self | ||||
.cache | .cache | ||||
▲ Show 20 Lines • Show All 161 Lines • ▼ Show 20 Lines | if let client_proto::OpaqueLoginStartRequest { | ||||
device_key_upload: | device_key_upload: | ||||
Some(client_proto::DeviceKeyUpload { | Some(client_proto::DeviceKeyUpload { | ||||
device_key_info: | device_key_info: | ||||
Some(client_proto::IdentityKeyInfo { | Some(client_proto::IdentityKeyInfo { | ||||
payload, | payload, | ||||
payload_signature, | payload_signature, | ||||
social_proof: _social_proof, | social_proof: _social_proof, | ||||
}), | }), | ||||
identity_upload: | content_upload: | ||||
Some(client_proto::PreKey { | Some(client_proto::PreKey { | ||||
pre_key: identity_prekey, | pre_key: content_prekey, | ||||
pre_key_signature: identity_prekey_signature, | pre_key_signature: content_prekey_signature, | ||||
}), | }), | ||||
notif_upload: | notif_upload: | ||||
Some(client_proto::PreKey { | Some(client_proto::PreKey { | ||||
pre_key: notif_prekey, | pre_key: notif_prekey, | ||||
pre_key_signature: notif_prekey_signature, | pre_key_signature: notif_prekey_signature, | ||||
}), | }), | ||||
onetime_identity_prekeys, | onetime_content_prekeys, | ||||
onetime_notif_prekeys, | onetime_notif_prekeys, | ||||
}), | }), | ||||
} = message | } = message | ||||
{ | { | ||||
let mut server_login = comm_opaque2::server::Login::new(); | let mut server_login = comm_opaque2::server::Login::new(); | ||||
let server_response = server_login | let server_response = server_login | ||||
.start( | .start( | ||||
&CONFIG.server_setup, | &CONFIG.server_setup, | ||||
&password_file_bytes, | &password_file_bytes, | ||||
&login_message, | &login_message, | ||||
username.as_bytes(), | username.as_bytes(), | ||||
) | ) | ||||
.map_err(protocol_error_to_grpc_status)?; | .map_err(protocol_error_to_grpc_status)?; | ||||
let key_info = KeyPayload::from_str(&payload) | let key_info = KeyPayload::from_str(&payload) | ||||
.map_err(|_| tonic::Status::invalid_argument("malformed payload"))?; | .map_err(|_| tonic::Status::invalid_argument("malformed payload"))?; | ||||
let login_state = UserLoginInfo { | let login_state = UserLoginInfo { | ||||
user_id, | user_id, | ||||
opaque_server_login: server_login, | opaque_server_login: server_login, | ||||
flattened_device_key_upload: FlattenedDeviceKeyUpload { | flattened_device_key_upload: FlattenedDeviceKeyUpload { | ||||
device_id_key: key_info.primary_identity_public_keys.ed25519, | device_id_key: key_info.primary_identity_public_keys.ed25519, | ||||
key_payload: payload, | key_payload: payload, | ||||
key_payload_signature: payload_signature, | key_payload_signature: payload_signature, | ||||
identity_prekey, | content_prekey, | ||||
identity_prekey_signature, | content_prekey_signature, | ||||
identity_onetime_keys: onetime_identity_prekeys, | content_onetime_keys: onetime_content_prekeys, | ||||
notif_prekey, | notif_prekey, | ||||
notif_prekey_signature, | notif_prekey_signature, | ||||
notif_onetime_keys: onetime_notif_prekeys, | notif_onetime_keys: onetime_notif_prekeys, | ||||
}, | }, | ||||
}; | }; | ||||
let session_id = generate_uuid(); | let session_id = generate_uuid(); | ||||
self | self | ||||
.cache | .cache | ||||
▲ Show 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | let (flattened_device_key_upload, social_proof) = | ||||
device_key_upload: | device_key_upload: | ||||
Some(client_proto::DeviceKeyUpload { | Some(client_proto::DeviceKeyUpload { | ||||
device_key_info: | device_key_info: | ||||
Some(client_proto::IdentityKeyInfo { | Some(client_proto::IdentityKeyInfo { | ||||
payload, | payload, | ||||
payload_signature, | payload_signature, | ||||
social_proof: Some(social_proof), | social_proof: Some(social_proof), | ||||
}), | }), | ||||
identity_upload: | content_upload: | ||||
Some(client_proto::PreKey { | Some(client_proto::PreKey { | ||||
pre_key: identity_prekey, | pre_key: content_prekey, | ||||
pre_key_signature: identity_prekey_signature, | pre_key_signature: content_prekey_signature, | ||||
}), | }), | ||||
notif_upload: | notif_upload: | ||||
Some(client_proto::PreKey { | Some(client_proto::PreKey { | ||||
pre_key: notif_prekey, | pre_key: notif_prekey, | ||||
pre_key_signature: notif_prekey_signature, | pre_key_signature: notif_prekey_signature, | ||||
}), | }), | ||||
onetime_identity_prekeys, | onetime_content_prekeys, | ||||
onetime_notif_prekeys, | onetime_notif_prekeys, | ||||
}), | }), | ||||
} = message | } = message | ||||
{ | { | ||||
let key_info = KeyPayload::from_str(&payload) | let key_info = KeyPayload::from_str(&payload) | ||||
.map_err(|_| tonic::Status::invalid_argument("malformed payload"))?; | .map_err(|_| tonic::Status::invalid_argument("malformed payload"))?; | ||||
( | ( | ||||
FlattenedDeviceKeyUpload { | FlattenedDeviceKeyUpload { | ||||
device_id_key: key_info.primary_identity_public_keys.ed25519, | device_id_key: key_info.primary_identity_public_keys.ed25519, | ||||
key_payload: payload, | key_payload: payload, | ||||
key_payload_signature: payload_signature, | key_payload_signature: payload_signature, | ||||
identity_prekey, | content_prekey, | ||||
identity_prekey_signature, | content_prekey_signature, | ||||
identity_onetime_keys: onetime_identity_prekeys, | content_onetime_keys: onetime_content_prekeys, | ||||
notif_prekey, | notif_prekey, | ||||
notif_prekey_signature, | notif_prekey_signature, | ||||
notif_onetime_keys: onetime_notif_prekeys, | notif_onetime_keys: onetime_notif_prekeys, | ||||
}, | }, | ||||
social_proof, | social_proof, | ||||
) | ) | ||||
} else { | } else { | ||||
return Err(tonic::Status::invalid_argument("unexpected message data")); | return Err(tonic::Status::invalid_argument("unexpected message data")); | ||||
▲ Show 20 Lines • Show All 185 Lines • Show Last 20 Lines |