From 7d0d68c63b05753ad9005a50e1a18660836eae0b Mon Sep 17 00:00:00 2001 From: cp-megh Date: Wed, 4 Dec 2024 15:35:01 +0530 Subject: [PATCH 01/39] WIP --- .../detail/UserJourneyDetailViewModel.kt | 2 +- .../service/location/ApiJourneyService.kt | 86 ++++++++++------- .../service/location/ApiLocationService.kt | 94 ++++++++----------- .../data/service/space/ApiSpaceService.kt | 2 +- 4 files changed, 93 insertions(+), 91 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt index 3e6c7d3d..1cd4eb53 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt @@ -58,7 +58,7 @@ class UserJourneyDetailViewModel @Inject constructor( private fun fetchJourney() = viewModelScope.launch(appDispatcher.IO) { try { _state.value = _state.value.copy(isLoading = true) - val journey = journeyService.getLocationJourneyFromId(userId, journeyId) + val journey = journeyService.getLocationJourneyFromId(journeyId) if (journey == null) { _state.value = _state.value.copy( isLoading = false, diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 3387fcc2..71050bc8 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -2,10 +2,14 @@ package com.canopas.yourspace.data.service.location import com.canopas.yourspace.data.models.location.JourneyRoute import com.canopas.yourspace.data.models.location.LocationJourney +import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import com.google.firebase.firestore.toObject +import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.tasks.await import timber.log.Timber import javax.inject.Inject @@ -13,16 +17,24 @@ import javax.inject.Singleton @Singleton class ApiJourneyService @Inject constructor( - db: FirebaseFirestore + db: FirebaseFirestore, + private val userPreferences: UserPreferences ) { - private val userRef = db.collection(Config.FIRESTORE_COLLECTION_USERS) + var currentSpaceId: String = userPreferences.currentSpace ?: "" // App crashes sometimes because of the empty userId string passed to document(). // java.lang.IllegalArgumentException: Invalid document reference. // Document references must have an even number of segments, but users has 1 // https://stackoverflow.com/a/51195713/22508023 [Explanation can be found in comments] - private fun journeyRef(userId: String) = - userRef.document(userId.takeIf { it.isNotBlank() } ?: "null") + private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) + internal fun spaceMemberRef(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( + FIRESTORE_COLLECTION_SPACE_MEMBERS + ) + + private fun spaceMemberJourneyRef(spaceId: String) = + spaceMemberRef(spaceId) + .document(currentSpaceId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_JOURNEYS) suspend fun saveCurrentJourney( @@ -38,39 +50,43 @@ class ApiJourneyService @Inject constructor( updateAt: Long? = null, newJourneyId: ((String) -> Unit)? = null ) { - val docRef = journeyRef(userId).document() + userPreferences.currentUser?.space_ids?.forEach { + val docRef = spaceMemberJourneyRef(it).document() - val journey = LocationJourney( - id = docRef.id, - user_id = userId, - from_latitude = fromLatitude, - from_longitude = fromLongitude, - to_latitude = toLatitude, - to_longitude = toLongitude, - route_distance = routeDistance, - route_duration = routeDuration, - routes = routes, - created_at = createdAt ?: System.currentTimeMillis(), - update_at = updateAt ?: System.currentTimeMillis() - ) + val journey = LocationJourney( + id = docRef.id, + user_id = userId, + from_latitude = fromLatitude, + from_longitude = fromLongitude, + to_latitude = toLatitude, + to_longitude = toLongitude, + route_distance = routeDistance, + route_duration = routeDuration, + routes = routes, + created_at = createdAt ?: System.currentTimeMillis(), + update_at = updateAt ?: System.currentTimeMillis() + ) - newJourneyId?.invoke(journey.id) + newJourneyId?.invoke(journey.id) - docRef.set(journey).await() + docRef.set(journey).await() + } } suspend fun updateLastLocationJourney(userId: String, journey: LocationJourney) { try { - journeyRef(userId).document(journey.id).set(journey).await() + userPreferences.currentUser?.space_ids?.forEach { + spaceMemberJourneyRef(it).document(journey.id).set(journey).await() + } } catch (e: Exception) { Timber.e(e, "Error while updating last location journey") } } suspend fun getLastJourneyLocation(userId: String) = try { - journeyRef(userId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING).limit(1) - .get().await().documents.firstOrNull()?.toObject(LocationJourney::class.java) + .get().await().documents.firstOrNull()?.toObject() } catch (e: Exception) { Timber.e(e, "Error while getting last location journey") null @@ -80,17 +96,17 @@ class ApiJourneyService @Inject constructor( userId: String, from: Long? ): List { - if (from == null) { - return journeyRef(userId).whereEqualTo("user_id", userId) + val query = if (from == null) { + spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + .orderBy("created_at", Query.Direction.DESCENDING) + .limit(20) + } else { + spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) + .whereLessThan("created_at", from) .limit(20) - .get().await().documents.mapNotNull { it.toObject() } } - return journeyRef(userId).whereEqualTo("user_id", userId) - .orderBy("created_at", Query.Direction.DESCENDING) - .whereLessThan("created_at", from) - .limit(20) - .get().await().documents.mapNotNull { it.toObject() } + return query.get().await().documents.mapNotNull { it.toObject() } } suspend fun getJourneyHistory( @@ -98,13 +114,13 @@ class ApiJourneyService @Inject constructor( from: Long, to: Long ): List { - val previousDayJourney = journeyRef(userId).whereEqualTo("user_id", userId) + val previousDayJourney = spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .whereLessThan("created_at", from) .whereGreaterThanOrEqualTo("update_at", from) .limit(1) .get().await().documents.mapNotNull { it.toObject() } - val currentDayJourney = journeyRef(userId).whereEqualTo("user_id", userId) + val currentDayJourney = spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .whereGreaterThanOrEqualTo("created_at", from) .whereLessThanOrEqualTo("created_at", to) .orderBy("created_at", Query.Direction.DESCENDING) @@ -114,8 +130,8 @@ class ApiJourneyService @Inject constructor( return previousDayJourney + currentDayJourney } - suspend fun getLocationJourneyFromId(userId: String, journeyId: String): LocationJourney? { - return journeyRef(userId).document(journeyId).get().await() + suspend fun getLocationJourneyFromId(journeyId: String): LocationJourney? { + return spaceMemberJourneyRef(currentSpaceId).document(journeyId).get().await() .toObject(LocationJourney::class.java) } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 41999c99..1c8cd874 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -1,12 +1,15 @@ package com.canopas.yourspace.data.service.location +import android.util.Log import com.canopas.yourspace.data.models.location.ApiLocation +import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flow import kotlinx.coroutines.tasks.await import timber.log.Timber import javax.inject.Inject @@ -15,28 +18,38 @@ import javax.inject.Singleton @Singleton class ApiLocationService @Inject constructor( db: FirebaseFirestore, - private val locationManager: LocationManager + private val locationManager: LocationManager, + private val userPreferences: UserPreferences ) { - private val userRef = db.collection(Config.FIRESTORE_COLLECTION_USERS) - private fun locationRef(userId: String) = - userRef.document(userId.takeIf { it.isNotBlank() } ?: "null") + var currentSpaceId: String = userPreferences.currentSpace ?: "" + + private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) + private fun spaceMemberRef(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( + FIRESTORE_COLLECTION_SPACE_MEMBERS + ) + private fun spaceMemberLocationRef(spaceId: String) = + spaceMemberRef(spaceId) + .document(currentSpaceId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_LOCATIONS) suspend fun saveLastKnownLocation( userId: String ) { val lastLocation = locationManager.getLastLocation() ?: return - val docRef = locationRef(userId).document() + userPreferences.currentUser?.space_ids?.forEach { + val docRef = spaceMemberLocationRef(it).document() - val location = ApiLocation( - id = docRef.id, - user_id = userId, - latitude = lastLocation.latitude, - longitude = lastLocation.longitude, - created_at = System.currentTimeMillis() - ) + val location = ApiLocation( + id = docRef.id, + user_id = userId, + latitude = lastLocation.latitude, + longitude = lastLocation.longitude, + created_at = System.currentTimeMillis() + ) - docRef.set(location).await() + docRef.set(location).await() + } } suspend fun saveCurrentLocation( @@ -45,22 +58,25 @@ class ApiLocationService @Inject constructor( longitude: Double, recordedAt: Long ) { - val docRef = locationRef(userId).document() + Log.e("XXXXXX", "SpaceId: $currentSpaceId") + userPreferences.currentUser?.space_ids?.forEach { + val docRef = spaceMemberLocationRef(it).document() - val location = ApiLocation( - id = docRef.id, - user_id = userId, - latitude = latitude, - longitude = longitude, - created_at = recordedAt - ) + val location = ApiLocation( + id = docRef.id, + user_id = userId, + latitude = latitude, + longitude = longitude, + created_at = recordedAt + ) - docRef.set(location).await() + docRef.set(location).await() + } } fun getCurrentLocation(userId: String): Flow>? { return try { - locationRef(userId).whereEqualTo("user_id", userId) + spaceMemberLocationRef(currentSpaceId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING).limit(1) .snapshotFlow(ApiLocation::class.java) } catch (e: Exception) { @@ -68,34 +84,4 @@ class ApiLocationService @Inject constructor( null } } - - suspend fun getLastFiveMinuteLocations(userId: String): Flow> { - val currentTime = System.currentTimeMillis() - val locations = mutableListOf() - - for (i in 0 until 5) { - try { - val startTime = currentTime - (i + 1) * 60000 - val endTime = startTime - 60000 - val reference = locationRef(userId) - val apiLocation = reference - .whereEqualTo("user_id", userId) - .whereGreaterThanOrEqualTo("created_at", endTime) - .whereLessThan("created_at", startTime) - .orderBy("created_at", Query.Direction.DESCENDING).limit(1) - .get().await().documents - .firstOrNull()?.toObject(ApiLocation::class.java) - - apiLocation?.let { - locations.add(it) - } - } catch (e: Exception) { - Timber.e(e, "Error while getting last $i minute locations") - } - } - - return flow { - emit(locations) - } - } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index c20f7fc2..cb9cdf3d 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -23,7 +23,7 @@ class ApiSpaceService @Inject constructor( private val placeService: ApiPlaceService ) { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) - private fun spaceMemberRef(spaceId: String) = + internal fun spaceMemberRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) suspend fun createSpace(spaceName: String): String { From b3232a708478d24a0b101b4b31077caa0141277e Mon Sep 17 00:00:00 2001 From: cp-megh Date: Fri, 6 Dec 2024 14:57:21 +0530 Subject: [PATCH 02/39] WIP --- .../canopas/yourspace/YourSpaceApplication.kt | 2 +- build.gradle.kts | 1 + data/build.gradle.kts | 29 +++++++++++++++ data/proguard-rules.pro | 4 ++- .../data/models/location/ApiLocation.kt | 10 ++++++ .../data/models/location/LocationJourney.kt | 24 +++++++++++++ firestore.rules | 36 +++++++++++++++++-- 7 files changed, 101 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt index 280911f1..260071a3 100644 --- a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt +++ b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt @@ -53,7 +53,7 @@ class YourSpaceApplication : super.onCreate() Timber.plant(Timber.DebugTree()) - FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = !BuildConfig.DEBUG + FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = false ProcessLifecycleOwner.get().lifecycle.addObserver(this) authService.addListener(this) setNotificationChannel() diff --git a/build.gradle.kts b/build.gradle.kts index 6161aafc..f4d20266 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,4 +9,5 @@ plugins { id("com.google.firebase.crashlytics") version "3.0.2" apply false id("org.jetbrains.kotlin.jvm") version "1.9.23" id("com.google.devtools.ksp") version "1.9.23-1.0.20" + id("com.google.protobuf") version "0.9.4" apply false } diff --git a/data/build.gradle.kts b/data/build.gradle.kts index e0d79d8e..f7203dc2 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -4,6 +4,7 @@ plugins { id("com.google.dagger.hilt.android") id("org.jlleitschuh.gradle.ktlint") id("com.google.devtools.ksp") + id("com.google.protobuf") } android { @@ -37,6 +38,9 @@ android { ktlint { debug = true } + configurations.all { + resolutionStrategy.force("com.google.protobuf:protobuf-javalite:3.10.0") + } } dependencies { @@ -83,4 +87,29 @@ dependencies { // Place implementation("com.google.android.libraries.places:places:4.0.0") + + // Signal Protocol + implementation("org.whispersystems:signal-protocol-android:2.8.1") { + exclude(group = "com.google.protobuf", module = "protolite-java") + } + implementation("com.google.protobuf:protobuf-javalite:3.10.0") // Align with Signal Protocol version + + // AndroidX Security for EncryptedSharedPreferences + implementation("androidx.security:security-crypto:1.1.0-alpha06") + +} + +protobuf { + protoc { + artifact = "com.google.protobuf:protoc:3.10.0" + } + generateProtoTasks { + all().forEach { task -> + task.builtins { + create("java") { + option("lite") + } + } + } + } } diff --git a/data/proguard-rules.pro b/data/proguard-rules.pro index 481bb434..4402fd6f 100644 --- a/data/proguard-rules.pro +++ b/data/proguard-rules.pro @@ -18,4 +18,6 @@ # If you keep the line number information, uncomment this to # hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file +#-renamesourcefileattribute SourceFile +-keep class com.google.protobuf.** { *; } +-keep class org.whispersystems.** { *; } \ No newline at end of file diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt index 274383f7..04d34497 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt @@ -14,6 +14,16 @@ data class ApiLocation( val created_at: Long? = System.currentTimeMillis() ) +@Keep +@JsonClass(generateAdapter = true) +data class EncryptedApiLocation( + val id: String = UUID.randomUUID().toString(), + val user_id: String = "", + val encrypted_latitude: String = "", // Base64 encoded encrypted latitude + val encrypted_longitude: String = "", // Base64 encoded encrypted longitude + val created_at: Long? = System.currentTimeMillis() +) + fun ApiLocation.toLocation() = android.location.Location("").apply { latitude = this@toLocation.latitude longitude = this@toLocation.longitude diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index d01a572c..b3b27907 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -22,9 +22,33 @@ data class LocationJourney( val update_at: Long? = System.currentTimeMillis() ) +@Keep +@JsonClass(generateAdapter = true) +data class EncryptedLocationJourney( + val id: String = UUID.randomUUID().toString(), + val user_id: String = "", + val encrypted_from_latitude: String = "", // Base64 encoded + val encrypted_from_longitude: String = "", + val encrypted_to_latitude: String? = "", + val encrypted_to_longitude: String? = "", + val route_distance: Double? = null, + val route_duration: Long? = null, + val encrypted_routes: List = emptyList(), + val created_at: Long? = System.currentTimeMillis(), + val updated_at: Long? = System.currentTimeMillis() +) + + @Keep data class JourneyRoute(val latitude: Double = 0.0, val longitude: Double = 0.0) +@Keep +@JsonClass(generateAdapter = true) +data class EncryptedJourneyRoute( + val encrypted_latitude: String = "", + val encrypted_longitude: String = "" +) + fun Location.toRoute(): JourneyRoute { return JourneyRoute(latitude, longitude) } diff --git a/firestore.rules b/firestore.rules index d9306cd5..4cb4670c 100644 --- a/firestore.rules +++ b/firestore.rules @@ -32,7 +32,7 @@ service cloud.firestore { match /users/{docId} { allow create : if isAuthorized() && request.auth.uid == docId && request.resource.data.keys().hasAll(["id", "auth_type", "location_enabled", "provider_firebase_id_token", "created_at"]) && - request.resource.data.keys().hasAny(["email", "phone"]) && + request.resource.data.email is string && request.resource.data.id is string && request.resource.data.auth_type is int && (request.resource.data.auth_type == 1 || request.resource.data.auth_type == 2) && @@ -40,7 +40,6 @@ service cloud.firestore { request.resource.data.provider_firebase_id_token is string && request.resource.data.created_at is int && request.resource.data.get('first_name', '') is string && - request.resource.data.get('phone', '') is string && request.resource.data.get('email', '') is string && request.resource.data.get('last_name', '') is string && request.resource.data.get('fcm_token', '') is string && @@ -151,7 +150,7 @@ service cloud.firestore { request.resource.data.created_at is timestamp; } - function isPlaceAdmin(spaceId, placeId) { + function isPlaceAdmin(spaceId, place) { let created_by = get(/databases/$(database)/documents/spaces/$(spaceId)/space_places/$(place)).data.created_by; return request.auth.uid == created_by; } @@ -193,6 +192,37 @@ service cloud.firestore { (request.resource.data.role == 1 || request.resource.data.role == 2) && request.resource.data.location_enabled is bool && request.resource.data.created_at is int; + + function readSpaceMemberLocation(spaceId) { + return exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); + } + + match /user_locations/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readSpaceMemberLocation()); + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "sender_key", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.latitude is string && + request.resource.data.longitude is string && + request.resource.data.sender_key is string && + request.resource.data.created_at is int; + } + + match /user_journeys/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readSpaceMemberLocation()); + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.from_latitude is string && + request.resource.data.from_longitude is string && + request.resource.data.created_at is int; + } } match /space_invitations/{docId} { From 78bd44ad649e97780c2c330062afc65148b9b327 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 12 Dec 2024 18:26:20 +0530 Subject: [PATCH 03/39] WIP --- app/build.gradle.kts | 6 +- .../detail/UserJourneyDetailViewModel.kt | 2 +- build.gradle.kts | 1 - data/build.gradle.kts | 35 +- .../data/models/location/LocationJourney.kt | 1 - .../yourspace/data/models/space/ApiSpace.kt | 1 + .../yourspace/data/models/user/ApiUser.kt | 19 +- .../security/entity/BaseEncryptedEntity.kt | 8 + .../yourspace/data/security/helper/Helper.kt | 13 + .../data/security/helper/SignalKeyHelper.kt | 192 +++++++ .../security/session/EncryptedSpaceSession.kt | 110 ++++ .../data/service/auth/AuthService.kt | 2 +- .../service/location/ApiJourneyService.kt | 118 +++- .../service/location/ApiLocationService.kt | 190 ++++++- .../data/service/space/ApiSpaceService.kt | 61 +- .../data/service/user/ApiUserService.kt | 16 +- firestore.rules | 523 +++++++++--------- gradle.properties | 1 + 18 files changed, 941 insertions(+), 358 deletions(-) create mode 100644 data/src/main/java/com/canopas/yourspace/data/security/entity/BaseEncryptedEntity.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/security/helper/Helper.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/security/helper/SignalKeyHelper.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/security/session/EncryptedSpaceSession.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7aaae700..8f8fa696 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -103,12 +103,12 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } buildFeatures { compose = true diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt index 1cd4eb53..1177147e 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt @@ -58,7 +58,7 @@ class UserJourneyDetailViewModel @Inject constructor( private fun fetchJourney() = viewModelScope.launch(appDispatcher.IO) { try { _state.value = _state.value.copy(isLoading = true) - val journey = journeyService.getLocationJourneyFromId(journeyId) + val journey = journeyService.getLocationJourneyFromId(journeyId, userId) if (journey == null) { _state.value = _state.value.copy( isLoading = false, diff --git a/build.gradle.kts b/build.gradle.kts index f4d20266..6161aafc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,5 +9,4 @@ plugins { id("com.google.firebase.crashlytics") version "3.0.2" apply false id("org.jetbrains.kotlin.jvm") version "1.9.23" id("com.google.devtools.ksp") version "1.9.23-1.0.20" - id("com.google.protobuf") version "0.9.4" apply false } diff --git a/data/build.gradle.kts b/data/build.gradle.kts index f7203dc2..8dde311c 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -4,7 +4,6 @@ plugins { id("com.google.dagger.hilt.android") id("org.jlleitschuh.gradle.ktlint") id("com.google.devtools.ksp") - id("com.google.protobuf") } android { @@ -28,19 +27,16 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } ktlint { debug = true } - configurations.all { - resolutionStrategy.force("com.google.protobuf:protobuf-javalite:3.10.0") - } } dependencies { @@ -89,27 +85,6 @@ dependencies { implementation("com.google.android.libraries.places:places:4.0.0") // Signal Protocol - implementation("org.whispersystems:signal-protocol-android:2.8.1") { - exclude(group = "com.google.protobuf", module = "protolite-java") - } - implementation("com.google.protobuf:protobuf-javalite:3.10.0") // Align with Signal Protocol version - - // AndroidX Security for EncryptedSharedPreferences - implementation("androidx.security:security-crypto:1.1.0-alpha06") - -} - -protobuf { - protoc { - artifact = "com.google.protobuf:protoc:3.10.0" - } - generateProtoTasks { - all().forEach { task -> - task.builtins { - create("java") { - option("lite") - } - } - } - } + implementation("org.signal:libsignal-client:0.64.1") + implementation("org.signal:libsignal-android:0.64.1") } diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index b3b27907..d2b9e617 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -38,7 +38,6 @@ data class EncryptedLocationJourney( val updated_at: Long? = System.currentTimeMillis() ) - @Keep data class JourneyRoute(val latitude: Double = 0.0, val longitude: Double = 0.0) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index 0d83f35b..692aabe2 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -10,6 +10,7 @@ data class ApiSpace( val id: String = UUID.randomUUID().toString(), val admin_id: String = "", val name: String = "", + val encryptedSenderKeys: Map> = emptyMap(), // User-specific encrypted keys val created_at: Long? = System.currentTimeMillis() ) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt index e35e5e98..c00be17a 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt @@ -3,6 +3,9 @@ package com.canopas.yourspace.data.models.user import androidx.annotation.Keep import com.google.firebase.firestore.Exclude import com.squareup.moshi.JsonClass +import org.signal.libsignal.protocol.IdentityKeyPair +import org.signal.libsignal.protocol.state.PreKeyRecord +import org.signal.libsignal.protocol.state.SignedPreKeyRecord import java.util.UUID const val LOGIN_TYPE_GOOGLE = 1 @@ -24,7 +27,12 @@ data class ApiUser( val state: Int = USER_STATE_UNKNOWN, val battery_pct: Float? = 0f, val created_at: Long? = System.currentTimeMillis(), - val updated_at: Long? = System.currentTimeMillis() + val updated_at: Long? = System.currentTimeMillis(), + val public_key: String? = null, // Identity public key (Base64-encoded) + val private_key: String? = null, // Identity private key (Base64-encoded and encrypted) + val pre_keys: List? = null, // List of serialized PreKeys (Base64-encoded) + val signed_pre_key: String? = null, // Serialized Signed PreKey (Base64-encoded) + val registration_id: Int = 0 // Signal Protocol registration ID ) { @get:Exclude val fullName: String get() = "$first_name $last_name" @@ -39,6 +47,15 @@ data class ApiUser( val locationPermissionDenied: Boolean get() = state == USER_STATE_LOCATION_PERMISSION_DENIED } +@Keep +@JsonClass(generateAdapter = false) +data class SignalKeys( + val identityKeyPair: IdentityKeyPair, + val signedPreKey: SignedPreKeyRecord, + val preKeys: List, + val registrationId: Int +) + @Keep @JsonClass(generateAdapter = true) data class ApiUserSession( diff --git a/data/src/main/java/com/canopas/yourspace/data/security/entity/BaseEncryptedEntity.kt b/data/src/main/java/com/canopas/yourspace/data/security/entity/BaseEncryptedEntity.kt new file mode 100644 index 00000000..5989dda5 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/security/entity/BaseEncryptedEntity.kt @@ -0,0 +1,8 @@ +package com.canopas.yourspace.data.security.entity + +import org.signal.libsignal.protocol.SignalProtocolAddress + +abstract class BaseEncryptedEntity protected constructor( + val registrationId: Int, + val signalProtocolAddress: SignalProtocolAddress +) diff --git a/data/src/main/java/com/canopas/yourspace/data/security/helper/Helper.kt b/data/src/main/java/com/canopas/yourspace/data/security/helper/Helper.kt new file mode 100644 index 00000000..2d257ebd --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/security/helper/Helper.kt @@ -0,0 +1,13 @@ +package com.canopas.yourspace.data.security.helper + +import android.util.Base64 + +object Helper { + fun encodeToBase64(value: ByteArray?): String { + return Base64.encodeToString(value, Base64.NO_WRAP) + } + + fun decodeToByteArray(base64: String?): ByteArray { + return Base64.decode(base64, Base64.NO_WRAP) + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/security/helper/SignalKeyHelper.kt b/data/src/main/java/com/canopas/yourspace/data/security/helper/SignalKeyHelper.kt new file mode 100644 index 00000000..02c2a8e8 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/security/helper/SignalKeyHelper.kt @@ -0,0 +1,192 @@ +package com.canopas.yourspace.data.security.helper + +import android.util.Base64 +import com.canopas.yourspace.data.models.user.ApiUser +import com.canopas.yourspace.data.models.user.SignalKeys +import org.signal.libsignal.protocol.IdentityKey +import org.signal.libsignal.protocol.IdentityKeyPair +import org.signal.libsignal.protocol.InvalidKeyException +import org.signal.libsignal.protocol.SignalProtocolAddress +import org.signal.libsignal.protocol.ecc.Curve +import org.signal.libsignal.protocol.groups.GroupSessionBuilder +import org.signal.libsignal.protocol.groups.state.SenderKeyRecord +import org.signal.libsignal.protocol.state.PreKeyRecord +import org.signal.libsignal.protocol.state.SignedPreKeyRecord +import org.signal.libsignal.protocol.state.impl.InMemorySignalProtocolStore +import org.signal.libsignal.protocol.util.KeyHelper +import org.signal.libsignal.protocol.util.Medium +import java.util.LinkedList +import java.util.Random +import java.util.UUID +import javax.crypto.Cipher +import javax.crypto.KeyGenerator +import javax.crypto.SecretKey +import javax.crypto.spec.SecretKeySpec +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class SignalKeyHelper @Inject constructor() { + + private fun generateIdentityKeyPair(): IdentityKeyPair { + val djbKeyPair = Curve.generateKeyPair() + val djbIdentityKey = IdentityKey(djbKeyPair.publicKey) + val djbPrivateKey = djbKeyPair.privateKey + + return IdentityKeyPair(djbIdentityKey, djbPrivateKey) + } + + @Throws(InvalidKeyException::class) + fun generateSignedPreKey( + identityKeyPair: IdentityKeyPair, + signedPreKeyId: Int + ): SignedPreKeyRecord { + val keyPair = Curve.generateKeyPair() + val signature = + Curve.calculateSignature(identityKeyPair.privateKey, keyPair.publicKey.serialize()) + return SignedPreKeyRecord(signedPreKeyId, System.currentTimeMillis(), keyPair, signature) + } + + private fun generatePreKeys(): List { + val records: MutableList = LinkedList() + val preKeyIdOffset = Random().nextInt(Medium.MAX_VALUE - 101) + for (i in 0 until 100) { + val preKeyId = (preKeyIdOffset + i) % Medium.MAX_VALUE + val keyPair = Curve.generateKeyPair() + val record = PreKeyRecord(preKeyId, keyPair) + + records.add(record) + } + + return records + } + + fun generateSignalKeys(): SignalKeys { + val identityKeyPair = generateIdentityKeyPair() + val signedPreKey = generateSignedPreKey(identityKeyPair, Random().nextInt(Medium.MAX_VALUE - 1)) + val preKeys = generatePreKeys() + val registrationId = KeyHelper.generateRegistrationId(false) + + return SignalKeys( + identityKeyPair = identityKeyPair, + signedPreKey = signedPreKey, + preKeys = preKeys, + registrationId = registrationId + ) + } + + fun createDistributionKey( + user: ApiUser, + deviceId: String, + spaceId: String + ): Pair { + val signalProtocolAddress = SignalProtocolAddress(user.id, deviceId.hashCode()) + val identityKeyPair = IdentityKeyPair( + IdentityKey(Curve.decodePoint(Base64.decode(user.public_key, Base64.DEFAULT), 0)), + Curve.decodePrivatePoint(Base64.decode(user.private_key, Base64.DEFAULT)) + ) + val signalProtocolStore = InMemorySignalProtocolStore(identityKeyPair, user.registration_id) + val signedPreKeyId = SignedPreKeyRecord(Helper.decodeToByteArray(user.signed_pre_key)).id + val preKeys = SignedPreKeyRecord(Helper.decodeToByteArray(user.signed_pre_key)) + signalProtocolStore.storeSignedPreKey(signedPreKeyId, preKeys) + + user.pre_keys?.let { preKeyRecords -> + val deserializedPreKeys = + preKeyRecords.map { PreKeyRecord(Helper.decodeToByteArray(it)) } + for (record in deserializedPreKeys) { + signalProtocolStore.storePreKey(record.id, record) + } + } + val validSpaceId = try { + UUID.fromString(spaceId) // Validate if it's a proper UUID string + } catch (e: IllegalArgumentException) { + UUID.randomUUID() // Fallback to a new valid UUID if parsing fails + } + signalProtocolStore.storeSenderKey( + signalProtocolAddress, + validSpaceId, + SenderKeyRecord(Helper.decodeToByteArray(user.signed_pre_key)) + ) + + val sessionBuilder = GroupSessionBuilder(signalProtocolStore) + val senderKeyDistributionMessage = + sessionBuilder.create(signalProtocolAddress, validSpaceId) + val senderKeyRecord = signalProtocolStore.loadSenderKey(signalProtocolAddress, validSpaceId) + + return Pair( + Helper.encodeToBase64(senderKeyDistributionMessage.serialize()), + Helper.encodeToBase64(senderKeyRecord.serialize()) + ) + } + + private fun encryptAESKeyWithECDH( + aesKey: SecretKey, + publicKey: String, + senderPrivateKey: String + ): String { + val ecPublicKey = Curve.decodePoint(Base64.decode(publicKey, Base64.DEFAULT), 0) + val ecPrivateKey = Curve.decodePrivatePoint(Base64.decode(senderPrivateKey, Base64.DEFAULT)) + val sharedSecret = Curve.calculateAgreement(ecPublicKey, ecPrivateKey) + val secretKeySpec = SecretKeySpec(sharedSecret, 0, 32, "AES") + val cipher = Cipher.getInstance("AES") + cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec) + val encryptedAESKey = cipher.doFinal(aesKey.encoded) + + return Base64.encodeToString(encryptedAESKey, Base64.NO_WRAP) + } + + private fun decryptAESKeyWithECDH( + encryptedAESKey: String, + privateKey: String, + senderPublicKey: String + ): SecretKey { + val ecPublicKey = Curve.decodePoint(Base64.decode(senderPublicKey, Base64.DEFAULT), 0) + val ecPrivateKey = Curve.decodePrivatePoint(Base64.decode(privateKey, Base64.DEFAULT)) + val sharedSecret = Curve.calculateAgreement(ecPublicKey, ecPrivateKey) + val secretKeySpec = SecretKeySpec(sharedSecret, 0, 32, "AES") + val cipher = Cipher.getInstance("AES") + cipher.init(Cipher.DECRYPT_MODE, secretKeySpec) + val decryptedAESKeyBytes = cipher.doFinal(Base64.decode(encryptedAESKey, Base64.DEFAULT)) + + return SecretKeySpec(decryptedAESKeyBytes, "AES") + } + + fun encryptSenderKeyForGroup( + senderKey: String, + senderPrivateKey: String, + recipients: List + ): Map> { + val encryptedKeys = mutableMapOf>() + val keyGen = KeyGenerator.getInstance("AES") + val aesKey: SecretKey = keyGen.generateKey() + val cipher = Cipher.getInstance("AES") + cipher.init(Cipher.ENCRYPT_MODE, aesKey) + val encryptedSenderKey = + Base64.encodeToString(cipher.doFinal(senderKey.toByteArray()), Base64.NO_WRAP) + recipients.forEach { recipient -> + recipient?.let { + val recipientPublicKey = recipient.public_key!! + val encryptedAESKey = + encryptAESKeyWithECDH(aesKey, recipientPublicKey, senderPrivateKey) + encryptedKeys[recipient.id] = Pair(encryptedSenderKey, encryptedAESKey) + } + } + + return encryptedKeys + } + + fun decryptSenderKey( + encryptedSenderKey: String, + encryptedAESKey: String, + recipientPrivateKey: String, + senderPublicKey: String + ): String { + val aesKey = decryptAESKeyWithECDH(encryptedAESKey, recipientPrivateKey, senderPublicKey) + val cipher = Cipher.getInstance("AES") + cipher.init(Cipher.DECRYPT_MODE, aesKey) + val decryptedSenderKeyBytes = + cipher.doFinal(Base64.decode(encryptedSenderKey, Base64.DEFAULT)) + + return String(decryptedSenderKeyBytes) + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/security/session/EncryptedSpaceSession.kt b/data/src/main/java/com/canopas/yourspace/data/security/session/EncryptedSpaceSession.kt new file mode 100644 index 00000000..27b9eb40 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/security/session/EncryptedSpaceSession.kt @@ -0,0 +1,110 @@ +package com.canopas.yourspace.data.security.session + +import android.util.Base64 +import androidx.annotation.Keep +import com.canopas.yourspace.data.models.user.ApiUser +import com.canopas.yourspace.data.security.helper.Helper +import com.squareup.moshi.JsonClass +import org.signal.libsignal.protocol.IdentityKey +import org.signal.libsignal.protocol.IdentityKeyPair +import org.signal.libsignal.protocol.NoSessionException +import org.signal.libsignal.protocol.SignalProtocolAddress +import org.signal.libsignal.protocol.ecc.Curve +import org.signal.libsignal.protocol.groups.GroupCipher +import org.signal.libsignal.protocol.groups.GroupSessionBuilder +import org.signal.libsignal.protocol.groups.state.SenderKeyRecord +import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage +import org.signal.libsignal.protocol.state.PreKeyRecord +import org.signal.libsignal.protocol.state.SignedPreKeyRecord +import org.signal.libsignal.protocol.state.impl.InMemorySignalProtocolStore +import java.nio.charset.StandardCharsets +import java.util.UUID + +class EncryptedSpaceSession( + currentUser: ApiUser, + keyRecord: String?, + spaceId: String +) { + private val spaceDistributionId: UUID = try { + UUID.fromString(spaceId) // Validate if it's a proper UUID string + } catch (e: IllegalArgumentException) { + UUID.randomUUID() // Fallback to a new valid UUID if parsing fails + } + private val signalProtocolAddress = SignalProtocolAddress(currentUser.id, 1) + private val identityKeyPair = IdentityKeyPair( + IdentityKey(Curve.decodePoint(Base64.decode(currentUser.public_key, Base64.DEFAULT), 0)), + Curve.decodePrivatePoint(Base64.decode(currentUser.private_key, Base64.DEFAULT)) + ) + + private val protocolStore = InMemorySignalProtocolStore(identityKeyPair, currentUser.registration_id) + private val encryptGroupCipher: GroupCipher + private val decryptCiphers = mutableMapOf() + private val distributionStore = mutableMapOf() + private val sessionBuilder = GroupSessionBuilder(protocolStore) + + init { + val signedPreKey = SignedPreKeyRecord(Helper.decodeToByteArray(currentUser.signed_pre_key)) + protocolStore.storeSignedPreKey(signedPreKey.id, signedPreKey) + + currentUser.pre_keys?.forEach { preKey -> + val record = PreKeyRecord(Helper.decodeToByteArray(preKey)) + protocolStore.storePreKey(record.id, record) + } + + if (keyRecord != null) { + protocolStore.storeSenderKey( + signalProtocolAddress, + spaceDistributionId, + SenderKeyRecord(Helper.decodeToByteArray(keyRecord)) + ) + } + + encryptGroupCipher = GroupCipher(protocolStore, signalProtocolAddress) + } + + val keyRecord: String + get() { + val record = protocolStore.loadSenderKey(signalProtocolAddress, spaceDistributionId) + return Helper.encodeToBase64(record.serialize()) + } + + fun createSession(members: List) { + members.forEach { member -> + val distributionKey = Helper.decodeToByteArray(member.keyDistributionMessage) + val keyMessage = SenderKeyDistributionMessage(distributionKey) + val address = SignalProtocolAddress(member.userId, 1) + + if (!decryptCiphers.containsKey(member.userId) || + distributionStore[member.userId] != member.keyDistributionMessage + ) { + distributionStore.remove(member.userId) + decryptCiphers.remove(member.userId) + + sessionBuilder.process(address, keyMessage) + distributionStore[member.userId] = member.keyDistributionMessage + decryptCiphers[member.userId] = GroupCipher(protocolStore, address) + } + } + } + + fun encryptMessage(message: String): String { + val encrypted = encryptGroupCipher.encrypt( + spaceDistributionId, + message.toByteArray(StandardCharsets.UTF_8) + ) + return Helper.encodeToBase64(encrypted.serialize()) + } + + fun decryptMessage(encryptedMessage: String?, userId: String): String { + val cipher = decryptCiphers[userId] ?: throw NoSessionException("No cipher for user $userId") + val decrypted = cipher.decrypt(Helper.decodeToByteArray(encryptedMessage)) + return String(decrypted, StandardCharsets.UTF_8) + } +} + +@Keep +@JsonClass(generateAdapter = false) +data class SpaceKeyDistribution( + val userId: String, + val keyDistributionMessage: String +) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 311e74b5..0923b2e2 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -75,7 +75,7 @@ class AuthService @Inject constructor( userPreferences.currentUser = newUser } - private var currentUserSession: ApiUserSession? + var currentUserSession: ApiUserSession? get() { return userPreferences.currentUserSession } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 71050bc8..32b59605 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -1,7 +1,16 @@ package com.canopas.yourspace.data.service.location +import com.canopas.yourspace.data.models.location.EncryptedJourneyRoute +import com.canopas.yourspace.data.models.location.EncryptedLocationJourney import com.canopas.yourspace.data.models.location.JourneyRoute import com.canopas.yourspace.data.models.location.LocationJourney +import com.canopas.yourspace.data.models.space.ApiSpace +import com.canopas.yourspace.data.models.space.ApiSpaceMember +import com.canopas.yourspace.data.models.user.ApiUser +import com.canopas.yourspace.data.security.helper.SignalKeyHelper +import com.canopas.yourspace.data.security.session.EncryptedSpaceSession +import com.canopas.yourspace.data.security.session.SpaceKeyDistribution +import com.canopas.yourspace.data.service.user.ApiUserService import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES @@ -9,7 +18,6 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBER import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import com.google.firebase.firestore.toObject -import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.tasks.await import timber.log.Timber import javax.inject.Inject @@ -18,7 +26,9 @@ import javax.inject.Singleton @Singleton class ApiJourneyService @Inject constructor( db: FirebaseFirestore, - private val userPreferences: UserPreferences + private val userPreferences: UserPreferences, + private val signalKeyHelper: SignalKeyHelper, + private val apiUserService: ApiUserService ) { var currentSpaceId: String = userPreferences.currentSpace ?: "" @@ -27,14 +37,14 @@ class ApiJourneyService @Inject constructor( // Document references must have an even number of segments, but users has 1 // https://stackoverflow.com/a/51195713/22508023 [Explanation can be found in comments] private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) - internal fun spaceMemberRef(spaceId: String) = + private fun spaceMemberRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( FIRESTORE_COLLECTION_SPACE_MEMBERS ) - private fun spaceMemberJourneyRef(spaceId: String) = + private fun spaceMemberJourneyRef(spaceId: String, userId: String) = spaceMemberRef(spaceId) - .document(currentSpaceId.takeIf { it.isNotBlank() } ?: "null") + .document(userId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_JOURNEYS) suspend fun saveCurrentJourney( @@ -50,33 +60,93 @@ class ApiJourneyService @Inject constructor( updateAt: Long? = null, newJourneyId: ((String) -> Unit)? = null ) { - userPreferences.currentUser?.space_ids?.forEach { - val docRef = spaceMemberJourneyRef(it).document() + val user = userPreferences.currentUser ?: return + val userDeviceId = userPreferences.currentUserSession?.device_id ?: return + userPreferences.currentUser?.space_ids?.forEach { spaceId -> + val (_, senderKeyRecord) = signalKeyHelper.createDistributionKey( + user = user, + deviceId = userDeviceId, + spaceId = spaceId + ) + val spaceSession = EncryptedSpaceSession( + currentUser = user, + keyRecord = senderKeyRecord, + spaceId = spaceId + ) + val spaceMembers = spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) + val mSenderKeyDistributionModel = ArrayList().apply { + spaceMembers.forEach { member -> + val memberUser = apiUserService.getUser(member.user_id) ?: return + val decryptedSenderKey = getDecryptedSenderKey( + spaceId, + memberUser, + memberUser.public_key!! + ) + add( + SpaceKeyDistribution( + member.user_id, + decryptedSenderKey + ) + ) + } + } + spaceSession.createSession(mSenderKeyDistributionModel) + val encryptedFromLatitude = spaceSession.encryptMessage(fromLatitude.toString()) + val encryptedFromLongitude = spaceSession.encryptMessage(fromLongitude.toString()) + val encryptedToLatitude = toLatitude?.let { spaceSession.encryptMessage(it.toString()) } + val encryptedToLongitude = toLongitude?.let { spaceSession.encryptMessage(it.toString()) } + val encryptedJourneyRoutes = routes.map { + EncryptedJourneyRoute( + encrypted_latitude = spaceSession.encryptMessage(it.latitude.toString()), + encrypted_longitude = spaceSession.encryptMessage(it.longitude.toString()) + ) + } + + val docRef = spaceMemberJourneyRef(spaceId, userId).document() - val journey = LocationJourney( + val encryptedJourney = EncryptedLocationJourney( id = docRef.id, user_id = userId, - from_latitude = fromLatitude, - from_longitude = fromLongitude, - to_latitude = toLatitude, - to_longitude = toLongitude, + encrypted_from_latitude = encryptedFromLatitude, + encrypted_from_longitude = encryptedFromLongitude, + encrypted_to_latitude = encryptedToLatitude, + encrypted_to_longitude = encryptedToLongitude, route_distance = routeDistance, route_duration = routeDuration, - routes = routes, + encrypted_routes = encryptedJourneyRoutes, created_at = createdAt ?: System.currentTimeMillis(), - update_at = updateAt ?: System.currentTimeMillis() + updated_at = updateAt ?: System.currentTimeMillis() ) - newJourneyId?.invoke(journey.id) + newJourneyId?.invoke(encryptedJourney.id) - docRef.set(journey).await() + docRef.set(encryptedJourney).await() } } + private suspend fun getDecryptedSenderKey( + spaceId: String, + recipient: ApiUser, + senderPublicKey: String + ): String { + val space = spaceRef.document(spaceId).get().await().toObject(ApiSpace::class.java) + ?: throw Exception("Space not found") + + val encryptedKeys = space.encryptedSenderKeys[recipient.id] + ?: throw Exception("No keys found for recipient") + + return signalKeyHelper.decryptSenderKey( + encryptedSenderKey = encryptedKeys["encryptedSenderKey"]!!, + encryptedAESKey = encryptedKeys["encryptedAESKey"]!!, + recipientPrivateKey = recipient.private_key!!, + senderPublicKey = senderPublicKey + ) + } + suspend fun updateLastLocationJourney(userId: String, journey: LocationJourney) { try { userPreferences.currentUser?.space_ids?.forEach { - spaceMemberJourneyRef(it).document(journey.id).set(journey).await() + spaceMemberJourneyRef(it, userId).document(journey.id).set(journey).await() } } catch (e: Exception) { Timber.e(e, "Error while updating last location journey") @@ -84,7 +154,7 @@ class ApiJourneyService @Inject constructor( } suspend fun getLastJourneyLocation(userId: String) = try { - spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING).limit(1) .get().await().documents.firstOrNull()?.toObject() } catch (e: Exception) { @@ -97,11 +167,11 @@ class ApiJourneyService @Inject constructor( from: Long? ): List { val query = if (from == null) { - spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) .limit(20) } else { - spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) .whereLessThan("created_at", from) .limit(20) @@ -114,13 +184,13 @@ class ApiJourneyService @Inject constructor( from: Long, to: Long ): List { - val previousDayJourney = spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + val previousDayJourney = spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .whereLessThan("created_at", from) .whereGreaterThanOrEqualTo("update_at", from) .limit(1) .get().await().documents.mapNotNull { it.toObject() } - val currentDayJourney = spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + val currentDayJourney = spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .whereGreaterThanOrEqualTo("created_at", from) .whereLessThanOrEqualTo("created_at", to) .orderBy("created_at", Query.Direction.DESCENDING) @@ -130,8 +200,8 @@ class ApiJourneyService @Inject constructor( return previousDayJourney + currentDayJourney } - suspend fun getLocationJourneyFromId(journeyId: String): LocationJourney? { - return spaceMemberJourneyRef(currentSpaceId).document(journeyId).get().await() + suspend fun getLocationJourneyFromId(journeyId: String, userId: String): LocationJourney? { + return spaceMemberJourneyRef(currentSpaceId, userId = userId).document(journeyId).get().await() .toObject(LocationJourney::class.java) } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 1c8cd874..e7c76b30 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -1,15 +1,23 @@ package com.canopas.yourspace.data.service.location -import android.util.Log import com.canopas.yourspace.data.models.location.ApiLocation +import com.canopas.yourspace.data.models.location.EncryptedApiLocation +import com.canopas.yourspace.data.models.space.ApiSpace +import com.canopas.yourspace.data.models.space.ApiSpaceMember +import com.canopas.yourspace.data.models.user.ApiUser +import com.canopas.yourspace.data.security.helper.SignalKeyHelper +import com.canopas.yourspace.data.security.session.EncryptedSpaceSession +import com.canopas.yourspace.data.security.session.SpaceKeyDistribution import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USERS import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flow import kotlinx.coroutines.tasks.await import timber.log.Timber import javax.inject.Inject @@ -19,36 +27,79 @@ import javax.inject.Singleton class ApiLocationService @Inject constructor( db: FirebaseFirestore, private val locationManager: LocationManager, - private val userPreferences: UserPreferences + private val userPreferences: UserPreferences, + private val signalKeyHelper: SignalKeyHelper ) { var currentSpaceId: String = userPreferences.currentSpace ?: "" private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) + private val userRef = db.collection(FIRESTORE_COLLECTION_USERS) private fun spaceMemberRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( FIRESTORE_COLLECTION_SPACE_MEMBERS ) - private fun spaceMemberLocationRef(spaceId: String) = + private fun spaceMemberLocationRef(spaceId: String, userId: String) = spaceMemberRef(spaceId) - .document(currentSpaceId.takeIf { it.isNotBlank() } ?: "null") + .document(userId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_LOCATIONS) suspend fun saveLastKnownLocation( userId: String ) { val lastLocation = locationManager.getLastLocation() ?: return - userPreferences.currentUser?.space_ids?.forEach { - val docRef = spaceMemberLocationRef(it).document() + val user = userPreferences.currentUser ?: return + val userDeviceId = userPreferences.currentUserSession?.device_id ?: return + userPreferences.currentUser?.space_ids?.forEach { spaceId -> + val (_, senderKeyRecord) = signalKeyHelper.createDistributionKey( + user = user, + deviceId = userDeviceId, + spaceId = spaceId + ) + val spaceSession = EncryptedSpaceSession( + currentUser = user, + keyRecord = senderKeyRecord, + spaceId = spaceId + ) + val spaceMembers = spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) + val mSenderKeyDistributionModel = ArrayList().apply { + spaceMembers.forEach { member -> + val memberUser = getUser(member.user_id) ?: return + val decryptedSenderKey = getDecryptedSenderKey( + spaceId, + memberUser, + memberUser.public_key!! + ) + add( + SpaceKeyDistribution( + member.user_id, + decryptedSenderKey + ) + ) + } + } + spaceSession.createSession(mSenderKeyDistributionModel) + val encryptedLatitude = spaceSession.encryptMessage(lastLocation.latitude.toString()) + val encryptedLongitude = spaceSession.encryptMessage(lastLocation.longitude.toString()) + val docRef = spaceMemberLocationRef(spaceId, userId).document() - val location = ApiLocation( + val encryptedLocation = EncryptedApiLocation( id = docRef.id, user_id = userId, - latitude = lastLocation.latitude, - longitude = lastLocation.longitude, + encrypted_latitude = encryptedLatitude, + encrypted_longitude = encryptedLongitude, created_at = System.currentTimeMillis() ) - docRef.set(location).await() + docRef.set(encryptedLocation).await() + } + } + + suspend fun getUser(userId: String): ApiUser? { + return try { + userRef.document(userId).get().await().toObject(ApiUser::class.java) + } catch (e: Exception) { + Timber.e(e, "Error while getting user") + null } } @@ -58,30 +109,119 @@ class ApiLocationService @Inject constructor( longitude: Double, recordedAt: Long ) { - Log.e("XXXXXX", "SpaceId: $currentSpaceId") - userPreferences.currentUser?.space_ids?.forEach { - val docRef = spaceMemberLocationRef(it).document() + val user = userPreferences.currentUser ?: return + val userDeviceId = userPreferences.currentUserSession?.device_id ?: return + userPreferences.currentUser?.space_ids?.forEach { spaceId -> + val (_, senderKeyRecord) = signalKeyHelper.createDistributionKey( + user = user, + deviceId = userDeviceId, + spaceId = spaceId + ) + val spaceSession = EncryptedSpaceSession( + currentUser = user, + keyRecord = senderKeyRecord, + spaceId = spaceId + ) + val spaceMembers = spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) + val mSenderKeyDistributionModel = ArrayList().apply { + spaceMembers.forEach { member -> + val memberUser = getUser(member.user_id) ?: return + val decryptedSenderKey = getDecryptedSenderKey( + spaceId, + memberUser, + memberUser.public_key!! + ) + add( + SpaceKeyDistribution( + member.user_id, + decryptedSenderKey + ) + ) + } + } + spaceSession.createSession(mSenderKeyDistributionModel) + val encryptedLatitude = spaceSession.encryptMessage(latitude.toString()) + val encryptedLongitude = spaceSession.encryptMessage(longitude.toString()) + val docRef = spaceMemberLocationRef(spaceId, userId).document() - val location = ApiLocation( + val encryptedLocation = EncryptedApiLocation( id = docRef.id, user_id = userId, - latitude = latitude, - longitude = longitude, + encrypted_latitude = encryptedLatitude, + encrypted_longitude = encryptedLongitude, created_at = recordedAt ) - docRef.set(location).await() + docRef.set(encryptedLocation).await() } } - fun getCurrentLocation(userId: String): Flow>? { - return try { - spaceMemberLocationRef(currentSpaceId).whereEqualTo("user_id", userId) - .orderBy("created_at", Query.Direction.DESCENDING).limit(1) - .snapshotFlow(ApiLocation::class.java) - } catch (e: Exception) { - Timber.e(e, "Error while getting current location") - null + private suspend fun getDecryptedSenderKey( + spaceId: String, + recipient: ApiUser, + senderPublicKey: String + ): String { + val space = spaceRef.document(spaceId).get().await().toObject(ApiSpace::class.java) + ?: throw Exception("Space not found") + + val encryptedKeys = space.encryptedSenderKeys[recipient.id] + ?: throw Exception("No keys found for recipient") + + return signalKeyHelper.decryptSenderKey( + encryptedSenderKey = encryptedKeys["encryptedSenderKey"]!!, + encryptedAESKey = encryptedKeys["encryptedAESKey"]!!, + recipientPrivateKey = recipient.private_key!!, + senderPublicKey = senderPublicKey + ) + } + + fun getCurrentLocation(userId: String): Flow> { + return flow { + try { + val encryptedLocation = spaceMemberLocationRef(currentSpaceId, userId) + .whereEqualTo("user_id", userId) + .orderBy("created_at", Query.Direction.DESCENDING) + .limit(1) + .snapshotFlow(EncryptedApiLocation::class.java) + + encryptedLocation.collect { encryptedLocationList -> + val apiLocations = encryptedLocationList.mapNotNull { encryptedLocation -> + val user = getUser(encryptedLocation.user_id) ?: return@mapNotNull null + val senderPublicKey = user.public_key ?: return@mapNotNull null + val space = spaceRef.document(currentSpaceId).get().await().toObject(ApiSpace::class.java) + ?: throw Exception("Space not found") + + val encryptedKeys = space.encryptedSenderKeys[user.id] + ?: throw Exception("No keys found for recipient") + + val decryptedSenderKey = signalKeyHelper.decryptSenderKey( + encryptedSenderKey = encryptedKeys["encryptedSenderKey"]!!, + encryptedAESKey = encryptedKeys["encryptedAESKey"]!!, + recipientPrivateKey = user.private_key!!, + senderPublicKey = senderPublicKey + ) + + val spaceSession = EncryptedSpaceSession( + currentUser = user, + keyRecord = decryptedSenderKey, + spaceId = currentSpaceId + ) + val decryptedLatitude = spaceSession.decryptMessage(encryptedLocation.encrypted_latitude, user.id) + val decryptedLongitude = spaceSession.decryptMessage(encryptedLocation.encrypted_longitude, user.id) + + ApiLocation( + user_id = user.id, + latitude = decryptedLatitude.toDouble(), + longitude = decryptedLongitude.toDouble() + ) + } + + emit(apiLocations) // Emit the list of ApiLocation + } + } catch (e: Exception) { + Timber.e(e, "Error while getting current location") + emit(emptyList()) // Emit an empty list in case of an error + } } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index cb9cdf3d..ab0f19ce 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -4,6 +4,8 @@ import com.canopas.yourspace.data.models.space.ApiSpace import com.canopas.yourspace.data.models.space.ApiSpaceMember import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_ADMIN import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_MEMBER +import com.canopas.yourspace.data.models.user.ApiUser +import com.canopas.yourspace.data.security.helper.SignalKeyHelper import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.service.place.ApiPlaceService import com.canopas.yourspace.data.service.user.ApiUserService @@ -11,6 +13,8 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.FirebaseFirestore +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.tasks.await import javax.inject.Inject import javax.inject.Singleton @@ -20,10 +24,11 @@ class ApiSpaceService @Inject constructor( private val db: FirebaseFirestore, private val authService: AuthService, private val apiUserService: ApiUserService, - private val placeService: ApiPlaceService + private val placeService: ApiPlaceService, + private val signalKeyHelper: SignalKeyHelper ) { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) - internal fun spaceMemberRef(spaceId: String) = + private fun spaceMemberRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) suspend fun createSpace(spaceName: String): String { @@ -49,9 +54,45 @@ class ApiSpaceService @Inject constructor( it.set(member).await() } + val user = authService.currentUser ?: return + val userDeviceId = authService.currentUserSession?.device_id ?: return + val (senderKey, _) = signalKeyHelper.createDistributionKey( + user = user, + deviceId = userDeviceId, + spaceId = spaceId + ) + val spaceMembers = getMemberBySpaceId(spaceId).firstOrNull()?.map { + apiUserService.getUser(it.user_id) ?: return@map null + } + distributeSenderKeyToGroup( + spaceId = spaceId, + senderKey = senderKey, + senderPrivateKey = user.private_key!!, + members = spaceMembers ?: emptyList() + ) apiUserService.addSpaceId(userId, spaceId) } + private suspend fun distributeSenderKeyToGroup( + spaceId: String, + senderKey: String, + senderPrivateKey: String, + members: List + ) { + // Encrypt the Sender Key for each recipient + val encryptedKeys = signalKeyHelper.encryptSenderKeyForGroup(senderKey, senderPrivateKey, members) + val encryptedSenderKeysMap = encryptedKeys.mapValues { entry -> + mapOf( + "encryptedSenderKey" to entry.value.first, + "encryptedAESKey" to entry.value.second + ) + } + + spaceRef.document(spaceId) + .update("encryptedSenderKeys", encryptedSenderKeysMap) + .await() + } + suspend fun enableLocation(spaceId: String, userId: String, enable: Boolean) { spaceMemberRef(spaceId) .whereEqualTo("user_id", userId).get() @@ -95,6 +136,22 @@ class ApiSpaceService @Inject constructor( .whereEqualTo("user_id", userId).get().await().documents.forEach { it.reference.delete().await() } + val user = authService.currentUser ?: return + val userDeviceId = authService.currentUserSession?.device_id ?: return + val (senderKey, _) = signalKeyHelper.createDistributionKey( + user = user, + deviceId = userDeviceId, + spaceId = spaceId + ) + val spaceMembers = getMemberBySpaceId(spaceId).firstOrNull()?.map { + apiUserService.getUser(it.user_id) ?: return@map null + } + distributeSenderKeyToGroup( + spaceId = spaceId, + senderKey = senderKey, + senderPrivateKey = user.private_key!!, + members = spaceMembers ?: emptyList() + ) } suspend fun updateSpace(space: ApiSpace) { diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 9f52f4ab..032eb8fb 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -4,6 +4,8 @@ import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.models.user.ApiUserSession import com.canopas.yourspace.data.models.user.LOGIN_TYPE_APPLE import com.canopas.yourspace.data.models.user.LOGIN_TYPE_GOOGLE +import com.canopas.yourspace.data.security.helper.Helper +import com.canopas.yourspace.data.security.helper.SignalKeyHelper import com.canopas.yourspace.data.service.location.ApiLocationService import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USERS @@ -29,6 +31,7 @@ class ApiUserService @Inject constructor( db: FirebaseFirestore, private val device: Device, private val locationService: ApiLocationService, + private val signalKeyHelper: SignalKeyHelper, private val functions: FirebaseFunctions ) { private val userRef = db.collection(FIRESTORE_COLLECTION_USERS) @@ -74,6 +77,12 @@ class ApiUserService @Inject constructor( sessionDocRef.set(session).await() return Triple(false, savedUser, session) } else { + val signalKeys = signalKeyHelper.generateSignalKeys() + val publicKey = Helper.encodeToBase64(signalKeys.identityKeyPair.publicKey.serialize()) + val privateKey = Helper.encodeToBase64(signalKeys.identityKeyPair.privateKey.serialize()) + val preKeys = signalKeys.preKeys.map { Helper.encodeToBase64(it.serialize()) } + val signedPreKey = Helper.encodeToBase64(signalKeys.signedPreKey.serialize()) + val user = ApiUser( id = uid!!, email = account?.email ?: firebaseUser?.email ?: "", @@ -82,7 +91,12 @@ class ApiUserService @Inject constructor( last_name = account?.familyName ?: "", provider_firebase_id_token = firebaseToken, profile_image = account?.photoUrl?.toString() ?: firebaseUser?.photoUrl?.toString() - ?: "" + ?: "", + public_key = publicKey, + private_key = privateKey, + pre_keys = preKeys, + signed_pre_key = signedPreKey, + registration_id = signalKeys.registrationId ) userRef.document(uid).set(user).await() val sessionDocRef = sessionRef(user.id).document() diff --git a/firestore.rules b/firestore.rules index 4cb4670c..fb0c0c18 100644 --- a/firestore.rules +++ b/firestore.rules @@ -1,293 +1,280 @@ rules_version = '2'; service cloud.firestore { - match /databases/{database}/documents { + match /databases/{database}/documents { - function isAuthorized() { - return request.auth != null; - } - - function readUserLocation() { - let requestedUserSpaceIds = get(/databases/$(database)/documents/users/$(request.auth.uid)).data.space_ids; - let resourceUserSpaceIds = get(/databases/$(database)/documents/users/$(resource.data.user_id)).data.space_ids; - return requestedUserSpaceIds.hasAny(resourceUserSpaceIds); - } - - match /support_requests/{docId} { - allow create : if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["user_id", "title", "description", "device_name","app_version","device_os", "created_at"]) && - request.resource.data.user_id is string && - request.resource.data.title is string && - request.resource.data.description is string && - request.resource.data.device_name is string && - request.resource.data.app_version is string && - request.resource.data.device_os is string && - request.resource.data.created_at is timestamp && - request.resource.data.get('attachments', []) is list; - allow update: if false; - allow delete: if false; - allow read: if isAuthorized() && request.auth.uid == resource.data.user_id; - } - - match /users/{docId} { - allow create : if isAuthorized() && request.auth.uid == docId && - request.resource.data.keys().hasAll(["id", "auth_type", "location_enabled", "provider_firebase_id_token", "created_at"]) && - request.resource.data.email is string && - request.resource.data.id is string && - request.resource.data.auth_type is int && - (request.resource.data.auth_type == 1 || request.resource.data.auth_type == 2) && - request.resource.data.location_enabled is bool && - request.resource.data.provider_firebase_id_token is string && - request.resource.data.created_at is int && - request.resource.data.get('first_name', '') is string && - request.resource.data.get('email', '') is string && - request.resource.data.get('last_name', '') is string && - request.resource.data.get('fcm_token', '') is string && - request.resource.data.get('profile_image', '') is string && - request.resource.data.get('space_ids', []) is list; - - allow update: if isAuthorized() && request.auth.uid == resource.data.id && - request.resource.data.diff(resource.data).affectedKeys().hasAny(['first_name', 'last_name', 'profile_image', 'location_enabled', 'space_ids', 'phone', 'email','fcm_token', 'updated_at', 'battery_pct', 'state']) && - request.resource.data.first_name is string && - request.resource.data.get('last_name', '') is string && - request.resource.data.get('fcm_token', '') is string && - request.resource.data.location_enabled is bool && - request.resource.data.get('space_ids', []) is list; - - allow delete: if isAuthorized() && request.auth.uid == resource.data.id; - allow read: if isAuthorized(); - - match /user_locations/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.latitude is number && - request.resource.data.longitude is number && - request.resource.data.created_at is int; - } - - match /user_journeys/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.from_latitude is number && - request.resource.data.from_longitude is number && - request.resource.data.created_at is int; - } - - - match /user_sessions/{docId} { - allow read: if isAuthorized(); - allow create : if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "device_id", "device_name", "platform", "session_active", "app_version", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.device_id is string && - request.resource.data.device_name is string && - request.resource.data.platform is int && - request.resource.data.platform == 1 && - request.resource.data.session_active is bool && - request.resource.data.app_version is int && - request.resource.data.created_at is int; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - } - } - - match /users/{docId}/user_sessions/{document=**} { - allow read: if isAuthorized() && request.auth.uid == docId; - } - - function isSpaceAdmin(spaceId) { - let adminId = get(/databases/$(database)/documents/spaces/$(spaceId)).data.admin_id; - return request.auth.uid == adminId; - } + function isAuthorized() { + return request.auth != null; + } - function isSpaceMember(spaceId) { - let isMember = exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); - return isMember; - } + function readUserLocation() { + let requestedUserSpaceIds = get(/databases/$(database)/documents/users/$(request.auth.uid)).data.space_ids; + let resourceUserSpaceIds = get(/databases/$(database)/documents/users/$(resource.data.user_id)).data.space_ids; + return requestedUserSpaceIds.hasAny(resourceUserSpaceIds); + } - match /spaces/{docId} { - allow read: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.admin_id; - allow update: if isAuthorized() && request.auth.uid == resource.data.admin_id; - allow create: if isAuthorized() && - request.resource.data.keys().hasAll(["id", "admin_id", "name", "created_at"]) && - request.resource.data.id is string && - request.resource.data.admin_id is string && - request.resource.data.name is string && - request.resource.data.created_at is int; + match /support_requests/{docId} { + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["user_id", "title", "description", "device_name", "app_version", "device_os", "created_at"]) && + request.resource.data.user_id is string && + request.resource.data.title is string && + request.resource.data.description is string && + request.resource.data.device_name is string && + request.resource.data.app_version is string && + request.resource.data.device_os is string && + request.resource.data.created_at is timestamp && + request.resource.data.get('attachments', []) is list; + allow update: if false; + allow delete: if false; + allow read: if isAuthorized() && request.auth.uid == resource.data.user_id; + } + match /users/{docId} { + allow create: if isAuthorized() && request.auth.uid == docId && + request.resource.data.keys().hasAll(["id", "auth_type", "location_enabled", "provider_firebase_id_token", "created_at"]) && + request.resource.data.email is string && + request.resource.data.id is string && + request.resource.data.auth_type is int && + (request.resource.data.auth_type == 1 || request.resource.data.auth_type == 2) && + request.resource.data.location_enabled is bool && + request.resource.data.provider_firebase_id_token is string && + request.resource.data.created_at is int && + request.resource.data.get('first_name', '') is string && + request.resource.data.get('email', '') is string && + request.resource.data.get('last_name', '') is string && + request.resource.data.get('fcm_token', '') is string && + request.resource.data.get('profile_image', '') is string && + request.resource.data.get('space_ids', []) is list; + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.id; + allow read: if isAuthorized(); + + match /user_locations/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.latitude is number && + request.resource.data.longitude is number && + request.resource.data.created_at is int; + } + + match /user_journeys/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.from_latitude is number && + request.resource.data.from_longitude is number && + request.resource.data.created_at is int; + } + + match /user_sessions/{docId} { + allow read: if isAuthorized(); + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "device_id", "device_name", "platform", "session_active", "app_version", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.device_id is string && + request.resource.data.device_name is string && + request.resource.data.platform is int && + request.resource.data.platform == 1 && + request.resource.data.session_active is bool && + request.resource.data.app_version is int && + request.resource.data.created_at is int; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + } + } - } - match /{path=**}/space_places/{place} { - allow read: if isAuthorized() && isSpaceMember(resource.data.space_id); - allow write: if false; - } + match /users/{docId}/user_sessions/{document=**} { + allow read: if isAuthorized() && request.auth.uid == docId; + } - match /spaces/{spaceId}/space_places/{place} { - allow read: if isAuthorized() && isSpaceMember(spaceId); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.created_by); - allow update: if isAuthorized() && request.auth.uid == resource.data.created_by; - allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.created_by) && - request.resource.data.keys().hasAll(["id", "space_id", "created_by", "latitude", "longitude", "radius", "name", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.created_by is string && - request.resource.data.latitude is number && - request.resource.data.longitude is number && - request.resource.data.radius is number && - request.resource.data.name is string && - request.resource.data.created_at is timestamp; - } + function isSpaceAdmin(spaceId) { + let adminId = get(/databases/$(database)/documents/spaces/$(spaceId)).data.admin_id; + return request.auth.uid == adminId; + } - function isPlaceAdmin(spaceId, place) { - let created_by = get(/databases/$(database)/documents/spaces/$(spaceId)/space_places/$(place)).data.created_by; - return request.auth.uid == created_by; - } + function isSpaceMember(spaceId) { + let isMember = exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); + return isMember; + } - match /spaces/{spaceId}/space_places/{place}/place_settings_by_members/{member} { - allow read: if isAuthorized() && isSpaceMember(spaceId); - allow update: if isAuthorized() && isSpaceMember(spaceId) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["alert_enable", "leave_alert_for", "arrival_alert_for"]) && - request.resource.data.arrival_alert_for is list && - request.resource.data.leave_alert_for is list && - request.resource.data.alert_enable is bool; - allow delete: if isAuthorized() && (request.auth.uid == resource.data.user_id || isPlaceAdmin(place)); - allow create: if isAuthorized() && isSpaceMember(spaceId) && - request.resource.data.keys().hasAll(["user_id", "place_id", "alert_enable", "leave_alert_for", "arrival_alert_for"]) && - request.resource.data.user_id is string && - request.resource.data.place_id is string && - request.resource.data.get('arrival_alert_for', []) is list && - request.resource.data.get('leave_alert_for', []) is list && - request.resource.data.alert_enable is bool; - } + match /spaces/{docId} { + allow read: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.admin_id; + allow update: if isAuthorized() && request.auth.uid == resource.data.admin_id; + allow create: if isAuthorized() && + request.resource.data.keys().hasAll(["id", "admin_id", "name", "created_at"]) && + request.resource.data.id is string && + request.resource.data.admin_id is string && + request.resource.data.name is string && + request.resource.data.created_at is int; + } - match /{path=**}/space_members/{member} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(resource.data.space_id)); - allow write: if false; - } + match /{path=**}/space_places/{place} { + allow read: if isAuthorized() && isSpaceMember(resource.data.space_id); + allow write: if false; + } - match /spaces/{spaceId}/space_members/{member} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.user_id); - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["location_enabled"]) && - request.resource.data.location_enabled is bool; - allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.user_id) && - request.resource.data.keys().hasAll(["id", "space_id", "user_id", "role", "location_enabled", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.user_id is string && - request.resource.data.role is int && - (request.resource.data.role == 1 || request.resource.data.role == 2) && - request.resource.data.location_enabled is bool && - request.resource.data.created_at is int; + match /spaces/{spaceId}/space_places/{place} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.created_by); + allow update: if isAuthorized() && request.auth.uid == resource.data.created_by; + allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.created_by) && + request.resource.data.keys().hasAll(["id", "space_id", "created_by", "latitude", "longitude", "radius", "name", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.created_by is string && + request.resource.data.latitude is number && + request.resource.data.longitude is number && + request.resource.data.radius is number && + request.resource.data.name is string && + request.resource.data.created_at is timestamp; + } - function readSpaceMemberLocation(spaceId) { - return exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); - } + function isPlaceAdmin(spaceId, place) { + let created_by = get(/databases/$(database)/documents/spaces/$(spaceId)/space_places/$(place)).data.created_by; + return request.auth.uid == created_by; + } - match /user_locations/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readSpaceMemberLocation()); - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "sender_key", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.latitude is string && - request.resource.data.longitude is string && - request.resource.data.sender_key is string && - request.resource.data.created_at is int; - } + match /spaces/{spaceId}/space_places/{place}/place_settings_by_members/{member} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + allow update: if isAuthorized() && isSpaceMember(spaceId) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["alert_enable", "leave_alert_for", "arrival_alert_for"]) && + request.resource.data.arrival_alert_for is list && + request.resource.data.leave_alert_for is list && + request.resource.data.alert_enable is bool; + allow delete: if isAuthorized() && (request.auth.uid == resource.data.user_id || isPlaceAdmin(spaceId, place)); + allow create: if isAuthorized() && isSpaceMember(spaceId) && + request.resource.data.keys().hasAll(["user_id", "place_id", "alert_enable", "leave_alert_for", "arrival_alert_for"]) && + request.resource.data.user_id is string && + request.resource.data.place_id is string && + request.resource.data.get('arrival_alert_for', []) is list && + request.resource.data.get('leave_alert_for', []) is list && + request.resource.data.alert_enable is bool; + } - match /user_journeys/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readSpaceMemberLocation()); - allow update: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.from_latitude is string && - request.resource.data.from_longitude is string && - request.resource.data.created_at is int; - } - } + match /{path=**}/space_members/{member} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(resource.data.space_id)); + allow write: if false; + } - match /space_invitations/{docId} { - allow read: if isAuthorized(); - allow delete: if isAuthorized() && isSpaceAdmin(resource.data.space_id); - allow update: if isAuthorized() && isSpaceMember(resource.data.space_id) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["code", "created_at"]) && - request.resource.data.code is string && - request.resource.data.code.size() == 6 && - request.resource.data.created_at is int; + match /spaces/{spaceId}/space_members/{member} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); + allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.user_id); + allow update: if isAuthorized() && + (request.auth.uid == resource.data.user_id || isSpaceAdmin(resource.data.space_id)) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["location_enabled", "role"]) && + ((request.resource.data.location_enabled is bool) || + (request.resource.data.role is int && (request.resource.data.role == 1 || request.resource.data.role == 2))); + allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.user_id) && + request.resource.data.keys().hasAll(["id", "space_id", "user_id", "role", "location_enabled", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.user_id is string && + request.resource.data.role is int && + (request.resource.data.role == 1 || request.resource.data.role == 2) && + request.resource.data.location_enabled is bool && + request.resource.data.created_at is int; + } - allow create: if isAuthorized() && isSpaceAdmin(request.resource.data.space_id) && - request.resource.data.keys().hasAll(["id", "code", "space_id", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.code is string && - request.resource.data.code.size() == 6 && - request.resource.data.created_at is int; - } + match /spaces/{spaceId}/space_members/{docId} { + match /user_locations/{docId} { + allow read: if true; + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "encrypted_latitude", "encrypted_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.encrypted_latitude is string && + request.resource.data.encrypted_longitude is string && + request.resource.data.created_at is int; + } + + match /user_journeys/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "encrypted_from_latitude", "encrypted_from_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.encrypted_from_latitude is string && + request.resource.data.encrypted_from_longitude is string && + request.resource.data.created_at is int; + } + } + match /space_invitations/{docId} { + allow read: if isAuthorized(); + allow delete: if isAuthorized() && isSpaceAdmin(resource.data.space_id); + allow update: if isAuthorized() && isSpaceMember(resource.data.space_id) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["code", "created_at"]) && + request.resource.data.code is string && + request.resource.data.code.size() == 6 && + request.resource.data.created_at is int; + allow create: if isAuthorized() && isSpaceAdmin(request.resource.data.space_id) && + request.resource.data.keys().hasAll(["id", "code", "space_id", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.code is string && + request.resource.data.code.size() == 6 && + request.resource.data.created_at is int; + } - match /space_threads/{docId} { - allow read: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || isSpaceMember(resource.data.space_id)); - allow delete: if isAuthorized() && isThreadAdmin(docId); - allow update: if isAuthorized() && isThreadMember(docId) && - request.resource.data.diff(resource.data).affectedKeys().hasAny(["member_ids", "archived_for"]) && - request.resource.data.get('member_ids', []) is list && - request.resource.data.get('archived_for', {}) is map; - allow create: if isAuthorized() && (isSpaceMember(request.resource.data.space_id)) && - request.resource.data.keys().hasAll(["id", "space_id", "admin_id", "member_ids", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.admin_id is string && - request.resource.data.member_ids is list && - request.resource.data.created_at is int; + match /space_threads/{docId} { + allow read: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || isSpaceMember(resource.data.space_id)); + allow delete: if isAuthorized() && isThreadAdmin(docId); + allow update: if isAuthorized() && isThreadMember(docId) && + request.resource.data.diff(resource.data).affectedKeys().hasAny(["member_ids", "archived_for"]) && + request.resource.data.get('member_ids', []) is list && + request.resource.data.get('archived_for', {}) is map; + allow create: if isAuthorized() && (isSpaceMember(request.resource.data.space_id)) && + request.resource.data.keys().hasAll(["id", "space_id", "admin_id", "member_ids", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.admin_id is string && + request.resource.data.member_ids is list && + request.resource.data.created_at is int; + } - } - function isThreadMember(threadId) { - let memberIds = get(/databases/$(database)/documents/space_threads/$(threadId)).data.member_ids; - return memberIds.hasAny([request.auth.uid]); - } + function isThreadMember(threadId) { + let memberIds = get(/databases/$(database)/documents/space_threads/$(threadId)).data.member_ids; + return memberIds.hasAny([request.auth.uid]); + } - function isThreadAdmin(threadId) { - let adminId = get(/databases/$(database)/documents/space_threads/$(threadId)).data.admin_id; - return adminId == request.auth.uid; - } + function isThreadAdmin(threadId) { + let adminId = get(/databases/$(database)/documents/space_threads/$(threadId)).data.admin_id; + return adminId == request.auth.uid; + } - match /{path=**}/thread_messages/{docId} { - allow read: if isAuthorized() && isThreadMember(resource.data.thread_id); - } + match /{path=**}/thread_messages/{docId} { + allow read: if isAuthorized() && isThreadMember(resource.data.thread_id); + } - match /space_threads/{threadId}/thread_messages/{docId} { - allow read: if isAuthorized() && isThreadMember(threadId); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id)); - allow update: if isAuthorized() && isThreadMember(threadId) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["seen_by"]) && - request.resource.data.seen_by is list; - allow create: if isAuthorized() && isThreadMember(threadId) && request.resource.data.sender_id == request.auth.uid && - request.resource.data.keys().hasAll(["id", "thread_id", "sender_id", "message", "seen_by", "created_at"]) && - request.resource.data.id is string && - request.resource.data.thread_id is string && - request.resource.data.sender_id is string && - request.resource.data.message is string && - request.resource.data.seen_by is list && - request.resource.data.created_at is timestamp; - } + match /space_threads/{threadId}/thread_messages/{docId} { + allow read: if isAuthorized() && isThreadMember(threadId); + allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id)); + allow update: if isAuthorized() && isThreadMember(threadId) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["seen_by"]) && + request.resource.data.seen_by is list; + allow create: if isAuthorized() && isThreadMember(threadId) && request.resource.data.sender_id == request.auth.uid && + request.resource.data.keys().hasAll(["id", "thread_id", "sender_id", "message", "seen_by", "created_at"]) && + request.resource.data.id is string && + request.resource.data.thread_id is string && + request.resource.data.sender_id is string && + request.resource.data.message is string && + request.resource.data.seen_by is list && + request.resource.data.created_at is timestamp; } -} \ No newline at end of file + } +} diff --git a/gradle.properties b/gradle.properties index 2cbd6d19..957f8ef9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,3 +21,4 @@ kotlin.code.style=official # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true +android.enableR8.fullMode=false From e9183ddc25958605d6b93964d9a443af760ffd9e Mon Sep 17 00:00:00 2001 From: cp-megh Date: Mon, 16 Dec 2024 10:54:11 +0530 Subject: [PATCH 04/39] Revert "WIP" This reverts commit 78bd44ad649e97780c2c330062afc65148b9b327. --- app/build.gradle.kts | 6 +- .../detail/UserJourneyDetailViewModel.kt | 2 +- build.gradle.kts | 1 + data/build.gradle.kts | 35 +- .../data/models/location/LocationJourney.kt | 1 + .../yourspace/data/models/space/ApiSpace.kt | 1 - .../yourspace/data/models/user/ApiUser.kt | 19 +- .../security/entity/BaseEncryptedEntity.kt | 8 - .../yourspace/data/security/helper/Helper.kt | 13 - .../data/security/helper/SignalKeyHelper.kt | 192 ------- .../security/session/EncryptedSpaceSession.kt | 110 ---- .../data/service/auth/AuthService.kt | 2 +- .../service/location/ApiJourneyService.kt | 118 +--- .../service/location/ApiLocationService.kt | 190 +------ .../data/service/space/ApiSpaceService.kt | 61 +- .../data/service/user/ApiUserService.kt | 16 +- firestore.rules | 523 +++++++++--------- gradle.properties | 1 - 18 files changed, 358 insertions(+), 941 deletions(-) delete mode 100644 data/src/main/java/com/canopas/yourspace/data/security/entity/BaseEncryptedEntity.kt delete mode 100644 data/src/main/java/com/canopas/yourspace/data/security/helper/Helper.kt delete mode 100644 data/src/main/java/com/canopas/yourspace/data/security/helper/SignalKeyHelper.kt delete mode 100644 data/src/main/java/com/canopas/yourspace/data/security/session/EncryptedSpaceSession.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8f8fa696..7aaae700 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -103,12 +103,12 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 isCoreLibraryDesugaringEnabled = true } kotlinOptions { - jvmTarget = "17" + jvmTarget = "1.8" } buildFeatures { compose = true diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt index 1177147e..1cd4eb53 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailViewModel.kt @@ -58,7 +58,7 @@ class UserJourneyDetailViewModel @Inject constructor( private fun fetchJourney() = viewModelScope.launch(appDispatcher.IO) { try { _state.value = _state.value.copy(isLoading = true) - val journey = journeyService.getLocationJourneyFromId(journeyId, userId) + val journey = journeyService.getLocationJourneyFromId(journeyId) if (journey == null) { _state.value = _state.value.copy( isLoading = false, diff --git a/build.gradle.kts b/build.gradle.kts index 6161aafc..f4d20266 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,4 +9,5 @@ plugins { id("com.google.firebase.crashlytics") version "3.0.2" apply false id("org.jetbrains.kotlin.jvm") version "1.9.23" id("com.google.devtools.ksp") version "1.9.23-1.0.20" + id("com.google.protobuf") version "0.9.4" apply false } diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 8dde311c..f7203dc2 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -4,6 +4,7 @@ plugins { id("com.google.dagger.hilt.android") id("org.jlleitschuh.gradle.ktlint") id("com.google.devtools.ksp") + id("com.google.protobuf") } android { @@ -27,16 +28,19 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 isCoreLibraryDesugaringEnabled = true } kotlinOptions { - jvmTarget = "17" + jvmTarget = "1.8" } ktlint { debug = true } + configurations.all { + resolutionStrategy.force("com.google.protobuf:protobuf-javalite:3.10.0") + } } dependencies { @@ -85,6 +89,27 @@ dependencies { implementation("com.google.android.libraries.places:places:4.0.0") // Signal Protocol - implementation("org.signal:libsignal-client:0.64.1") - implementation("org.signal:libsignal-android:0.64.1") + implementation("org.whispersystems:signal-protocol-android:2.8.1") { + exclude(group = "com.google.protobuf", module = "protolite-java") + } + implementation("com.google.protobuf:protobuf-javalite:3.10.0") // Align with Signal Protocol version + + // AndroidX Security for EncryptedSharedPreferences + implementation("androidx.security:security-crypto:1.1.0-alpha06") + +} + +protobuf { + protoc { + artifact = "com.google.protobuf:protoc:3.10.0" + } + generateProtoTasks { + all().forEach { task -> + task.builtins { + create("java") { + option("lite") + } + } + } + } } diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index d2b9e617..b3b27907 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -38,6 +38,7 @@ data class EncryptedLocationJourney( val updated_at: Long? = System.currentTimeMillis() ) + @Keep data class JourneyRoute(val latitude: Double = 0.0, val longitude: Double = 0.0) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index 692aabe2..0d83f35b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -10,7 +10,6 @@ data class ApiSpace( val id: String = UUID.randomUUID().toString(), val admin_id: String = "", val name: String = "", - val encryptedSenderKeys: Map> = emptyMap(), // User-specific encrypted keys val created_at: Long? = System.currentTimeMillis() ) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt index c00be17a..e35e5e98 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt @@ -3,9 +3,6 @@ package com.canopas.yourspace.data.models.user import androidx.annotation.Keep import com.google.firebase.firestore.Exclude import com.squareup.moshi.JsonClass -import org.signal.libsignal.protocol.IdentityKeyPair -import org.signal.libsignal.protocol.state.PreKeyRecord -import org.signal.libsignal.protocol.state.SignedPreKeyRecord import java.util.UUID const val LOGIN_TYPE_GOOGLE = 1 @@ -27,12 +24,7 @@ data class ApiUser( val state: Int = USER_STATE_UNKNOWN, val battery_pct: Float? = 0f, val created_at: Long? = System.currentTimeMillis(), - val updated_at: Long? = System.currentTimeMillis(), - val public_key: String? = null, // Identity public key (Base64-encoded) - val private_key: String? = null, // Identity private key (Base64-encoded and encrypted) - val pre_keys: List? = null, // List of serialized PreKeys (Base64-encoded) - val signed_pre_key: String? = null, // Serialized Signed PreKey (Base64-encoded) - val registration_id: Int = 0 // Signal Protocol registration ID + val updated_at: Long? = System.currentTimeMillis() ) { @get:Exclude val fullName: String get() = "$first_name $last_name" @@ -47,15 +39,6 @@ data class ApiUser( val locationPermissionDenied: Boolean get() = state == USER_STATE_LOCATION_PERMISSION_DENIED } -@Keep -@JsonClass(generateAdapter = false) -data class SignalKeys( - val identityKeyPair: IdentityKeyPair, - val signedPreKey: SignedPreKeyRecord, - val preKeys: List, - val registrationId: Int -) - @Keep @JsonClass(generateAdapter = true) data class ApiUserSession( diff --git a/data/src/main/java/com/canopas/yourspace/data/security/entity/BaseEncryptedEntity.kt b/data/src/main/java/com/canopas/yourspace/data/security/entity/BaseEncryptedEntity.kt deleted file mode 100644 index 5989dda5..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/security/entity/BaseEncryptedEntity.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.canopas.yourspace.data.security.entity - -import org.signal.libsignal.protocol.SignalProtocolAddress - -abstract class BaseEncryptedEntity protected constructor( - val registrationId: Int, - val signalProtocolAddress: SignalProtocolAddress -) diff --git a/data/src/main/java/com/canopas/yourspace/data/security/helper/Helper.kt b/data/src/main/java/com/canopas/yourspace/data/security/helper/Helper.kt deleted file mode 100644 index 2d257ebd..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/security/helper/Helper.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.canopas.yourspace.data.security.helper - -import android.util.Base64 - -object Helper { - fun encodeToBase64(value: ByteArray?): String { - return Base64.encodeToString(value, Base64.NO_WRAP) - } - - fun decodeToByteArray(base64: String?): ByteArray { - return Base64.decode(base64, Base64.NO_WRAP) - } -} diff --git a/data/src/main/java/com/canopas/yourspace/data/security/helper/SignalKeyHelper.kt b/data/src/main/java/com/canopas/yourspace/data/security/helper/SignalKeyHelper.kt deleted file mode 100644 index 02c2a8e8..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/security/helper/SignalKeyHelper.kt +++ /dev/null @@ -1,192 +0,0 @@ -package com.canopas.yourspace.data.security.helper - -import android.util.Base64 -import com.canopas.yourspace.data.models.user.ApiUser -import com.canopas.yourspace.data.models.user.SignalKeys -import org.signal.libsignal.protocol.IdentityKey -import org.signal.libsignal.protocol.IdentityKeyPair -import org.signal.libsignal.protocol.InvalidKeyException -import org.signal.libsignal.protocol.SignalProtocolAddress -import org.signal.libsignal.protocol.ecc.Curve -import org.signal.libsignal.protocol.groups.GroupSessionBuilder -import org.signal.libsignal.protocol.groups.state.SenderKeyRecord -import org.signal.libsignal.protocol.state.PreKeyRecord -import org.signal.libsignal.protocol.state.SignedPreKeyRecord -import org.signal.libsignal.protocol.state.impl.InMemorySignalProtocolStore -import org.signal.libsignal.protocol.util.KeyHelper -import org.signal.libsignal.protocol.util.Medium -import java.util.LinkedList -import java.util.Random -import java.util.UUID -import javax.crypto.Cipher -import javax.crypto.KeyGenerator -import javax.crypto.SecretKey -import javax.crypto.spec.SecretKeySpec -import javax.inject.Inject -import javax.inject.Singleton - -@Singleton -class SignalKeyHelper @Inject constructor() { - - private fun generateIdentityKeyPair(): IdentityKeyPair { - val djbKeyPair = Curve.generateKeyPair() - val djbIdentityKey = IdentityKey(djbKeyPair.publicKey) - val djbPrivateKey = djbKeyPair.privateKey - - return IdentityKeyPair(djbIdentityKey, djbPrivateKey) - } - - @Throws(InvalidKeyException::class) - fun generateSignedPreKey( - identityKeyPair: IdentityKeyPair, - signedPreKeyId: Int - ): SignedPreKeyRecord { - val keyPair = Curve.generateKeyPair() - val signature = - Curve.calculateSignature(identityKeyPair.privateKey, keyPair.publicKey.serialize()) - return SignedPreKeyRecord(signedPreKeyId, System.currentTimeMillis(), keyPair, signature) - } - - private fun generatePreKeys(): List { - val records: MutableList = LinkedList() - val preKeyIdOffset = Random().nextInt(Medium.MAX_VALUE - 101) - for (i in 0 until 100) { - val preKeyId = (preKeyIdOffset + i) % Medium.MAX_VALUE - val keyPair = Curve.generateKeyPair() - val record = PreKeyRecord(preKeyId, keyPair) - - records.add(record) - } - - return records - } - - fun generateSignalKeys(): SignalKeys { - val identityKeyPair = generateIdentityKeyPair() - val signedPreKey = generateSignedPreKey(identityKeyPair, Random().nextInt(Medium.MAX_VALUE - 1)) - val preKeys = generatePreKeys() - val registrationId = KeyHelper.generateRegistrationId(false) - - return SignalKeys( - identityKeyPair = identityKeyPair, - signedPreKey = signedPreKey, - preKeys = preKeys, - registrationId = registrationId - ) - } - - fun createDistributionKey( - user: ApiUser, - deviceId: String, - spaceId: String - ): Pair { - val signalProtocolAddress = SignalProtocolAddress(user.id, deviceId.hashCode()) - val identityKeyPair = IdentityKeyPair( - IdentityKey(Curve.decodePoint(Base64.decode(user.public_key, Base64.DEFAULT), 0)), - Curve.decodePrivatePoint(Base64.decode(user.private_key, Base64.DEFAULT)) - ) - val signalProtocolStore = InMemorySignalProtocolStore(identityKeyPair, user.registration_id) - val signedPreKeyId = SignedPreKeyRecord(Helper.decodeToByteArray(user.signed_pre_key)).id - val preKeys = SignedPreKeyRecord(Helper.decodeToByteArray(user.signed_pre_key)) - signalProtocolStore.storeSignedPreKey(signedPreKeyId, preKeys) - - user.pre_keys?.let { preKeyRecords -> - val deserializedPreKeys = - preKeyRecords.map { PreKeyRecord(Helper.decodeToByteArray(it)) } - for (record in deserializedPreKeys) { - signalProtocolStore.storePreKey(record.id, record) - } - } - val validSpaceId = try { - UUID.fromString(spaceId) // Validate if it's a proper UUID string - } catch (e: IllegalArgumentException) { - UUID.randomUUID() // Fallback to a new valid UUID if parsing fails - } - signalProtocolStore.storeSenderKey( - signalProtocolAddress, - validSpaceId, - SenderKeyRecord(Helper.decodeToByteArray(user.signed_pre_key)) - ) - - val sessionBuilder = GroupSessionBuilder(signalProtocolStore) - val senderKeyDistributionMessage = - sessionBuilder.create(signalProtocolAddress, validSpaceId) - val senderKeyRecord = signalProtocolStore.loadSenderKey(signalProtocolAddress, validSpaceId) - - return Pair( - Helper.encodeToBase64(senderKeyDistributionMessage.serialize()), - Helper.encodeToBase64(senderKeyRecord.serialize()) - ) - } - - private fun encryptAESKeyWithECDH( - aesKey: SecretKey, - publicKey: String, - senderPrivateKey: String - ): String { - val ecPublicKey = Curve.decodePoint(Base64.decode(publicKey, Base64.DEFAULT), 0) - val ecPrivateKey = Curve.decodePrivatePoint(Base64.decode(senderPrivateKey, Base64.DEFAULT)) - val sharedSecret = Curve.calculateAgreement(ecPublicKey, ecPrivateKey) - val secretKeySpec = SecretKeySpec(sharedSecret, 0, 32, "AES") - val cipher = Cipher.getInstance("AES") - cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec) - val encryptedAESKey = cipher.doFinal(aesKey.encoded) - - return Base64.encodeToString(encryptedAESKey, Base64.NO_WRAP) - } - - private fun decryptAESKeyWithECDH( - encryptedAESKey: String, - privateKey: String, - senderPublicKey: String - ): SecretKey { - val ecPublicKey = Curve.decodePoint(Base64.decode(senderPublicKey, Base64.DEFAULT), 0) - val ecPrivateKey = Curve.decodePrivatePoint(Base64.decode(privateKey, Base64.DEFAULT)) - val sharedSecret = Curve.calculateAgreement(ecPublicKey, ecPrivateKey) - val secretKeySpec = SecretKeySpec(sharedSecret, 0, 32, "AES") - val cipher = Cipher.getInstance("AES") - cipher.init(Cipher.DECRYPT_MODE, secretKeySpec) - val decryptedAESKeyBytes = cipher.doFinal(Base64.decode(encryptedAESKey, Base64.DEFAULT)) - - return SecretKeySpec(decryptedAESKeyBytes, "AES") - } - - fun encryptSenderKeyForGroup( - senderKey: String, - senderPrivateKey: String, - recipients: List - ): Map> { - val encryptedKeys = mutableMapOf>() - val keyGen = KeyGenerator.getInstance("AES") - val aesKey: SecretKey = keyGen.generateKey() - val cipher = Cipher.getInstance("AES") - cipher.init(Cipher.ENCRYPT_MODE, aesKey) - val encryptedSenderKey = - Base64.encodeToString(cipher.doFinal(senderKey.toByteArray()), Base64.NO_WRAP) - recipients.forEach { recipient -> - recipient?.let { - val recipientPublicKey = recipient.public_key!! - val encryptedAESKey = - encryptAESKeyWithECDH(aesKey, recipientPublicKey, senderPrivateKey) - encryptedKeys[recipient.id] = Pair(encryptedSenderKey, encryptedAESKey) - } - } - - return encryptedKeys - } - - fun decryptSenderKey( - encryptedSenderKey: String, - encryptedAESKey: String, - recipientPrivateKey: String, - senderPublicKey: String - ): String { - val aesKey = decryptAESKeyWithECDH(encryptedAESKey, recipientPrivateKey, senderPublicKey) - val cipher = Cipher.getInstance("AES") - cipher.init(Cipher.DECRYPT_MODE, aesKey) - val decryptedSenderKeyBytes = - cipher.doFinal(Base64.decode(encryptedSenderKey, Base64.DEFAULT)) - - return String(decryptedSenderKeyBytes) - } -} diff --git a/data/src/main/java/com/canopas/yourspace/data/security/session/EncryptedSpaceSession.kt b/data/src/main/java/com/canopas/yourspace/data/security/session/EncryptedSpaceSession.kt deleted file mode 100644 index 27b9eb40..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/security/session/EncryptedSpaceSession.kt +++ /dev/null @@ -1,110 +0,0 @@ -package com.canopas.yourspace.data.security.session - -import android.util.Base64 -import androidx.annotation.Keep -import com.canopas.yourspace.data.models.user.ApiUser -import com.canopas.yourspace.data.security.helper.Helper -import com.squareup.moshi.JsonClass -import org.signal.libsignal.protocol.IdentityKey -import org.signal.libsignal.protocol.IdentityKeyPair -import org.signal.libsignal.protocol.NoSessionException -import org.signal.libsignal.protocol.SignalProtocolAddress -import org.signal.libsignal.protocol.ecc.Curve -import org.signal.libsignal.protocol.groups.GroupCipher -import org.signal.libsignal.protocol.groups.GroupSessionBuilder -import org.signal.libsignal.protocol.groups.state.SenderKeyRecord -import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage -import org.signal.libsignal.protocol.state.PreKeyRecord -import org.signal.libsignal.protocol.state.SignedPreKeyRecord -import org.signal.libsignal.protocol.state.impl.InMemorySignalProtocolStore -import java.nio.charset.StandardCharsets -import java.util.UUID - -class EncryptedSpaceSession( - currentUser: ApiUser, - keyRecord: String?, - spaceId: String -) { - private val spaceDistributionId: UUID = try { - UUID.fromString(spaceId) // Validate if it's a proper UUID string - } catch (e: IllegalArgumentException) { - UUID.randomUUID() // Fallback to a new valid UUID if parsing fails - } - private val signalProtocolAddress = SignalProtocolAddress(currentUser.id, 1) - private val identityKeyPair = IdentityKeyPair( - IdentityKey(Curve.decodePoint(Base64.decode(currentUser.public_key, Base64.DEFAULT), 0)), - Curve.decodePrivatePoint(Base64.decode(currentUser.private_key, Base64.DEFAULT)) - ) - - private val protocolStore = InMemorySignalProtocolStore(identityKeyPair, currentUser.registration_id) - private val encryptGroupCipher: GroupCipher - private val decryptCiphers = mutableMapOf() - private val distributionStore = mutableMapOf() - private val sessionBuilder = GroupSessionBuilder(protocolStore) - - init { - val signedPreKey = SignedPreKeyRecord(Helper.decodeToByteArray(currentUser.signed_pre_key)) - protocolStore.storeSignedPreKey(signedPreKey.id, signedPreKey) - - currentUser.pre_keys?.forEach { preKey -> - val record = PreKeyRecord(Helper.decodeToByteArray(preKey)) - protocolStore.storePreKey(record.id, record) - } - - if (keyRecord != null) { - protocolStore.storeSenderKey( - signalProtocolAddress, - spaceDistributionId, - SenderKeyRecord(Helper.decodeToByteArray(keyRecord)) - ) - } - - encryptGroupCipher = GroupCipher(protocolStore, signalProtocolAddress) - } - - val keyRecord: String - get() { - val record = protocolStore.loadSenderKey(signalProtocolAddress, spaceDistributionId) - return Helper.encodeToBase64(record.serialize()) - } - - fun createSession(members: List) { - members.forEach { member -> - val distributionKey = Helper.decodeToByteArray(member.keyDistributionMessage) - val keyMessage = SenderKeyDistributionMessage(distributionKey) - val address = SignalProtocolAddress(member.userId, 1) - - if (!decryptCiphers.containsKey(member.userId) || - distributionStore[member.userId] != member.keyDistributionMessage - ) { - distributionStore.remove(member.userId) - decryptCiphers.remove(member.userId) - - sessionBuilder.process(address, keyMessage) - distributionStore[member.userId] = member.keyDistributionMessage - decryptCiphers[member.userId] = GroupCipher(protocolStore, address) - } - } - } - - fun encryptMessage(message: String): String { - val encrypted = encryptGroupCipher.encrypt( - spaceDistributionId, - message.toByteArray(StandardCharsets.UTF_8) - ) - return Helper.encodeToBase64(encrypted.serialize()) - } - - fun decryptMessage(encryptedMessage: String?, userId: String): String { - val cipher = decryptCiphers[userId] ?: throw NoSessionException("No cipher for user $userId") - val decrypted = cipher.decrypt(Helper.decodeToByteArray(encryptedMessage)) - return String(decrypted, StandardCharsets.UTF_8) - } -} - -@Keep -@JsonClass(generateAdapter = false) -data class SpaceKeyDistribution( - val userId: String, - val keyDistributionMessage: String -) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 0923b2e2..311e74b5 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -75,7 +75,7 @@ class AuthService @Inject constructor( userPreferences.currentUser = newUser } - var currentUserSession: ApiUserSession? + private var currentUserSession: ApiUserSession? get() { return userPreferences.currentUserSession } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 32b59605..71050bc8 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -1,16 +1,7 @@ package com.canopas.yourspace.data.service.location -import com.canopas.yourspace.data.models.location.EncryptedJourneyRoute -import com.canopas.yourspace.data.models.location.EncryptedLocationJourney import com.canopas.yourspace.data.models.location.JourneyRoute import com.canopas.yourspace.data.models.location.LocationJourney -import com.canopas.yourspace.data.models.space.ApiSpace -import com.canopas.yourspace.data.models.space.ApiSpaceMember -import com.canopas.yourspace.data.models.user.ApiUser -import com.canopas.yourspace.data.security.helper.SignalKeyHelper -import com.canopas.yourspace.data.security.session.EncryptedSpaceSession -import com.canopas.yourspace.data.security.session.SpaceKeyDistribution -import com.canopas.yourspace.data.service.user.ApiUserService import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES @@ -18,6 +9,7 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBER import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import com.google.firebase.firestore.toObject +import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.tasks.await import timber.log.Timber import javax.inject.Inject @@ -26,9 +18,7 @@ import javax.inject.Singleton @Singleton class ApiJourneyService @Inject constructor( db: FirebaseFirestore, - private val userPreferences: UserPreferences, - private val signalKeyHelper: SignalKeyHelper, - private val apiUserService: ApiUserService + private val userPreferences: UserPreferences ) { var currentSpaceId: String = userPreferences.currentSpace ?: "" @@ -37,14 +27,14 @@ class ApiJourneyService @Inject constructor( // Document references must have an even number of segments, but users has 1 // https://stackoverflow.com/a/51195713/22508023 [Explanation can be found in comments] private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) - private fun spaceMemberRef(spaceId: String) = + internal fun spaceMemberRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( FIRESTORE_COLLECTION_SPACE_MEMBERS ) - private fun spaceMemberJourneyRef(spaceId: String, userId: String) = + private fun spaceMemberJourneyRef(spaceId: String) = spaceMemberRef(spaceId) - .document(userId.takeIf { it.isNotBlank() } ?: "null") + .document(currentSpaceId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_JOURNEYS) suspend fun saveCurrentJourney( @@ -60,93 +50,33 @@ class ApiJourneyService @Inject constructor( updateAt: Long? = null, newJourneyId: ((String) -> Unit)? = null ) { - val user = userPreferences.currentUser ?: return - val userDeviceId = userPreferences.currentUserSession?.device_id ?: return - userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val (_, senderKeyRecord) = signalKeyHelper.createDistributionKey( - user = user, - deviceId = userDeviceId, - spaceId = spaceId - ) - val spaceSession = EncryptedSpaceSession( - currentUser = user, - keyRecord = senderKeyRecord, - spaceId = spaceId - ) - val spaceMembers = spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) - val mSenderKeyDistributionModel = ArrayList().apply { - spaceMembers.forEach { member -> - val memberUser = apiUserService.getUser(member.user_id) ?: return - val decryptedSenderKey = getDecryptedSenderKey( - spaceId, - memberUser, - memberUser.public_key!! - ) - add( - SpaceKeyDistribution( - member.user_id, - decryptedSenderKey - ) - ) - } - } - spaceSession.createSession(mSenderKeyDistributionModel) - val encryptedFromLatitude = spaceSession.encryptMessage(fromLatitude.toString()) - val encryptedFromLongitude = spaceSession.encryptMessage(fromLongitude.toString()) - val encryptedToLatitude = toLatitude?.let { spaceSession.encryptMessage(it.toString()) } - val encryptedToLongitude = toLongitude?.let { spaceSession.encryptMessage(it.toString()) } - val encryptedJourneyRoutes = routes.map { - EncryptedJourneyRoute( - encrypted_latitude = spaceSession.encryptMessage(it.latitude.toString()), - encrypted_longitude = spaceSession.encryptMessage(it.longitude.toString()) - ) - } - - val docRef = spaceMemberJourneyRef(spaceId, userId).document() + userPreferences.currentUser?.space_ids?.forEach { + val docRef = spaceMemberJourneyRef(it).document() - val encryptedJourney = EncryptedLocationJourney( + val journey = LocationJourney( id = docRef.id, user_id = userId, - encrypted_from_latitude = encryptedFromLatitude, - encrypted_from_longitude = encryptedFromLongitude, - encrypted_to_latitude = encryptedToLatitude, - encrypted_to_longitude = encryptedToLongitude, + from_latitude = fromLatitude, + from_longitude = fromLongitude, + to_latitude = toLatitude, + to_longitude = toLongitude, route_distance = routeDistance, route_duration = routeDuration, - encrypted_routes = encryptedJourneyRoutes, + routes = routes, created_at = createdAt ?: System.currentTimeMillis(), - updated_at = updateAt ?: System.currentTimeMillis() + update_at = updateAt ?: System.currentTimeMillis() ) - newJourneyId?.invoke(encryptedJourney.id) + newJourneyId?.invoke(journey.id) - docRef.set(encryptedJourney).await() + docRef.set(journey).await() } } - private suspend fun getDecryptedSenderKey( - spaceId: String, - recipient: ApiUser, - senderPublicKey: String - ): String { - val space = spaceRef.document(spaceId).get().await().toObject(ApiSpace::class.java) - ?: throw Exception("Space not found") - - val encryptedKeys = space.encryptedSenderKeys[recipient.id] - ?: throw Exception("No keys found for recipient") - - return signalKeyHelper.decryptSenderKey( - encryptedSenderKey = encryptedKeys["encryptedSenderKey"]!!, - encryptedAESKey = encryptedKeys["encryptedAESKey"]!!, - recipientPrivateKey = recipient.private_key!!, - senderPublicKey = senderPublicKey - ) - } - suspend fun updateLastLocationJourney(userId: String, journey: LocationJourney) { try { userPreferences.currentUser?.space_ids?.forEach { - spaceMemberJourneyRef(it, userId).document(journey.id).set(journey).await() + spaceMemberJourneyRef(it).document(journey.id).set(journey).await() } } catch (e: Exception) { Timber.e(e, "Error while updating last location journey") @@ -154,7 +84,7 @@ class ApiJourneyService @Inject constructor( } suspend fun getLastJourneyLocation(userId: String) = try { - spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING).limit(1) .get().await().documents.firstOrNull()?.toObject() } catch (e: Exception) { @@ -167,11 +97,11 @@ class ApiJourneyService @Inject constructor( from: Long? ): List { val query = if (from == null) { - spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) .limit(20) } else { - spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) .whereLessThan("created_at", from) .limit(20) @@ -184,13 +114,13 @@ class ApiJourneyService @Inject constructor( from: Long, to: Long ): List { - val previousDayJourney = spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) + val previousDayJourney = spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .whereLessThan("created_at", from) .whereGreaterThanOrEqualTo("update_at", from) .limit(1) .get().await().documents.mapNotNull { it.toObject() } - val currentDayJourney = spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) + val currentDayJourney = spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) .whereGreaterThanOrEqualTo("created_at", from) .whereLessThanOrEqualTo("created_at", to) .orderBy("created_at", Query.Direction.DESCENDING) @@ -200,8 +130,8 @@ class ApiJourneyService @Inject constructor( return previousDayJourney + currentDayJourney } - suspend fun getLocationJourneyFromId(journeyId: String, userId: String): LocationJourney? { - return spaceMemberJourneyRef(currentSpaceId, userId = userId).document(journeyId).get().await() + suspend fun getLocationJourneyFromId(journeyId: String): LocationJourney? { + return spaceMemberJourneyRef(currentSpaceId).document(journeyId).get().await() .toObject(LocationJourney::class.java) } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index e7c76b30..1c8cd874 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -1,23 +1,15 @@ package com.canopas.yourspace.data.service.location +import android.util.Log import com.canopas.yourspace.data.models.location.ApiLocation -import com.canopas.yourspace.data.models.location.EncryptedApiLocation -import com.canopas.yourspace.data.models.space.ApiSpace -import com.canopas.yourspace.data.models.space.ApiSpaceMember -import com.canopas.yourspace.data.models.user.ApiUser -import com.canopas.yourspace.data.security.helper.SignalKeyHelper -import com.canopas.yourspace.data.security.session.EncryptedSpaceSession -import com.canopas.yourspace.data.security.session.SpaceKeyDistribution import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS -import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USERS import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flow import kotlinx.coroutines.tasks.await import timber.log.Timber import javax.inject.Inject @@ -27,79 +19,36 @@ import javax.inject.Singleton class ApiLocationService @Inject constructor( db: FirebaseFirestore, private val locationManager: LocationManager, - private val userPreferences: UserPreferences, - private val signalKeyHelper: SignalKeyHelper + private val userPreferences: UserPreferences ) { var currentSpaceId: String = userPreferences.currentSpace ?: "" private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) - private val userRef = db.collection(FIRESTORE_COLLECTION_USERS) private fun spaceMemberRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( FIRESTORE_COLLECTION_SPACE_MEMBERS ) - private fun spaceMemberLocationRef(spaceId: String, userId: String) = + private fun spaceMemberLocationRef(spaceId: String) = spaceMemberRef(spaceId) - .document(userId.takeIf { it.isNotBlank() } ?: "null") + .document(currentSpaceId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_LOCATIONS) suspend fun saveLastKnownLocation( userId: String ) { val lastLocation = locationManager.getLastLocation() ?: return - val user = userPreferences.currentUser ?: return - val userDeviceId = userPreferences.currentUserSession?.device_id ?: return - userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val (_, senderKeyRecord) = signalKeyHelper.createDistributionKey( - user = user, - deviceId = userDeviceId, - spaceId = spaceId - ) - val spaceSession = EncryptedSpaceSession( - currentUser = user, - keyRecord = senderKeyRecord, - spaceId = spaceId - ) - val spaceMembers = spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) - val mSenderKeyDistributionModel = ArrayList().apply { - spaceMembers.forEach { member -> - val memberUser = getUser(member.user_id) ?: return - val decryptedSenderKey = getDecryptedSenderKey( - spaceId, - memberUser, - memberUser.public_key!! - ) - add( - SpaceKeyDistribution( - member.user_id, - decryptedSenderKey - ) - ) - } - } - spaceSession.createSession(mSenderKeyDistributionModel) - val encryptedLatitude = spaceSession.encryptMessage(lastLocation.latitude.toString()) - val encryptedLongitude = spaceSession.encryptMessage(lastLocation.longitude.toString()) - val docRef = spaceMemberLocationRef(spaceId, userId).document() + userPreferences.currentUser?.space_ids?.forEach { + val docRef = spaceMemberLocationRef(it).document() - val encryptedLocation = EncryptedApiLocation( + val location = ApiLocation( id = docRef.id, user_id = userId, - encrypted_latitude = encryptedLatitude, - encrypted_longitude = encryptedLongitude, + latitude = lastLocation.latitude, + longitude = lastLocation.longitude, created_at = System.currentTimeMillis() ) - docRef.set(encryptedLocation).await() - } - } - - suspend fun getUser(userId: String): ApiUser? { - return try { - userRef.document(userId).get().await().toObject(ApiUser::class.java) - } catch (e: Exception) { - Timber.e(e, "Error while getting user") - null + docRef.set(location).await() } } @@ -109,119 +58,30 @@ class ApiLocationService @Inject constructor( longitude: Double, recordedAt: Long ) { - val user = userPreferences.currentUser ?: return - val userDeviceId = userPreferences.currentUserSession?.device_id ?: return - userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val (_, senderKeyRecord) = signalKeyHelper.createDistributionKey( - user = user, - deviceId = userDeviceId, - spaceId = spaceId - ) - val spaceSession = EncryptedSpaceSession( - currentUser = user, - keyRecord = senderKeyRecord, - spaceId = spaceId - ) - val spaceMembers = spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) - val mSenderKeyDistributionModel = ArrayList().apply { - spaceMembers.forEach { member -> - val memberUser = getUser(member.user_id) ?: return - val decryptedSenderKey = getDecryptedSenderKey( - spaceId, - memberUser, - memberUser.public_key!! - ) - add( - SpaceKeyDistribution( - member.user_id, - decryptedSenderKey - ) - ) - } - } - spaceSession.createSession(mSenderKeyDistributionModel) - val encryptedLatitude = spaceSession.encryptMessage(latitude.toString()) - val encryptedLongitude = spaceSession.encryptMessage(longitude.toString()) - val docRef = spaceMemberLocationRef(spaceId, userId).document() + Log.e("XXXXXX", "SpaceId: $currentSpaceId") + userPreferences.currentUser?.space_ids?.forEach { + val docRef = spaceMemberLocationRef(it).document() - val encryptedLocation = EncryptedApiLocation( + val location = ApiLocation( id = docRef.id, user_id = userId, - encrypted_latitude = encryptedLatitude, - encrypted_longitude = encryptedLongitude, + latitude = latitude, + longitude = longitude, created_at = recordedAt ) - docRef.set(encryptedLocation).await() + docRef.set(location).await() } } - private suspend fun getDecryptedSenderKey( - spaceId: String, - recipient: ApiUser, - senderPublicKey: String - ): String { - val space = spaceRef.document(spaceId).get().await().toObject(ApiSpace::class.java) - ?: throw Exception("Space not found") - - val encryptedKeys = space.encryptedSenderKeys[recipient.id] - ?: throw Exception("No keys found for recipient") - - return signalKeyHelper.decryptSenderKey( - encryptedSenderKey = encryptedKeys["encryptedSenderKey"]!!, - encryptedAESKey = encryptedKeys["encryptedAESKey"]!!, - recipientPrivateKey = recipient.private_key!!, - senderPublicKey = senderPublicKey - ) - } - - fun getCurrentLocation(userId: String): Flow> { - return flow { - try { - val encryptedLocation = spaceMemberLocationRef(currentSpaceId, userId) - .whereEqualTo("user_id", userId) - .orderBy("created_at", Query.Direction.DESCENDING) - .limit(1) - .snapshotFlow(EncryptedApiLocation::class.java) - - encryptedLocation.collect { encryptedLocationList -> - val apiLocations = encryptedLocationList.mapNotNull { encryptedLocation -> - val user = getUser(encryptedLocation.user_id) ?: return@mapNotNull null - val senderPublicKey = user.public_key ?: return@mapNotNull null - val space = spaceRef.document(currentSpaceId).get().await().toObject(ApiSpace::class.java) - ?: throw Exception("Space not found") - - val encryptedKeys = space.encryptedSenderKeys[user.id] - ?: throw Exception("No keys found for recipient") - - val decryptedSenderKey = signalKeyHelper.decryptSenderKey( - encryptedSenderKey = encryptedKeys["encryptedSenderKey"]!!, - encryptedAESKey = encryptedKeys["encryptedAESKey"]!!, - recipientPrivateKey = user.private_key!!, - senderPublicKey = senderPublicKey - ) - - val spaceSession = EncryptedSpaceSession( - currentUser = user, - keyRecord = decryptedSenderKey, - spaceId = currentSpaceId - ) - val decryptedLatitude = spaceSession.decryptMessage(encryptedLocation.encrypted_latitude, user.id) - val decryptedLongitude = spaceSession.decryptMessage(encryptedLocation.encrypted_longitude, user.id) - - ApiLocation( - user_id = user.id, - latitude = decryptedLatitude.toDouble(), - longitude = decryptedLongitude.toDouble() - ) - } - - emit(apiLocations) // Emit the list of ApiLocation - } - } catch (e: Exception) { - Timber.e(e, "Error while getting current location") - emit(emptyList()) // Emit an empty list in case of an error - } + fun getCurrentLocation(userId: String): Flow>? { + return try { + spaceMemberLocationRef(currentSpaceId).whereEqualTo("user_id", userId) + .orderBy("created_at", Query.Direction.DESCENDING).limit(1) + .snapshotFlow(ApiLocation::class.java) + } catch (e: Exception) { + Timber.e(e, "Error while getting current location") + null } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index ab0f19ce..cb9cdf3d 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -4,8 +4,6 @@ import com.canopas.yourspace.data.models.space.ApiSpace import com.canopas.yourspace.data.models.space.ApiSpaceMember import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_ADMIN import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_MEMBER -import com.canopas.yourspace.data.models.user.ApiUser -import com.canopas.yourspace.data.security.helper.SignalKeyHelper import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.service.place.ApiPlaceService import com.canopas.yourspace.data.service.user.ApiUserService @@ -13,8 +11,6 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.FirebaseFirestore -import kotlinx.coroutines.flow.first -import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.tasks.await import javax.inject.Inject import javax.inject.Singleton @@ -24,11 +20,10 @@ class ApiSpaceService @Inject constructor( private val db: FirebaseFirestore, private val authService: AuthService, private val apiUserService: ApiUserService, - private val placeService: ApiPlaceService, - private val signalKeyHelper: SignalKeyHelper + private val placeService: ApiPlaceService ) { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) - private fun spaceMemberRef(spaceId: String) = + internal fun spaceMemberRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) suspend fun createSpace(spaceName: String): String { @@ -54,45 +49,9 @@ class ApiSpaceService @Inject constructor( it.set(member).await() } - val user = authService.currentUser ?: return - val userDeviceId = authService.currentUserSession?.device_id ?: return - val (senderKey, _) = signalKeyHelper.createDistributionKey( - user = user, - deviceId = userDeviceId, - spaceId = spaceId - ) - val spaceMembers = getMemberBySpaceId(spaceId).firstOrNull()?.map { - apiUserService.getUser(it.user_id) ?: return@map null - } - distributeSenderKeyToGroup( - spaceId = spaceId, - senderKey = senderKey, - senderPrivateKey = user.private_key!!, - members = spaceMembers ?: emptyList() - ) apiUserService.addSpaceId(userId, spaceId) } - private suspend fun distributeSenderKeyToGroup( - spaceId: String, - senderKey: String, - senderPrivateKey: String, - members: List - ) { - // Encrypt the Sender Key for each recipient - val encryptedKeys = signalKeyHelper.encryptSenderKeyForGroup(senderKey, senderPrivateKey, members) - val encryptedSenderKeysMap = encryptedKeys.mapValues { entry -> - mapOf( - "encryptedSenderKey" to entry.value.first, - "encryptedAESKey" to entry.value.second - ) - } - - spaceRef.document(spaceId) - .update("encryptedSenderKeys", encryptedSenderKeysMap) - .await() - } - suspend fun enableLocation(spaceId: String, userId: String, enable: Boolean) { spaceMemberRef(spaceId) .whereEqualTo("user_id", userId).get() @@ -136,22 +95,6 @@ class ApiSpaceService @Inject constructor( .whereEqualTo("user_id", userId).get().await().documents.forEach { it.reference.delete().await() } - val user = authService.currentUser ?: return - val userDeviceId = authService.currentUserSession?.device_id ?: return - val (senderKey, _) = signalKeyHelper.createDistributionKey( - user = user, - deviceId = userDeviceId, - spaceId = spaceId - ) - val spaceMembers = getMemberBySpaceId(spaceId).firstOrNull()?.map { - apiUserService.getUser(it.user_id) ?: return@map null - } - distributeSenderKeyToGroup( - spaceId = spaceId, - senderKey = senderKey, - senderPrivateKey = user.private_key!!, - members = spaceMembers ?: emptyList() - ) } suspend fun updateSpace(space: ApiSpace) { diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 032eb8fb..9f52f4ab 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -4,8 +4,6 @@ import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.models.user.ApiUserSession import com.canopas.yourspace.data.models.user.LOGIN_TYPE_APPLE import com.canopas.yourspace.data.models.user.LOGIN_TYPE_GOOGLE -import com.canopas.yourspace.data.security.helper.Helper -import com.canopas.yourspace.data.security.helper.SignalKeyHelper import com.canopas.yourspace.data.service.location.ApiLocationService import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USERS @@ -31,7 +29,6 @@ class ApiUserService @Inject constructor( db: FirebaseFirestore, private val device: Device, private val locationService: ApiLocationService, - private val signalKeyHelper: SignalKeyHelper, private val functions: FirebaseFunctions ) { private val userRef = db.collection(FIRESTORE_COLLECTION_USERS) @@ -77,12 +74,6 @@ class ApiUserService @Inject constructor( sessionDocRef.set(session).await() return Triple(false, savedUser, session) } else { - val signalKeys = signalKeyHelper.generateSignalKeys() - val publicKey = Helper.encodeToBase64(signalKeys.identityKeyPair.publicKey.serialize()) - val privateKey = Helper.encodeToBase64(signalKeys.identityKeyPair.privateKey.serialize()) - val preKeys = signalKeys.preKeys.map { Helper.encodeToBase64(it.serialize()) } - val signedPreKey = Helper.encodeToBase64(signalKeys.signedPreKey.serialize()) - val user = ApiUser( id = uid!!, email = account?.email ?: firebaseUser?.email ?: "", @@ -91,12 +82,7 @@ class ApiUserService @Inject constructor( last_name = account?.familyName ?: "", provider_firebase_id_token = firebaseToken, profile_image = account?.photoUrl?.toString() ?: firebaseUser?.photoUrl?.toString() - ?: "", - public_key = publicKey, - private_key = privateKey, - pre_keys = preKeys, - signed_pre_key = signedPreKey, - registration_id = signalKeys.registrationId + ?: "" ) userRef.document(uid).set(user).await() val sessionDocRef = sessionRef(user.id).document() diff --git a/firestore.rules b/firestore.rules index fb0c0c18..4cb4670c 100644 --- a/firestore.rules +++ b/firestore.rules @@ -1,280 +1,293 @@ rules_version = '2'; service cloud.firestore { - match /databases/{database}/documents { + match /databases/{database}/documents { - function isAuthorized() { - return request.auth != null; - } + function isAuthorized() { + return request.auth != null; + } - function readUserLocation() { - let requestedUserSpaceIds = get(/databases/$(database)/documents/users/$(request.auth.uid)).data.space_ids; - let resourceUserSpaceIds = get(/databases/$(database)/documents/users/$(resource.data.user_id)).data.space_ids; - return requestedUserSpaceIds.hasAny(resourceUserSpaceIds); - } + function readUserLocation() { + let requestedUserSpaceIds = get(/databases/$(database)/documents/users/$(request.auth.uid)).data.space_ids; + let resourceUserSpaceIds = get(/databases/$(database)/documents/users/$(resource.data.user_id)).data.space_ids; + return requestedUserSpaceIds.hasAny(resourceUserSpaceIds); + } - match /support_requests/{docId} { - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["user_id", "title", "description", "device_name", "app_version", "device_os", "created_at"]) && - request.resource.data.user_id is string && - request.resource.data.title is string && - request.resource.data.description is string && - request.resource.data.device_name is string && - request.resource.data.app_version is string && - request.resource.data.device_os is string && - request.resource.data.created_at is timestamp && - request.resource.data.get('attachments', []) is list; - allow update: if false; - allow delete: if false; - allow read: if isAuthorized() && request.auth.uid == resource.data.user_id; - } + match /support_requests/{docId} { + allow create : if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["user_id", "title", "description", "device_name","app_version","device_os", "created_at"]) && + request.resource.data.user_id is string && + request.resource.data.title is string && + request.resource.data.description is string && + request.resource.data.device_name is string && + request.resource.data.app_version is string && + request.resource.data.device_os is string && + request.resource.data.created_at is timestamp && + request.resource.data.get('attachments', []) is list; + allow update: if false; + allow delete: if false; + allow read: if isAuthorized() && request.auth.uid == resource.data.user_id; + } - match /users/{docId} { - allow create: if isAuthorized() && request.auth.uid == docId && - request.resource.data.keys().hasAll(["id", "auth_type", "location_enabled", "provider_firebase_id_token", "created_at"]) && - request.resource.data.email is string && - request.resource.data.id is string && - request.resource.data.auth_type is int && - (request.resource.data.auth_type == 1 || request.resource.data.auth_type == 2) && - request.resource.data.location_enabled is bool && - request.resource.data.provider_firebase_id_token is string && - request.resource.data.created_at is int && - request.resource.data.get('first_name', '') is string && - request.resource.data.get('email', '') is string && - request.resource.data.get('last_name', '') is string && - request.resource.data.get('fcm_token', '') is string && - request.resource.data.get('profile_image', '') is string && - request.resource.data.get('space_ids', []) is list; - allow update: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.id; - allow read: if isAuthorized(); - - match /user_locations/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.latitude is number && - request.resource.data.longitude is number && - request.resource.data.created_at is int; - } - - match /user_journeys/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.from_latitude is number && - request.resource.data.from_longitude is number && - request.resource.data.created_at is int; - } - - match /user_sessions/{docId} { - allow read: if isAuthorized(); - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "device_id", "device_name", "platform", "session_active", "app_version", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.device_id is string && - request.resource.data.device_name is string && - request.resource.data.platform is int && - request.resource.data.platform == 1 && - request.resource.data.session_active is bool && - request.resource.data.app_version is int && - request.resource.data.created_at is int; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - } - } + match /users/{docId} { + allow create : if isAuthorized() && request.auth.uid == docId && + request.resource.data.keys().hasAll(["id", "auth_type", "location_enabled", "provider_firebase_id_token", "created_at"]) && + request.resource.data.email is string && + request.resource.data.id is string && + request.resource.data.auth_type is int && + (request.resource.data.auth_type == 1 || request.resource.data.auth_type == 2) && + request.resource.data.location_enabled is bool && + request.resource.data.provider_firebase_id_token is string && + request.resource.data.created_at is int && + request.resource.data.get('first_name', '') is string && + request.resource.data.get('email', '') is string && + request.resource.data.get('last_name', '') is string && + request.resource.data.get('fcm_token', '') is string && + request.resource.data.get('profile_image', '') is string && + request.resource.data.get('space_ids', []) is list; - match /users/{docId}/user_sessions/{document=**} { - allow read: if isAuthorized() && request.auth.uid == docId; - } + allow update: if isAuthorized() && request.auth.uid == resource.data.id && + request.resource.data.diff(resource.data).affectedKeys().hasAny(['first_name', 'last_name', 'profile_image', 'location_enabled', 'space_ids', 'phone', 'email','fcm_token', 'updated_at', 'battery_pct', 'state']) && + request.resource.data.first_name is string && + request.resource.data.get('last_name', '') is string && + request.resource.data.get('fcm_token', '') is string && + request.resource.data.location_enabled is bool && + request.resource.data.get('space_ids', []) is list; - function isSpaceAdmin(spaceId) { - let adminId = get(/databases/$(database)/documents/spaces/$(spaceId)).data.admin_id; - return request.auth.uid == adminId; - } + allow delete: if isAuthorized() && request.auth.uid == resource.data.id; + allow read: if isAuthorized(); - function isSpaceMember(spaceId) { - let isMember = exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); - return isMember; - } + match /user_locations/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.latitude is number && + request.resource.data.longitude is number && + request.resource.data.created_at is int; + } - match /spaces/{docId} { - allow read: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.admin_id; - allow update: if isAuthorized() && request.auth.uid == resource.data.admin_id; - allow create: if isAuthorized() && - request.resource.data.keys().hasAll(["id", "admin_id", "name", "created_at"]) && - request.resource.data.id is string && - request.resource.data.admin_id is string && - request.resource.data.name is string && - request.resource.data.created_at is int; - } + match /user_journeys/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.from_latitude is number && + request.resource.data.from_longitude is number && + request.resource.data.created_at is int; + } - match /{path=**}/space_places/{place} { - allow read: if isAuthorized() && isSpaceMember(resource.data.space_id); - allow write: if false; - } - match /spaces/{spaceId}/space_places/{place} { - allow read: if isAuthorized() && isSpaceMember(spaceId); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.created_by); - allow update: if isAuthorized() && request.auth.uid == resource.data.created_by; - allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.created_by) && - request.resource.data.keys().hasAll(["id", "space_id", "created_by", "latitude", "longitude", "radius", "name", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.created_by is string && - request.resource.data.latitude is number && - request.resource.data.longitude is number && - request.resource.data.radius is number && - request.resource.data.name is string && - request.resource.data.created_at is timestamp; - } + match /user_sessions/{docId} { + allow read: if isAuthorized(); + allow create : if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "device_id", "device_name", "platform", "session_active", "app_version", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.device_id is string && + request.resource.data.device_name is string && + request.resource.data.platform is int && + request.resource.data.platform == 1 && + request.resource.data.session_active is bool && + request.resource.data.app_version is int && + request.resource.data.created_at is int; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + } + } - function isPlaceAdmin(spaceId, place) { - let created_by = get(/databases/$(database)/documents/spaces/$(spaceId)/space_places/$(place)).data.created_by; - return request.auth.uid == created_by; - } + match /users/{docId}/user_sessions/{document=**} { + allow read: if isAuthorized() && request.auth.uid == docId; + } - match /spaces/{spaceId}/space_places/{place}/place_settings_by_members/{member} { - allow read: if isAuthorized() && isSpaceMember(spaceId); - allow update: if isAuthorized() && isSpaceMember(spaceId) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["alert_enable", "leave_alert_for", "arrival_alert_for"]) && - request.resource.data.arrival_alert_for is list && - request.resource.data.leave_alert_for is list && - request.resource.data.alert_enable is bool; - allow delete: if isAuthorized() && (request.auth.uid == resource.data.user_id || isPlaceAdmin(spaceId, place)); - allow create: if isAuthorized() && isSpaceMember(spaceId) && - request.resource.data.keys().hasAll(["user_id", "place_id", "alert_enable", "leave_alert_for", "arrival_alert_for"]) && - request.resource.data.user_id is string && - request.resource.data.place_id is string && - request.resource.data.get('arrival_alert_for', []) is list && - request.resource.data.get('leave_alert_for', []) is list && - request.resource.data.alert_enable is bool; - } + function isSpaceAdmin(spaceId) { + let adminId = get(/databases/$(database)/documents/spaces/$(spaceId)).data.admin_id; + return request.auth.uid == adminId; + } - match /{path=**}/space_members/{member} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(resource.data.space_id)); - allow write: if false; - } + function isSpaceMember(spaceId) { + let isMember = exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); + return isMember; + } - match /spaces/{spaceId}/space_members/{member} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.user_id); - allow update: if isAuthorized() && - (request.auth.uid == resource.data.user_id || isSpaceAdmin(resource.data.space_id)) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["location_enabled", "role"]) && - ((request.resource.data.location_enabled is bool) || - (request.resource.data.role is int && (request.resource.data.role == 1 || request.resource.data.role == 2))); - allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.user_id) && - request.resource.data.keys().hasAll(["id", "space_id", "user_id", "role", "location_enabled", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.user_id is string && - request.resource.data.role is int && - (request.resource.data.role == 1 || request.resource.data.role == 2) && - request.resource.data.location_enabled is bool && - request.resource.data.created_at is int; - } + match /spaces/{docId} { + allow read: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.admin_id; + allow update: if isAuthorized() && request.auth.uid == resource.data.admin_id; + allow create: if isAuthorized() && + request.resource.data.keys().hasAll(["id", "admin_id", "name", "created_at"]) && + request.resource.data.id is string && + request.resource.data.admin_id is string && + request.resource.data.name is string && + request.resource.data.created_at is int; - match /spaces/{spaceId}/space_members/{docId} { - match /user_locations/{docId} { - allow read: if true; - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "encrypted_latitude", "encrypted_longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.encrypted_latitude is string && - request.resource.data.encrypted_longitude is string && - request.resource.data.created_at is int; - } - - match /user_journeys/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "encrypted_from_latitude", "encrypted_from_longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.encrypted_from_latitude is string && - request.resource.data.encrypted_from_longitude is string && - request.resource.data.created_at is int; - } - } - match /space_invitations/{docId} { - allow read: if isAuthorized(); - allow delete: if isAuthorized() && isSpaceAdmin(resource.data.space_id); - allow update: if isAuthorized() && isSpaceMember(resource.data.space_id) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["code", "created_at"]) && - request.resource.data.code is string && - request.resource.data.code.size() == 6 && - request.resource.data.created_at is int; - allow create: if isAuthorized() && isSpaceAdmin(request.resource.data.space_id) && - request.resource.data.keys().hasAll(["id", "code", "space_id", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.code is string && - request.resource.data.code.size() == 6 && - request.resource.data.created_at is int; - } + } + match /{path=**}/space_places/{place} { + allow read: if isAuthorized() && isSpaceMember(resource.data.space_id); + allow write: if false; + } - match /space_threads/{docId} { - allow read: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || isSpaceMember(resource.data.space_id)); - allow delete: if isAuthorized() && isThreadAdmin(docId); - allow update: if isAuthorized() && isThreadMember(docId) && - request.resource.data.diff(resource.data).affectedKeys().hasAny(["member_ids", "archived_for"]) && - request.resource.data.get('member_ids', []) is list && - request.resource.data.get('archived_for', {}) is map; - allow create: if isAuthorized() && (isSpaceMember(request.resource.data.space_id)) && - request.resource.data.keys().hasAll(["id", "space_id", "admin_id", "member_ids", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.admin_id is string && - request.resource.data.member_ids is list && - request.resource.data.created_at is int; - } + match /spaces/{spaceId}/space_places/{place} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.created_by); + allow update: if isAuthorized() && request.auth.uid == resource.data.created_by; + allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.created_by) && + request.resource.data.keys().hasAll(["id", "space_id", "created_by", "latitude", "longitude", "radius", "name", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.created_by is string && + request.resource.data.latitude is number && + request.resource.data.longitude is number && + request.resource.data.radius is number && + request.resource.data.name is string && + request.resource.data.created_at is timestamp; + } - function isThreadMember(threadId) { - let memberIds = get(/databases/$(database)/documents/space_threads/$(threadId)).data.member_ids; - return memberIds.hasAny([request.auth.uid]); - } + function isPlaceAdmin(spaceId, place) { + let created_by = get(/databases/$(database)/documents/spaces/$(spaceId)/space_places/$(place)).data.created_by; + return request.auth.uid == created_by; + } - function isThreadAdmin(threadId) { - let adminId = get(/databases/$(database)/documents/space_threads/$(threadId)).data.admin_id; - return adminId == request.auth.uid; - } + match /spaces/{spaceId}/space_places/{place}/place_settings_by_members/{member} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + allow update: if isAuthorized() && isSpaceMember(spaceId) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["alert_enable", "leave_alert_for", "arrival_alert_for"]) && + request.resource.data.arrival_alert_for is list && + request.resource.data.leave_alert_for is list && + request.resource.data.alert_enable is bool; + allow delete: if isAuthorized() && (request.auth.uid == resource.data.user_id || isPlaceAdmin(place)); + allow create: if isAuthorized() && isSpaceMember(spaceId) && + request.resource.data.keys().hasAll(["user_id", "place_id", "alert_enable", "leave_alert_for", "arrival_alert_for"]) && + request.resource.data.user_id is string && + request.resource.data.place_id is string && + request.resource.data.get('arrival_alert_for', []) is list && + request.resource.data.get('leave_alert_for', []) is list && + request.resource.data.alert_enable is bool; + } - match /{path=**}/thread_messages/{docId} { - allow read: if isAuthorized() && isThreadMember(resource.data.thread_id); - } + match /{path=**}/space_members/{member} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(resource.data.space_id)); + allow write: if false; + } + + match /spaces/{spaceId}/space_members/{member} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); + allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.user_id); + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["location_enabled"]) && + request.resource.data.location_enabled is bool; + allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.user_id) && + request.resource.data.keys().hasAll(["id", "space_id", "user_id", "role", "location_enabled", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.user_id is string && + request.resource.data.role is int && + (request.resource.data.role == 1 || request.resource.data.role == 2) && + request.resource.data.location_enabled is bool && + request.resource.data.created_at is int; + + function readSpaceMemberLocation(spaceId) { + return exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); + } + + match /user_locations/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readSpaceMemberLocation()); + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "sender_key", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.latitude is string && + request.resource.data.longitude is string && + request.resource.data.sender_key is string && + request.resource.data.created_at is int; + } + + match /user_journeys/{docId} { + allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readSpaceMemberLocation()); + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.from_latitude is string && + request.resource.data.from_longitude is string && + request.resource.data.created_at is int; + } + } + + match /space_invitations/{docId} { + allow read: if isAuthorized(); + allow delete: if isAuthorized() && isSpaceAdmin(resource.data.space_id); + allow update: if isAuthorized() && isSpaceMember(resource.data.space_id) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["code", "created_at"]) && + request.resource.data.code is string && + request.resource.data.code.size() == 6 && + request.resource.data.created_at is int; + + allow create: if isAuthorized() && isSpaceAdmin(request.resource.data.space_id) && + request.resource.data.keys().hasAll(["id", "code", "space_id", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.code is string && + request.resource.data.code.size() == 6 && + request.resource.data.created_at is int; + } + + + match /space_threads/{docId} { + allow read: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || isSpaceMember(resource.data.space_id)); + allow delete: if isAuthorized() && isThreadAdmin(docId); + allow update: if isAuthorized() && isThreadMember(docId) && + request.resource.data.diff(resource.data).affectedKeys().hasAny(["member_ids", "archived_for"]) && + request.resource.data.get('member_ids', []) is list && + request.resource.data.get('archived_for', {}) is map; + allow create: if isAuthorized() && (isSpaceMember(request.resource.data.space_id)) && + request.resource.data.keys().hasAll(["id", "space_id", "admin_id", "member_ids", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.admin_id is string && + request.resource.data.member_ids is list && + request.resource.data.created_at is int; + + } + function isThreadMember(threadId) { + let memberIds = get(/databases/$(database)/documents/space_threads/$(threadId)).data.member_ids; + return memberIds.hasAny([request.auth.uid]); + } + + function isThreadAdmin(threadId) { + let adminId = get(/databases/$(database)/documents/space_threads/$(threadId)).data.admin_id; + return adminId == request.auth.uid; + } + + match /{path=**}/thread_messages/{docId} { + allow read: if isAuthorized() && isThreadMember(resource.data.thread_id); + } - match /space_threads/{threadId}/thread_messages/{docId} { - allow read: if isAuthorized() && isThreadMember(threadId); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id)); - allow update: if isAuthorized() && isThreadMember(threadId) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["seen_by"]) && - request.resource.data.seen_by is list; - allow create: if isAuthorized() && isThreadMember(threadId) && request.resource.data.sender_id == request.auth.uid && - request.resource.data.keys().hasAll(["id", "thread_id", "sender_id", "message", "seen_by", "created_at"]) && - request.resource.data.id is string && - request.resource.data.thread_id is string && - request.resource.data.sender_id is string && - request.resource.data.message is string && - request.resource.data.seen_by is list && - request.resource.data.created_at is timestamp; + match /space_threads/{threadId}/thread_messages/{docId} { + allow read: if isAuthorized() && isThreadMember(threadId); + allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id)); + allow update: if isAuthorized() && isThreadMember(threadId) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["seen_by"]) && + request.resource.data.seen_by is list; + allow create: if isAuthorized() && isThreadMember(threadId) && request.resource.data.sender_id == request.auth.uid && + request.resource.data.keys().hasAll(["id", "thread_id", "sender_id", "message", "seen_by", "created_at"]) && + request.resource.data.id is string && + request.resource.data.thread_id is string && + request.resource.data.sender_id is string && + request.resource.data.message is string && + request.resource.data.seen_by is list && + request.resource.data.created_at is timestamp; + } } - } -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 957f8ef9..2cbd6d19 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,4 +21,3 @@ kotlin.code.style=official # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true -android.enableR8.fullMode=false From ab61d8cc8fd6740028fb9999a5a0131600ad652c Mon Sep 17 00:00:00 2001 From: cp-megh Date: Wed, 25 Dec 2024 13:13:33 +0530 Subject: [PATCH 05/39] WIP --- app/build.gradle.kts | 9 +- build.gradle.kts | 1 - data/build.gradle.kts | 40 +- .../yourspace/data/di/AppDataProvider.kt | 4 + .../data/models/location/ApiLocation.kt | 5 +- .../data/models/location/LocationJourney.kt | 1 - .../yourspace/data/models/space/ApiSpace.kt | 31 + .../yourspace/data/models/user/ApiUser.kt | 5 +- .../data/repository/SpaceRepository.kt | 2 +- .../data/service/auth/AuthService.kt | 2 +- .../service/location/ApiJourneyService.kt | 22 +- .../service/location/ApiLocationService.kt | 146 ++++- .../data/service/space/ApiSpaceService.kt | 100 +++- .../data/service/user/ApiUserService.kt | 15 +- .../yourspace/data/storage/UserPreferences.kt | 23 +- .../canopas/yourspace/data/utils/Config.kt | 1 + .../yourspace/data/utils/EncryptionUtils.kt | 251 ++++++++ .../canopas/yourspace/data/utils/KeyHelper.kt | 43 ++ firestore.rules | 551 +++++++++--------- gradle.properties | 1 + 20 files changed, 898 insertions(+), 355 deletions(-) create mode 100644 data/src/main/java/com/canopas/yourspace/data/utils/EncryptionUtils.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7aaae700..202f11be 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -30,7 +30,6 @@ android { defaultConfig { applicationId = "com.canopas.yourspace" minSdk = 24 - targetSdk = 34 versionCode = versionMajor * 1000000 + versionMinor * 10000 + versionBuild versionName = "$versionMajor.$versionMinor.$versionBuild" setProperty("archivesBaseName", "GroupTrack-$versionName-$versionCode") @@ -103,12 +102,12 @@ android { } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } buildFeatures { compose = true @@ -208,7 +207,7 @@ dependencies { implementation("androidx.core:core-splashscreen:1.0.1") // Desugaring - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.3") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.6") implementation(project(":data")) } diff --git a/build.gradle.kts b/build.gradle.kts index f4d20266..6161aafc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,5 +9,4 @@ plugins { id("com.google.firebase.crashlytics") version "3.0.2" apply false id("org.jetbrains.kotlin.jvm") version "1.9.23" id("com.google.devtools.ksp") version "1.9.23-1.0.20" - id("com.google.protobuf") version "0.9.4" apply false } diff --git a/data/build.gradle.kts b/data/build.gradle.kts index f7203dc2..56c50496 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -4,7 +4,6 @@ plugins { id("com.google.dagger.hilt.android") id("org.jlleitschuh.gradle.ktlint") id("com.google.devtools.ksp") - id("com.google.protobuf") } android { @@ -28,19 +27,16 @@ android { } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 isCoreLibraryDesugaringEnabled = true } kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } ktlint { debug = true } - configurations.all { - resolutionStrategy.force("com.google.protobuf:protobuf-javalite:3.10.0") - } } dependencies { @@ -48,6 +44,8 @@ dependencies { implementation("androidx.core:core-ktx:1.13.1") implementation("androidx.appcompat:appcompat:1.7.0") implementation("com.google.android.material:material:1.12.0") + implementation("androidx.hilt:hilt-common:1.2.0") + implementation("androidx.work:work-runtime:2.9.1") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.2.1") androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") @@ -83,33 +81,17 @@ dependencies { implementation("androidx.room:room-ktx:2.6.1") // Desugaring - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.3") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.6") // Place implementation("com.google.android.libraries.places:places:4.0.0") // Signal Protocol - implementation("org.whispersystems:signal-protocol-android:2.8.1") { - exclude(group = "com.google.protobuf", module = "protolite-java") - } - implementation("com.google.protobuf:protobuf-javalite:3.10.0") // Align with Signal Protocol version + implementation("org.signal:libsignal-client:0.64.1") + implementation("org.signal:libsignal-android:0.64.1") - // AndroidX Security for EncryptedSharedPreferences - implementation("androidx.security:security-crypto:1.1.0-alpha06") - -} + // Bouncy-castle for Signal Protocol + implementation("org.bouncycastle:bcprov-jdk15on:1.70") -protobuf { - protoc { - artifact = "com.google.protobuf:protoc:3.10.0" - } - generateProtoTasks { - all().forEach { task -> - task.builtins { - create("java") { - option("lite") - } - } - } - } + implementation("androidx.security:security-crypto:1.1.0-alpha03") } diff --git a/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt b/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt index 95689667..52ea0252 100644 --- a/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt +++ b/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt @@ -51,4 +51,8 @@ class AppDataProvider { @Provides @Singleton fun providedApiUserSession(): ApiUserSession = ApiUserSession() + + @Provides + @Singleton + fun provideAppContext(@ApplicationContext context: Context): Context = context } diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt index 04d34497..e0bfc4af 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt @@ -1,6 +1,7 @@ package com.canopas.yourspace.data.models.location import androidx.annotation.Keep +import com.google.firebase.firestore.Blob import com.squareup.moshi.JsonClass import java.util.UUID @@ -19,8 +20,8 @@ data class ApiLocation( data class EncryptedApiLocation( val id: String = UUID.randomUUID().toString(), val user_id: String = "", - val encrypted_latitude: String = "", // Base64 encoded encrypted latitude - val encrypted_longitude: String = "", // Base64 encoded encrypted longitude + val encrypted_latitude: Blob = Blob.fromBytes(ByteArray(0)), // Base64 encoded encrypted latitude + val encrypted_longitude: Blob = Blob.fromBytes(ByteArray(0)), // Base64 encoded encrypted longitude val created_at: Long? = System.currentTimeMillis() ) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index b3b27907..d2b9e617 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -38,7 +38,6 @@ data class EncryptedLocationJourney( val updated_at: Long? = System.currentTimeMillis() ) - @Keep data class JourneyRoute(val latitude: Double = 0.0, val longitude: Double = 0.0) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index 0d83f35b..21080ec8 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -1,6 +1,7 @@ package com.canopas.yourspace.data.models.space import androidx.annotation.Keep +import com.google.firebase.firestore.Blob import com.google.firebase.firestore.Exclude import java.util.UUID import java.util.concurrent.TimeUnit @@ -23,6 +24,7 @@ data class ApiSpaceMember( val user_id: String = "", val role: Int = SPACE_MEMBER_ROLE_MEMBER, val location_enabled: Boolean = true, + val identity_key_public: Blob? = Blob.fromBytes(ByteArray(0)), val created_at: Long? = System.currentTimeMillis() ) @@ -45,3 +47,32 @@ data class ApiSpaceInvitation( return differenceMillis > twoDaysMillis } } + +/** + * Data class that represents the entire "groupKeys/{senderUserId}" doc + * in Firestore for a single sender's key distribution. + */ +data class SenderKeyDistributionDoc( + val senderId: String = "", + val distributions: List = emptyList(), + val createdAt: Long = 0 +) + +/** + * Represents one encrypted distribution for a specific recipient. + * Each recipient gets their own ciphertext, which is the group SenderKeyDistributionMessage + * encrypted with the recipient's public key. + */ +data class EncryptedDistribution( + val recipientId: String, + val deviceId: Blob, + val ciphertext: Blob +) { + fun toMap(): Map { + return mapOf( + "recipientId" to recipientId, + "deviceId" to deviceId, + "ciphertext" to ciphertext + ) + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt index e35e5e98..9a617d4b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt @@ -1,6 +1,7 @@ package com.canopas.yourspace.data.models.user import androidx.annotation.Keep +import com.google.firebase.firestore.Blob import com.google.firebase.firestore.Exclude import com.squareup.moshi.JsonClass import java.util.UUID @@ -24,7 +25,9 @@ data class ApiUser( val state: Int = USER_STATE_UNKNOWN, val battery_pct: Float? = 0f, val created_at: Long? = System.currentTimeMillis(), - val updated_at: Long? = System.currentTimeMillis() + val updated_at: Long? = System.currentTimeMillis(), + val identity_key_public: Blob? = Blob.fromBytes(ByteArray(0)), + val identity_key_private: Blob? = Blob.fromBytes(ByteArray(0)) ) { @get:Exclude val fullName: String get() = "$first_name $last_name" diff --git a/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt b/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt index bfcc43b4..05c798f7 100644 --- a/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt +++ b/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt @@ -152,7 +152,7 @@ class SpaceRepository @Inject constructor( val session = userService.getUserSession(member.user_id) user?.let { locationService.getCurrentLocation(user.id) - ?.map { + .map { UserInfo( user, it.firstOrNull(), diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 311e74b5..0923b2e2 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -75,7 +75,7 @@ class AuthService @Inject constructor( userPreferences.currentUser = newUser } - private var currentUserSession: ApiUserSession? + var currentUserSession: ApiUserSession? get() { return userPreferences.currentUserSession } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 71050bc8..14a6f146 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -9,7 +9,6 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBER import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import com.google.firebase.firestore.toObject -import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.tasks.await import timber.log.Timber import javax.inject.Inject @@ -32,9 +31,9 @@ class ApiJourneyService @Inject constructor( FIRESTORE_COLLECTION_SPACE_MEMBERS ) - private fun spaceMemberJourneyRef(spaceId: String) = + private fun spaceMemberJourneyRef(spaceId: String, userId: String) = spaceMemberRef(spaceId) - .document(currentSpaceId.takeIf { it.isNotBlank() } ?: "null") + .document(userId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_JOURNEYS) suspend fun saveCurrentJourney( @@ -51,7 +50,7 @@ class ApiJourneyService @Inject constructor( newJourneyId: ((String) -> Unit)? = null ) { userPreferences.currentUser?.space_ids?.forEach { - val docRef = spaceMemberJourneyRef(it).document() + val docRef = spaceMemberJourneyRef(it, userId).document() val journey = LocationJourney( id = docRef.id, @@ -76,7 +75,7 @@ class ApiJourneyService @Inject constructor( suspend fun updateLastLocationJourney(userId: String, journey: LocationJourney) { try { userPreferences.currentUser?.space_ids?.forEach { - spaceMemberJourneyRef(it).document(journey.id).set(journey).await() + spaceMemberJourneyRef(it, userId).document(journey.id).set(journey).await() } } catch (e: Exception) { Timber.e(e, "Error while updating last location journey") @@ -84,7 +83,7 @@ class ApiJourneyService @Inject constructor( } suspend fun getLastJourneyLocation(userId: String) = try { - spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING).limit(1) .get().await().documents.firstOrNull()?.toObject() } catch (e: Exception) { @@ -97,11 +96,11 @@ class ApiJourneyService @Inject constructor( from: Long? ): List { val query = if (from == null) { - spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) .limit(20) } else { - spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) .whereLessThan("created_at", from) .limit(20) @@ -114,13 +113,13 @@ class ApiJourneyService @Inject constructor( from: Long, to: Long ): List { - val previousDayJourney = spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + val previousDayJourney = spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .whereLessThan("created_at", from) .whereGreaterThanOrEqualTo("update_at", from) .limit(1) .get().await().documents.mapNotNull { it.toObject() } - val currentDayJourney = spaceMemberJourneyRef(currentSpaceId).whereEqualTo("user_id", userId) + val currentDayJourney = spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .whereGreaterThanOrEqualTo("created_at", from) .whereLessThanOrEqualTo("created_at", to) .orderBy("created_at", Query.Direction.DESCENDING) @@ -131,7 +130,8 @@ class ApiJourneyService @Inject constructor( } suspend fun getLocationJourneyFromId(journeyId: String): LocationJourney? { - return spaceMemberJourneyRef(currentSpaceId).document(journeyId).get().await() + val userId = userPreferences.currentUser?.id ?: return null + return spaceMemberJourneyRef(currentSpaceId, userId).document(journeyId).get().await() .toObject(LocationJourney::class.java) } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 1c8cd874..5b49cdcc 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -1,16 +1,25 @@ package com.canopas.yourspace.data.service.location -import android.util.Log import com.canopas.yourspace.data.models.location.ApiLocation +import com.canopas.yourspace.data.models.location.EncryptedApiLocation import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS +import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.snapshotFlow +import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.flow import kotlinx.coroutines.tasks.await +import org.signal.libsignal.protocol.SignalProtocolAddress +import org.signal.libsignal.protocol.ecc.ECPrivateKey +import org.signal.libsignal.protocol.groups.GroupCipher +import org.signal.libsignal.protocol.groups.GroupSessionBuilder +import org.signal.libsignal.protocol.groups.state.InMemorySenderKeyStore +import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton @@ -28,23 +37,42 @@ class ApiLocationService @Inject constructor( spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( FIRESTORE_COLLECTION_SPACE_MEMBERS ) - private fun spaceMemberLocationRef(spaceId: String) = + + private fun spaceMemberLocationRef(spaceId: String, userId: String) = spaceMemberRef(spaceId) - .document(currentSpaceId.takeIf { it.isNotBlank() } ?: "null") + .document(userId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_LOCATIONS) + private fun spaceGroupKeysRef(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( + Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS + ) + suspend fun saveLastKnownLocation( userId: String ) { val lastLocation = locationManager.getLastLocation() ?: return - userPreferences.currentUser?.space_ids?.forEach { - val docRef = spaceMemberLocationRef(it).document() + userPreferences.currentUser?.space_ids?.forEach { spaceId -> + val cipherAndDistributionMessage = getGroupCipherAndDistributionMessage(spaceId, userId) + val groupCipher = cipherAndDistributionMessage?.second ?: return + val distributionMessage = cipherAndDistributionMessage.first + val lat = groupCipher.encrypt( + distributionMessage.distributionId, + lastLocation.latitude.toString().toByteArray(Charsets.UTF_8) + ) + val lon = groupCipher.encrypt( + distributionMessage.distributionId, + lastLocation.longitude.toString().toByteArray(Charsets.UTF_8) + ) + + Timber.d("Last known location: $lastLocation\nLat: $lat\nLon: $lon") + val docRef = spaceMemberLocationRef(spaceId, userId).document() - val location = ApiLocation( + val location = EncryptedApiLocation( id = docRef.id, user_id = userId, - latitude = lastLocation.latitude, - longitude = lastLocation.longitude, + encrypted_latitude = Blob.fromBytes(lat.serialize()), + encrypted_longitude = Blob.fromBytes(lon.serialize()), created_at = System.currentTimeMillis() ) @@ -58,15 +86,30 @@ class ApiLocationService @Inject constructor( longitude: Double, recordedAt: Long ) { - Log.e("XXXXXX", "SpaceId: $currentSpaceId") - userPreferences.currentUser?.space_ids?.forEach { - val docRef = spaceMemberLocationRef(it).document() + Timber.e("Saving current location for user $userId") + userPreferences.currentUser?.space_ids?.forEach { spaceId -> + val cipherAndDistributionMessage = getGroupCipherAndDistributionMessage(spaceId, userId) + Timber.e("Cipher and distribution message: $cipherAndDistributionMessage") + val groupCipher = cipherAndDistributionMessage?.second ?: return + val distributionMessage = cipherAndDistributionMessage.first + val lat = groupCipher.encrypt( + distributionMessage.distributionId, + latitude.toString().toByteArray(Charsets.UTF_8) + ) + val lon = groupCipher.encrypt( + distributionMessage.distributionId, + longitude.toString().toByteArray(Charsets.UTF_8) + ) - val location = ApiLocation( + Timber.d("Current location: $latitude, $longitude\nLat: $lat\nLon: $lon") + + val docRef = spaceMemberLocationRef(spaceId, userId).document() + + val location = EncryptedApiLocation( id = docRef.id, user_id = userId, - latitude = latitude, - longitude = longitude, + encrypted_latitude = Blob.fromBytes(lat.serialize()), + encrypted_longitude = Blob.fromBytes(lon.serialize()), created_at = recordedAt ) @@ -74,14 +117,73 @@ class ApiLocationService @Inject constructor( } } - fun getCurrentLocation(userId: String): Flow>? { - return try { - spaceMemberLocationRef(currentSpaceId).whereEqualTo("user_id", userId) - .orderBy("created_at", Query.Direction.DESCENDING).limit(1) - .snapshotFlow(ApiLocation::class.java) - } catch (e: Exception) { - Timber.e(e, "Error while getting current location") - null + suspend fun getCurrentLocation(userId: String): Flow> { + return flow { + try { + val encryptedLocation = + spaceMemberLocationRef(currentSpaceId, userId).whereEqualTo("user_id", userId) + .orderBy("created_at", Query.Direction.DESCENDING).limit(1) + .snapshotFlow(EncryptedApiLocation::class.java) + encryptedLocation.collect { encryptedLocationList -> + val apiLocations = encryptedLocationList.map { encryptedLocation -> + val receiverGroupCipher = + getGroupCipherAndDistributionMessage(currentSpaceId, userId)?.second + ?: return@map null + Timber.e("Receiver group cipher: $receiverGroupCipher") + val lat = + receiverGroupCipher.decrypt(encryptedLocation.encrypted_latitude.toBytes()) + val lon = + receiverGroupCipher.decrypt(encryptedLocation.encrypted_longitude.toBytes()) + + Timber.d("Decrypted location: $lat, $lon") + + ApiLocation( + user_id = userId, + latitude = lat.toString(Charsets.UTF_8).toDouble(), + longitude = lon.toString(Charsets.UTF_8).toDouble() + ) + } + emit(apiLocations) + } + } catch (e: Exception) { + Timber.e(e, "Error while getting current location") + } } } + + private suspend fun getGroupCipherAndDistributionMessage( + spaceId: String, + userId: String + ): Pair? { + val currentUser = userPreferences.currentUser ?: return null + Timber.e("Getting group cipher for space $spaceId\tUser: $userId") + val sharedDistributionMessage = spaceGroupKeysRef(spaceId) + .document(userId).get().await() + val distributions = + sharedDistributionMessage["distributions"] as? List> ?: emptyList() + val currentUserDistribution = + distributions.firstOrNull { it["recipientId"] == currentUser.id } ?: return null + val currentUserCiphertext = + (currentUserDistribution["ciphertext"] as? Blob)?.toBytes() ?: ByteArray(0) + val deviceIdBytes = + (currentUserDistribution["deviceId"] as? Blob)?.toBytes() ?: ByteArray(0) + val currentUserPrivateKey = + ECPrivateKey(currentUser.identity_key_private?.toBytes() ?: ByteArray(0)) + val distributionBytes = + EphemeralECDHUtils.decrypt(currentUserCiphertext, currentUserPrivateKey) + val deviceId = EphemeralECDHUtils.decrypt(deviceIdBytes, currentUserPrivateKey) + val distributionMessage = SenderKeyDistributionMessage(distributionBytes) + val receiverKeyStore = InMemorySenderKeyStore() + val senderAddress = SignalProtocolAddress( + spaceId, + deviceId.toString(Charsets.UTF_8).toInt() + ) + val sessionBuilder = GroupSessionBuilder(receiverKeyStore) + val receiverGroupCipher = GroupCipher(receiverKeyStore, senderAddress) + sessionBuilder.process(senderAddress, distributionMessage) + Timber.e("Group cipher created for space $spaceId") + // Log everything created here + Timber.e("Distribution message: $distributionMessage\nGroup cipher: $receiverGroupCipher") + return Pair(distributionMessage, receiverGroupCipher) + } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index cb9cdf3d..f49b1b94 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -2,16 +2,28 @@ package com.canopas.yourspace.data.service.space import com.canopas.yourspace.data.models.space.ApiSpace import com.canopas.yourspace.data.models.space.ApiSpaceMember +import com.canopas.yourspace.data.models.space.EncryptedDistribution import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_ADMIN import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_MEMBER +import com.canopas.yourspace.data.models.space.SenderKeyDistributionDoc import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.service.place.ApiPlaceService import com.canopas.yourspace.data.service.user.ApiUserService +import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS +import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.snapshotFlow +import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FirebaseFirestore import kotlinx.coroutines.tasks.await +import org.signal.libsignal.protocol.SignalProtocolAddress +import org.signal.libsignal.protocol.ecc.Curve +import org.signal.libsignal.protocol.groups.GroupSessionBuilder +import org.signal.libsignal.protocol.groups.state.InMemorySenderKeyStore +import timber.log.Timber +import java.util.UUID import javax.inject.Inject import javax.inject.Singleton @@ -20,36 +32,101 @@ class ApiSpaceService @Inject constructor( private val db: FirebaseFirestore, private val authService: AuthService, private val apiUserService: ApiUserService, - private val placeService: ApiPlaceService + private val placeService: ApiPlaceService, + private val userPreferences: UserPreferences ) { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) - internal fun spaceMemberRef(spaceId: String) = - spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) + private fun spaceMemberRef(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") + .collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) + + private fun spaceGroupKeysRef(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( + FIRESTORE_COLLECTION_SPACE_GROUP_KEYS + ) suspend fun createSpace(spaceName: String): String { - val docRef = spaceRef.document() - val spaceId = docRef.id + val spaceId = UUID.randomUUID().toString() + val docRef = spaceRef.document(spaceId) val userId = authService.currentUser?.id ?: "" - val space = ApiSpace(id = spaceId, name = spaceName, admin_id = userId) + + val space = ApiSpace( + id = spaceId, + name = spaceName, + admin_id = userId + ) docRef.set(space).await() joinSpace(spaceId, SPACE_MEMBER_ROLE_ADMIN) return spaceId } + private suspend fun getSpaceMembers(spaceId: String): List { + return spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) + } + suspend fun joinSpace(spaceId: String, role: Int = SPACE_MEMBER_ROLE_MEMBER) { - val userId = authService.currentUser?.id ?: "" + val user = authService.currentUser ?: return + Timber.e("SpaceId: $spaceId, UserId: ${user.id}") spaceMemberRef(spaceId) - .document(userId).also { + .document(user.id).also { val member = ApiSpaceMember( space_id = spaceId, - user_id = userId, + user_id = user.id, role = role, + identity_key_public = user.identity_key_public, location_enabled = true ) it.set(member).await() } - apiUserService.addSpaceId(userId, spaceId) + apiUserService.addSpaceId(user.id, spaceId) + + // Distribute sender key to all members + distributeSenderKeyToSpaceMembers(spaceId, user.id) + } + + /** + * Create a sender key distribution for the current/joining user, and encrypt that distribution + * for each member. + **/ + private suspend fun distributeSenderKeyToSpaceMembers(spaceId: String, senderUserId: String) { + val deviceId = userPreferences.currentUserSession?.device_id ?: "" + val deviceIdInt = deviceId.hashCode() and 0x7FFFFFFF + val groupAddress = SignalProtocolAddress(spaceId, deviceIdInt) + val senderKeyStore = InMemorySenderKeyStore() + val sessionBuilder = GroupSessionBuilder(senderKeyStore) + val distributionMessage = sessionBuilder.create(groupAddress, UUID.fromString(spaceId)) + val distributionBytes = distributionMessage.serialize() + + val apiSpaceMembers = getSpaceMembers(spaceId) + val distributions = mutableListOf() + + for (member in apiSpaceMembers) { + val publicBlob = member.identity_key_public ?: continue + val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) + + // Encrypt distribution using member's public key + val encBytes = EphemeralECDHUtils.encrypt(distributionBytes, publicKey) + val encDeviceId = EphemeralECDHUtils.encrypt(deviceIdInt.toString().toByteArray(), publicKey) + distributions.add( + EncryptedDistribution( + recipientId = member.user_id, + deviceId = Blob.fromBytes(encDeviceId), + ciphertext = Blob.fromBytes(encBytes) + ) + ) + } + + val docRef = spaceGroupKeysRef(spaceId).document(senderUserId) + + val data = SenderKeyDistributionDoc( + senderId = senderUserId, + distributions = distributions, + createdAt = System.currentTimeMillis() + ) + + docRef.set(data).await() + Timber.d("Sender key distribution uploaded for $senderUserId in space $spaceId.") } suspend fun enableLocation(spaceId: String, userId: String, enable: Boolean) { @@ -69,7 +146,8 @@ class ApiSpaceService @Inject constructor( suspend fun getSpace(spaceId: String) = spaceRef.document(spaceId).get().await().toObject(ApiSpace::class.java) - fun getSpaceFlow(spaceId: String) = spaceRef.document(spaceId).snapshotFlow(ApiSpace::class.java) + fun getSpaceFlow(spaceId: String) = + spaceRef.document(spaceId).snapshotFlow(ApiSpace::class.java) fun getSpaceMemberByUserId(userId: String) = db.collectionGroup(FIRESTORE_COLLECTION_SPACE_MEMBERS).whereEqualTo("user_id", userId) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 9f52f4ab..b8e525e1 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -1,5 +1,6 @@ package com.canopas.yourspace.data.service.user +import android.content.Context import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.models.user.ApiUserSession import com.canopas.yourspace.data.models.user.LOGIN_TYPE_APPLE @@ -8,9 +9,11 @@ import com.canopas.yourspace.data.service.location.ApiLocationService import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USERS import com.canopas.yourspace.data.utils.Device +import com.canopas.yourspace.data.utils.KeyHelper import com.canopas.yourspace.data.utils.snapshotFlow import com.google.android.gms.auth.api.signin.GoogleSignInAccount import com.google.firebase.auth.FirebaseUser +import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FieldValue import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.functions.FirebaseFunctions @@ -29,7 +32,8 @@ class ApiUserService @Inject constructor( db: FirebaseFirestore, private val device: Device, private val locationService: ApiLocationService, - private val functions: FirebaseFunctions + private val functions: FirebaseFunctions, + val context: Context ) { private val userRef = db.collection(FIRESTORE_COLLECTION_USERS) private fun sessionRef(userId: String) = @@ -45,10 +49,10 @@ class ApiUserService @Inject constructor( } } - suspend fun getUserFlow(userId: String) = + fun getUserFlow(userId: String) = userRef.document(userId).snapshotFlow(ApiUser::class.java) - suspend fun getUserSessionFlow(userId: String, sessionId: String) = + fun getUserSessionFlow(userId: String, sessionId: String) = sessionRef(userId).document(sessionId).snapshotFlow(ApiUserSession::class.java) suspend fun saveUser( @@ -74,6 +78,7 @@ class ApiUserService @Inject constructor( sessionDocRef.set(session).await() return Triple(false, savedUser, session) } else { + val identityKeyPair = KeyHelper.generateIdentityKeyPair() val user = ApiUser( id = uid!!, email = account?.email ?: firebaseUser?.email ?: "", @@ -82,7 +87,9 @@ class ApiUserService @Inject constructor( last_name = account?.familyName ?: "", provider_firebase_id_token = firebaseToken, profile_image = account?.photoUrl?.toString() ?: firebaseUser?.photoUrl?.toString() - ?: "" + ?: "", + identity_key_public = Blob.fromBytes(identityKeyPair.publicKey.serialize()), + identity_key_private = Blob.fromBytes(identityKeyPair.privateKey.serialize()) ) userRef.document(uid).set(user).await() val sessionDocRef = sessionRef(user.id).document() diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt b/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt index 108ef7f0..623c8711 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt @@ -1,5 +1,6 @@ package com.canopas.yourspace.data.storage +import android.util.Base64 import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.booleanPreferencesKey @@ -10,8 +11,11 @@ import com.canopas.yourspace.data.models.user.ApiUserSession import com.canopas.yourspace.data.storage.UserPreferences.PreferencesKey.KEY_USER_CURRENT_SPACE import com.canopas.yourspace.data.storage.UserPreferences.PreferencesKey.KEY_USER_JSON import com.canopas.yourspace.data.storage.UserPreferences.PreferencesKey.KEY_USER_SESSION_JSON +import com.google.firebase.firestore.Blob +import com.squareup.moshi.FromJson import com.squareup.moshi.JsonAdapter import com.squareup.moshi.Moshi +import com.squareup.moshi.ToJson import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map @@ -26,9 +30,9 @@ const val PREF_USER_PREFERENCES = "your_space_user_preferences" class UserPreferences @Inject constructor( @Named(PREF_USER_PREFERENCES) private val preferencesDataStore: DataStore ) { - private val userJsonAdapter: JsonAdapter = - Moshi.Builder().addLast(KotlinJsonAdapterFactory()).build().adapter(ApiUser::class.java) + Moshi.Builder().add(BlobTypeAdapter()).addLast(KotlinJsonAdapterFactory()).build() + .adapter(ApiUser::class.java) private val userSessionJsonAdapter: JsonAdapter = Moshi.Builder().addLast(KotlinJsonAdapterFactory()).build() .adapter(ApiUserSession::class.java) @@ -166,3 +170,18 @@ class UserPreferences @Inject constructor( } } } + +class BlobTypeAdapter { + @ToJson + fun toJson(blob: Blob?): String? { + return blob?.let { Base64.encodeToString(it.toBytes(), Base64.DEFAULT) } + } + + @FromJson + fun fromJson(base64: String?): Blob? { + return base64?.let { + val bytes = Base64.decode(it, Base64.DEFAULT) + Blob.fromBytes(bytes) + } + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/Config.kt b/data/src/main/java/com/canopas/yourspace/data/utils/Config.kt index 12b259e6..7dcc5060 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/Config.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/Config.kt @@ -10,6 +10,7 @@ object Config { const val FIRESTORE_COLLECTION_SPACE_MEMBERS = "space_members" const val FIRESTORE_COLLECTION_SPACE_PLACES = "space_places" const val FIRESTORE_COLLECTION_SPACE_PLACES_MEMBER_SETTINGS = "place_settings_by_members" + const val FIRESTORE_COLLECTION_SPACE_GROUP_KEYS = "group_keys" const val FIRESTORE_COLLECTION_SPACE_INVITATION = "space_invitations" const val FIRESTORE_COLLECTION_SPACE_THREADS = "space_threads" diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/EncryptionUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/EncryptionUtils.kt new file mode 100644 index 00000000..895448c5 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/utils/EncryptionUtils.kt @@ -0,0 +1,251 @@ +package com.canopas.yourspace.data.utils + +import org.bouncycastle.crypto.InvalidCipherTextException +import org.bouncycastle.jce.provider.BouncyCastleProvider +import org.signal.libsignal.protocol.ecc.Curve +import org.signal.libsignal.protocol.ecc.ECPrivateKey +import org.signal.libsignal.protocol.ecc.ECPublicKey +import org.signal.libsignal.protocol.kdf.HKDF +import timber.log.Timber +import java.nio.ByteBuffer +import java.security.PrivateKey +import java.security.PublicKey +import java.security.SecureRandom +import java.security.Security +import javax.crypto.Cipher +import javax.crypto.spec.GCMParameterSpec +import javax.crypto.spec.SecretKeySpec + +object EncryptionUtils { + + init { + Security.addProvider(BouncyCastleProvider()) + } + + fun encryptWithPublicKey(publicKey: ByteArray, data: ByteArray): ByteArray { + val keyFactory = java.security.KeyFactory.getInstance("RSA", "BC") + val publicKeySpec = java.security.spec.X509EncodedKeySpec(publicKey) + val publicKeyObj: PublicKey = keyFactory.generatePublic(publicKeySpec) + + val cipher = try { + Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", "BC") + } catch (e: Exception) { + throw RuntimeException("Failed to initialize cipher", e) + } + + cipher.init(Cipher.ENCRYPT_MODE, publicKeyObj) + + return cipher.doFinal(data) + } + + fun decryptWithPrivateKey(privateKey: ByteArray, encryptedData: ByteArray): ByteArray { + val keyFactory = java.security.KeyFactory.getInstance("RSA", "BC") + val privateKeySpec = java.security.spec.PKCS8EncodedKeySpec(privateKey) + val privateKeyObj: PrivateKey = keyFactory.generatePrivate(privateKeySpec) + + val cipher = try { + Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", "BC") + } catch (e: Exception) { + throw RuntimeException("Failed to initialize cipher", e) + } + + cipher.init(Cipher.DECRYPT_MODE, privateKeyObj) + + return cipher.doFinal(encryptedData) + } +} + +/** + * A production-ready example of ephemeral ECDH encryption ("ECIES") with: + * - Curve25519 for ECDH, + * - HKDF for key derivation, + * - AES/GCM for authenticated encryption. + * + * Data layout = [ ephemeralPub(32|33 bytes) || iv(12 bytes) || ciphertext+authTag(...) ]. + */ +object CryptoUtils { + + private const val KEY_LENGTH_BYTES = 32 // 256-bit AES key + private const val IV_LENGTH_BYTES = 12 // 96-bit GCM IV + private const val GCM_TAG_BITS = 128 + + private val secureRandom = SecureRandom() + + /** + * Encrypts [plaintext] for [recipientPub] using ephemeral ECDH -> HKDF -> AES/GCM. + * Returns a byte array containing: + * ephemeralPub + iv + AES-GCM ciphertext (which includes auth tag). + */ + fun encryptForPublicKey(plaintext: ByteArray, recipientPub: ECPublicKey): ByteArray { + // 1) Generate ephemeral key pair + val ephemeralPair = Curve.generateKeyPair() // Curve25519 + val ephemeralPubBytes = ephemeralPair.publicKey.serialize() // 32 or 33 bytes + + // 2) Compute ECDH shared secret + val sharedSecret = Curve.calculateAgreement(recipientPub, ephemeralPair.privateKey) + // 3) Derive AES key with HKDF + val derivedAesKey = hkdfDeriveKey(sharedSecret, "ECDH-Encryption") + + // 4) AES/GCM encrypt + val iv = ByteArray(IV_LENGTH_BYTES).also { secureRandom.nextBytes(it) } + val cipher = Cipher.getInstance("AES/GCM/NoPadding") + cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(derivedAesKey, "AES"), GCMParameterSpec(GCM_TAG_BITS, iv)) + val cipherText = cipher.doFinal(plaintext) + + // 5) Build final output: ephemeralPub + iv + ciphertext + return ByteBuffer.allocate(ephemeralPubBytes.size + iv.size + cipherText.size) + .put(ephemeralPubBytes) + .put(iv) + .put(cipherText) + .array() + } + + /** + * Decrypts [ciphertext] with our Curve25519 [myPrivate] key. + * Expects the layout: ephemeralPub(32|33) + iv(12) + actualCiphertext. + */ + fun decryptWithPrivateKey(ciphertext: ByteArray, myPrivate: ECPrivateKey): ByteArray { + // 1) Parse ephemeralPub from the front + // Typically 32 bytes for Curve25519. Some libs produce 33. Check your library's format. + val ephemeralPubSize = getEphemeralPubLength(ciphertext) + val ephemeralPubBytes = ciphertext.sliceArray(0 until ephemeralPubSize) + val ephemeralPub = Curve.decodePoint(ephemeralPubBytes, 0) as ECPublicKey + + // 2) Next 12 bytes = IV + val ivStart = ephemeralPubSize + val ivEnd = ivStart + IV_LENGTH_BYTES + val iv = ciphertext.sliceArray(ivStart until ivEnd) + + // 3) The rest is the GCM ciphertext+authTag + val actualCipherBytes = ciphertext.sliceArray(ivEnd until ciphertext.size) + + // 4) ECDH + val sharedSecret = Curve.calculateAgreement(ephemeralPub, myPrivate) + val derivedAesKey = hkdfDeriveKey(sharedSecret, "ECDH-Encryption") + + // 5) AES/GCM decrypt + val cipher = Cipher.getInstance("AES/GCM/NoPadding") + cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec(derivedAesKey, "AES"), GCMParameterSpec(GCM_TAG_BITS, iv)) + return cipher.doFinal(actualCipherBytes) + } + + /** + * Derive a 32-byte key from [sharedSecret] + optional [info] using HKDF (SHA-256). + */ + private fun hkdfDeriveKey(sharedSecret: ByteArray, info: String): ByteArray { + // salt = null => effectively empty + // We use HKDFv3 from libsignal-protocol + return HKDF.deriveSecrets( + sharedSecret, + ByteArray(0), // no salt + info.toByteArray(), // info context + KEY_LENGTH_BYTES // 32-byte key + ) + } + + /** + * Attempt to detect ephemeralPub length. Typically 32 for Curve25519. + * If your ephemeral keys might be 33, adjust logic as needed. + */ + private fun getEphemeralPubLength(ciphertext: ByteArray): Int { + if (ciphertext.size < 32 + 12) { + throw InvalidCipherTextException("Ciphertext too short to contain ephemeralPub + IV") + } + return 32 + } +} + +/** + * Demonstrates ephemeral ECDH encryption ("ECIES") with ephemeral Curve25519 keys + * for **each message**, providing forward secrecy in a simplified manner. + * + * Layout of the resulting ciphertext: + * [ ephemeralPub(32 bytes) || iv(12 bytes) || AES/GCM ciphertext+tag(...) ]. + * + * 1) For each message: + * - Generate ephemeral key pair (sender). + * - ECDH with recipient’s long-term public key => sharedSecret. + * - HKDF => AES key. + * - AES/GCM => final ciphertext. + * 2) Recipient uses ephemeralPub + their private key to derive the same AES key. + */ +object EphemeralECDHUtils { + + private const val AES_KEY_SIZE = 32 // 256-bit AES key + private const val IV_SIZE = 12 // 96-bit GCM IV + private const val GCM_TAG_BITS = 128 + private val secureRandom = SecureRandom() + + /** + * Encrypt [plaintext] using ephemeral Curve25519 for each message. + * [recipientPub] is the recipient's **long-term** public key. + */ + fun encrypt(plaintext: ByteArray, recipientPub: ECPublicKey): ByteArray { + // 1) Generate ephemeral key pair + val ephemeralPair = Curve.generateKeyPair() // ephemeral keys + val ephemeralPubBytes = ephemeralPair.publicKey.serialize() // 32 bytes + + // 2) ECDH => shared secret + val sharedSecret = Curve.calculateAgreement(recipientPub, ephemeralPair.privateKey) + + // 3) HKDF => 256-bit AES key + val aesKey = deriveAesKey(sharedSecret, "Ephemeral-FS") + + // 4) AES/GCM encrypt + val iv = ByteArray(IV_SIZE).also { secureRandom.nextBytes(it) } + val cipher = Cipher.getInstance("AES/GCM/NoPadding") + cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(aesKey, "AES"), GCMParameterSpec(GCM_TAG_BITS, iv)) + val ciphertext = cipher.doFinal(plaintext) + + // 5) Combine ephemeralPub + iv + ciphertext + return ByteBuffer.allocate(ephemeralPubBytes.size + iv.size + ciphertext.size) + .put(ephemeralPubBytes) + .put(iv) + .put(ciphertext) + .array() + } + + /** + * Decrypt using recipient's **private** key + ephemeral pub from the ciphertext. + */ + fun decrypt(ciphertext: ByteArray, recipientPrivate: ECPrivateKey): ByteArray { + if (ciphertext.size < 32 + IV_SIZE) { + throw IllegalArgumentException("Ciphertext too small. Expected at least 44 bytes.") + } + + Timber.e("Decrypting ciphertext of size: ${ciphertext.size}") + // 1) Extract ephemeralPub(32 bytes) from the front + val ephemeralPubBytes = ciphertext.sliceArray(0 until 32) + val ephemeralPub = Curve.decodePoint(ephemeralPubBytes, 0) + + // 2) Next 12 bytes => IV + val ivStart = 32 + val ivEnd = ivStart + IV_SIZE + val iv = ciphertext.sliceArray(ivStart until ivEnd) + + // 3) Remainder => GCM ciphertext + val actualCipher = ciphertext.sliceArray(ivEnd until ciphertext.size) + + // 4) ECDH => sharedSecret + val sharedSecret = Curve.calculateAgreement(ephemeralPub, recipientPrivate) + + // 5) HKDF => AES key + val aesKey = deriveAesKey(sharedSecret, "Ephemeral-FS") + + // 6) AES/GCM decrypt + val cipher = Cipher.getInstance("AES/GCM/NoPadding") + cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec(aesKey, "AES"), GCMParameterSpec(GCM_TAG_BITS, iv)) + return cipher.doFinal(actualCipher) + } + + private fun deriveAesKey(sharedSecret: ByteArray, info: String): ByteArray { + // Use org.signal.libsignal.protocol.kdf.HKDF (SHA-256 based) + // No salt => pass ByteArray(0) + return HKDF.deriveSecrets( + sharedSecret, + ByteArray(0), + info.toByteArray(), + AES_KEY_SIZE + ) + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt b/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt new file mode 100644 index 00000000..ca3ab30f --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt @@ -0,0 +1,43 @@ +package com.canopas.yourspace.data.utils + +import org.signal.libsignal.protocol.IdentityKey +import org.signal.libsignal.protocol.IdentityKeyPair +import org.signal.libsignal.protocol.ecc.Curve +import org.signal.libsignal.protocol.state.PreKeyRecord +import org.signal.libsignal.protocol.state.SignedPreKeyRecord +import org.signal.libsignal.protocol.util.KeyHelper +import java.security.SecureRandom + +private const val INTEGER_MAX = 0x7fffffff + +object KeyHelper { + fun generateIdentityKeyPair(): IdentityKeyPair { + val keyPair = Curve.generateKeyPair() + val publicKey = IdentityKey(keyPair.publicKey) + return IdentityKeyPair(publicKey, keyPair.privateKey) + } + + fun generateRegistrationId(extendedRange: Boolean): Int { + return KeyHelper.generateRegistrationId(extendedRange) + } + + fun generatePreKeys(start: Int, count: Int): List { + val results = mutableListOf() + for (i in 0 until count) { + results.add(PreKeyRecord(start + i, Curve.generateKeyPair())) + } + return results + } + + fun generateSignedPreKey(identityKeyPair: IdentityKeyPair, signedPreKeyId: Int): SignedPreKeyRecord { + val keyPair = Curve.generateKeyPair() + val signature = + Curve.calculateSignature(identityKeyPair.privateKey, keyPair.publicKey.serialize()) + return SignedPreKeyRecord(signedPreKeyId, System.currentTimeMillis(), keyPair, signature) + } + + fun generateSignedPreKeyId(): Int { + val random = SecureRandom() + return random.nextInt(INTEGER_MAX) + } +} diff --git a/firestore.rules b/firestore.rules index 4cb4670c..bb5fdc98 100644 --- a/firestore.rules +++ b/firestore.rules @@ -1,293 +1,316 @@ rules_version = '2'; service cloud.firestore { - match /databases/{database}/documents { - - function isAuthorized() { - return request.auth != null; - } - - function readUserLocation() { - let requestedUserSpaceIds = get(/databases/$(database)/documents/users/$(request.auth.uid)).data.space_ids; - let resourceUserSpaceIds = get(/databases/$(database)/documents/users/$(resource.data.user_id)).data.space_ids; - return requestedUserSpaceIds.hasAny(resourceUserSpaceIds); - } - - match /support_requests/{docId} { - allow create : if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["user_id", "title", "description", "device_name","app_version","device_os", "created_at"]) && - request.resource.data.user_id is string && - request.resource.data.title is string && - request.resource.data.description is string && - request.resource.data.device_name is string && - request.resource.data.app_version is string && - request.resource.data.device_os is string && - request.resource.data.created_at is timestamp && - request.resource.data.get('attachments', []) is list; - allow update: if false; - allow delete: if false; - allow read: if isAuthorized() && request.auth.uid == resource.data.user_id; - } - - match /users/{docId} { - allow create : if isAuthorized() && request.auth.uid == docId && - request.resource.data.keys().hasAll(["id", "auth_type", "location_enabled", "provider_firebase_id_token", "created_at"]) && - request.resource.data.email is string && - request.resource.data.id is string && - request.resource.data.auth_type is int && - (request.resource.data.auth_type == 1 || request.resource.data.auth_type == 2) && - request.resource.data.location_enabled is bool && - request.resource.data.provider_firebase_id_token is string && - request.resource.data.created_at is int && - request.resource.data.get('first_name', '') is string && - request.resource.data.get('email', '') is string && - request.resource.data.get('last_name', '') is string && - request.resource.data.get('fcm_token', '') is string && - request.resource.data.get('profile_image', '') is string && - request.resource.data.get('space_ids', []) is list; - - allow update: if isAuthorized() && request.auth.uid == resource.data.id && - request.resource.data.diff(resource.data).affectedKeys().hasAny(['first_name', 'last_name', 'profile_image', 'location_enabled', 'space_ids', 'phone', 'email','fcm_token', 'updated_at', 'battery_pct', 'state']) && - request.resource.data.first_name is string && - request.resource.data.get('last_name', '') is string && - request.resource.data.get('fcm_token', '') is string && - request.resource.data.location_enabled is bool && - request.resource.data.get('space_ids', []) is list; - - allow delete: if isAuthorized() && request.auth.uid == resource.data.id; - allow read: if isAuthorized(); - - match /user_locations/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.latitude is number && - request.resource.data.longitude is number && - request.resource.data.created_at is int; - } - - match /user_journeys/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.from_latitude is number && - request.resource.data.from_longitude is number && - request.resource.data.created_at is int; - } + match /databases/{database}/documents { + function isAuthorized() { + return request.auth != null; + } - match /user_sessions/{docId} { - allow read: if isAuthorized(); - allow create : if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "device_id", "device_name", "platform", "session_active", "app_version", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.device_id is string && - request.resource.data.device_name is string && - request.resource.data.platform is int && - request.resource.data.platform == 1 && - request.resource.data.session_active is bool && - request.resource.data.app_version is int && - request.resource.data.created_at is int; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - } - } + function readUserLocation() { + let requestedUserSpaceIds = get(/databases/$(database)/documents/users/$(request.auth.uid)).data.space_ids; + let resourceUserSpaceIds = get(/databases/$(database)/documents/users/$(resource.data.user_id)).data.space_ids; + return requestedUserSpaceIds.hasAny(resourceUserSpaceIds); + } - match /users/{docId}/user_sessions/{document=**} { - allow read: if isAuthorized() && request.auth.uid == docId; - } + match /support_requests/{docId} { + allow create: if isAuthorized() && + request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["user_id", "title", "description", "device_name", "app_version", "device_os", "created_at"]) && + request.resource.data.user_id is string && + request.resource.data.title is string && + request.resource.data.description is string && + request.resource.data.device_name is string && + request.resource.data.app_version is string && + request.resource.data.device_os is string && + request.resource.data.created_at is timestamp && + request.resource.data.get('attachments', []) is list; + allow update: if false; + allow delete: if false; + allow read: if isAuthorized() && request.auth.uid == resource.data.user_id; + } - function isSpaceAdmin(spaceId) { - let adminId = get(/databases/$(database)/documents/spaces/$(spaceId)).data.admin_id; - return request.auth.uid == adminId; - } + match /users/{docId} { + allow create: if isAuthorized() && + request.auth.uid == docId && + request.resource.data.keys().hasAll(["id", "auth_type", "location_enabled", "provider_firebase_id_token", "created_at"]) && + request.resource.data.email is string && + request.resource.data.id is string && + request.resource.data.auth_type is int && + (request.resource.data.auth_type == 1 || request.resource.data.auth_type == 2) && + request.resource.data.location_enabled is bool && + request.resource.data.provider_firebase_id_token is string && + request.resource.data.created_at is int && + request.resource.data.get('first_name', '') is string && + request.resource.data.get('email', '') is string && + request.resource.data.get('last_name', '') is string && + request.resource.data.get('fcm_token', '') is string && + request.resource.data.get('profile_image', '') is string && + request.resource.data.get('space_ids', []) is list; + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.id; + allow read: if isAuthorized(); + + match /user_locations/{docId} { + allow read: if isAuthorized() && + (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && + request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.latitude is number && + request.resource.data.longitude is number && + request.resource.data.created_at is int; + } + + match /user_journeys/{docId} { + allow read: if isAuthorized() && + (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && + request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.from_latitude is number && + request.resource.data.from_longitude is number && + request.resource.data.created_at is int; + } + + match /user_sessions/{docId} { + allow read: if isAuthorized(); + allow create: if isAuthorized() && + request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "device_id", "device_name", "platform", "session_active", "app_version", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.device_id is string && + request.resource.data.device_name is string && + request.resource.data.platform is int && + request.resource.data.platform == 1 && + request.resource.data.session_active is bool && + request.resource.data.app_version is int && + request.resource.data.created_at is int; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + } + } - function isSpaceMember(spaceId) { - let isMember = exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); - return isMember; - } + match /users/{docId}/user_sessions/{document=**} { + allow read: if isAuthorized() && request.auth.uid == docId; + } - match /spaces/{docId} { - allow read: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.admin_id; - allow update: if isAuthorized() && request.auth.uid == resource.data.admin_id; - allow create: if isAuthorized() && - request.resource.data.keys().hasAll(["id", "admin_id", "name", "created_at"]) && - request.resource.data.id is string && - request.resource.data.admin_id is string && - request.resource.data.name is string && - request.resource.data.created_at is int; + function isSpaceAdmin(spaceId) { + let adminId = get(/databases/$(database)/documents/spaces/$(spaceId)).data.admin_id; + return request.auth.uid == adminId; + } + function isSpaceMember(spaceId) { + let isMember = exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); + return isMember; + } - } - match /{path=**}/space_places/{place} { - allow read: if isAuthorized() && isSpaceMember(resource.data.space_id); - allow write: if false; - } + match /spaces/{spaceId} { + allow read: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.admin_id; + allow update: if isAuthorized() && request.auth.uid == resource.data.admin_id; + allow create: if isAuthorized() && + request.resource.data.keys().hasAll(["id", "admin_id", "name", "created_at"]) && + request.resource.data.id is string && + request.resource.data.admin_id is string && + request.resource.data.name is string && + request.resource.data.created_at is int; + } - match /spaces/{spaceId}/space_places/{place} { - allow read: if isAuthorized() && isSpaceMember(spaceId); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.created_by); - allow update: if isAuthorized() && request.auth.uid == resource.data.created_by; - allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.created_by) && - request.resource.data.keys().hasAll(["id", "space_id", "created_by", "latitude", "longitude", "radius", "name", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.created_by is string && - request.resource.data.latitude is number && - request.resource.data.longitude is number && - request.resource.data.radius is number && - request.resource.data.name is string && - request.resource.data.created_at is timestamp; - } + match /{path=**}/space_places/{place} { + allow read: if isAuthorized() && isSpaceMember(resource.data.space_id); + allow write: if false; + } - function isPlaceAdmin(spaceId, place) { - let created_by = get(/databases/$(database)/documents/spaces/$(spaceId)/space_places/$(place)).data.created_by; - return request.auth.uid == created_by; - } + match /spaces/{spaceId}/space_places/{place} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + allow delete: if isAuthorized() && + (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.created_by); + allow update: if isAuthorized() && request.auth.uid == resource.data.created_by; + allow create: if isAuthorized() && + (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.created_by) && + request.resource.data.keys().hasAll(["id", "space_id", "created_by", "latitude", "longitude", "radius", "name", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.created_by is string && + request.resource.data.latitude is number && + request.resource.data.longitude is number && + request.resource.data.radius is number && + request.resource.data.name is string && + request.resource.data.created_at is timestamp; + } - match /spaces/{spaceId}/space_places/{place}/place_settings_by_members/{member} { - allow read: if isAuthorized() && isSpaceMember(spaceId); - allow update: if isAuthorized() && isSpaceMember(spaceId) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["alert_enable", "leave_alert_for", "arrival_alert_for"]) && - request.resource.data.arrival_alert_for is list && - request.resource.data.leave_alert_for is list && - request.resource.data.alert_enable is bool; - allow delete: if isAuthorized() && (request.auth.uid == resource.data.user_id || isPlaceAdmin(place)); - allow create: if isAuthorized() && isSpaceMember(spaceId) && - request.resource.data.keys().hasAll(["user_id", "place_id", "alert_enable", "leave_alert_for", "arrival_alert_for"]) && - request.resource.data.user_id is string && - request.resource.data.place_id is string && - request.resource.data.get('arrival_alert_for', []) is list && - request.resource.data.get('leave_alert_for', []) is list && - request.resource.data.alert_enable is bool; - } + function isPlaceAdmin(spaceId, place) { + let created_by = get(/databases/$(database)/documents/spaces/$(spaceId)/space_places/$(place)).data.created_by; + return request.auth.uid == created_by; + } - match /{path=**}/space_members/{member} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(resource.data.space_id)); - allow write: if false; - } + match /spaces/{spaceId}/space_places/{place}/place_settings_by_members/{member} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + allow update: if isAuthorized() && + isSpaceMember(spaceId) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["alert_enable", "leave_alert_for", "arrival_alert_for"]) && + request.resource.data.arrival_alert_for is list && + request.resource.data.leave_alert_for is list && + request.resource.data.alert_enable is bool; + allow delete: if isAuthorized() && + (request.auth.uid == resource.data.user_id || isPlaceAdmin(spaceId, place)); + allow create: if isAuthorized() && + isSpaceMember(spaceId) && + request.resource.data.keys().hasAll(["user_id", "place_id", "alert_enable", "leave_alert_for", "arrival_alert_for"]) && + request.resource.data.user_id is string && + request.resource.data.place_id is string && + request.resource.data.get('arrival_alert_for', []) is list && + request.resource.data.get('leave_alert_for', []) is list && + request.resource.data.alert_enable is bool; + } - match /spaces/{spaceId}/space_members/{member} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.user_id); - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["location_enabled"]) && - request.resource.data.location_enabled is bool; - allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.user_id) && - request.resource.data.keys().hasAll(["id", "space_id", "user_id", "role", "location_enabled", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.user_id is string && - request.resource.data.role is int && - (request.resource.data.role == 1 || request.resource.data.role == 2) && - request.resource.data.location_enabled is bool && - request.resource.data.created_at is int; + match /{path=**}/space_members/{member} { + allow read: if isAuthorized() && + (request.auth.uid == resource.data.user_id || isSpaceMember(resource.data.space_id)); + allow write: if false; + } - function readSpaceMemberLocation(spaceId) { - return exists(/databases/$(database)/documents/spaces/$(spaceId)/space_members/$(request.auth.uid)); - } + match /spaces/{spaceId}/group_keys/{senderId} { + allow read: if isAuthorized() && isSpaceMember(spaceId); - match /user_locations/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readSpaceMemberLocation()); - allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "sender_key", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.latitude is string && - request.resource.data.longitude is string && - request.resource.data.sender_key is string && - request.resource.data.created_at is int; - } + allow create: if isAuthorized() && + request.auth.uid == senderId && + isSpaceMember(spaceId) && + request.resource.data.keys().hasAll(["senderId", "distributions", "createdAt"]) && + request.resource.data.senderId is string && + request.resource.data.distributions is list && + request.resource.data.createdAt is int; - match /user_journeys/{docId} { - allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readSpaceMemberLocation()); - allow update: if true; - allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && - request.resource.data.id is string && - request.resource.data.user_id is string && - request.resource.data.from_latitude is string && - request.resource.data.from_longitude is string && - request.resource.data.created_at is int; - } - } + allow update: if false; + allow delete: if false; + } - match /space_invitations/{docId} { - allow read: if isAuthorized(); - allow delete: if isAuthorized() && isSpaceAdmin(resource.data.space_id); - allow update: if isAuthorized() && isSpaceMember(resource.data.space_id) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["code", "created_at"]) && - request.resource.data.code is string && - request.resource.data.code.size() == 6 && - request.resource.data.created_at is int; + match /spaces/{spaceId}/space_members/{member} { + allow read: if isAuthorized() && + (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); + allow delete: if isAuthorized() && + (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.user_id); + allow update: if isAuthorized() && + (request.auth.uid == resource.data.user_id || isSpaceAdmin(resource.data.space_id)) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["location_enabled", "role"]) && + ((request.resource.data.location_enabled is bool) || + (request.resource.data.role is int && (request.resource.data.role == 1 || request.resource.data.role == 2))); + allow create: if isAuthorized() && + (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.user_id) && + request.resource.data.keys().hasAll(["id", "space_id", "user_id", "role", "location_enabled", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.user_id is string && + request.resource.data.role is int && + (request.resource.data.role == 1 || request.resource.data.role == 2) && + request.resource.data.location_enabled is bool && + request.resource.data.created_at is int; + } - allow create: if isAuthorized() && isSpaceAdmin(request.resource.data.space_id) && - request.resource.data.keys().hasAll(["id", "code", "space_id", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.code is string && - request.resource.data.code.size() == 6 && - request.resource.data.created_at is int; - } + match /spaces/{spaceId}/space_members/{docId} { + match /user_locations/{docId} { + allow read: if isAuthorized() && + (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized(); + } + + match /user_journeys/{docId} { + allow read: if isAuthorized() && + (request.auth.uid == resource.data.user_id || readUserLocation()); + allow update: if true; + allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; + allow create: if isAuthorized() && + request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.from_latitude is number && + request.resource.data.from_longitude is number && + request.resource.data.created_at is int; + } + } + match /space_invitations/{docId} { + allow read: if isAuthorized(); + allow delete: if isAuthorized() && isSpaceAdmin(resource.data.space_id); + allow update: if isAuthorized() && + isSpaceMember(resource.data.space_id) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["code", "created_at"]) && + request.resource.data.code is string && + request.resource.data.code.size() == 6 && + request.resource.data.created_at is int; + allow create: if isAuthorized() && + isSpaceAdmin(request.resource.data.space_id) && + request.resource.data.keys().hasAll(["id", "code", "space_id", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.code is string && + request.resource.data.code.size() == 6 && + request.resource.data.created_at is int; + } - match /space_threads/{docId} { - allow read: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || isSpaceMember(resource.data.space_id)); - allow delete: if isAuthorized() && isThreadAdmin(docId); - allow update: if isAuthorized() && isThreadMember(docId) && - request.resource.data.diff(resource.data).affectedKeys().hasAny(["member_ids", "archived_for"]) && - request.resource.data.get('member_ids', []) is list && - request.resource.data.get('archived_for', {}) is map; - allow create: if isAuthorized() && (isSpaceMember(request.resource.data.space_id)) && - request.resource.data.keys().hasAll(["id", "space_id", "admin_id", "member_ids", "created_at"]) && - request.resource.data.id is string && - request.resource.data.space_id is string && - request.resource.data.admin_id is string && - request.resource.data.member_ids is list && - request.resource.data.created_at is int; + match /space_threads/{docId} { + allow read: if isAuthorized() && + (isSpaceAdmin(resource.data.space_id) || isSpaceMember(resource.data.space_id)); + allow delete: if isAuthorized() && isThreadAdmin(docId); + allow update: if isAuthorized() && + isThreadMember(docId) && + request.resource.data.diff(resource.data).affectedKeys().hasAny(["member_ids", "archived_for"]) && + request.resource.data.get('member_ids', []) is list && + request.resource.data.get('archived_for', {}) is map; + allow create: if isAuthorized() && + (isSpaceMember(request.resource.data.space_id)) && + request.resource.data.keys().hasAll(["id", "space_id", "admin_id", "member_ids", "created_at"]) && + request.resource.data.id is string && + request.resource.data.space_id is string && + request.resource.data.admin_id is string && + request.resource.data.member_ids is list && + request.resource.data.created_at is int; + } - } - function isThreadMember(threadId) { - let memberIds = get(/databases/$(database)/documents/space_threads/$(threadId)).data.member_ids; - return memberIds.hasAny([request.auth.uid]); - } + function isThreadMember(threadId) { + let memberIds = get(/databases/$(database)/documents/space_threads/$(threadId)).data.member_ids; + return memberIds.hasAny([request.auth.uid]); + } - function isThreadAdmin(threadId) { - let adminId = get(/databases/$(database)/documents/space_threads/$(threadId)).data.admin_id; - return adminId == request.auth.uid; - } + function isThreadAdmin(threadId) { + let adminId = get(/databases/$(database)/documents/space_threads/$(threadId)).data.admin_id; + return adminId == request.auth.uid; + } - match /{path=**}/thread_messages/{docId} { - allow read: if isAuthorized() && isThreadMember(resource.data.thread_id); - } + match /{path=**}/thread_messages/{docId} { + allow read: if isAuthorized() && isThreadMember(resource.data.thread_id); + } - match /space_threads/{threadId}/thread_messages/{docId} { - allow read: if isAuthorized() && isThreadMember(threadId); - allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id)); - allow update: if isAuthorized() && isThreadMember(threadId) && - request.resource.data.diff(resource.data).affectedKeys().hasOnly(["seen_by"]) && - request.resource.data.seen_by is list; - allow create: if isAuthorized() && isThreadMember(threadId) && request.resource.data.sender_id == request.auth.uid && - request.resource.data.keys().hasAll(["id", "thread_id", "sender_id", "message", "seen_by", "created_at"]) && - request.resource.data.id is string && - request.resource.data.thread_id is string && - request.resource.data.sender_id is string && - request.resource.data.message is string && - request.resource.data.seen_by is list && - request.resource.data.created_at is timestamp; - } + match /space_threads/{threadId}/thread_messages/{docId} { + allow read: if isAuthorized() && isThreadMember(threadId); + allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id)); + allow update: if isAuthorized() && + isThreadMember(threadId) && + request.resource.data.diff(resource.data).affectedKeys().hasOnly(["seen_by"]) && + request.resource.data.seen_by is list; + allow create: if isAuthorized() && + isThreadMember(threadId) && + request.resource.data.sender_id == request.auth.uid && + request.resource.data.keys().hasAll(["id", "thread_id", "sender_id", "message", "seen_by", "created_at"]) && + request.resource.data.id is string && + request.resource.data.thread_id is string && + request.resource.data.sender_id is string && + request.resource.data.message is string && + request.resource.data.seen_by is list && + request.resource.data.created_at is timestamp; } + } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 2cbd6d19..957f8ef9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,3 +21,4 @@ kotlin.code.style=official # resources declared in the library itself and none from the library's dependencies, # thereby reducing the size of the R class for that library android.nonTransitiveRClass=true +android.enableR8.fullMode=false From 582e99e2effa278dcdb5ee30918da9a73f22857d Mon Sep 17 00:00:00 2001 From: cp-megh Date: Fri, 27 Dec 2024 12:24:19 +0530 Subject: [PATCH 06/39] WIP --- .../canopas/yourspace/YourSpaceApplication.kt | 2 +- .../yourspace/data/di/AppDataProvider.kt | 25 +- .../yourspace/data/models/space/ApiSpace.kt | 20 +- .../service/location/ApiLocationService.kt | 58 ++-- .../data/service/space/ApiSpaceService.kt | 31 +-- .../data/service/user/ApiUserService.kt | 6 +- .../BufferedSenderKeyStore.kt | 87 ++++++ .../bufferedkeystore/DistributionId.kt | 61 +++++ .../SignalServiceSenderKeyStore.kt | 28 ++ .../data/storage/database/AppDatabase.kt | 13 + .../data/storage/database/SenderKeyDao.kt | 65 +++++ .../data/storage/database/SenderKeyEntity.kt | 41 +++ .../yourspace/data/utils/EncryptionUtils.kt | 251 ------------------ .../data/utils/EphemeralECDHUtils.kt | 144 ++++++++++ .../canopas/yourspace/data/utils/KeyHelper.kt | 5 + 15 files changed, 515 insertions(+), 322 deletions(-) create mode 100644 data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/DistributionId.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/storage/database/AppDatabase.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyEntity.kt delete mode 100644 data/src/main/java/com/canopas/yourspace/data/utils/EncryptionUtils.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt diff --git a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt index 260071a3..b2edf095 100644 --- a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt +++ b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt @@ -53,7 +53,7 @@ class YourSpaceApplication : super.onCreate() Timber.plant(Timber.DebugTree()) - FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = false + FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = true ProcessLifecycleOwner.get().lifecycle.addObserver(this) authService.addListener(this) setNotificationChannel() diff --git a/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt b/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt index 52ea0252..437d29a5 100644 --- a/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt +++ b/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt @@ -1,7 +1,10 @@ package com.canopas.yourspace.data.di import android.content.Context +import androidx.room.Room import com.canopas.yourspace.data.models.user.ApiUserSession +import com.canopas.yourspace.data.storage.database.AppDatabase +import com.canopas.yourspace.data.storage.database.SenderKeyDao import com.canopas.yourspace.data.utils.Config import com.google.android.gms.location.GeofencingClient import com.google.android.gms.location.LocationServices @@ -18,8 +21,11 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.components.SingletonComponent +import javax.inject.Named import javax.inject.Singleton +private const val DATABASE_NAME = "sender_keys_db" + @Module @InstallIn(SingletonComponent::class) class AppDataProvider { @@ -54,5 +60,22 @@ class AppDataProvider { @Provides @Singleton - fun provideAppContext(@ApplicationContext context: Context): Context = context + fun provideAppDatabase( + @ApplicationContext appContext: Context + ): AppDatabase { + return Room.databaseBuilder( + appContext, + AppDatabase::class.java, + DATABASE_NAME + ) + .fallbackToDestructiveMigration() + .build() + } + + @Provides + @Singleton + @Named("sender_key_dao") + fun provideSenderKeyDao(appDatabase: AppDatabase): SenderKeyDao { + return appDatabase.senderKeyDao() + } } diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index 21080ec8..98666176 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -52,8 +52,9 @@ data class ApiSpaceInvitation( * Data class that represents the entire "groupKeys/{senderUserId}" doc * in Firestore for a single sender's key distribution. */ -data class SenderKeyDistributionDoc( +data class SenderKeyDistribution( val senderId: String = "", + val senderDeviceId: Int = 0, val distributions: List = emptyList(), val createdAt: Long = 0 ) @@ -64,15 +65,8 @@ data class SenderKeyDistributionDoc( * encrypted with the recipient's public key. */ data class EncryptedDistribution( - val recipientId: String, - val deviceId: Blob, - val ciphertext: Blob -) { - fun toMap(): Map { - return mapOf( - "recipientId" to recipientId, - "deviceId" to deviceId, - "ciphertext" to ciphertext - ) - } -} + val recipientId: String = "", + val ephemeralPub: Blob = Blob.fromBytes(ByteArray(0)), // 32 bytes + val iv: Blob = Blob.fromBytes(ByteArray(0)), // 12 bytes + val ciphertext: Blob = Blob.fromBytes(ByteArray(0)) // AES/GCM ciphertext +) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 5b49cdcc..d22e25b3 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -2,7 +2,9 @@ package com.canopas.yourspace.data.service.location import com.canopas.yourspace.data.models.location.ApiLocation import com.canopas.yourspace.data.models.location.EncryptedApiLocation +import com.canopas.yourspace.data.models.space.SenderKeyDistribution import com.canopas.yourspace.data.storage.UserPreferences +import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS @@ -15,10 +17,9 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.tasks.await import org.signal.libsignal.protocol.SignalProtocolAddress -import org.signal.libsignal.protocol.ecc.ECPrivateKey +import org.signal.libsignal.protocol.ecc.Curve import org.signal.libsignal.protocol.groups.GroupCipher import org.signal.libsignal.protocol.groups.GroupSessionBuilder -import org.signal.libsignal.protocol.groups.state.InMemorySenderKeyStore import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage import timber.log.Timber import javax.inject.Inject @@ -28,7 +29,8 @@ import javax.inject.Singleton class ApiLocationService @Inject constructor( db: FirebaseFirestore, private val locationManager: LocationManager, - private val userPreferences: UserPreferences + private val userPreferences: UserPreferences, + private val bufferedSenderKeyStore: BufferedSenderKeyStore ) { var currentSpaceId: String = userPreferences.currentSpace ?: "" @@ -56,6 +58,7 @@ class ApiLocationService @Inject constructor( val cipherAndDistributionMessage = getGroupCipherAndDistributionMessage(spaceId, userId) val groupCipher = cipherAndDistributionMessage?.second ?: return val distributionMessage = cipherAndDistributionMessage.first + Timber.e("XXXXXX: Distribution id: ${distributionMessage.distributionId}") val lat = groupCipher.encrypt( distributionMessage.distributionId, lastLocation.latitude.toString().toByteArray(Charsets.UTF_8) @@ -86,10 +89,8 @@ class ApiLocationService @Inject constructor( longitude: Double, recordedAt: Long ) { - Timber.e("Saving current location for user $userId") userPreferences.currentUser?.space_ids?.forEach { spaceId -> val cipherAndDistributionMessage = getGroupCipherAndDistributionMessage(spaceId, userId) - Timber.e("Cipher and distribution message: $cipherAndDistributionMessage") val groupCipher = cipherAndDistributionMessage?.second ?: return val distributionMessage = cipherAndDistributionMessage.first val lat = groupCipher.encrypt( @@ -101,8 +102,6 @@ class ApiLocationService @Inject constructor( longitude.toString().toByteArray(Charsets.UTF_8) ) - Timber.d("Current location: $latitude, $longitude\nLat: $lat\nLon: $lon") - val docRef = spaceMemberLocationRef(spaceId, userId).document() val location = EncryptedApiLocation( @@ -129,18 +128,17 @@ class ApiLocationService @Inject constructor( val receiverGroupCipher = getGroupCipherAndDistributionMessage(currentSpaceId, userId)?.second ?: return@map null - Timber.e("Receiver group cipher: $receiverGroupCipher") val lat = receiverGroupCipher.decrypt(encryptedLocation.encrypted_latitude.toBytes()) val lon = receiverGroupCipher.decrypt(encryptedLocation.encrypted_longitude.toBytes()) - Timber.d("Decrypted location: $lat, $lon") - ApiLocation( + id = encryptedLocation.id, user_id = userId, latitude = lat.toString(Charsets.UTF_8).toDouble(), - longitude = lon.toString(Charsets.UTF_8).toDouble() + longitude = lon.toString(Charsets.UTF_8).toDouble(), + created_at = encryptedLocation.created_at ) } emit(apiLocations) @@ -156,34 +154,24 @@ class ApiLocationService @Inject constructor( userId: String ): Pair? { val currentUser = userPreferences.currentUser ?: return null - Timber.e("Getting group cipher for space $spaceId\tUser: $userId") - val sharedDistributionMessage = spaceGroupKeysRef(spaceId) - .document(userId).get().await() - val distributions = - sharedDistributionMessage["distributions"] as? List> ?: emptyList() - val currentUserDistribution = - distributions.firstOrNull { it["recipientId"] == currentUser.id } ?: return null - val currentUserCiphertext = - (currentUserDistribution["ciphertext"] as? Blob)?.toBytes() ?: ByteArray(0) - val deviceIdBytes = - (currentUserDistribution["deviceId"] as? Blob)?.toBytes() ?: ByteArray(0) - val currentUserPrivateKey = - ECPrivateKey(currentUser.identity_key_private?.toBytes() ?: ByteArray(0)) - val distributionBytes = - EphemeralECDHUtils.decrypt(currentUserCiphertext, currentUserPrivateKey) - val deviceId = EphemeralECDHUtils.decrypt(deviceIdBytes, currentUserPrivateKey) - val distributionMessage = SenderKeyDistributionMessage(distributionBytes) - val receiverKeyStore = InMemorySenderKeyStore() + val senderKeyDistribution = spaceGroupKeysRef(spaceId) + .document(userId).get().await().toObject(SenderKeyDistribution::class.java) + val distributions = senderKeyDistribution?.distributions ?: return null + val currentUserDistribution = distributions.firstOrNull { it.recipientId == currentUser.id } + ?: return null + val currentUserPrivateKey = Curve.decodePrivatePoint(currentUser.identity_key_private?.toBytes()) + + val decryptedDistribution = + EphemeralECDHUtils.decrypt(currentUserDistribution, currentUserPrivateKey) + + val distributionMessage = SenderKeyDistributionMessage(decryptedDistribution) val senderAddress = SignalProtocolAddress( spaceId, - deviceId.toString(Charsets.UTF_8).toInt() + senderKeyDistribution.senderDeviceId ) - val sessionBuilder = GroupSessionBuilder(receiverKeyStore) - val receiverGroupCipher = GroupCipher(receiverKeyStore, senderAddress) + val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) + val receiverGroupCipher = GroupCipher(bufferedSenderKeyStore, senderAddress) sessionBuilder.process(senderAddress, distributionMessage) - Timber.e("Group cipher created for space $spaceId") - // Log everything created here - Timber.e("Distribution message: $distributionMessage\nGroup cipher: $receiverGroupCipher") return Pair(distributionMessage, receiverGroupCipher) } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index f49b1b94..da6655ea 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -5,17 +5,17 @@ import com.canopas.yourspace.data.models.space.ApiSpaceMember import com.canopas.yourspace.data.models.space.EncryptedDistribution import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_ADMIN import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_MEMBER -import com.canopas.yourspace.data.models.space.SenderKeyDistributionDoc +import com.canopas.yourspace.data.models.space.SenderKeyDistribution import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.service.place.ApiPlaceService import com.canopas.yourspace.data.service.user.ApiUserService import com.canopas.yourspace.data.storage.UserPreferences +import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.snapshotFlow -import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FirebaseFirestore import kotlinx.coroutines.tasks.await import org.signal.libsignal.protocol.SignalProtocolAddress @@ -33,7 +33,8 @@ class ApiSpaceService @Inject constructor( private val authService: AuthService, private val apiUserService: ApiUserService, private val placeService: ApiPlaceService, - private val userPreferences: UserPreferences + private val userPreferences: UserPreferences, + private val bufferedSenderKeyStore: BufferedSenderKeyStore ) { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) private fun spaceMemberRef(spaceId: String) = @@ -86,15 +87,14 @@ class ApiSpaceService @Inject constructor( } /** - * Create a sender key distribution for the current/joining user, and encrypt that distribution - * for each member. + * Create a sender key distribution for the current/joining user, and encrypt the distribution key + * for each member using their public key(ECDH). **/ private suspend fun distributeSenderKeyToSpaceMembers(spaceId: String, senderUserId: String) { val deviceId = userPreferences.currentUserSession?.device_id ?: "" val deviceIdInt = deviceId.hashCode() and 0x7FFFFFFF val groupAddress = SignalProtocolAddress(spaceId, deviceIdInt) - val senderKeyStore = InMemorySenderKeyStore() - val sessionBuilder = GroupSessionBuilder(senderKeyStore) + val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) val distributionMessage = sessionBuilder.create(groupAddress, UUID.fromString(spaceId)) val distributionBytes = distributionMessage.serialize() @@ -106,21 +106,14 @@ class ApiSpaceService @Inject constructor( val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) // Encrypt distribution using member's public key - val encBytes = EphemeralECDHUtils.encrypt(distributionBytes, publicKey) - val encDeviceId = EphemeralECDHUtils.encrypt(deviceIdInt.toString().toByteArray(), publicKey) - distributions.add( - EncryptedDistribution( - recipientId = member.user_id, - deviceId = Blob.fromBytes(encDeviceId), - ciphertext = Blob.fromBytes(encBytes) - ) - ) + distributions.add(EphemeralECDHUtils.encrypt(member.user_id, distributionBytes, publicKey)) } val docRef = spaceGroupKeysRef(spaceId).document(senderUserId) - val data = SenderKeyDistributionDoc( + val data = SenderKeyDistribution( senderId = senderUserId, + senderDeviceId = deviceIdInt, distributions = distributions, createdAt = System.currentTimeMillis() ) @@ -179,3 +172,7 @@ class ApiSpaceService @Inject constructor( spaceRef.document(space.id).set(space).await() } } + +fun InMemorySenderKeyStore.createSenderKeyRecord(spaceId: String, deviceId: Int): ByteArray { + return "$spaceId-$deviceId".toByteArray() +} diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index b8e525e1..84798342 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -1,6 +1,5 @@ package com.canopas.yourspace.data.service.user -import android.content.Context import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.models.user.ApiUserSession import com.canopas.yourspace.data.models.user.LOGIN_TYPE_APPLE @@ -32,8 +31,7 @@ class ApiUserService @Inject constructor( db: FirebaseFirestore, private val device: Device, private val locationService: ApiLocationService, - private val functions: FirebaseFunctions, - val context: Context + private val functions: FirebaseFunctions ) { private val userRef = db.collection(FIRESTORE_COLLECTION_USERS) private fun sessionRef(userId: String) = @@ -88,7 +86,7 @@ class ApiUserService @Inject constructor( provider_firebase_id_token = firebaseToken, profile_image = account?.photoUrl?.toString() ?: firebaseUser?.photoUrl?.toString() ?: "", - identity_key_public = Blob.fromBytes(identityKeyPair.publicKey.serialize()), + identity_key_public = Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), identity_key_private = Blob.fromBytes(identityKeyPair.privateKey.serialize()) ) userRef.document(uid).set(user).await() diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt new file mode 100644 index 00000000..9952a44a --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -0,0 +1,87 @@ +package com.canopas.yourspace.data.storage.bufferedkeystore + +import com.canopas.yourspace.data.storage.database.SenderKeyDao +import com.canopas.yourspace.data.storage.database.SenderKeyEntity +import kotlinx.coroutines.runBlocking +import org.signal.libsignal.protocol.SignalProtocolAddress +import org.signal.libsignal.protocol.groups.state.SenderKeyRecord +import java.util.UUID +import javax.inject.Inject +import javax.inject.Named +import javax.inject.Singleton + +/** + * An in-memory sender key store that is intended to be used temporarily while decrypting messages. + */ +@Singleton +class BufferedSenderKeyStore @Inject constructor( + @Named("sender_key_dao") private val senderKeyDao: SenderKeyDao +) : SignalServiceSenderKeyStore { + + private val store: MutableMap = HashMap() + + /** All of the keys that have been created or updated during operation. */ + private val updatedKeys: MutableMap = mutableMapOf() + + /** All of the distributionId's whose sharing has been cleared during operation. */ + private val clearSharedWith: MutableSet = mutableSetOf() + + override fun storeSenderKey(sender: SignalProtocolAddress, distributionId: UUID, record: SenderKeyRecord) { + val key = StoreKey(sender, distributionId) + store[key] = record + updatedKeys[key] = record + + runBlocking { + senderKeyDao.insertSenderKey( + senderKeyEntity = SenderKeyEntity( + address = sender.name, + deviceId = sender.deviceId, + distributionId = distributionId.toString(), + record = record.serialize() + ) + ) + } + } + + override fun loadSenderKey(sender: SignalProtocolAddress, distributionId: UUID): SenderKeyRecord? { + return store[StoreKey(sender, distributionId)] + ?: runBlocking { + val fromDatabase: SenderKeyRecord? = + senderKeyDao.getSenderKeyRecord( + address = sender.name, + deviceId = sender.deviceId, + distributionId = distributionId.toString() + ) + + if (fromDatabase != null) { + store[StoreKey(sender, distributionId)] = fromDatabase + } + + fromDatabase + } + } + + override fun getSenderKeySharedWith(distributionId: DistributionId?): MutableSet { + error("Should not happen during the intended usage pattern of this class") + } + + override fun markSenderKeySharedWith( + distributionId: DistributionId?, + addresses: Collection? + ) { + error("Should not happen during the intended usage pattern of this class") + } + + override fun clearSenderKeySharedWith(addresses: Collection?) { + addresses?.forEach { address -> + address?.let { clearSharedWith.add(it) } + } + } + + private fun UUID.toDistributionId() = DistributionId.from(this) + + data class StoreKey( + val address: SignalProtocolAddress, + val distributionId: UUID + ) +} diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/DistributionId.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/DistributionId.kt new file mode 100644 index 00000000..98547e40 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/DistributionId.kt @@ -0,0 +1,61 @@ +package com.canopas.yourspace.data.storage.bufferedkeystore + +import java.util.Objects +import java.util.UUID + +/** + * Represents the distributionId that is used to identify this group's sender key session. + * + * This is just a UUID, but we wrap it in order to provide some type safety and limit confusion + * around the multiple UUIDs we throw around. + */ +class DistributionId private constructor(private val uuid: UUID) { + /** + * Some devices appear to have a bad UUID.toString() that misrenders an all-zero UUID as "0000-0000". + * To account for this, we will keep our own string value, to prevent queries from going awry and such. + */ + private var stringValue: String? = null + + init { + if (uuid.leastSignificantBits == 0L && uuid.mostSignificantBits == 0L) { + this.stringValue = MY_STORY_STRING + } else { + this.stringValue = uuid.toString() + } + } + + fun asUuid(): UUID { + return uuid + } + + override fun toString(): String { + return stringValue!! + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (other == null || javaClass != other.javaClass) return false + val that = other as DistributionId + return uuid == that.uuid + } + + override fun hashCode(): Int { + return Objects.hash(uuid) + } + + companion object { + private const val MY_STORY_STRING = "00000000-0000-0000-0000-000000000000" + + fun from(id: String?): DistributionId { + return DistributionId(UUID.fromString(id)) + } + + fun from(uuid: UUID): DistributionId { + return DistributionId(uuid) + } + + fun create(): DistributionId { + return DistributionId(UUID.randomUUID()) + } + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt new file mode 100644 index 00000000..0ec2bc41 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt @@ -0,0 +1,28 @@ +package com.canopas.yourspace.data.storage.bufferedkeystore + +import org.signal.libsignal.protocol.SignalProtocolAddress +import org.signal.libsignal.protocol.groups.state.SenderKeyStore + +/** + * And extension of the normal protocol sender key store interface that has additional methods that are + * needed in the service layer, but not the protocol layer. + */ +interface SignalServiceSenderKeyStore : SenderKeyStore { + /** + * @return A set of protocol addresses that have previously been sent the sender key data for the provided distributionId. + */ + fun getSenderKeySharedWith(distributionId: DistributionId?): Set? + + /** + * Marks the provided addresses as having been sent the sender key data for the provided distributionId. + */ + fun markSenderKeySharedWith( + distributionId: DistributionId?, + addresses: Collection? + ) + + /** + * Marks the provided addresses as not knowing about any distributionIds. + */ + fun clearSenderKeySharedWith(addresses: Collection?) +} diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/database/AppDatabase.kt b/data/src/main/java/com/canopas/yourspace/data/storage/database/AppDatabase.kt new file mode 100644 index 00000000..66aa1313 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/storage/database/AppDatabase.kt @@ -0,0 +1,13 @@ +package com.canopas.yourspace.data.storage.database + +import androidx.room.Database +import androidx.room.RoomDatabase + +@Database( + entities = [SenderKeyEntity::class], + version = 1, + exportSchema = true +) +abstract class AppDatabase : RoomDatabase() { + abstract fun senderKeyDao(): SenderKeyDao +} diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt new file mode 100644 index 00000000..3fa856a2 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt @@ -0,0 +1,65 @@ +package com.canopas.yourspace.data.storage.database + +import androidx.room.Dao +import androidx.room.Insert +import androidx.room.OnConflictStrategy +import androidx.room.Query +import org.signal.libsignal.protocol.groups.state.SenderKeyRecord + +@Dao +interface SenderKeyDao { + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertSenderKey(senderKeyEntity: SenderKeyEntity) + + @Query( + """ + SELECT * FROM sender_keys + WHERE address = :address + AND device_id = :deviceId + AND distribution_id = :distributionId + LIMIT 1 + """ + ) + suspend fun getSenderKey( + address: String, + deviceId: Int, + distributionId: String + ): SenderKeyEntity? + + suspend fun getSenderKeyRecord( + address: String, + deviceId: Int, + distributionId: String + ): SenderKeyRecord? { + val entity = getSenderKey(address, deviceId, distributionId) + return entity?.let { + try { + SenderKeyRecord(it.record) + } catch (e: Exception) { + null + } + } + } + + @Query( + """ + DELETE FROM sender_keys + WHERE address = :address + AND device_id = :deviceId + AND distribution_id = :distributionId + """ + ) + suspend fun deleteSenderKey( + address: String, + deviceId: Int, + distributionId: String + ) + + @Query( + """ + SELECT * FROM sender_keys + """ + ) + suspend fun getAllSenderKeys(): List +} diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyEntity.kt b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyEntity.kt new file mode 100644 index 00000000..ca21e7af --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyEntity.kt @@ -0,0 +1,41 @@ +package com.canopas.yourspace.data.storage.database + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "sender_keys") +data class SenderKeyEntity( + @PrimaryKey(autoGenerate = true) val id: Long = 0, + @ColumnInfo(name = "address") val address: String, + @ColumnInfo(name = "device_id") val deviceId: Int, + @ColumnInfo(name = "distribution_id") val distributionId: String, + @ColumnInfo(name = "record") val record: ByteArray, + @ColumnInfo(name = "created_at") val createdAt: Long = System.currentTimeMillis() +) { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as SenderKeyEntity + + if (id != other.id) return false + if (address != other.address) return false + if (deviceId != other.deviceId) return false + if (distributionId != other.distributionId) return false + if (!record.contentEquals(other.record)) return false + if (createdAt != other.createdAt) return false + + return true + } + + override fun hashCode(): Int { + var result = id.hashCode() + result = 31 * result + address.hashCode() + result = 31 * result + deviceId + result = 31 * result + distributionId.hashCode() + result = 31 * result + record.contentHashCode() + result = 31 * result + createdAt.hashCode() + return result + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/EncryptionUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/EncryptionUtils.kt deleted file mode 100644 index 895448c5..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/utils/EncryptionUtils.kt +++ /dev/null @@ -1,251 +0,0 @@ -package com.canopas.yourspace.data.utils - -import org.bouncycastle.crypto.InvalidCipherTextException -import org.bouncycastle.jce.provider.BouncyCastleProvider -import org.signal.libsignal.protocol.ecc.Curve -import org.signal.libsignal.protocol.ecc.ECPrivateKey -import org.signal.libsignal.protocol.ecc.ECPublicKey -import org.signal.libsignal.protocol.kdf.HKDF -import timber.log.Timber -import java.nio.ByteBuffer -import java.security.PrivateKey -import java.security.PublicKey -import java.security.SecureRandom -import java.security.Security -import javax.crypto.Cipher -import javax.crypto.spec.GCMParameterSpec -import javax.crypto.spec.SecretKeySpec - -object EncryptionUtils { - - init { - Security.addProvider(BouncyCastleProvider()) - } - - fun encryptWithPublicKey(publicKey: ByteArray, data: ByteArray): ByteArray { - val keyFactory = java.security.KeyFactory.getInstance("RSA", "BC") - val publicKeySpec = java.security.spec.X509EncodedKeySpec(publicKey) - val publicKeyObj: PublicKey = keyFactory.generatePublic(publicKeySpec) - - val cipher = try { - Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", "BC") - } catch (e: Exception) { - throw RuntimeException("Failed to initialize cipher", e) - } - - cipher.init(Cipher.ENCRYPT_MODE, publicKeyObj) - - return cipher.doFinal(data) - } - - fun decryptWithPrivateKey(privateKey: ByteArray, encryptedData: ByteArray): ByteArray { - val keyFactory = java.security.KeyFactory.getInstance("RSA", "BC") - val privateKeySpec = java.security.spec.PKCS8EncodedKeySpec(privateKey) - val privateKeyObj: PrivateKey = keyFactory.generatePrivate(privateKeySpec) - - val cipher = try { - Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding", "BC") - } catch (e: Exception) { - throw RuntimeException("Failed to initialize cipher", e) - } - - cipher.init(Cipher.DECRYPT_MODE, privateKeyObj) - - return cipher.doFinal(encryptedData) - } -} - -/** - * A production-ready example of ephemeral ECDH encryption ("ECIES") with: - * - Curve25519 for ECDH, - * - HKDF for key derivation, - * - AES/GCM for authenticated encryption. - * - * Data layout = [ ephemeralPub(32|33 bytes) || iv(12 bytes) || ciphertext+authTag(...) ]. - */ -object CryptoUtils { - - private const val KEY_LENGTH_BYTES = 32 // 256-bit AES key - private const val IV_LENGTH_BYTES = 12 // 96-bit GCM IV - private const val GCM_TAG_BITS = 128 - - private val secureRandom = SecureRandom() - - /** - * Encrypts [plaintext] for [recipientPub] using ephemeral ECDH -> HKDF -> AES/GCM. - * Returns a byte array containing: - * ephemeralPub + iv + AES-GCM ciphertext (which includes auth tag). - */ - fun encryptForPublicKey(plaintext: ByteArray, recipientPub: ECPublicKey): ByteArray { - // 1) Generate ephemeral key pair - val ephemeralPair = Curve.generateKeyPair() // Curve25519 - val ephemeralPubBytes = ephemeralPair.publicKey.serialize() // 32 or 33 bytes - - // 2) Compute ECDH shared secret - val sharedSecret = Curve.calculateAgreement(recipientPub, ephemeralPair.privateKey) - // 3) Derive AES key with HKDF - val derivedAesKey = hkdfDeriveKey(sharedSecret, "ECDH-Encryption") - - // 4) AES/GCM encrypt - val iv = ByteArray(IV_LENGTH_BYTES).also { secureRandom.nextBytes(it) } - val cipher = Cipher.getInstance("AES/GCM/NoPadding") - cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(derivedAesKey, "AES"), GCMParameterSpec(GCM_TAG_BITS, iv)) - val cipherText = cipher.doFinal(plaintext) - - // 5) Build final output: ephemeralPub + iv + ciphertext - return ByteBuffer.allocate(ephemeralPubBytes.size + iv.size + cipherText.size) - .put(ephemeralPubBytes) - .put(iv) - .put(cipherText) - .array() - } - - /** - * Decrypts [ciphertext] with our Curve25519 [myPrivate] key. - * Expects the layout: ephemeralPub(32|33) + iv(12) + actualCiphertext. - */ - fun decryptWithPrivateKey(ciphertext: ByteArray, myPrivate: ECPrivateKey): ByteArray { - // 1) Parse ephemeralPub from the front - // Typically 32 bytes for Curve25519. Some libs produce 33. Check your library's format. - val ephemeralPubSize = getEphemeralPubLength(ciphertext) - val ephemeralPubBytes = ciphertext.sliceArray(0 until ephemeralPubSize) - val ephemeralPub = Curve.decodePoint(ephemeralPubBytes, 0) as ECPublicKey - - // 2) Next 12 bytes = IV - val ivStart = ephemeralPubSize - val ivEnd = ivStart + IV_LENGTH_BYTES - val iv = ciphertext.sliceArray(ivStart until ivEnd) - - // 3) The rest is the GCM ciphertext+authTag - val actualCipherBytes = ciphertext.sliceArray(ivEnd until ciphertext.size) - - // 4) ECDH - val sharedSecret = Curve.calculateAgreement(ephemeralPub, myPrivate) - val derivedAesKey = hkdfDeriveKey(sharedSecret, "ECDH-Encryption") - - // 5) AES/GCM decrypt - val cipher = Cipher.getInstance("AES/GCM/NoPadding") - cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec(derivedAesKey, "AES"), GCMParameterSpec(GCM_TAG_BITS, iv)) - return cipher.doFinal(actualCipherBytes) - } - - /** - * Derive a 32-byte key from [sharedSecret] + optional [info] using HKDF (SHA-256). - */ - private fun hkdfDeriveKey(sharedSecret: ByteArray, info: String): ByteArray { - // salt = null => effectively empty - // We use HKDFv3 from libsignal-protocol - return HKDF.deriveSecrets( - sharedSecret, - ByteArray(0), // no salt - info.toByteArray(), // info context - KEY_LENGTH_BYTES // 32-byte key - ) - } - - /** - * Attempt to detect ephemeralPub length. Typically 32 for Curve25519. - * If your ephemeral keys might be 33, adjust logic as needed. - */ - private fun getEphemeralPubLength(ciphertext: ByteArray): Int { - if (ciphertext.size < 32 + 12) { - throw InvalidCipherTextException("Ciphertext too short to contain ephemeralPub + IV") - } - return 32 - } -} - -/** - * Demonstrates ephemeral ECDH encryption ("ECIES") with ephemeral Curve25519 keys - * for **each message**, providing forward secrecy in a simplified manner. - * - * Layout of the resulting ciphertext: - * [ ephemeralPub(32 bytes) || iv(12 bytes) || AES/GCM ciphertext+tag(...) ]. - * - * 1) For each message: - * - Generate ephemeral key pair (sender). - * - ECDH with recipient’s long-term public key => sharedSecret. - * - HKDF => AES key. - * - AES/GCM => final ciphertext. - * 2) Recipient uses ephemeralPub + their private key to derive the same AES key. - */ -object EphemeralECDHUtils { - - private const val AES_KEY_SIZE = 32 // 256-bit AES key - private const val IV_SIZE = 12 // 96-bit GCM IV - private const val GCM_TAG_BITS = 128 - private val secureRandom = SecureRandom() - - /** - * Encrypt [plaintext] using ephemeral Curve25519 for each message. - * [recipientPub] is the recipient's **long-term** public key. - */ - fun encrypt(plaintext: ByteArray, recipientPub: ECPublicKey): ByteArray { - // 1) Generate ephemeral key pair - val ephemeralPair = Curve.generateKeyPair() // ephemeral keys - val ephemeralPubBytes = ephemeralPair.publicKey.serialize() // 32 bytes - - // 2) ECDH => shared secret - val sharedSecret = Curve.calculateAgreement(recipientPub, ephemeralPair.privateKey) - - // 3) HKDF => 256-bit AES key - val aesKey = deriveAesKey(sharedSecret, "Ephemeral-FS") - - // 4) AES/GCM encrypt - val iv = ByteArray(IV_SIZE).also { secureRandom.nextBytes(it) } - val cipher = Cipher.getInstance("AES/GCM/NoPadding") - cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(aesKey, "AES"), GCMParameterSpec(GCM_TAG_BITS, iv)) - val ciphertext = cipher.doFinal(plaintext) - - // 5) Combine ephemeralPub + iv + ciphertext - return ByteBuffer.allocate(ephemeralPubBytes.size + iv.size + ciphertext.size) - .put(ephemeralPubBytes) - .put(iv) - .put(ciphertext) - .array() - } - - /** - * Decrypt using recipient's **private** key + ephemeral pub from the ciphertext. - */ - fun decrypt(ciphertext: ByteArray, recipientPrivate: ECPrivateKey): ByteArray { - if (ciphertext.size < 32 + IV_SIZE) { - throw IllegalArgumentException("Ciphertext too small. Expected at least 44 bytes.") - } - - Timber.e("Decrypting ciphertext of size: ${ciphertext.size}") - // 1) Extract ephemeralPub(32 bytes) from the front - val ephemeralPubBytes = ciphertext.sliceArray(0 until 32) - val ephemeralPub = Curve.decodePoint(ephemeralPubBytes, 0) - - // 2) Next 12 bytes => IV - val ivStart = 32 - val ivEnd = ivStart + IV_SIZE - val iv = ciphertext.sliceArray(ivStart until ivEnd) - - // 3) Remainder => GCM ciphertext - val actualCipher = ciphertext.sliceArray(ivEnd until ciphertext.size) - - // 4) ECDH => sharedSecret - val sharedSecret = Curve.calculateAgreement(ephemeralPub, recipientPrivate) - - // 5) HKDF => AES key - val aesKey = deriveAesKey(sharedSecret, "Ephemeral-FS") - - // 6) AES/GCM decrypt - val cipher = Cipher.getInstance("AES/GCM/NoPadding") - cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec(aesKey, "AES"), GCMParameterSpec(GCM_TAG_BITS, iv)) - return cipher.doFinal(actualCipher) - } - - private fun deriveAesKey(sharedSecret: ByteArray, info: String): ByteArray { - // Use org.signal.libsignal.protocol.kdf.HKDF (SHA-256 based) - // No salt => pass ByteArray(0) - return HKDF.deriveSecrets( - sharedSecret, - ByteArray(0), - info.toByteArray(), - AES_KEY_SIZE - ) - } -} diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt new file mode 100644 index 00000000..32ff02be --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt @@ -0,0 +1,144 @@ +package com.canopas.yourspace.data.utils + +import com.canopas.yourspace.data.models.space.EncryptedDistribution +import com.google.firebase.firestore.Blob +import org.signal.libsignal.protocol.InvalidKeyException +import org.signal.libsignal.protocol.ecc.Curve +import org.signal.libsignal.protocol.ecc.ECKeyPair +import org.signal.libsignal.protocol.ecc.ECPrivateKey +import org.signal.libsignal.protocol.ecc.ECPublicKey +import org.signal.libsignal.protocol.util.ByteUtil +import timber.log.Timber +import java.nio.charset.Charset +import java.security.GeneralSecurityException +import java.security.MessageDigest +import javax.crypto.Cipher +import javax.crypto.Mac +import javax.crypto.spec.IvParameterSpec +import javax.crypto.spec.SecretKeySpec + +/** + * Utility class for encryption and decryption using Ephemeral Elliptic Curve Diffie-Hellman (ECDH) mechanism. + * This class provides methods to encrypt and decrypt data securely using a recipient's public key + * and an ephemeral key pair. + */ +object EphemeralECDHUtils { + + private const val SYNTHETIC_IV_LENGTH = 16 // Length of the synthetic initialization vector (IV). + + /** + * Encrypts the provided plaintext for a specific recipient using their public key. + * + * @param receiverId The unique identifier of the receiver. + * @param plaintext The data to be encrypted as a byte array. + * @param receiverPub The receiver's public key. + * @return EncryptedDistribution The encrypted data and associated metadata. + */ + fun encrypt( + receiverId: String, + plaintext: ByteArray, + receiverPub: ECPublicKey + ): EncryptedDistribution { + val ephemeralKeyPair: ECKeyPair = Curve.generateKeyPair() + val masterSecret: ByteArray = Curve.calculateAgreement(receiverPub, ephemeralKeyPair.privateKey) + val syntheticIv: ByteArray = computeSyntheticIv(masterSecret, plaintext) + val cipherKey: ByteArray = computeCipherKey(masterSecret, syntheticIv) + + val cipher = Cipher.getInstance("AES/CTR/NoPadding") + cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(cipherKey, "AES"), IvParameterSpec(ByteArray(16))) + val cipherText = cipher.doFinal(plaintext) + + return EncryptedDistribution( + recipientId = receiverId, + ephemeralPub = Blob.fromBytes(ephemeralKeyPair.publicKey.serialize()), + iv = Blob.fromBytes(syntheticIv), + ciphertext = Blob.fromBytes(cipherText) + ) + } + + /** + * Decrypts an encrypted message using the recipient's private key. + * + * @param message The encrypted distribution containing ciphertext and metadata. + * @param receiverPrivateKey The receiver's private key. + * @return ByteArray? The decrypted plaintext or null if decryption fails. + */ + fun decrypt( + message: EncryptedDistribution, + receiverPrivateKey: ECPrivateKey + ): ByteArray? { + return try { + val syntheticIv = message.iv.toBytes() + val cipherText = message.ciphertext.toBytes() + val ephemeralPublic = Curve.decodePoint(message.ephemeralPub.toBytes(), 0) + val masterSecret = Curve.calculateAgreement(ephemeralPublic, receiverPrivateKey) + + val mac = Mac.getInstance("HmacSHA256") + mac.init(SecretKeySpec(masterSecret, "HmacSHA256")) + val cipherKeyPart1 = mac.doFinal("cipher".toByteArray()) + + mac.init(SecretKeySpec(cipherKeyPart1, "HmacSHA256")) + val cipherKey = mac.doFinal(syntheticIv) + + val cipher = Cipher.getInstance("AES/CTR/NoPadding") + cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec(cipherKey, "AES"), IvParameterSpec(ByteArray(16))) + val plaintext = cipher.doFinal(cipherText) + + mac.init(SecretKeySpec(masterSecret, "HmacSHA256")) + val verificationPart1 = mac.doFinal("auth".toByteArray()) + + mac.init(SecretKeySpec(verificationPart1, "HmacSHA256")) + val verificationPart2 = mac.doFinal(plaintext) + val ourSyntheticIv = ByteUtil.trim(verificationPart2, 16) + + if (!MessageDigest.isEqual(ourSyntheticIv, syntheticIv)) { + throw GeneralSecurityException("The computed syntheticIv didn't match the actual syntheticIv.") + } + plaintext + } catch (e: GeneralSecurityException) { + Timber.e(e, "Error while decrypting EphemeralCipherMessage") + null + } catch (e: InvalidKeyException) { + Timber.e(e, "Error while decrypting EphemeralCipherMessage") + null + } + } + + /** + * Computes a synthetic IV using the master secret and plaintext. + * + * @param masterSecret The shared master secret. + * @param plaintext The plaintext data. + * @return ByteArray The computed synthetic IV. + */ + private fun computeSyntheticIv(masterSecret: ByteArray, plaintext: ByteArray): ByteArray { + val input = "auth".toByteArray(Charset.forName("UTF-8")) + + val keyMac = Mac.getInstance("HmacSHA256") + keyMac.init(SecretKeySpec(masterSecret, "HmacSHA256")) + val syntheticIvKey: ByteArray = keyMac.doFinal(input) + + val ivMac = Mac.getInstance("HmacSHA256") + ivMac.init(SecretKeySpec(syntheticIvKey, "HmacSHA256")) + return ivMac.doFinal(plaintext).sliceArray(0 until SYNTHETIC_IV_LENGTH) + } + + /** + * Computes the cipher key using the master secret and synthetic IV. + * + * @param masterSecret The shared master secret. + * @param syntheticIv The synthetic IV. + * @return ByteArray The computed cipher key. + */ + private fun computeCipherKey(masterSecret: ByteArray, syntheticIv: ByteArray): ByteArray { + val input = "cipher".toByteArray(Charset.forName("UTF-8")) + + val keyMac = Mac.getInstance("HmacSHA256") + keyMac.init(SecretKeySpec(masterSecret, "HmacSHA256")) + val cipherKeyKey: ByteArray = keyMac.doFinal(input) + + val cipherMac = Mac.getInstance("HmacSHA256") + cipherMac.init(SecretKeySpec(cipherKeyKey, "HmacSHA256")) + return cipherMac.doFinal(syntheticIv) + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt b/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt index ca3ab30f..f5ef5fbf 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt @@ -6,6 +6,7 @@ import org.signal.libsignal.protocol.ecc.Curve import org.signal.libsignal.protocol.state.PreKeyRecord import org.signal.libsignal.protocol.state.SignedPreKeyRecord import org.signal.libsignal.protocol.util.KeyHelper +import org.signal.libsignal.zkgroup.profiles.ProfileKey import java.security.SecureRandom private const val INTEGER_MAX = 0x7fffffff @@ -17,6 +18,10 @@ object KeyHelper { return IdentityKeyPair(publicKey, keyPair.privateKey) } + fun getProfileKey(): ProfileKey { + return ProfileKey(SecureRandom().generateSeed(32)) + } + fun generateRegistrationId(extendedRange: Boolean): Int { return KeyHelper.generateRegistrationId(extendedRange) } From fc755edada72fb689bb6672282a4c27b5df56251 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Fri, 27 Dec 2024 16:00:11 +0530 Subject: [PATCH 07/39] WIP - profile key can be removed --- .../yourspace/data/models/space/ApiSpace.kt | 1 + .../yourspace/data/models/user/ApiUser.kt | 3 +- .../service/location/ApiLocationService.kt | 71 +++++++++++++++++-- .../data/service/user/ApiUserService.kt | 4 +- 4 files changed, 72 insertions(+), 7 deletions(-) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index 98666176..a525618a 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -25,6 +25,7 @@ data class ApiSpaceMember( val role: Int = SPACE_MEMBER_ROLE_MEMBER, val location_enabled: Boolean = true, val identity_key_public: Blob? = Blob.fromBytes(ByteArray(0)), + val profile_key: Blob? = Blob.fromBytes(ByteArray(0)), val created_at: Long? = System.currentTimeMillis() ) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt index 9a617d4b..2cac86ba 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt @@ -27,7 +27,8 @@ data class ApiUser( val created_at: Long? = System.currentTimeMillis(), val updated_at: Long? = System.currentTimeMillis(), val identity_key_public: Blob? = Blob.fromBytes(ByteArray(0)), - val identity_key_private: Blob? = Blob.fromBytes(ByteArray(0)) + val identity_key_private: Blob? = Blob.fromBytes(ByteArray(0)), + val profile_key: Blob? = null, ) { @get:Exclude val fullName: String get() = "$first_name $last_name" diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index d22e25b3..b243b980 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -2,6 +2,8 @@ package com.canopas.yourspace.data.service.location import com.canopas.yourspace.data.models.location.ApiLocation import com.canopas.yourspace.data.models.location.EncryptedApiLocation +import com.canopas.yourspace.data.models.space.ApiSpaceMember +import com.canopas.yourspace.data.models.space.EncryptedDistribution import com.canopas.yourspace.data.models.space.SenderKeyDistribution import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore @@ -22,6 +24,7 @@ import org.signal.libsignal.protocol.groups.GroupCipher import org.signal.libsignal.protocol.groups.GroupSessionBuilder import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage import timber.log.Timber +import java.util.UUID import javax.inject.Inject import javax.inject.Singleton @@ -55,7 +58,8 @@ class ApiLocationService @Inject constructor( ) { val lastLocation = locationManager.getLastLocation() ?: return userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val cipherAndDistributionMessage = getGroupCipherAndDistributionMessage(spaceId, userId) + val cipherAndDistributionMessage = + getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = true) val groupCipher = cipherAndDistributionMessage?.second ?: return val distributionMessage = cipherAndDistributionMessage.first Timber.e("XXXXXX: Distribution id: ${distributionMessage.distributionId}") @@ -90,7 +94,8 @@ class ApiLocationService @Inject constructor( recordedAt: Long ) { userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val cipherAndDistributionMessage = getGroupCipherAndDistributionMessage(spaceId, userId) + val cipherAndDistributionMessage = + getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = true) val groupCipher = cipherAndDistributionMessage?.second ?: return val distributionMessage = cipherAndDistributionMessage.first val lat = groupCipher.encrypt( @@ -151,15 +156,36 @@ class ApiLocationService @Inject constructor( private suspend fun getGroupCipherAndDistributionMessage( spaceId: String, - userId: String + userId: String, + canDistributeSenderKey: Boolean = false ): Pair? { val currentUser = userPreferences.currentUser ?: return null val senderKeyDistribution = spaceGroupKeysRef(spaceId) .document(userId).get().await().toObject(SenderKeyDistribution::class.java) + val distributions = senderKeyDistribution?.distributions ?: return null val currentUserDistribution = distributions.firstOrNull { it.recipientId == currentUser.id } - ?: return null - val currentUserPrivateKey = Curve.decodePrivatePoint(currentUser.identity_key_private?.toBytes()) + if (currentUserDistribution == null && canDistributeSenderKey) { + Timber.e( + "Sender key distribution not found for $userId in space $spaceId.\n+" + + "Can be a new member. Distributing sender key to new member..." + ) + distributeSenderKeyToNewMember( + spaceId, + currentUser.id, + ApiSpaceMember( + user_id = userId, + space_id = spaceId, + identity_key_public = currentUser.identity_key_public + ) + ) + getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = false) + } + if (currentUserDistribution == null) { + return null + } + val currentUserPrivateKey = + Curve.decodePrivatePoint(currentUser.identity_key_private?.toBytes()) val decryptedDistribution = EphemeralECDHUtils.decrypt(currentUserDistribution, currentUserPrivateKey) @@ -174,4 +200,39 @@ class ApiLocationService @Inject constructor( sessionBuilder.process(senderAddress, distributionMessage) return Pair(distributionMessage, receiverGroupCipher) } + + private suspend fun distributeSenderKeyToNewMember( + spaceId: String, + senderUserId: String, + newMember: ApiSpaceMember + ) { + val deviceId = userPreferences.currentUserSession?.device_id ?: "" + val deviceIdInt = deviceId.hashCode() and 0x7FFFFFFF + val groupAddress = SignalProtocolAddress(spaceId, deviceIdInt) + val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) + val distributionMessage = sessionBuilder.create(groupAddress, UUID.fromString(spaceId)) + val distributionBytes = distributionMessage.serialize() + val distributions = mutableListOf() + val publicBlob = newMember.identity_key_public ?: return + val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) + distributions.add( + EphemeralECDHUtils.encrypt( + newMember.user_id, + distributionBytes, + publicKey + ) + ) + + val docRef = spaceGroupKeysRef(spaceId).document(senderUserId) + + val data = SenderKeyDistribution( + senderId = senderUserId, + senderDeviceId = deviceIdInt, + distributions = distributions, + createdAt = System.currentTimeMillis() + ) + + docRef.set(data).await() + Timber.d("Sender key distribution uploaded for $senderUserId in space $spaceId.") + } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 84798342..6d3d2e74 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -77,6 +77,7 @@ class ApiUserService @Inject constructor( return Triple(false, savedUser, session) } else { val identityKeyPair = KeyHelper.generateIdentityKeyPair() + val profileKey = KeyHelper.getProfileKey() val user = ApiUser( id = uid!!, email = account?.email ?: firebaseUser?.email ?: "", @@ -87,7 +88,8 @@ class ApiUserService @Inject constructor( profile_image = account?.photoUrl?.toString() ?: firebaseUser?.photoUrl?.toString() ?: "", identity_key_public = Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), - identity_key_private = Blob.fromBytes(identityKeyPair.privateKey.serialize()) + identity_key_private = Blob.fromBytes(identityKeyPair.privateKey.serialize()), + profile_key = Blob.fromBytes(profileKey.serialize()), ) userRef.document(uid).set(user).await() val sessionDocRef = sessionRef(user.id).document() From 2192f6234c440f96752a87618722651241923739 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Fri, 27 Dec 2024 16:20:30 +0530 Subject: [PATCH 08/39] WIP - lint fix --- .../java/com/canopas/yourspace/data/models/user/ApiUser.kt | 2 +- .../yourspace/data/service/location/ApiLocationService.kt | 2 +- .../canopas/yourspace/data/service/space/ApiSpaceService.kt | 3 +-- .../com/canopas/yourspace/data/service/user/ApiUserService.kt | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt index 2cac86ba..3fc791d7 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt @@ -28,7 +28,7 @@ data class ApiUser( val updated_at: Long? = System.currentTimeMillis(), val identity_key_public: Blob? = Blob.fromBytes(ByteArray(0)), val identity_key_private: Blob? = Blob.fromBytes(ByteArray(0)), - val profile_key: Blob? = null, + val profile_key: Blob? = null ) { @get:Exclude val fullName: String get() = "$first_name $last_name" diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index b243b980..606f2a7b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -168,7 +168,7 @@ class ApiLocationService @Inject constructor( if (currentUserDistribution == null && canDistributeSenderKey) { Timber.e( "Sender key distribution not found for $userId in space $spaceId.\n+" + - "Can be a new member. Distributing sender key to new member..." + "Can be a new member. Distributing sender key to new member..." ) distributeSenderKeyToNewMember( spaceId, diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index eef8e42f..d70d5946 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -18,11 +18,10 @@ import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.FirebaseFirestore import kotlinx.coroutines.tasks.await -import timber.log.Timber import org.signal.libsignal.protocol.SignalProtocolAddress import org.signal.libsignal.protocol.ecc.Curve import org.signal.libsignal.protocol.groups.GroupSessionBuilder -import org.signal.libsignal.protocol.groups.state.InMemorySenderKeyStore +import timber.log.Timber import java.util.UUID import javax.inject.Inject import javax.inject.Singleton diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 6d3d2e74..0ba35c07 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -89,7 +89,7 @@ class ApiUserService @Inject constructor( ?: "", identity_key_public = Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), identity_key_private = Blob.fromBytes(identityKeyPair.privateKey.serialize()), - profile_key = Blob.fromBytes(profileKey.serialize()), + profile_key = Blob.fromBytes(profileKey.serialize()) ) userRef.document(uid).set(user).await() val sessionDocRef = sessionRef(user.id).document() From 6d2e61f460c11cf5b521a7097f679af847d569df Mon Sep 17 00:00:00 2001 From: cp-megh Date: Tue, 31 Dec 2024 10:15:46 +0530 Subject: [PATCH 09/39] WIP - multidevice support --- app/build.gradle.kts | 4 + .../canopas/yourspace/YourSpaceApplication.kt | 2 +- .../com/canopas/yourspace/ui/MainActivity.kt | 8 ++ .../com/canopas/yourspace/ui/MainViewModel.kt | 11 ++ .../yourspace/ui/component/OtpTextField.kt | 2 +- .../ui/flow/auth/SignInMethodViewModel.kt | 25 ++-- .../ui/flow/onboard/OnboardViewModel.kt | 4 + .../ui/flow/pin/enterpin/EnterPinScreen.kt | 95 +++++++++++++++ .../ui/flow/pin/enterpin/EnterPinViewModel.kt | 88 ++++++++++++++ .../ui/flow/pin/setpin/SetPinScreen.kt | 95 +++++++++++++++ .../ui/flow/pin/setpin/SetPinViewModel.kt | 107 ++++++++++++++++ .../yourspace/ui/navigation/AppRoute.kt | 10 ++ .../yourspace/data/models/space/ApiSpace.kt | 1 - .../data/models/user/ApiSenderKeyRecord.kt | 17 +++ .../yourspace/data/models/user/ApiUser.kt | 2 +- .../data/service/auth/AuthService.kt | 13 ++ .../data/service/auth/FirebaseAuthService.kt | 7 -- .../service/location/ApiLocationService.kt | 54 ++++---- .../data/service/space/ApiSpaceService.kt | 15 +++ .../data/service/user/ApiUserService.kt | 76 ++++++++++-- .../yourspace/data/storage/UserPreferences.kt | 19 +++ .../BufferedSenderKeyStore.kt | 79 ++++++++---- .../canopas/yourspace/data/utils/Config.kt | 3 + .../yourspace/data/utils/PrivateKeyUtils.kt | 115 ++++++++++++++++++ 24 files changed, 771 insertions(+), 81 deletions(-) create mode 100644 app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt create mode 100644 app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt create mode 100644 app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt create mode 100644 app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/models/user/ApiSenderKeyRecord.kt create mode 100644 data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e4d18fb9..4c84d7bb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -212,5 +212,9 @@ dependencies { // Gson implementation("com.google.code.gson:gson:2.10.1") + // Signal Protocol + implementation("org.signal:libsignal-client:0.64.1") + implementation("org.signal:libsignal-android:0.64.1") + implementation(project(":data")) } diff --git a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt index b2edf095..260071a3 100644 --- a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt +++ b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt @@ -53,7 +53,7 @@ class YourSpaceApplication : super.onCreate() Timber.plant(Timber.DebugTree()) - FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = true + FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = false ProcessLifecycleOwner.get().lifecycle.addObserver(this) authService.addListener(this) setNotificationChannel() diff --git a/app/src/main/java/com/canopas/yourspace/ui/MainActivity.kt b/app/src/main/java/com/canopas/yourspace/ui/MainActivity.kt index fb6a1c13..47a17c85 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/MainActivity.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/MainActivity.kt @@ -47,6 +47,8 @@ import com.canopas.yourspace.ui.flow.messages.chat.MessagesScreen import com.canopas.yourspace.ui.flow.messages.thread.ThreadsScreen import com.canopas.yourspace.ui.flow.onboard.OnboardScreen import com.canopas.yourspace.ui.flow.permission.EnablePermissionsScreen +import com.canopas.yourspace.ui.flow.pin.enterpin.EnterPinScreen +import com.canopas.yourspace.ui.flow.pin.setpin.SetPinScreen import com.canopas.yourspace.ui.flow.settings.SettingsScreen import com.canopas.yourspace.ui.flow.settings.profile.EditProfileScreen import com.canopas.yourspace.ui.flow.settings.space.SpaceProfileScreen @@ -124,6 +126,12 @@ fun MainApp(viewModel: MainViewModel) { slideComposable(AppDestinations.signIn.path) { SignInMethodsScreen() } + slideComposable(AppDestinations.setPin.path) { + SetPinScreen() + } + slideComposable(AppDestinations.enterPin.path) { + EnterPinScreen() + } slideComposable(AppDestinations.home.path) { navController.currentBackStackEntry diff --git a/app/src/main/java/com/canopas/yourspace/ui/MainViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/MainViewModel.kt index 022d55e3..28c866dc 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/MainViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/MainViewModel.kt @@ -42,9 +42,20 @@ class MainViewModel @Inject constructor( init { viewModelScope.launch { + val currentUser = authService.getUser() + val isExistingUser = currentUser != null + val showSetPinScreen = + isExistingUser && currentUser!!.identity_key_public?.toBytes() + .contentEquals(currentUser.identity_key_private?.toBytes()) + val showEnterPinScreen = + isExistingUser && currentUser!!.identity_key_public?.toBytes() + .contentEquals(currentUser.identity_key_private?.toBytes()) && userPreferences.getPasskey() + .isNullOrEmpty() val initialRoute = when { !userPreferences.isIntroShown() -> AppDestinations.intro.path userPreferences.currentUser == null -> AppDestinations.signIn.path + showSetPinScreen -> AppDestinations.setPin.path + showEnterPinScreen -> AppDestinations.enterPin.path !userPreferences.isOnboardShown() -> AppDestinations.onboard.path else -> AppDestinations.home.path } diff --git a/app/src/main/java/com/canopas/yourspace/ui/component/OtpTextField.kt b/app/src/main/java/com/canopas/yourspace/ui/component/OtpTextField.kt index ed1f4171..36e601c8 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/component/OtpTextField.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/component/OtpTextField.kt @@ -67,7 +67,7 @@ fun OtpInputField( repeat(digitCount) { index -> OTPDigit(index, pinText, textStyle, focusRequester, width = width) - if (index == 2) { + if (index == 2 && digitCount > 4) { HorizontalDivider( modifier = Modifier .width(16.dp) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/auth/SignInMethodViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/auth/SignInMethodViewModel.kt index 98e28221..a42a08da 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/auth/SignInMethodViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/auth/SignInMethodViewModel.kt @@ -42,12 +42,12 @@ class SignInMethodViewModel @Inject constructor( _state.emit(_state.value.copy(showGoogleLoading = true)) try { val firebaseToken = firebaseAuth.signInWithGoogleAuthCredential(account.idToken) - val isNewUser = authService.verifiedGoogleLogin( + authService.verifiedGoogleLogin( firebaseAuth.currentUserUid, firebaseToken, account ) - onSignUp(isNewUser) + onSignUp() _state.emit(_state.value.copy(showGoogleLoading = false)) } catch (e: Exception) { Timber.e(e, "Failed to sign in with google") @@ -65,7 +65,7 @@ class SignInMethodViewModel @Inject constructor( _state.emit(_state.value.copy(showAppleLoading = true)) try { val firebaseToken = authResult.user?.getIdToken(true)?.await() - val isNewUser = authService.verifiedAppleLogin( + authService.verifiedAppleLogin( firebaseAuth.currentUserUid, firebaseToken?.token ?: "", authResult.user ?: run { @@ -78,7 +78,7 @@ class SignInMethodViewModel @Inject constructor( return@launch } ) - onSignUp(isNewUser) + onSignUp() _state.emit(_state.value.copy(showAppleLoading = false)) } catch (e: Exception) { Timber.e(e, "Failed to sign in with Apple") @@ -95,17 +95,22 @@ class SignInMethodViewModel @Inject constructor( _state.value = _state.value.copy(error = null) } - private fun onSignUp(isNewUser: Boolean) = viewModelScope.launch(appDispatcher.MAIN) { - if (isNewUser) { + private fun onSignUp() = viewModelScope.launch(appDispatcher.MAIN) { + val currentUser = authService.currentUser ?: return@launch + val showSetPinScreen = currentUser.identity_key_public?.toBytes() + .contentEquals(currentUser.identity_key_private?.toBytes()) + val showEnterPinScreen = !showSetPinScreen && userPreferences.getPasskey() + .isNullOrEmpty() + + if (showSetPinScreen) { navigator.navigateTo( - AppDestinations.onboard.path, + AppDestinations.setPin.path, popUpToRoute = AppDestinations.signIn.path, inclusive = true ) - } else { - userPreferences.setOnboardShown(true) + } else if (showEnterPinScreen) { navigator.navigateTo( - AppDestinations.home.path, + AppDestinations.enterPin.path, popUpToRoute = AppDestinations.signIn.path, inclusive = true ) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/OnboardViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/OnboardViewModel.kt index 8a3e6c61..dae356aa 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/OnboardViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/OnboardViewModel.kt @@ -36,6 +36,10 @@ class OnboardViewModel @Inject constructor( private val currentUser get() = authService.currentUser init { + Timber.e( + "XXXXXX:\n" + + "identity_key_public: ${userPreferences.currentUser?.identity_key_public?.toBytes()?.size}\n" + ) checkInternetConnection() val user = authService.currentUser _state.value = _state.value.copy( diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt new file mode 100644 index 00000000..666c251c --- /dev/null +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt @@ -0,0 +1,95 @@ +package com.canopas.yourspace.ui.flow.pin.enterpin + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import com.canopas.yourspace.ui.component.OtpInputField + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun EnterPinScreen() { + Scaffold( + topBar = { + TopAppBar(title = { Text("Enter Your PIN") }) + } + ) { + EnterPinContent(modifier = Modifier.padding(it)) + } +} + +@Composable +private fun EnterPinContent(modifier: Modifier) { + val viewModel = hiltViewModel() + val state by viewModel.state.collectAsState() + + Column( + modifier = modifier + .padding(32.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + text = "Please enter your 4-digit PIN to access your account", + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.fillMaxWidth().padding(bottom = 24.dp), + textAlign = TextAlign.Center + ) + + Text( + text = "Your PIN ensures that only you can access your account", + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.fillMaxWidth().padding(bottom = 24.dp), + textAlign = TextAlign.Center + ) + + OtpInputField( + pinText = state.pin, + onPinTextChange = { viewModel.onPinChanged(it) }, + digitCount = 4 + ) + + Spacer(modifier = Modifier.height(16.dp)) + + if (state.pinError != null) { + Text( + text = state.pinError!!, + color = MaterialTheme.colorScheme.error, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 8.dp) + ) + } + + Spacer(modifier = Modifier.height(24.dp)) + + Button( + onClick = { + viewModel.processPin() + }, + enabled = state.pin != "" && state.pinError == "", + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + ) { + Text("Continue") + } + } +} diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt new file mode 100644 index 00000000..cbe8d661 --- /dev/null +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt @@ -0,0 +1,88 @@ +package com.canopas.yourspace.ui.flow.pin.enterpin + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.canopas.yourspace.data.service.auth.AuthService +import com.canopas.yourspace.data.storage.UserPreferences +import com.canopas.yourspace.data.utils.AppDispatcher +import com.canopas.yourspace.domain.utils.ConnectivityObserver +import com.canopas.yourspace.ui.navigation.AppDestinations +import com.canopas.yourspace.ui.navigation.AppNavigator +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch +import javax.inject.Inject + +@HiltViewModel +class EnterPinViewModel @Inject constructor( + private val navigator: AppNavigator, + private val authService: AuthService, + private val appDispatcher: AppDispatcher, + private val userPreferences: UserPreferences, + private val connectivityObserver: ConnectivityObserver +) : ViewModel() { + private val _state = MutableStateFlow(EnterPinScreenState()) + val state: StateFlow = _state + + init { + checkInternetConnection() + } + + fun onPinChanged(newPin: String) { + _state.value = _state.value.copy(pin = newPin) + validatePin(newPin) + } + + private fun validatePin(newPin: String) { + _state.value = _state.value.copy( + pinError = + when { + newPin.length < 4 -> "Pin must be at least 4 characters" + !newPin.all { it.isDigit() } -> "PIN must contain only digits" + else -> "" + } + ) + } + + fun checkInternetConnection() { + viewModelScope.launch(appDispatcher.IO) { + connectivityObserver.observe().collectLatest { status -> + _state.emit( + _state.value.copy( + connectivityStatus = status + ) + ) + } + } + } + + fun processPin() = viewModelScope.launch(appDispatcher.IO) { + val pin = state.value.pin + if (pin.length == 4) { + val isPinValid = authService.validatePasskey(passKey = pin) + if (isPinValid) { + userPreferences.setOnboardShown(true) + navigator.navigateTo( + AppDestinations.home.path, + popUpToRoute = AppDestinations.signIn.path, + inclusive = true + ) + } else { + _state.value = _state.value.copy(pinError = "Invalid Pin") + } + } else { + _state.value = _state.value.copy(pinError = "Pin must be 4 characters") + } + } +} + +data class EnterPinScreenState( + val showLoader: Boolean = false, + val pin: String = "", + val confirmPin: String = "", + val pinError: String? = null, + val connectivityStatus: ConnectivityObserver.Status = ConnectivityObserver.Status.Available, + val error: Exception? = null +) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt new file mode 100644 index 00000000..b27239ec --- /dev/null +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt @@ -0,0 +1,95 @@ +package com.canopas.yourspace.ui.flow.pin.setpin + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel +import com.canopas.yourspace.ui.component.OtpInputField + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SetPinScreen() { + Scaffold( + topBar = { + TopAppBar(title = { Text("Set Your PIN") }) + } + ) { + SetPinContent(modifier = Modifier.padding(it)) + } +} + +@Composable +private fun SetPinContent(modifier: Modifier) { + val viewModel = hiltViewModel() + val state by viewModel.state.collectAsState() + + Column( + modifier = modifier + .padding(32.dp) + .fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + text = "Secure your account by setting a 4-digit PIN", + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.fillMaxWidth().padding(bottom = 24.dp), + textAlign = TextAlign.Center + ) + + Text( + text = "Your PIN ensures that only you can access your account", + style = MaterialTheme.typography.bodyLarge, + modifier = Modifier.fillMaxWidth().padding(bottom = 24.dp), + textAlign = TextAlign.Center + ) + + OtpInputField( + pinText = state.pin, + onPinTextChange = { viewModel.onPinChanged(it) }, + digitCount = 4 + ) + + Spacer(modifier = Modifier.height(16.dp)) + + if (state.pinError != null) { + Text( + text = state.pinError!!, + color = MaterialTheme.colorScheme.error, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 8.dp) + ) + } + + Spacer(modifier = Modifier.height(24.dp)) + + Button( + onClick = { + viewModel.processPin() + }, + enabled = state.pin != "" && state.pinError == "", + modifier = Modifier + .fillMaxWidth() + .height(50.dp) + ) { + Text("Set Pin") + } + } +} diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt new file mode 100644 index 00000000..55bac9b9 --- /dev/null +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -0,0 +1,107 @@ +package com.canopas.yourspace.ui.flow.pin.setpin + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.canopas.yourspace.data.repository.SpaceRepository +import com.canopas.yourspace.data.service.auth.AuthService +import com.canopas.yourspace.data.storage.UserPreferences +import com.canopas.yourspace.data.utils.AppDispatcher +import com.canopas.yourspace.domain.utils.ConnectivityObserver +import com.canopas.yourspace.ui.navigation.AppDestinations +import com.canopas.yourspace.ui.navigation.AppNavigator +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.flow.firstOrNull +import kotlinx.coroutines.launch +import timber.log.Timber +import javax.inject.Inject + +@HiltViewModel +class SetPinViewModel @Inject constructor( + private val navigator: AppNavigator, + private val authService: AuthService, + private val appDispatcher: AppDispatcher, + private val spaceRepository: SpaceRepository, + private val userPreferences: UserPreferences, + private val connectivityObserver: ConnectivityObserver +) : ViewModel() { + private val _state = MutableStateFlow(EnterPinScreenState()) + val state: StateFlow = _state + + init { + checkInternetConnection() + } + + fun onPinChanged(newPin: String) { + _state.value = _state.value.copy(pin = newPin) + if (newPin.length == 4) { + _state.value = _state.value.copy(pinError = "") + } + } + + private fun validatePin(newPin: String) { + _state.value = _state.value.copy( + pinError = + when { + newPin.length < 4 -> "Pin must be at least 4 characters" + !newPin.all { it.isDigit() } -> "PIN must contain only digits" + else -> "" + } + ) + } + + fun checkInternetConnection() { + viewModelScope.launch(appDispatcher.IO) { + connectivityObserver.observe().collectLatest { status -> + _state.emit( + _state.value.copy( + connectivityStatus = status + ) + ) + } + } + } + + fun processPin() = viewModelScope.launch(appDispatcher.MAIN) { + _state.value = _state.value.copy(showLoader = true) + val pin = state.value.pin + validatePin(pin) + if (pin.length == 4) { + authService.generateAndSaveUserKeys(passKey = pin) + val userId = authService.getUser()?.id + val userHasSpaces = userId?.let { + val flowList = spaceRepository.getUserSpaces(it) + Timber.e("XXXXXX: Flowlist - ${flowList.firstOrNull()}") + flowList.firstOrNull()?.isNotEmpty() ?: false + } + Timber.e("XXXXXX: User has spaces - $userHasSpaces") + if (userHasSpaces == false) { + navigator.navigateTo( + AppDestinations.onboard.path, + popUpToRoute = AppDestinations.signIn.path, + inclusive = true + ) + } else { + userPreferences.setOnboardShown(true) + navigator.navigateTo( + AppDestinations.home.path, + popUpToRoute = AppDestinations.signIn.path, + inclusive = true + ) + } + } else { + _state.value = _state.value.copy(pinError = "Pin must be 4 characters") + } + } +} + +data class EnterPinScreenState( + val showLoader: Boolean = false, + val pin: String = "", + val confirmPin: String = "", + val pinError: String? = null, + val connectivityStatus: ConnectivityObserver.Status = ConnectivityObserver.Status.Available, + val error: Exception? = null +) diff --git a/app/src/main/java/com/canopas/yourspace/ui/navigation/AppRoute.kt b/app/src/main/java/com/canopas/yourspace/ui/navigation/AppRoute.kt index 9de649c2..dba524b5 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/navigation/AppRoute.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/navigation/AppRoute.kt @@ -86,6 +86,16 @@ object AppDestinations { override val path: String = "sign-in" } + val setPin = object : AppRoute { + override val arguments: List = emptyList() + override val path: String = "set-pin" + } + + val enterPin = object : AppRoute { + override val arguments: List = emptyList() + override val path: String = "enter-pin" + } + val map = object : AppRoute { override val arguments: List = emptyList() override val path: String = "map" diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index a525618a..98666176 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -25,7 +25,6 @@ data class ApiSpaceMember( val role: Int = SPACE_MEMBER_ROLE_MEMBER, val location_enabled: Boolean = true, val identity_key_public: Blob? = Blob.fromBytes(ByteArray(0)), - val profile_key: Blob? = Blob.fromBytes(ByteArray(0)), val created_at: Long? = System.currentTimeMillis() ) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiSenderKeyRecord.kt b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiSenderKeyRecord.kt new file mode 100644 index 00000000..64fbbeff --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiSenderKeyRecord.kt @@ -0,0 +1,17 @@ +package com.canopas.yourspace.data.models.user + +import androidx.annotation.Keep +import com.google.firebase.firestore.Blob +import com.squareup.moshi.JsonClass +import java.util.UUID + +@Keep +@JsonClass(generateAdapter = true) +data class ApiSenderKeyRecord( + val id: String = UUID.randomUUID().toString(), + val address: String = "", + val deviceId: Int = 0, + val distributionId: String = "", + val record: Blob = Blob.fromBytes(ByteArray(0)), + val createdAt: Long = System.currentTimeMillis() +) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt index 3fc791d7..60480b7c 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiUser.kt @@ -28,7 +28,7 @@ data class ApiUser( val updated_at: Long? = System.currentTimeMillis(), val identity_key_public: Blob? = Blob.fromBytes(ByteArray(0)), val identity_key_private: Blob? = Blob.fromBytes(ByteArray(0)), - val profile_key: Blob? = null + val identity_key_salt: Blob? = Blob.fromBytes(ByteArray(0)) // Salt for key derivation ) { @get:Exclude val fullName: String get() = "$first_name $last_name" diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 0923b2e2..8ad4d760 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -119,6 +119,19 @@ class AuthService @Inject constructor( signOut() } + suspend fun generateAndSaveUserKeys(passKey: String) { + currentUser?.id?.let { apiUserService.generateAndSaveUserKeys(it, passKey) } + } + + suspend fun validatePasskey(passKey: String): Boolean { + val user = currentUser ?: return false + val validationResult = apiUserService.validatePasskey(user, passKey) + if (validationResult != null) { + userPreferences.storePasskey(passKey) + } + return validationResult != null + } + suspend fun getUser(): ApiUser? = apiUserService.getUser(currentUser?.id ?: "") suspend fun getUserFlow() = apiUserService.getUserFlow(currentUser?.id ?: "") diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/FirebaseAuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/FirebaseAuthService.kt index b92fa544..92d0d956 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/FirebaseAuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/FirebaseAuthService.kt @@ -2,7 +2,6 @@ package com.canopas.yourspace.data.service.auth import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.GoogleAuthProvider -import com.google.firebase.auth.PhoneAuthCredential import kotlinx.coroutines.tasks.await import javax.inject.Inject @@ -19,9 +18,3 @@ class FirebaseAuthService @Inject constructor( return result.user?.getIdToken(true)?.await()?.token ?: "" } } - -sealed class PhoneAuthState { - data class VerificationCompleted(val credential: PhoneAuthCredential) : PhoneAuthState() - data class VerificationFailed(val e: Exception) : PhoneAuthState() - data class CodeSent(val verificationId: String) : PhoneAuthState() -} diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 606f2a7b..6d7faa3a 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -3,7 +3,6 @@ package com.canopas.yourspace.data.service.location import com.canopas.yourspace.data.models.location.ApiLocation import com.canopas.yourspace.data.models.location.EncryptedApiLocation import com.canopas.yourspace.data.models.space.ApiSpaceMember -import com.canopas.yourspace.data.models.space.EncryptedDistribution import com.canopas.yourspace.data.models.space.SenderKeyDistribution import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore @@ -13,6 +12,7 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBER import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.Blob +import com.google.firebase.firestore.FieldValue import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import kotlinx.coroutines.flow.Flow @@ -62,7 +62,6 @@ class ApiLocationService @Inject constructor( getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = true) val groupCipher = cipherAndDistributionMessage?.second ?: return val distributionMessage = cipherAndDistributionMessage.first - Timber.e("XXXXXX: Distribution id: ${distributionMessage.distributionId}") val lat = groupCipher.encrypt( distributionMessage.distributionId, lastLocation.latitude.toString().toByteArray(Charsets.UTF_8) @@ -72,7 +71,6 @@ class ApiLocationService @Inject constructor( lastLocation.longitude.toString().toByteArray(Charsets.UTF_8) ) - Timber.d("Last known location: $lastLocation\nLat: $lat\nLon: $lon") val docRef = spaceMemberLocationRef(spaceId, userId).document() val location = EncryptedApiLocation( @@ -107,6 +105,7 @@ class ApiLocationService @Inject constructor( longitude.toString().toByteArray(Charsets.UTF_8) ) + Timber.e("YYYYYY: LAt: $lat, Lon: $lon") val docRef = spaceMemberLocationRef(spaceId, userId).document() val location = EncryptedApiLocation( @@ -124,10 +123,12 @@ class ApiLocationService @Inject constructor( suspend fun getCurrentLocation(userId: String): Flow> { return flow { try { + Timber.e("YYYYYY: Here") val encryptedLocation = spaceMemberLocationRef(currentSpaceId, userId).whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING).limit(1) .snapshotFlow(EncryptedApiLocation::class.java) + Timber.e("YYYYYY: Here - encryptedLocation: $encryptedLocation") encryptedLocation.collect { encryptedLocationList -> val apiLocations = encryptedLocationList.map { encryptedLocation -> val receiverGroupCipher = @@ -146,6 +147,7 @@ class ApiLocationService @Inject constructor( created_at = encryptedLocation.created_at ) } + Timber.e("YYYYYY: Here - apiLocations: $apiLocations") emit(apiLocations) } } catch (e: Exception) { @@ -171,13 +173,14 @@ class ApiLocationService @Inject constructor( "Can be a new member. Distributing sender key to new member..." ) distributeSenderKeyToNewMember( - spaceId, - currentUser.id, - ApiSpaceMember( + spaceId = spaceId, + senderUserId = senderKeyDistribution.senderId, + newMember = ApiSpaceMember( user_id = userId, space_id = spaceId, identity_key_public = currentUser.identity_key_public - ) + ), + senderDeviceId = senderKeyDistribution.senderDeviceId ) getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = false) } @@ -195,6 +198,10 @@ class ApiLocationService @Inject constructor( spaceId, senderKeyDistribution.senderDeviceId ) + + // Load sender key for particular distributionId/space + bufferedSenderKeyStore.loadSenderKey(senderAddress, distributionMessage.distributionId) + val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) val receiverGroupCipher = GroupCipher(bufferedSenderKeyStore, senderAddress) sessionBuilder.process(senderAddress, distributionMessage) @@ -204,35 +211,26 @@ class ApiLocationService @Inject constructor( private suspend fun distributeSenderKeyToNewMember( spaceId: String, senderUserId: String, - newMember: ApiSpaceMember + newMember: ApiSpaceMember, + senderDeviceId: Int ) { - val deviceId = userPreferences.currentUserSession?.device_id ?: "" - val deviceIdInt = deviceId.hashCode() and 0x7FFFFFFF - val groupAddress = SignalProtocolAddress(spaceId, deviceIdInt) + val groupAddress = SignalProtocolAddress(spaceId, senderDeviceId) val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) val distributionMessage = sessionBuilder.create(groupAddress, UUID.fromString(spaceId)) val distributionBytes = distributionMessage.serialize() - val distributions = mutableListOf() val publicBlob = newMember.identity_key_public ?: return val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) - distributions.add( - EphemeralECDHUtils.encrypt( - newMember.user_id, - distributionBytes, - publicKey - ) - ) - val docRef = spaceGroupKeysRef(spaceId).document(senderUserId) - val data = SenderKeyDistribution( - senderId = senderUserId, - senderDeviceId = deviceIdInt, - distributions = distributions, - createdAt = System.currentTimeMillis() + val distribution = EphemeralECDHUtils.encrypt( + newMember.user_id, + distributionBytes, + publicKey ) - - docRef.set(data).await() - Timber.d("Sender key distribution uploaded for $senderUserId in space $spaceId.") + docRef.update( + "distributions", + FieldValue.arrayUnion(distribution) + ).await() + Timber.d("Sender key distribution uploaded for new member: ${newMember.user_id} for sender $senderUserId.") } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index d70d5946..7627c045 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -145,6 +145,21 @@ class ApiSpaceService @Inject constructor( db.collectionGroup(FIRESTORE_COLLECTION_SPACE_MEMBERS).whereEqualTo("user_id", userId) .snapshotFlow(ApiSpaceMember::class.java) + suspend fun doesUserHaveAnySpace(userId: String): Boolean { + return try { + val querySnapshot = db.collectionGroup(FIRESTORE_COLLECTION_SPACE_MEMBERS) + .whereEqualTo("user_id", userId) + .limit(1) + .get() + .await() + + querySnapshot.documents.isNotEmpty() + } catch (e: Exception) { + Timber.e(e, "Error checking if user is part of any space") + false + } + } + fun getMemberBySpaceId(spaceId: String) = spaceMemberRef(spaceId).snapshotFlow(ApiSpaceMember::class.java) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 0ba35c07..34ccf0eb 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -5,10 +5,13 @@ import com.canopas.yourspace.data.models.user.ApiUserSession import com.canopas.yourspace.data.models.user.LOGIN_TYPE_APPLE import com.canopas.yourspace.data.models.user.LOGIN_TYPE_GOOGLE import com.canopas.yourspace.data.service.location.ApiLocationService +import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USERS import com.canopas.yourspace.data.utils.Device +import com.canopas.yourspace.data.utils.EncryptionException import com.canopas.yourspace.data.utils.KeyHelper +import com.canopas.yourspace.data.utils.PrivateKeyUtils import com.canopas.yourspace.data.utils.snapshotFlow import com.google.android.gms.auth.api.signin.GoogleSignInAccount import com.google.firebase.auth.FirebaseUser @@ -17,12 +20,14 @@ import com.google.firebase.firestore.FieldValue import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.functions.FirebaseFunctions import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking import kotlinx.coroutines.tasks.await import kotlinx.coroutines.withContext import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton +import kotlin.random.Random const val NETWORK_STATUS_CHECK_INTERVAL = 3 * 60 * 1000 @@ -31,8 +36,11 @@ class ApiUserService @Inject constructor( db: FirebaseFirestore, private val device: Device, private val locationService: ApiLocationService, - private val functions: FirebaseFunctions + private val functions: FirebaseFunctions, + userPreferences: UserPreferences, + private val privateKeyUtils: PrivateKeyUtils ) { + private val currentUser = userPreferences.currentUser private val userRef = db.collection(FIRESTORE_COLLECTION_USERS) private fun sessionRef(userId: String) = userRef.document(userId.takeIf { it.isNotBlank() } ?: "null") @@ -40,7 +48,11 @@ class ApiUserService @Inject constructor( suspend fun getUser(userId: String): ApiUser? { return try { - userRef.document(userId).get().await().toObject(ApiUser::class.java) + userRef.document(userId).get().await().toObject(ApiUser::class.java)?.let { user -> + if (user.id != currentUser?.id) return user + val decryptedPrivateKey = decryptPrivateKey(user) ?: return@let user + user.copy(identity_key_private = Blob.fromBytes(decryptedPrivateKey)) + } } catch (e: Exception) { Timber.e(e, "Error while getting user") null @@ -48,7 +60,11 @@ class ApiUserService @Inject constructor( } fun getUserFlow(userId: String) = - userRef.document(userId).snapshotFlow(ApiUser::class.java) + userRef.document(userId).snapshotFlow(ApiUser::class.java).map { user -> + user?.let { decryptPrivateKey(it) }?.let { decryptedKey -> + user.copy(identity_key_private = Blob.fromBytes(decryptedKey)) + } + } fun getUserSessionFlow(userId: String, sessionId: String) = sessionRef(userId).document(sessionId).snapshotFlow(ApiUserSession::class.java) @@ -76,8 +92,6 @@ class ApiUserService @Inject constructor( sessionDocRef.set(session).await() return Triple(false, savedUser, session) } else { - val identityKeyPair = KeyHelper.generateIdentityKeyPair() - val profileKey = KeyHelper.getProfileKey() val user = ApiUser( id = uid!!, email = account?.email ?: firebaseUser?.email ?: "", @@ -86,10 +100,7 @@ class ApiUserService @Inject constructor( last_name = account?.familyName ?: "", provider_firebase_id_token = firebaseToken, profile_image = account?.photoUrl?.toString() ?: firebaseUser?.photoUrl?.toString() - ?: "", - identity_key_public = Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), - identity_key_private = Blob.fromBytes(identityKeyPair.privateKey.serialize()), - profile_key = Blob.fromBytes(profileKey.serialize()) + ?: "" ) userRef.document(uid).set(user).await() val sessionDocRef = sessionRef(user.id).document() @@ -107,6 +118,53 @@ class ApiUserService @Inject constructor( } } + suspend fun saveSenderKeyRecord(address: String, deviceId: Int, distributionId: String) { + } + + suspend fun generateAndSaveUserKeys(userId: String, passKey: String) { + val identityKeyPair = KeyHelper.generateIdentityKeyPair() + val salt = ByteArray(16).apply { Random.nextBytes(this) } + val encryptedPrivateKey = privateKeyUtils.encryptPrivateKey( + identityKeyPair.privateKey.serialize(), + passkey = passKey, + salt = salt + ) + userRef.document(userId).update( + mapOf( + "identity_key_public" to Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), + "identity_key_private" to Blob.fromBytes(encryptedPrivateKey), + "identity_key_salt" to Blob.fromBytes(salt) + ) + ).await() + } + + fun validatePasskey(user: ApiUser, passKey: String): ByteArray? { + val decryptedPrivateKey = decryptPrivateKey(user, passKey) + return if (decryptedPrivateKey != null) { + decryptedPrivateKey + } else { + Timber.e("Failed to validate passkey for user ${user.id}") + null + } + } + + /** + * Decrypts the private key using the stored passkey/PIN and salt from ApiUser. + * Returns the decrypted private key as ByteArray. + */ + private fun decryptPrivateKey(user: ApiUser, pin: String? = null): ByteArray? { + val encryptedPrivateKey = user.identity_key_private?.toBytes() ?: return null + val salt = user.identity_key_salt?.toBytes() ?: return null + return try { + val decrypted = privateKeyUtils.decryptPrivateKey(encryptedPrivateKey, salt, pin) + Timber.e("XXXXXX: Encrypted Private Key: $encryptedPrivateKey\nDecrypted: $decrypted") + decrypted + } catch (e: EncryptionException) { + Timber.e(e, "Failed to decrypt private key for user ${user.id}") + null + } + } + private suspend fun deactivateOldSessions(userId: String) { sessionRef(userId).whereEqualTo("session_active", true).get().await().documents.forEach { it.reference.update("session_active", false).await() diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt b/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt index 623c8711..931ad553 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt @@ -10,6 +10,7 @@ import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.models.user.ApiUserSession import com.canopas.yourspace.data.storage.UserPreferences.PreferencesKey.KEY_USER_CURRENT_SPACE import com.canopas.yourspace.data.storage.UserPreferences.PreferencesKey.KEY_USER_JSON +import com.canopas.yourspace.data.storage.UserPreferences.PreferencesKey.KEY_USER_PASSKEY import com.canopas.yourspace.data.storage.UserPreferences.PreferencesKey.KEY_USER_SESSION_JSON import com.google.firebase.firestore.Blob import com.squareup.moshi.FromJson @@ -49,6 +50,8 @@ class UserPreferences @Inject constructor( val LAST_BATTERY_DIALOG_DATE = stringPreferencesKey("last_battery_dialog_date") val KEY_USER_MAP_STYLE = stringPreferencesKey("user_map_style") + + val KEY_USER_PASSKEY = stringPreferencesKey("user_passkey") } suspend fun isIntroShown(): Boolean { @@ -169,6 +172,22 @@ class UserPreferences @Inject constructor( } } } + + suspend fun storePasskey(passkey: String) { + preferencesDataStore.edit { preferences -> + preferences[KEY_USER_PASSKEY] = passkey + } + } + + suspend fun getPasskey(): String? { + return preferencesDataStore.data.first()[KEY_USER_PASSKEY] + } + + suspend fun clearPasskey() { + preferencesDataStore.edit { + it.remove(KEY_USER_PASSKEY) + } + } } class BlobTypeAdapter { diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index 9952a44a..b77a3d19 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -1,13 +1,19 @@ package com.canopas.yourspace.data.storage.bufferedkeystore -import com.canopas.yourspace.data.storage.database.SenderKeyDao -import com.canopas.yourspace.data.storage.database.SenderKeyEntity +import com.canopas.yourspace.data.models.user.ApiSenderKeyRecord +import com.canopas.yourspace.data.storage.UserPreferences +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USER_SENDER_KEY_RECORD +import com.google.firebase.firestore.Blob +import com.google.firebase.firestore.FirebaseFirestore import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.tasks.await import org.signal.libsignal.protocol.SignalProtocolAddress import org.signal.libsignal.protocol.groups.state.SenderKeyRecord +import timber.log.Timber import java.util.UUID import javax.inject.Inject -import javax.inject.Named import javax.inject.Singleton /** @@ -15,9 +21,20 @@ import javax.inject.Singleton */ @Singleton class BufferedSenderKeyStore @Inject constructor( - @Named("sender_key_dao") private val senderKeyDao: SenderKeyDao + db: FirebaseFirestore, + private val userPreferences: UserPreferences ) : SignalServiceSenderKeyStore { + private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) + private fun spaceMemberRef(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") + .collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) + + private fun spaceSenderKeyRecordRef(spaceId: String, userId: String) = + spaceMemberRef(spaceId) + .document(userId.takeIf { it.isNotBlank() } ?: "null") + .collection(FIRESTORE_COLLECTION_USER_SENDER_KEY_RECORD) + private val store: MutableMap = HashMap() /** All of the keys that have been created or updated during operation. */ @@ -26,38 +43,54 @@ class BufferedSenderKeyStore @Inject constructor( /** All of the distributionId's whose sharing has been cleared during operation. */ private val clearSharedWith: MutableSet = mutableSetOf() - override fun storeSenderKey(sender: SignalProtocolAddress, distributionId: UUID, record: SenderKeyRecord) { + override fun storeSenderKey( + sender: SignalProtocolAddress, + distributionId: UUID, + record: SenderKeyRecord + ) { val key = StoreKey(sender, distributionId) store[key] = record updatedKeys[key] = record runBlocking { - senderKeyDao.insertSenderKey( - senderKeyEntity = SenderKeyEntity( - address = sender.name, - deviceId = sender.deviceId, - distributionId = distributionId.toString(), - record = record.serialize() - ) + val currentUser = userPreferences.currentUser ?: return@runBlocking + val senderKeyRecord = ApiSenderKeyRecord( + address = sender.name, + deviceId = sender.deviceId, + distributionId = distributionId.toString(), + record = Blob.fromBytes(record.serialize()) ) + spaceSenderKeyRecordRef( + distributionId.toString(), + currentUser.id + ).document().set(senderKeyRecord).await() } } - override fun loadSenderKey(sender: SignalProtocolAddress, distributionId: UUID): SenderKeyRecord? { + override fun loadSenderKey( + sender: SignalProtocolAddress, + distributionId: UUID + ): SenderKeyRecord? { return store[StoreKey(sender, distributionId)] ?: runBlocking { - val fromDatabase: SenderKeyRecord? = - senderKeyDao.getSenderKeyRecord( - address = sender.name, - deviceId = sender.deviceId, - distributionId = distributionId.toString() - ) - - if (fromDatabase != null) { - store[StoreKey(sender, distributionId)] = fromDatabase + val currentUser = userPreferences.currentUser ?: return@runBlocking null + val fromServer: SenderKeyRecord? = + spaceSenderKeyRecordRef( + distributionId.toString(), + currentUser.id + ).document().get().await().toObject(ApiSenderKeyRecord::class.java)?.let { + try { + SenderKeyRecord(it.record.toBytes()) + } catch (e: Exception) { + Timber.e(e, "Error while loading sender key record") + null + } + } + if (fromServer != null) { + store[StoreKey(sender, distributionId)] = fromServer } - fromDatabase + fromServer } } diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/Config.kt b/data/src/main/java/com/canopas/yourspace/data/utils/Config.kt index 7dcc5060..764475b6 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/Config.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/Config.kt @@ -6,6 +6,7 @@ object Config { const val FIRESTORE_COLLECTION_USERS = "users" const val FIRESTORE_COLLECTION_USER_SESSIONS = "user_sessions" + const val FIRESTORE_COLLECTION_SPACES = "spaces" const val FIRESTORE_COLLECTION_SPACE_MEMBERS = "space_members" const val FIRESTORE_COLLECTION_SPACE_PLACES = "space_places" @@ -19,5 +20,7 @@ object Config { const val FIRESTORE_COLLECTION_USER_LOCATIONS = "user_locations" const val FIRESTORE_COLLECTION_USER_JOURNEYS = "user_journeys" + const val FIRESTORE_COLLECTION_USER_SENDER_KEY_RECORD = "sender_key_record" + const val FIREBASE_REGION = "asia-south1" } diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt new file mode 100644 index 00000000..7ef40f31 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt @@ -0,0 +1,115 @@ +package com.canopas.yourspace.data.utils + +import com.canopas.yourspace.data.storage.UserPreferences +import kotlinx.coroutines.runBlocking +import timber.log.Timber +import javax.crypto.Cipher +import javax.crypto.SecretKey +import javax.crypto.SecretKeyFactory +import javax.crypto.spec.GCMParameterSpec +import javax.crypto.spec.PBEKeySpec +import javax.crypto.spec.SecretKeySpec +import javax.inject.Inject +import javax.inject.Singleton +import kotlin.random.Random + +class EncryptionException(message: String, cause: Throwable? = null) : Exception(message, cause) + +@Singleton +class PrivateKeyUtils @Inject constructor(private val userPreferences: UserPreferences) { + + companion object { + private const val AES_ALGORITHM = "AES/GCM/NoPadding" + private const val KEY_DERIVATION_ALGORITHM = "PBKDF2WithHmacSHA256" + private const val KEY_SIZE = 256 // bits + private const val ITERATION_COUNT = 10000 + private const val GCM_IV_SIZE = 12 // bytes + private const val GCM_TAG_SIZE = 128 // bits + } + + /** + * Derives a SecretKey from the user's passkey/PIN using PBKDF2. + */ + private fun deriveKeyFromPasskey(passkey: String, salt: ByteArray): SecretKey { + return try { + val spec = PBEKeySpec(passkey.toCharArray(), salt, ITERATION_COUNT, KEY_SIZE) + val factory = SecretKeyFactory.getInstance(KEY_DERIVATION_ALGORITHM) + val keyBytes = factory.generateSecret(spec).encoded + SecretKeySpec(keyBytes, "AES") + } catch (e: Exception) { + Timber.e(e, "Key derivation failed") + throw EncryptionException("Key derivation failed", e) + } + } + + /** + * Encrypts data using AES-GCM with the provided key. + * Returns the IV prepended to the ciphertext. + */ + private fun encryptData(data: ByteArray, key: SecretKey): ByteArray { + return try { + val cipher = Cipher.getInstance(AES_ALGORITHM) + val iv = ByteArray(GCM_IV_SIZE).apply { Random.nextBytes(this) } + val spec = GCMParameterSpec(GCM_TAG_SIZE, iv) + cipher.init(Cipher.ENCRYPT_MODE, key, spec) + val encrypted = cipher.doFinal(data) + // Prepend IV to ciphertext + iv + encrypted + } catch (e: Exception) { + Timber.e(e, "Encryption failed") + throw EncryptionException("Encryption failed", e) + } + } + + /** + * Decrypts data using AES-GCM with the provided key. + * Expects the IV to be prepended to the ciphertext. + */ + private fun decryptData(encryptedData: ByteArray, key: SecretKey): ByteArray { + return try { + if (encryptedData.size < GCM_IV_SIZE) { + throw EncryptionException("Encrypted data is too short") + } + val iv = encryptedData.copyOfRange(0, GCM_IV_SIZE) + val ciphertext = encryptedData.copyOfRange(GCM_IV_SIZE, encryptedData.size) + val cipher = Cipher.getInstance(AES_ALGORITHM) + val spec = GCMParameterSpec(GCM_TAG_SIZE, iv) + cipher.init(Cipher.DECRYPT_MODE, key, spec) + cipher.doFinal(ciphertext) + } catch (e: Exception) { + Timber.e(e, "Decryption failed") + throw EncryptionException("Decryption failed", e) + } + } + + /** + * Encrypts the private key using the user's passkey/PIN. + * Retrieves or generates the salt and stores it in Firestore via ApiUserService. + */ + fun encryptPrivateKey(privateKey: ByteArray, passkey: String, salt: ByteArray): ByteArray { + if (salt.isEmpty()) { + throw EncryptionException("Salt is empty") + } + runBlocking { + userPreferences.storePasskey(passkey) + } + val key = deriveKeyFromPasskey(passkey, salt) + return encryptData(privateKey, key) + } + + /** + * Decrypts the private key using the user's passkey/PIN and salt from ApiUser. + */ + fun decryptPrivateKey(encryptedPrivateKey: ByteArray, salt: ByteArray, pin: String?): ByteArray? { + return try { + val passkey = runBlocking { + pin ?: userPreferences.getPasskey() + } ?: return null + val key = deriveKeyFromPasskey(passkey, salt) + decryptData(encryptedPrivateKey, key) + } catch (e: EncryptionException) { + Timber.e(e, "Failed to decrypt private key") + null + } + } +} From 7099ea97d53961239f99ca621c1c74c9fc4b8ce4 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Tue, 31 Dec 2024 16:52:32 +0530 Subject: [PATCH 10/39] finish - multidevice support --- .../ui/flow/pin/enterpin/EnterPinScreen.kt | 32 +- .../ui/flow/pin/enterpin/EnterPinViewModel.kt | 8 +- .../ui/flow/pin/setpin/SetPinScreen.kt | 32 +- .../ui/flow/pin/setpin/SetPinViewModel.kt | 6 +- .../data/models/location/LocationJourney.kt | 14 +- .../data/models/location/LocationTable.kt | 21 -- .../data/service/auth/AuthService.kt | 7 +- .../service/location/ApiLocationService.kt | 321 ++++++++++-------- .../data/service/space/ApiSpaceService.kt | 16 - .../data/service/user/ApiUserService.kt | 43 ++- .../BufferedSenderKeyStore.kt | 107 +++--- .../data/storage/database/SenderKeyDao.kt | 7 - .../canopas/yourspace/data/utils/KeyHelper.kt | 48 --- .../yourspace/data/utils/PrivateKeyUtils.kt | 31 +- firestore.rules | 54 +-- 15 files changed, 369 insertions(+), 378 deletions(-) delete mode 100644 data/src/main/java/com/canopas/yourspace/data/models/location/LocationTable.kt delete mode 100644 data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt index 666c251c..673e2a45 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold @@ -18,10 +17,12 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.canopas.yourspace.ui.component.OtpInputField +import com.canopas.yourspace.ui.component.PrimaryButton @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -29,7 +30,8 @@ fun EnterPinScreen() { Scaffold( topBar = { TopAppBar(title = { Text("Enter Your PIN") }) - } + }, + contentColor = MaterialTheme.colorScheme.background ) { EnterPinContent(modifier = Modifier.padding(it)) } @@ -69,27 +71,23 @@ private fun EnterPinContent(modifier: Modifier) { Spacer(modifier = Modifier.height(16.dp)) - if (state.pinError != null) { - Text( - text = state.pinError!!, - color = MaterialTheme.colorScheme.error, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier.padding(top = 8.dp) - ) - } + Text( + text = state.pinError ?: "", + color = if (!state.pinError.isNullOrEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 8.dp) + ) Spacer(modifier = Modifier.height(24.dp)) - Button( + PrimaryButton( + label = "Continue", onClick = { viewModel.processPin() }, enabled = state.pin != "" && state.pinError == "", - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - ) { - Text("Continue") - } + modifier = Modifier.fillMaxWidth(), + showLoader = state.showLoader + ) } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt index cbe8d661..19b171c9 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt @@ -32,7 +32,9 @@ class EnterPinViewModel @Inject constructor( fun onPinChanged(newPin: String) { _state.value = _state.value.copy(pin = newPin) - validatePin(newPin) + if (newPin.length == 4) { + _state.value = _state.value.copy(pinError = "") + } } private fun validatePin(newPin: String) { @@ -58,8 +60,10 @@ class EnterPinViewModel @Inject constructor( } } - fun processPin() = viewModelScope.launch(appDispatcher.IO) { + fun processPin() = viewModelScope.launch(appDispatcher.MAIN) { + _state.value = _state.value.copy(showLoader = true) val pin = state.value.pin + validatePin(pin) if (pin.length == 4) { val isPinValid = authService.validatePasskey(passKey = pin) if (isPinValid) { diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt index b27239ec..2cde40ea 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold @@ -18,10 +17,12 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.canopas.yourspace.ui.component.OtpInputField +import com.canopas.yourspace.ui.component.PrimaryButton @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -29,7 +30,8 @@ fun SetPinScreen() { Scaffold( topBar = { TopAppBar(title = { Text("Set Your PIN") }) - } + }, + contentColor = MaterialTheme.colorScheme.background ) { SetPinContent(modifier = Modifier.padding(it)) } @@ -69,27 +71,23 @@ private fun SetPinContent(modifier: Modifier) { Spacer(modifier = Modifier.height(16.dp)) - if (state.pinError != null) { - Text( - text = state.pinError!!, - color = MaterialTheme.colorScheme.error, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier.padding(top = 8.dp) - ) - } + Text( + text = state.pinError ?: "", + color = if (!state.pinError.isNullOrEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 8.dp) + ) Spacer(modifier = Modifier.height(24.dp)) - Button( + PrimaryButton( + label = "Set Pin", onClick = { viewModel.processPin() }, enabled = state.pin != "" && state.pinError == "", - modifier = Modifier - .fillMaxWidth() - .height(50.dp) - ) { - Text("Set Pin") - } + modifier = Modifier.fillMaxWidth(), + showLoader = state.showLoader + ) } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt index 55bac9b9..7afbfb74 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -15,7 +15,6 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch -import timber.log.Timber import javax.inject.Inject @HiltViewModel @@ -72,11 +71,8 @@ class SetPinViewModel @Inject constructor( authService.generateAndSaveUserKeys(passKey = pin) val userId = authService.getUser()?.id val userHasSpaces = userId?.let { - val flowList = spaceRepository.getUserSpaces(it) - Timber.e("XXXXXX: Flowlist - ${flowList.firstOrNull()}") - flowList.firstOrNull()?.isNotEmpty() ?: false + spaceRepository.getUserSpaces(it).firstOrNull()?.isNotEmpty() ?: false } - Timber.e("XXXXXX: User has spaces - $userHasSpaces") if (userHasSpaces == false) { navigator.navigateTo( AppDestinations.onboard.path, diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index d2b9e617..a8d5c53c 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -27,13 +27,13 @@ data class LocationJourney( data class EncryptedLocationJourney( val id: String = UUID.randomUUID().toString(), val user_id: String = "", - val encrypted_from_latitude: String = "", // Base64 encoded - val encrypted_from_longitude: String = "", - val encrypted_to_latitude: String? = "", - val encrypted_to_longitude: String? = "", + val encrypted_from_latitude: String = "", // Base64 encoded encrypted latitude - from + val encrypted_from_longitude: String = "", // Base64 encoded encrypted longitude - from + val encrypted_to_latitude: String? = "", // Base64 encoded encrypted latitude - to + val encrypted_to_longitude: String? = "", // Base64 encoded encrypted longitude - to val route_distance: Double? = null, val route_duration: Long? = null, - val encrypted_routes: List = emptyList(), + val encrypted_routes: List = emptyList(), // Base64 encoded encrypted journey routes val created_at: Long? = System.currentTimeMillis(), val updated_at: Long? = System.currentTimeMillis() ) @@ -44,8 +44,8 @@ data class JourneyRoute(val latitude: Double = 0.0, val longitude: Double = 0.0) @Keep @JsonClass(generateAdapter = true) data class EncryptedJourneyRoute( - val encrypted_latitude: String = "", - val encrypted_longitude: String = "" + val encrypted_latitude: String = "", // Base64 encoded encrypted latitude + val encrypted_longitude: String = "" // Base64 encoded encrypted longitude ) fun Location.toRoute(): JourneyRoute { diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationTable.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationTable.kt deleted file mode 100644 index e7e5fbe3..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationTable.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.canopas.yourspace.data.models.location - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey -import com.squareup.moshi.JsonClass - -@JsonClass(generateAdapter = true) -@Entity(tableName = "location_table") -data class LocationTable( - - @PrimaryKey - @ColumnInfo(name = "user_id") - val userId: String = "", - - @ColumnInfo(name = "last_five_locations") - val lastFiveLocations: String? = null, // last 5 extracted locations - - @ColumnInfo(name = "last_location_journey") - val lastLocationJourney: String? = null // last journey -) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 8ad4d760..56882e3b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -9,6 +9,7 @@ import com.canopas.yourspace.data.storage.UserPreferences import com.google.android.gms.auth.api.signin.GoogleSignInAccount import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.FirebaseUser +import com.google.firebase.firestore.Blob import javax.inject.Inject import javax.inject.Singleton @@ -120,7 +121,10 @@ class AuthService @Inject constructor( } suspend fun generateAndSaveUserKeys(passKey: String) { - currentUser?.id?.let { apiUserService.generateAndSaveUserKeys(it, passKey) } + currentUser?.let { + val updatedUser = apiUserService.generateAndSaveUserKeys(currentUser!!, passKey) + currentUser = updatedUser + } } suspend fun validatePasskey(passKey: String): Boolean { @@ -128,6 +132,7 @@ class AuthService @Inject constructor( val validationResult = apiUserService.validatePasskey(user, passKey) if (validationResult != null) { userPreferences.storePasskey(passKey) + currentUser = currentUser?.copy(identity_key_private = Blob.fromBytes(validationResult)) } return validationResult != null } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 6d7faa3a..e8d1a424 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -4,12 +4,14 @@ import com.canopas.yourspace.data.models.location.ApiLocation import com.canopas.yourspace.data.models.location.EncryptedApiLocation import com.canopas.yourspace.data.models.space.ApiSpaceMember import com.canopas.yourspace.data.models.space.SenderKeyDistribution +import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.EphemeralECDHUtils +import com.canopas.yourspace.data.utils.PrivateKeyUtils import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FieldValue @@ -18,8 +20,10 @@ import com.google.firebase.firestore.Query import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.tasks.await +import org.signal.libsignal.protocol.InvalidKeyException import org.signal.libsignal.protocol.SignalProtocolAddress import org.signal.libsignal.protocol.ecc.Curve +import org.signal.libsignal.protocol.ecc.ECPrivateKey import org.signal.libsignal.protocol.groups.GroupCipher import org.signal.libsignal.protocol.groups.GroupSessionBuilder import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage @@ -37,51 +41,31 @@ class ApiLocationService @Inject constructor( ) { var currentSpaceId: String = userPreferences.currentSpace ?: "" - private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) + private val spaceRef by lazy { db.collection(FIRESTORE_COLLECTION_SPACES) } + private fun spaceMemberRef(spaceId: String) = - spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( - FIRESTORE_COLLECTION_SPACE_MEMBERS - ) + spaceRef.document(spaceId).collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) private fun spaceMemberLocationRef(spaceId: String, userId: String) = - spaceMemberRef(spaceId) - .document(userId.takeIf { it.isNotBlank() } ?: "null") - .collection(Config.FIRESTORE_COLLECTION_USER_LOCATIONS) + spaceMemberRef(spaceId).document(userId).collection(Config.FIRESTORE_COLLECTION_USER_LOCATIONS) private fun spaceGroupKeysRef(spaceId: String) = - spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( - Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS - ) + spaceRef.document(spaceId).collection(Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) - suspend fun saveLastKnownLocation( - userId: String - ) { + suspend fun saveLastKnownLocation(userId: String) { val lastLocation = locationManager.getLastLocation() ?: return - userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val cipherAndDistributionMessage = - getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = true) - val groupCipher = cipherAndDistributionMessage?.second ?: return - val distributionMessage = cipherAndDistributionMessage.first - val lat = groupCipher.encrypt( - distributionMessage.distributionId, - lastLocation.latitude.toString().toByteArray(Charsets.UTF_8) - ) - val lon = groupCipher.encrypt( - distributionMessage.distributionId, - lastLocation.longitude.toString().toByteArray(Charsets.UTF_8) - ) + val currentUser = userPreferences.currentUser ?: return - val docRef = spaceMemberLocationRef(spaceId, userId).document() + currentUser.space_ids?.forEach { spaceId -> + if (spaceId.isBlank()) return@forEach - val location = EncryptedApiLocation( - id = docRef.id, - user_id = userId, - encrypted_latitude = Blob.fromBytes(lat.serialize()), - encrypted_longitude = Blob.fromBytes(lon.serialize()), - created_at = System.currentTimeMillis() + saveEncryptedLocation( + spaceId = spaceId, + userId = userId, + latitude = lastLocation.latitude, + longitude = lastLocation.longitude, + recordedAt = System.currentTimeMillis() ) - - docRef.set(location).await() } } @@ -91,123 +75,179 @@ class ApiLocationService @Inject constructor( longitude: Double, recordedAt: Long ) { - userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val cipherAndDistributionMessage = - getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = true) - val groupCipher = cipherAndDistributionMessage?.second ?: return - val distributionMessage = cipherAndDistributionMessage.first - val lat = groupCipher.encrypt( - distributionMessage.distributionId, - latitude.toString().toByteArray(Charsets.UTF_8) - ) - val lon = groupCipher.encrypt( - distributionMessage.distributionId, - longitude.toString().toByteArray(Charsets.UTF_8) - ) + val currentUser = userPreferences.currentUser ?: return - Timber.e("YYYYYY: LAt: $lat, Lon: $lon") - val docRef = spaceMemberLocationRef(spaceId, userId).document() + currentUser.space_ids?.forEach { spaceId -> + if (spaceId.isBlank()) return@forEach - val location = EncryptedApiLocation( - id = docRef.id, - user_id = userId, - encrypted_latitude = Blob.fromBytes(lat.serialize()), - encrypted_longitude = Blob.fromBytes(lon.serialize()), - created_at = recordedAt + saveEncryptedLocation( + spaceId = spaceId, + userId = userId, + latitude = latitude, + longitude = longitude, + recordedAt = recordedAt ) + } + } + + private suspend fun saveEncryptedLocation( + spaceId: String, + userId: String, + latitude: Double, + longitude: Double, + recordedAt: Long + ) { + val cipherAndDistribution = getGroupCipherAndDistributionMessage( + spaceId = spaceId, + userId = userId, + canDistributeSenderKey = true + ) ?: return + + val (distributionMessage, groupCipher) = cipherAndDistribution + + val encryptedLatitude = groupCipher.encrypt( + distributionMessage.distributionId, + latitude.toString().toByteArray(Charsets.UTF_8) + ) + val encryptedLongitude = groupCipher.encrypt( + distributionMessage.distributionId, + longitude.toString().toByteArray(Charsets.UTF_8) + ) + + val location = EncryptedApiLocation( + id = UUID.randomUUID().toString(), + user_id = userId, + encrypted_latitude = Blob.fromBytes(encryptedLatitude.serialize()), + encrypted_longitude = Blob.fromBytes(encryptedLongitude.serialize()), + created_at = recordedAt + ) - docRef.set(location).await() + try { + spaceMemberLocationRef(spaceId, userId).document(location.id).set(location).await() + } catch (e: Exception) { + Timber.e(e, "Failed to save encrypted location for userId: $userId in spaceId: $spaceId") } } - suspend fun getCurrentLocation(userId: String): Flow> { - return flow { - try { - Timber.e("YYYYYY: Here") - val encryptedLocation = - spaceMemberLocationRef(currentSpaceId, userId).whereEqualTo("user_id", userId) - .orderBy("created_at", Query.Direction.DESCENDING).limit(1) - .snapshotFlow(EncryptedApiLocation::class.java) - Timber.e("YYYYYY: Here - encryptedLocation: $encryptedLocation") - encryptedLocation.collect { encryptedLocationList -> - val apiLocations = encryptedLocationList.map { encryptedLocation -> - val receiverGroupCipher = - getGroupCipherAndDistributionMessage(currentSpaceId, userId)?.second - ?: return@map null - val lat = - receiverGroupCipher.decrypt(encryptedLocation.encrypted_latitude.toBytes()) - val lon = - receiverGroupCipher.decrypt(encryptedLocation.encrypted_longitude.toBytes()) - - ApiLocation( - id = encryptedLocation.id, - user_id = userId, - latitude = lat.toString(Charsets.UTF_8).toDouble(), - longitude = lon.toString(Charsets.UTF_8).toDouble(), - created_at = encryptedLocation.created_at - ) + fun getCurrentLocation(userId: String): Flow> = flow { + try { + val encryptedLocationsFlow = spaceMemberLocationRef(currentSpaceId, userId) + .whereEqualTo("user_id", userId) + .orderBy("created_at", Query.Direction.DESCENDING) + .limit(1) + .snapshotFlow(EncryptedApiLocation::class.java) + + encryptedLocationsFlow.collect { encryptedLocationList -> + emit( + encryptedLocationList.mapNotNull { encryptedLocation -> + decryptLocation(encryptedLocation, userId) } - Timber.e("YYYYYY: Here - apiLocations: $apiLocations") - emit(apiLocations) - } - } catch (e: Exception) { - Timber.e(e, "Error while getting current location") + ) } + } catch (e: Exception) { + Timber.e(e, "Error while getting current location for userId: $userId") } } + private suspend fun decryptLocation(encryptedLocation: EncryptedApiLocation, userId: String): ApiLocation? { + val groupCipher = getGroupCipherAndDistributionMessage(currentSpaceId, userId)?.second ?: return null + + return try { + val latitudeBytes = groupCipher.decrypt(encryptedLocation.encrypted_latitude.toBytes()) + val longitudeBytes = groupCipher.decrypt(encryptedLocation.encrypted_longitude.toBytes()) + + ApiLocation( + id = encryptedLocation.id, + user_id = userId, + latitude = latitudeBytes.toString(Charsets.UTF_8).toDouble(), + longitude = longitudeBytes.toString(Charsets.UTF_8).toDouble(), + created_at = encryptedLocation.created_at + ) + } catch (e: Exception) { + Timber.e(e, "Failed to decrypt location for userId: $userId") + null + } + } + + /** + * Provide group cipher and sender key distribution message for a particular space and user. + */ private suspend fun getGroupCipherAndDistributionMessage( spaceId: String, userId: String, canDistributeSenderKey: Boolean = false - ): Pair? { + ): Pair? { val currentUser = userPreferences.currentUser ?: return null + val senderKeyDistribution = spaceGroupKeysRef(spaceId) - .document(userId).get().await().toObject(SenderKeyDistribution::class.java) - - val distributions = senderKeyDistribution?.distributions ?: return null - val currentUserDistribution = distributions.firstOrNull { it.recipientId == currentUser.id } - if (currentUserDistribution == null && canDistributeSenderKey) { - Timber.e( - "Sender key distribution not found for $userId in space $spaceId.\n+" + - "Can be a new member. Distributing sender key to new member..." - ) - distributeSenderKeyToNewMember( - spaceId = spaceId, - senderUserId = senderKeyDistribution.senderId, - newMember = ApiSpaceMember( - user_id = userId, - space_id = spaceId, - identity_key_public = currentUser.identity_key_public - ), - senderDeviceId = senderKeyDistribution.senderDeviceId - ) - getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = false) - } - if (currentUserDistribution == null) { - return null - } - val currentUserPrivateKey = - Curve.decodePrivatePoint(currentUser.identity_key_private?.toBytes()) + .document(userId) + .get() + .await() + .toObject(SenderKeyDistribution::class.java) ?: return null + + val distribution = senderKeyDistribution.distributions + .firstOrNull { it.recipientId == currentUser.id } + ?: run { + if (canDistributeSenderKey) { + Timber.d("Distributing sender key to new member: userId=$userId in spaceId=$spaceId") + distributeSenderKeyToNewMember( + spaceId = spaceId, + senderUserId = senderKeyDistribution.senderId, + newMember = ApiSpaceMember( + user_id = userId, + space_id = spaceId, + identity_key_public = currentUser.identity_key_public + ), + senderDeviceId = senderKeyDistribution.senderDeviceId + ) + // Retry fetching the distribution after distribution + return getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = false) + } + null + } ?: return null - val decryptedDistribution = - EphemeralECDHUtils.decrypt(currentUserDistribution, currentUserPrivateKey) + val currentUserPrivateKey = getCurrentUserPrivateKey(currentUser) ?: return null + + val decryptedDistribution = EphemeralECDHUtils.decrypt(distribution, currentUserPrivateKey) + ?: run { + Timber.e("Failed to decrypt distribution for userId=$userId in spaceId=$spaceId") + return null + } val distributionMessage = SenderKeyDistributionMessage(decryptedDistribution) - val senderAddress = SignalProtocolAddress( - spaceId, - senderKeyDistribution.senderDeviceId - ) + val senderAddress = SignalProtocolAddress(spaceId, senderKeyDistribution.senderDeviceId) - // Load sender key for particular distributionId/space bufferedSenderKeyStore.loadSenderKey(senderAddress, distributionMessage.distributionId) - val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) - val receiverGroupCipher = GroupCipher(bufferedSenderKeyStore, senderAddress) - sessionBuilder.process(senderAddress, distributionMessage) - return Pair(distributionMessage, receiverGroupCipher) + return try { + GroupSessionBuilder(bufferedSenderKeyStore).process(senderAddress, distributionMessage) + val groupCipher = GroupCipher(bufferedSenderKeyStore, senderAddress) + Pair(distributionMessage, groupCipher) + } catch (e: Exception) { + Timber.e(e, "Error processing group session for spaceId=$spaceId, userId=$userId") + null + } } + /** + * Decrypts and retrieves the current user's private key. + */ + private suspend fun getCurrentUserPrivateKey(currentUser: ApiUser): ECPrivateKey? { + return try { + Curve.decodePrivatePoint(currentUser.identity_key_private?.toBytes()) + } catch (e: InvalidKeyException) { + Timber.e(e, "Error decoding private key for userId=${currentUser.id}") + PrivateKeyUtils.decryptPrivateKey( + currentUser.identity_key_private?.toBytes() ?: return null, + currentUser.identity_key_salt?.toBytes() ?: return null, + userPreferences.getPasskey() ?: return null + )?.let { Curve.decodePrivatePoint(it) } + } + } + + /** + * Distribute sender key to a new member. + */ private suspend fun distributeSenderKeyToNewMember( spaceId: String, senderUserId: String, @@ -218,19 +258,32 @@ class ApiLocationService @Inject constructor( val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) val distributionMessage = sessionBuilder.create(groupAddress, UUID.fromString(spaceId)) val distributionBytes = distributionMessage.serialize() - val publicBlob = newMember.identity_key_public ?: return - val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) - val docRef = spaceGroupKeysRef(spaceId).document(senderUserId) + + val publicBlob = newMember.identity_key_public ?: run { + Timber.e("New member's public key is null for userId=${newMember.user_id}") + return + } + + val publicKey = try { + Curve.decodePoint(publicBlob.toBytes(), 0) + } catch (e: InvalidKeyException) { + Timber.e(e, "Invalid public key for new member userId=${newMember.user_id}") + return + } val distribution = EphemeralECDHUtils.encrypt( newMember.user_id, distributionBytes, publicKey ) - docRef.update( - "distributions", - FieldValue.arrayUnion(distribution) - ).await() - Timber.d("Sender key distribution uploaded for new member: ${newMember.user_id} for sender $senderUserId.") + + try { + spaceGroupKeysRef(spaceId).document(senderUserId) + .update("distributions", FieldValue.arrayUnion(distribution)) + .await() + Timber.d("Sender key distribution uploaded for new member: ${newMember.user_id} in spaceId=$spaceId.") + } catch (e: Exception) { + Timber.e(e, "Failed to upload sender key distribution for new member userId=${newMember.user_id} in spaceId=$spaceId") + } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index 7627c045..d478b1f5 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -66,7 +66,6 @@ class ApiSpaceService @Inject constructor( suspend fun joinSpace(spaceId: String, role: Int = SPACE_MEMBER_ROLE_MEMBER) { val user = authService.currentUser ?: return - Timber.e("SpaceId: $spaceId, UserId: ${user.id}") spaceMemberRef(spaceId) .document(user.id).also { val member = ApiSpaceMember( @@ -145,21 +144,6 @@ class ApiSpaceService @Inject constructor( db.collectionGroup(FIRESTORE_COLLECTION_SPACE_MEMBERS).whereEqualTo("user_id", userId) .snapshotFlow(ApiSpaceMember::class.java) - suspend fun doesUserHaveAnySpace(userId: String): Boolean { - return try { - val querySnapshot = db.collectionGroup(FIRESTORE_COLLECTION_SPACE_MEMBERS) - .whereEqualTo("user_id", userId) - .limit(1) - .get() - .await() - - querySnapshot.documents.isNotEmpty() - } catch (e: Exception) { - Timber.e(e, "Error checking if user is part of any space") - false - } - } - fun getMemberBySpaceId(spaceId: String) = spaceMemberRef(spaceId).snapshotFlow(ApiSpaceMember::class.java) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 34ccf0eb..97cddcbe 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -10,7 +10,6 @@ import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USERS import com.canopas.yourspace.data.utils.Device import com.canopas.yourspace.data.utils.EncryptionException -import com.canopas.yourspace.data.utils.KeyHelper import com.canopas.yourspace.data.utils.PrivateKeyUtils import com.canopas.yourspace.data.utils.snapshotFlow import com.google.android.gms.auth.api.signin.GoogleSignInAccount @@ -24,6 +23,9 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.runBlocking import kotlinx.coroutines.tasks.await import kotlinx.coroutines.withContext +import org.signal.libsignal.protocol.IdentityKey +import org.signal.libsignal.protocol.IdentityKeyPair +import org.signal.libsignal.protocol.ecc.Curve import timber.log.Timber import javax.inject.Inject import javax.inject.Singleton @@ -37,8 +39,7 @@ class ApiUserService @Inject constructor( private val device: Device, private val locationService: ApiLocationService, private val functions: FirebaseFunctions, - userPreferences: UserPreferences, - private val privateKeyUtils: PrivateKeyUtils + private val userPreferences: UserPreferences ) { private val currentUser = userPreferences.currentUser private val userRef = db.collection(FIRESTORE_COLLECTION_USERS) @@ -118,27 +119,41 @@ class ApiUserService @Inject constructor( } } - suspend fun saveSenderKeyRecord(address: String, deviceId: Int, distributionId: String) { - } - - suspend fun generateAndSaveUserKeys(userId: String, passKey: String) { - val identityKeyPair = KeyHelper.generateIdentityKeyPair() + suspend fun generateAndSaveUserKeys(user: ApiUser, passKey: String): ApiUser { + val identityKeyPair = generateIdentityKeyPair() val salt = ByteArray(16).apply { Random.nextBytes(this) } - val encryptedPrivateKey = privateKeyUtils.encryptPrivateKey( + val encryptedPrivateKey = PrivateKeyUtils.encryptPrivateKey( identityKeyPair.privateKey.serialize(), passkey = passKey, salt = salt ) - userRef.document(userId).update( + // Store passkey in preferences + userPreferences.storePasskey(passKey) + + userRef.document(user.id).update( mapOf( "identity_key_public" to Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), "identity_key_private" to Blob.fromBytes(encryptedPrivateKey), "identity_key_salt" to Blob.fromBytes(salt) ) ).await() + return user.copy( + identity_key_public = Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), + identity_key_private = Blob.fromBytes(identityKeyPair.privateKey.serialize()), + identity_key_salt = Blob.fromBytes(salt) + ) + } + + /** + * Generates a new IdentityKeyPair. + * */ + private fun generateIdentityKeyPair(): IdentityKeyPair { + val keyPair = Curve.generateKeyPair() + val publicKey = IdentityKey(keyPair.publicKey) + return IdentityKeyPair(publicKey, keyPair.privateKey) } - fun validatePasskey(user: ApiUser, passKey: String): ByteArray? { + suspend fun validatePasskey(user: ApiUser, passKey: String): ByteArray? { val decryptedPrivateKey = decryptPrivateKey(user, passKey) return if (decryptedPrivateKey != null) { decryptedPrivateKey @@ -152,12 +167,12 @@ class ApiUserService @Inject constructor( * Decrypts the private key using the stored passkey/PIN and salt from ApiUser. * Returns the decrypted private key as ByteArray. */ - private fun decryptPrivateKey(user: ApiUser, pin: String? = null): ByteArray? { + private suspend fun decryptPrivateKey(user: ApiUser, pin: String? = null): ByteArray? { val encryptedPrivateKey = user.identity_key_private?.toBytes() ?: return null val salt = user.identity_key_salt?.toBytes() ?: return null return try { - val decrypted = privateKeyUtils.decryptPrivateKey(encryptedPrivateKey, salt, pin) - Timber.e("XXXXXX: Encrypted Private Key: $encryptedPrivateKey\nDecrypted: $decrypted") + val passkey = pin ?: userPreferences.getPasskey() ?: return null + val decrypted = PrivateKeyUtils.decryptPrivateKey(encryptedPrivateKey, salt, passkey) decrypted } catch (e: EncryptionException) { Timber.e(e, "Failed to decrypt private key for user ${user.id}") diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index b77a3d19..fdaa5431 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -2,6 +2,8 @@ package com.canopas.yourspace.data.storage.bufferedkeystore import com.canopas.yourspace.data.models.user.ApiSenderKeyRecord import com.canopas.yourspace.data.storage.UserPreferences +import com.canopas.yourspace.data.storage.database.SenderKeyDao +import com.canopas.yourspace.data.storage.database.SenderKeyEntity import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USER_SENDER_KEY_RECORD @@ -14,34 +16,38 @@ import org.signal.libsignal.protocol.groups.state.SenderKeyRecord import timber.log.Timber import java.util.UUID import javax.inject.Inject +import javax.inject.Named import javax.inject.Singleton /** - * An in-memory sender key store that is intended to be used temporarily while decrypting messages. + * An in-memory sender key store with persistent and server backup. */ @Singleton class BufferedSenderKeyStore @Inject constructor( db: FirebaseFirestore, + @Named("sender_key_dao") private val senderKeyDao: SenderKeyDao, private val userPreferences: UserPreferences ) : SignalServiceSenderKeyStore { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) + private fun spaceMemberRef(spaceId: String) = - spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") + spaceRef.document(spaceId.ifBlank { "null" }) .collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) private fun spaceSenderKeyRecordRef(spaceId: String, userId: String) = spaceMemberRef(spaceId) - .document(userId.takeIf { it.isNotBlank() } ?: "null") + .document(userId.ifBlank { "null" }) .collection(FIRESTORE_COLLECTION_USER_SENDER_KEY_RECORD) - private val store: MutableMap = HashMap() - - /** All of the keys that have been created or updated during operation. */ - private val updatedKeys: MutableMap = mutableMapOf() + private val inMemoryStore: MutableMap = mutableMapOf() + private val sharedWithAddresses: MutableSet = mutableSetOf() - /** All of the distributionId's whose sharing has been cleared during operation. */ - private val clearSharedWith: MutableSet = mutableSetOf() + private suspend fun saveSenderKeyToServer(distributionId: UUID, senderKeyRecord: ApiSenderKeyRecord) { + val currentUser = userPreferences.currentUser ?: return + spaceSenderKeyRecordRef(distributionId.toString(), currentUser.id) + .document(distributionId.toString()).set(senderKeyRecord).await() + } override fun storeSenderKey( sender: SignalProtocolAddress, @@ -49,72 +55,77 @@ class BufferedSenderKeyStore @Inject constructor( record: SenderKeyRecord ) { val key = StoreKey(sender, distributionId) - store[key] = record - updatedKeys[key] = record + if (inMemoryStore.containsKey(key)) { + Timber.d("Sender key already exists for $sender and $distributionId") + return + } + inMemoryStore[key] = record runBlocking { - val currentUser = userPreferences.currentUser ?: return@runBlocking + senderKeyDao.insertSenderKey( + SenderKeyEntity( + address = sender.name, + deviceId = sender.deviceId, + distributionId = distributionId.toString(), + record = record.serialize() + ) + ) + val senderKeyRecord = ApiSenderKeyRecord( address = sender.name, deviceId = sender.deviceId, distributionId = distributionId.toString(), record = Blob.fromBytes(record.serialize()) ) - spaceSenderKeyRecordRef( - distributionId.toString(), - currentUser.id - ).document().set(senderKeyRecord).await() + saveSenderKeyToServer(distributionId, senderKeyRecord) } } - override fun loadSenderKey( - sender: SignalProtocolAddress, - distributionId: UUID - ): SenderKeyRecord? { - return store[StoreKey(sender, distributionId)] - ?: runBlocking { - val currentUser = userPreferences.currentUser ?: return@runBlocking null - val fromServer: SenderKeyRecord? = - spaceSenderKeyRecordRef( - distributionId.toString(), - currentUser.id - ).document().get().await().toObject(ApiSenderKeyRecord::class.java)?.let { - try { - SenderKeyRecord(it.record.toBytes()) - } catch (e: Exception) { - Timber.e(e, "Error while loading sender key record") - null - } - } - if (fromServer != null) { - store[StoreKey(sender, distributionId)] = fromServer - } + override fun loadSenderKey(sender: SignalProtocolAddress, distributionId: UUID): SenderKeyRecord? { + val key = StoreKey(sender, distributionId) + return inMemoryStore[key] ?: runBlocking { + senderKeyDao.getSenderKeyRecord( + address = sender.name, + deviceId = sender.deviceId, + distributionId = distributionId.toString() + )?.let { + inMemoryStore[key] = it + it + } ?: fetchSenderKeyFromServer(distributionId)?.also { + inMemoryStore[key] = it + } + } + } - fromServer + private suspend fun fetchSenderKeyFromServer(distributionId: UUID): SenderKeyRecord? { + val currentUser = userPreferences.currentUser ?: return null + return spaceSenderKeyRecordRef(distributionId.toString(), currentUser.id) + .document(distributionId.toString()).get().await().toObject(ApiSenderKeyRecord::class.java)?.let { + try { + SenderKeyRecord(it.record.toBytes()) + } catch (e: Exception) { + Timber.e(e, "Failed to deserialize sender key record") + null + } } } override fun getSenderKeySharedWith(distributionId: DistributionId?): MutableSet { - error("Should not happen during the intended usage pattern of this class") + throw UnsupportedOperationException("Should not happen during the intended usage pattern of this class") } override fun markSenderKeySharedWith( distributionId: DistributionId?, addresses: Collection? ) { - error("Should not happen during the intended usage pattern of this class") + throw UnsupportedOperationException("Should not happen during the intended usage pattern of this class") } override fun clearSenderKeySharedWith(addresses: Collection?) { addresses?.forEach { address -> - address?.let { clearSharedWith.add(it) } + address?.let { sharedWithAddresses.add(it) } } } - private fun UUID.toDistributionId() = DistributionId.from(this) - - data class StoreKey( - val address: SignalProtocolAddress, - val distributionId: UUID - ) + data class StoreKey(val address: SignalProtocolAddress, val distributionId: UUID) } diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt index 3fa856a2..78531780 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt @@ -55,11 +55,4 @@ interface SenderKeyDao { deviceId: Int, distributionId: String ) - - @Query( - """ - SELECT * FROM sender_keys - """ - ) - suspend fun getAllSenderKeys(): List } diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt b/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt deleted file mode 100644 index f5ef5fbf..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/utils/KeyHelper.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.canopas.yourspace.data.utils - -import org.signal.libsignal.protocol.IdentityKey -import org.signal.libsignal.protocol.IdentityKeyPair -import org.signal.libsignal.protocol.ecc.Curve -import org.signal.libsignal.protocol.state.PreKeyRecord -import org.signal.libsignal.protocol.state.SignedPreKeyRecord -import org.signal.libsignal.protocol.util.KeyHelper -import org.signal.libsignal.zkgroup.profiles.ProfileKey -import java.security.SecureRandom - -private const val INTEGER_MAX = 0x7fffffff - -object KeyHelper { - fun generateIdentityKeyPair(): IdentityKeyPair { - val keyPair = Curve.generateKeyPair() - val publicKey = IdentityKey(keyPair.publicKey) - return IdentityKeyPair(publicKey, keyPair.privateKey) - } - - fun getProfileKey(): ProfileKey { - return ProfileKey(SecureRandom().generateSeed(32)) - } - - fun generateRegistrationId(extendedRange: Boolean): Int { - return KeyHelper.generateRegistrationId(extendedRange) - } - - fun generatePreKeys(start: Int, count: Int): List { - val results = mutableListOf() - for (i in 0 until count) { - results.add(PreKeyRecord(start + i, Curve.generateKeyPair())) - } - return results - } - - fun generateSignedPreKey(identityKeyPair: IdentityKeyPair, signedPreKeyId: Int): SignedPreKeyRecord { - val keyPair = Curve.generateKeyPair() - val signature = - Curve.calculateSignature(identityKeyPair.privateKey, keyPair.publicKey.serialize()) - return SignedPreKeyRecord(signedPreKeyId, System.currentTimeMillis(), keyPair, signature) - } - - fun generateSignedPreKeyId(): Int { - val random = SecureRandom() - return random.nextInt(INTEGER_MAX) - } -} diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt index 7ef40f31..abd45f43 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt @@ -1,7 +1,5 @@ package com.canopas.yourspace.data.utils -import com.canopas.yourspace.data.storage.UserPreferences -import kotlinx.coroutines.runBlocking import timber.log.Timber import javax.crypto.Cipher import javax.crypto.SecretKey @@ -9,23 +7,18 @@ import javax.crypto.SecretKeyFactory import javax.crypto.spec.GCMParameterSpec import javax.crypto.spec.PBEKeySpec import javax.crypto.spec.SecretKeySpec -import javax.inject.Inject -import javax.inject.Singleton import kotlin.random.Random -class EncryptionException(message: String, cause: Throwable? = null) : Exception(message, cause) +private const val AES_ALGORITHM = "AES/GCM/NoPadding" +private const val KEY_DERIVATION_ALGORITHM = "PBKDF2WithHmacSHA256" +private const val KEY_SIZE = 256 // bits +private const val ITERATION_COUNT = 10000 +private const val GCM_IV_SIZE = 12 // bytes +private const val GCM_TAG_SIZE = 128 // bits -@Singleton -class PrivateKeyUtils @Inject constructor(private val userPreferences: UserPreferences) { +class EncryptionException(message: String, cause: Throwable? = null) : Exception(message, cause) - companion object { - private const val AES_ALGORITHM = "AES/GCM/NoPadding" - private const val KEY_DERIVATION_ALGORITHM = "PBKDF2WithHmacSHA256" - private const val KEY_SIZE = 256 // bits - private const val ITERATION_COUNT = 10000 - private const val GCM_IV_SIZE = 12 // bytes - private const val GCM_TAG_SIZE = 128 // bits - } +object PrivateKeyUtils { /** * Derives a SecretKey from the user's passkey/PIN using PBKDF2. @@ -90,9 +83,6 @@ class PrivateKeyUtils @Inject constructor(private val userPreferences: UserPrefe if (salt.isEmpty()) { throw EncryptionException("Salt is empty") } - runBlocking { - userPreferences.storePasskey(passkey) - } val key = deriveKeyFromPasskey(passkey, salt) return encryptData(privateKey, key) } @@ -100,11 +90,8 @@ class PrivateKeyUtils @Inject constructor(private val userPreferences: UserPrefe /** * Decrypts the private key using the user's passkey/PIN and salt from ApiUser. */ - fun decryptPrivateKey(encryptedPrivateKey: ByteArray, salt: ByteArray, pin: String?): ByteArray? { + fun decryptPrivateKey(encryptedPrivateKey: ByteArray, salt: ByteArray, passkey: String): ByteArray? { return try { - val passkey = runBlocking { - pin ?: userPreferences.getPasskey() - } ?: return null val key = deriveKeyFromPasskey(passkey, salt) decryptData(encryptedPrivateKey, key) } catch (e: EncryptionException) { diff --git a/firestore.rules b/firestore.rules index bb5fdc98..e42b1d39 100644 --- a/firestore.rules +++ b/firestore.rules @@ -131,11 +131,44 @@ service cloud.firestore { allow write: if false; } + match /spaces/{spaceId}/group_keys/{senderId} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + + allow create: if isAuthorized() && + request.auth.uid == senderId && + isSpaceMember(spaceId) && + request.resource.data.keys().hasAll(["senderId", "distributions", "createdAt"]) && + request.resource.data.senderId is string && + request.resource.data.distributions is list && + request.resource.data.createdAt is int; + + allow update: if isAuthorized() && isSpaceMember(spaceId); + allow delete: if isAuthorized() && isSpaceMember(spaceId); + } + + match /spaces/{spaceId}/space_members/{userId}/sender_key_record/{docId} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + allow write: if isAuthorized() && request.auth.uid == userId && isSpaceMember(spaceId); + allow delete: if false; // Disallow deletion for safety, adjust if needed. + allow create: if isAuthorized() && + request.auth.uid == userId && + isSpaceMember(spaceId) && + request.resource.data.keys().hasAll(["address", "deviceId", "distributionId", "record"]) && + request.resource.data.address is string && + request.resource.data.deviceId is int && + request.resource.data.distributionId is string && + request.resource.data.record is bytes; + } + match /spaces/{spaceId}/space_places/{place} { allow read: if isAuthorized() && isSpaceMember(spaceId); allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.created_by); - allow update: if isAuthorized() && request.auth.uid == resource.data.created_by; + allow update: if isAuthorized() && + (request.auth.uid == resource.data.created_by || + (request.resource.data.diff(resource.data).affectedKeys().hasOnly(["space_member_ids"]) && + request.resource.data.space_member_ids.hasAny([request.auth.uid]) + )); allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.created_by) && request.resource.data.keys().hasAll(["id", "space_id", "created_by", "latitude", "longitude", "radius", "name", "created_at"]) && @@ -180,21 +213,6 @@ service cloud.firestore { allow write: if false; } - match /spaces/{spaceId}/group_keys/{senderId} { - allow read: if isAuthorized() && isSpaceMember(spaceId); - - allow create: if isAuthorized() && - request.auth.uid == senderId && - isSpaceMember(spaceId) && - request.resource.data.keys().hasAll(["senderId", "distributions", "createdAt"]) && - request.resource.data.senderId is string && - request.resource.data.distributions is list && - request.resource.data.createdAt is int; - - allow update: if false; - allow delete: if false; - } - match /spaces/{spaceId}/space_members/{member} { allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); @@ -267,9 +285,7 @@ service cloud.firestore { allow delete: if isAuthorized() && isThreadAdmin(docId); allow update: if isAuthorized() && isThreadMember(docId) && - request.resource.data.diff(resource.data).affectedKeys().hasAny(["member_ids", "archived_for"]) && - request.resource.data.get('member_ids', []) is list && - request.resource.data.get('archived_for', {}) is map; + request.resource.data.diff(resource.data).affectedKeys().hasAny(["member_ids", "archived_for", "seen_by_ids"]); allow create: if isAuthorized() && (isSpaceMember(request.resource.data.space_id)) && request.resource.data.keys().hasAll(["id", "space_id", "admin_id", "member_ids", "created_at"]) && From 2aed3d25655838b6075d69dac1c489f9707d8fcc Mon Sep 17 00:00:00 2001 From: cp-megh Date: Wed, 1 Jan 2025 13:46:10 +0530 Subject: [PATCH 11/39] final commit --- .../canopas/yourspace/YourSpaceApplication.kt | 2 +- .../ui/flow/pin/enterpin/EnterPinScreen.kt | 35 +- .../ui/flow/pin/enterpin/EnterPinViewModel.kt | 23 +- .../ui/flow/pin/setpin/SetPinScreen.kt | 35 +- .../ui/flow/pin/setpin/SetPinViewModel.kt | 18 +- app/src/main/res/values/strings.xml | 13 + .../auth/methods/SignInMethodViewModelTest.kt | 19 +- .../data/models/location/LocationJourney.kt | 15 +- .../service/location/ApiJourneyService.kt | 329 ++++++++++++++---- .../service/location/ApiLocationService.kt | 36 +- .../BufferedSenderKeyStore.kt | 16 +- firestore.rules | 65 ++-- 12 files changed, 430 insertions(+), 176 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt index 260071a3..280911f1 100644 --- a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt +++ b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt @@ -53,7 +53,7 @@ class YourSpaceApplication : super.onCreate() Timber.plant(Timber.DebugTree()) - FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = false + FirebaseCrashlytics.getInstance().isCrashlyticsCollectionEnabled = !BuildConfig.DEBUG ProcessLifecycleOwner.get().lifecycle.addObserver(this) authService.addListener(this) setNotificationChannel() diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt index 673e2a45..b1c3c502 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt @@ -12,15 +12,21 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import com.canopas.yourspace.R import com.canopas.yourspace.ui.component.OtpInputField import com.canopas.yourspace.ui.component.PrimaryButton @@ -29,9 +35,14 @@ import com.canopas.yourspace.ui.component.PrimaryButton fun EnterPinScreen() { Scaffold( topBar = { - TopAppBar(title = { Text("Enter Your PIN") }) + TopAppBar( + title = { Text(stringResource(R.string.enter_pin_top_bar_title)) }, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.background + ) + ) }, - contentColor = MaterialTheme.colorScheme.background + containerColor = MaterialTheme.colorScheme.background ) { EnterPinContent(modifier = Modifier.padding(it)) } @@ -41,6 +52,10 @@ fun EnterPinScreen() { private fun EnterPinContent(modifier: Modifier) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() + val context = LocalContext.current + val invalidPinText by remember { + mutableStateOf(context.getString(R.string.enter_pin_error_text)) + } Column( modifier = modifier @@ -50,16 +65,20 @@ private fun EnterPinContent(modifier: Modifier) { horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "Please enter your 4-digit PIN to access your account", + text = stringResource(R.string.enter_pin_header_text_part_one), style = MaterialTheme.typography.bodyLarge, - modifier = Modifier.fillMaxWidth().padding(bottom = 24.dp), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 24.dp), textAlign = TextAlign.Center ) Text( - text = "Your PIN ensures that only you can access your account", + text = stringResource(R.string.enter_pin_header_text_part_two), style = MaterialTheme.typography.bodyLarge, - modifier = Modifier.fillMaxWidth().padding(bottom = 24.dp), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 24.dp), textAlign = TextAlign.Center ) @@ -81,9 +100,9 @@ private fun EnterPinContent(modifier: Modifier) { Spacer(modifier = Modifier.height(24.dp)) PrimaryButton( - label = "Continue", + label = stringResource(R.string.enter_pin_continue_button_text), onClick = { - viewModel.processPin() + viewModel.processPin(invalidPinText) }, enabled = state.pin != "" && state.pinError == "", modifier = Modifier.fillMaxWidth(), diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt index 19b171c9..a08521dd 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt @@ -32,20 +32,7 @@ class EnterPinViewModel @Inject constructor( fun onPinChanged(newPin: String) { _state.value = _state.value.copy(pin = newPin) - if (newPin.length == 4) { - _state.value = _state.value.copy(pinError = "") - } - } - - private fun validatePin(newPin: String) { - _state.value = _state.value.copy( - pinError = - when { - newPin.length < 4 -> "Pin must be at least 4 characters" - !newPin.all { it.isDigit() } -> "PIN must contain only digits" - else -> "" - } - ) + _state.value = _state.value.copy(pinError = if (newPin.length == 4) "" else null) } fun checkInternetConnection() { @@ -60,10 +47,9 @@ class EnterPinViewModel @Inject constructor( } } - fun processPin() = viewModelScope.launch(appDispatcher.MAIN) { + fun processPin(invalidPinText: String) = viewModelScope.launch(appDispatcher.MAIN) { _state.value = _state.value.copy(showLoader = true) val pin = state.value.pin - validatePin(pin) if (pin.length == 4) { val isPinValid = authService.validatePasskey(passKey = pin) if (isPinValid) { @@ -74,10 +60,8 @@ class EnterPinViewModel @Inject constructor( inclusive = true ) } else { - _state.value = _state.value.copy(pinError = "Invalid Pin") + _state.value = _state.value.copy(pinError = invalidPinText) } - } else { - _state.value = _state.value.copy(pinError = "Pin must be 4 characters") } } } @@ -85,7 +69,6 @@ class EnterPinViewModel @Inject constructor( data class EnterPinScreenState( val showLoader: Boolean = false, val pin: String = "", - val confirmPin: String = "", val pinError: String? = null, val connectivityStatus: ConnectivityObserver.Status = ConnectivityObserver.Status.Available, val error: Exception? = null diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt index 2cde40ea..6525c28b 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt @@ -12,15 +12,21 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel +import com.canopas.yourspace.R import com.canopas.yourspace.ui.component.OtpInputField import com.canopas.yourspace.ui.component.PrimaryButton @@ -29,9 +35,14 @@ import com.canopas.yourspace.ui.component.PrimaryButton fun SetPinScreen() { Scaffold( topBar = { - TopAppBar(title = { Text("Set Your PIN") }) + TopAppBar( + title = { Text(stringResource(R.string.set_pin_top_bar_title)) }, + colors = TopAppBarDefaults.topAppBarColors( + containerColor = MaterialTheme.colorScheme.background + ) + ) }, - contentColor = MaterialTheme.colorScheme.background + containerColor = MaterialTheme.colorScheme.background ) { SetPinContent(modifier = Modifier.padding(it)) } @@ -41,6 +52,10 @@ fun SetPinScreen() { private fun SetPinContent(modifier: Modifier) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() + val context = LocalContext.current + val lengthErrorText by remember { + mutableStateOf(context.getString(R.string.set_pin_error_text_length)) + } Column( modifier = modifier @@ -50,16 +65,20 @@ private fun SetPinContent(modifier: Modifier) { horizontalAlignment = Alignment.CenterHorizontally ) { Text( - text = "Secure your account by setting a 4-digit PIN", + text = stringResource(R.string.set_pin_header_text_part_one), style = MaterialTheme.typography.bodyLarge, - modifier = Modifier.fillMaxWidth().padding(bottom = 24.dp), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 24.dp), textAlign = TextAlign.Center ) Text( - text = "Your PIN ensures that only you can access your account", + text = stringResource(R.string.set_pin_header_text_part_two), style = MaterialTheme.typography.bodyLarge, - modifier = Modifier.fillMaxWidth().padding(bottom = 24.dp), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 24.dp), textAlign = TextAlign.Center ) @@ -81,9 +100,9 @@ private fun SetPinContent(modifier: Modifier) { Spacer(modifier = Modifier.height(24.dp)) PrimaryButton( - label = "Set Pin", + label = stringResource(R.string.set_pin_button_text), onClick = { - viewModel.processPin() + viewModel.processPin(lengthErrorText) }, enabled = state.pin != "" && state.pinError == "", modifier = Modifier.fillMaxWidth(), diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt index 7afbfb74..35c41929 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -40,17 +40,6 @@ class SetPinViewModel @Inject constructor( } } - private fun validatePin(newPin: String) { - _state.value = _state.value.copy( - pinError = - when { - newPin.length < 4 -> "Pin must be at least 4 characters" - !newPin.all { it.isDigit() } -> "PIN must contain only digits" - else -> "" - } - ) - } - fun checkInternetConnection() { viewModelScope.launch(appDispatcher.IO) { connectivityObserver.observe().collectLatest { status -> @@ -63,10 +52,13 @@ class SetPinViewModel @Inject constructor( } } - fun processPin() = viewModelScope.launch(appDispatcher.MAIN) { + fun processPin(lengthError: String) = viewModelScope.launch(appDispatcher.MAIN) { _state.value = _state.value.copy(showLoader = true) val pin = state.value.pin - validatePin(pin) + if (pin.length < 4) { + _state.value = _state.value.copy(pinError = lengthError) + return@launch + } if (pin.length == 4) { authService.generateAndSaveUserKeys(passKey = pin) val userId = authService.getUser()?.id diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fb4fd06a..683f00f9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -307,4 +307,17 @@ Reassign Admin Before Deletion Please assign a new admin before proceeding with the account deletion to avoid data loss. \nYou are an admin of the following groups :\n%1$s + + Set Your PIN + Secure your account by setting a 4-digit PIN + Your PIN ensures that only you can access your account + Set Pin + Pin must be at least 4 characters + + Enter Your PIN + Enter your 4-digit PIN to access your account + Your PIN ensures that only you can access your account + Incorrect PIN. Please try again + Continue + \ No newline at end of file diff --git a/app/src/test/java/com/canopas/yourspace/ui/flow/auth/methods/SignInMethodViewModelTest.kt b/app/src/test/java/com/canopas/yourspace/ui/flow/auth/methods/SignInMethodViewModelTest.kt index dc00e1fa..8437b43f 100644 --- a/app/src/test/java/com/canopas/yourspace/ui/flow/auth/methods/SignInMethodViewModelTest.kt +++ b/app/src/test/java/com/canopas/yourspace/ui/flow/auth/methods/SignInMethodViewModelTest.kt @@ -2,6 +2,7 @@ package com.canopas.yourspace.ui.flow.auth.methods import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.canopas.yourspace.MainCoroutineRule +import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.service.auth.FirebaseAuthService import com.canopas.yourspace.data.storage.UserPreferences @@ -42,10 +43,12 @@ class SignInMethodViewModelTest { private val authService = mock() private val userPreferences = mock() private val connectivityObserver = mock() + private val currentUser = ApiUser(first_name = "first", last_name = "last") @Before fun setup() { whenever(connectivityObserver.observe()).thenReturn(flowOf(ConnectivityObserver.Status.Available)) + whenever(authService.currentUser).thenReturn(currentUser) viewModel = SignInMethodViewModel( navigator, @@ -82,20 +85,6 @@ class SignInMethodViewModelTest { verify(authService).verifiedGoogleLogin("uid", "firebaseToken", account) } - @Test - fun `proceedGoogleSignIn should navigate to home screen`() = runTest { - val account = mock() - whenever(account.idToken).thenReturn("token") - whenever(firebaseAuth.signInWithGoogleAuthCredential("token")) - .thenReturn("firebaseToken") - whenever(firebaseAuth.currentUserUid).thenReturn("uid") - - whenever(authService.verifiedGoogleLogin("uid", "firebaseToken", account)) - .thenReturn(false) - viewModel.proceedGoogleSignIn(account) - verify(navigator).navigateTo("home", "sign-in", true) - } - @Test fun `proceedGoogleSignIn should navigate to onboard screen`() = runTest { val account = mock() @@ -107,7 +96,7 @@ class SignInMethodViewModelTest { whenever(authService.verifiedGoogleLogin("uid", "firebaseToken", account)) .thenReturn(true) viewModel.proceedGoogleSignIn(account) - verify(navigator).navigateTo("onboard", "sign-in", true) + verify(navigator).navigateTo("set-pin", "sign-in", true) } @Test diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index a8d5c53c..fa465980 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -3,6 +3,7 @@ package com.canopas.yourspace.data.models.location import android.location.Location import androidx.annotation.Keep import com.google.android.gms.maps.model.LatLng +import com.google.firebase.firestore.Blob import com.squareup.moshi.JsonClass import java.util.UUID @@ -27,13 +28,13 @@ data class LocationJourney( data class EncryptedLocationJourney( val id: String = UUID.randomUUID().toString(), val user_id: String = "", - val encrypted_from_latitude: String = "", // Base64 encoded encrypted latitude - from - val encrypted_from_longitude: String = "", // Base64 encoded encrypted longitude - from - val encrypted_to_latitude: String? = "", // Base64 encoded encrypted latitude - to - val encrypted_to_longitude: String? = "", // Base64 encoded encrypted longitude - to + val encrypted_from_latitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted latitude - from + val encrypted_from_longitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted longitude - from + val encrypted_to_latitude: Blob? = null, // Encrypted latitude - to + val encrypted_to_longitude: Blob? = null, // Encrypted longitude - to val route_distance: Double? = null, val route_duration: Long? = null, - val encrypted_routes: List = emptyList(), // Base64 encoded encrypted journey routes + val encrypted_routes: List = emptyList(), // Encrypted journey routes val created_at: Long? = System.currentTimeMillis(), val updated_at: Long? = System.currentTimeMillis() ) @@ -44,8 +45,8 @@ data class JourneyRoute(val latitude: Double = 0.0, val longitude: Double = 0.0) @Keep @JsonClass(generateAdapter = true) data class EncryptedJourneyRoute( - val encrypted_latitude: String = "", // Base64 encoded encrypted latitude - val encrypted_longitude: String = "" // Base64 encoded encrypted longitude + val encrypted_latitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted latitude + val encrypted_longitude: Blob = Blob.fromBytes(ByteArray(0)) // Encrypted longitude ) fun Location.toRoute(): JourneyRoute { diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 14a6f146..19ad39be 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -1,41 +1,94 @@ package com.canopas.yourspace.data.service.location +import com.canopas.yourspace.data.models.location.EncryptedJourneyRoute +import com.canopas.yourspace.data.models.location.EncryptedLocationJourney import com.canopas.yourspace.data.models.location.JourneyRoute import com.canopas.yourspace.data.models.location.LocationJourney +import com.canopas.yourspace.data.models.space.SenderKeyDistribution +import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.storage.UserPreferences +import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS +import com.canopas.yourspace.data.utils.EphemeralECDHUtils +import com.canopas.yourspace.data.utils.PrivateKeyUtils +import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import com.google.firebase.firestore.toObject import kotlinx.coroutines.tasks.await +import org.signal.libsignal.protocol.InvalidKeyException +import org.signal.libsignal.protocol.SignalProtocolAddress +import org.signal.libsignal.protocol.ecc.Curve +import org.signal.libsignal.protocol.ecc.ECPrivateKey +import org.signal.libsignal.protocol.groups.GroupCipher +import org.signal.libsignal.protocol.groups.GroupSessionBuilder +import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage import timber.log.Timber +import java.util.UUID import javax.inject.Inject import javax.inject.Singleton @Singleton class ApiJourneyService @Inject constructor( db: FirebaseFirestore, - private val userPreferences: UserPreferences + private val userPreferences: UserPreferences, + private val bufferedSenderKeyStore: BufferedSenderKeyStore ) { - var currentSpaceId: String = userPreferences.currentSpace ?: "" - - // App crashes sometimes because of the empty userId string passed to document(). - // java.lang.IllegalArgumentException: Invalid document reference. - // Document references must have an even number of segments, but users has 1 - // https://stackoverflow.com/a/51195713/22508023 [Explanation can be found in comments] private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) - internal fun spaceMemberRef(spaceId: String) = - spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( - FIRESTORE_COLLECTION_SPACE_MEMBERS - ) + + private fun spaceMemberRef(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") + .collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) private fun spaceMemberJourneyRef(spaceId: String, userId: String) = - spaceMemberRef(spaceId) - .document(userId.takeIf { it.isNotBlank() } ?: "null") + spaceMemberRef(spaceId).document(userId.takeIf { it.isNotBlank() } ?: "null") .collection(Config.FIRESTORE_COLLECTION_USER_JOURNEYS) + private fun spaceGroupKeysRef(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") + .collection(Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) + + private suspend fun getGroupCipher(spaceId: String, userId: String): GroupCipher? { + val senderKeyDistributionRef = spaceGroupKeysRef(spaceId).document(userId).get().await() + val senderKeyDistribution = + senderKeyDistributionRef.toObject(SenderKeyDistribution::class.java) ?: return null + + val currentUser = userPreferences.currentUser ?: return null + + val privateKey = getCurrentUserPrivateKey(currentUser) ?: return null + + val distribution = + senderKeyDistribution.distributions.firstOrNull { it.recipientId == currentUser.id } + ?: return null + val decryptedDistributionBytes = + EphemeralECDHUtils.decrypt(distribution, privateKey) ?: return null + val distributionMessage = SenderKeyDistributionMessage(decryptedDistributionBytes) + + val groupAddress = SignalProtocolAddress(spaceId, senderKeyDistribution.senderDeviceId) + val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) + sessionBuilder.process(groupAddress, distributionMessage) + + return GroupCipher(bufferedSenderKeyStore, groupAddress) + } + + /** + * Decrypts and retrieves the current user's private key. + */ + private suspend fun getCurrentUserPrivateKey(currentUser: ApiUser): ECPrivateKey? { + return try { + Curve.decodePrivatePoint(currentUser.identity_key_private?.toBytes()) + } catch (e: InvalidKeyException) { + Timber.e(e, "Error decoding private key for userId=${currentUser.id}") + PrivateKeyUtils.decryptPrivateKey( + currentUser.identity_key_private?.toBytes() ?: return null, + currentUser.identity_key_salt?.toBytes() ?: return null, + userPreferences.getPasskey() ?: return null + )?.let { Curve.decodePrivatePoint(it) } + } + } + suspend fun saveCurrentJourney( userId: String, fromLatitude: Double, @@ -49,11 +102,14 @@ class ApiJourneyService @Inject constructor( updateAt: Long? = null, newJourneyId: ((String) -> Unit)? = null ) { - userPreferences.currentUser?.space_ids?.forEach { - val docRef = spaceMemberJourneyRef(it, userId).document() + userPreferences.currentUser?.space_ids?.forEach { spaceId -> + val groupCipher = getGroupCipher(spaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher for spaceId: $spaceId, userId: $userId") + return@forEach + } val journey = LocationJourney( - id = docRef.id, + id = UUID.randomUUID().toString(), user_id = userId, from_latitude = fromLatitude, from_longitude = fromLongitude, @@ -66,72 +122,227 @@ class ApiJourneyService @Inject constructor( update_at = updateAt ?: System.currentTimeMillis() ) - newJourneyId?.invoke(journey.id) + val docRef = spaceMemberJourneyRef(spaceId, userId).document(journey.id) + + val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher) + newJourneyId?.invoke(encryptedJourney.id) + + docRef.set(encryptedJourney).await() + } + } + + private fun LocationJourney.toEncryptedLocationJourney(groupCipher: GroupCipher): EncryptedLocationJourney { + val encryptedFromLat = groupCipher.encrypt( + UUID.fromString(id), + from_latitude.toString().toByteArray(Charsets.UTF_8) + ) + val encryptedFromLong = groupCipher.encrypt( + UUID.fromString(id), + from_longitude.toString().toByteArray(Charsets.UTF_8) + ) + val encryptedToLat = to_latitude?.let { + groupCipher.encrypt( + UUID.fromString(id), + it.toString().toByteArray(Charsets.UTF_8) + ) + } + val encryptedToLong = to_longitude?.let { + groupCipher.encrypt( + UUID.fromString(id), + it.toString().toByteArray(Charsets.UTF_8) + ) + } + + val encryptedRoutes = routes.map { + EncryptedJourneyRoute( + encrypted_latitude = Blob.fromBytes( + groupCipher.encrypt( + UUID.fromString(id), + it.latitude.toString().toByteArray(Charsets.UTF_8) + ).serialize() + ), + encrypted_longitude = Blob.fromBytes( + groupCipher.encrypt( + UUID.fromString(id), + it.longitude.toString().toByteArray(Charsets.UTF_8) + ).serialize() + ) + ) + } + + return EncryptedLocationJourney( + id = id, + user_id = user_id, + encrypted_from_latitude = Blob.fromBytes(encryptedFromLat.serialize()), + encrypted_from_longitude = Blob.fromBytes(encryptedFromLong.serialize()), + encrypted_to_latitude = encryptedToLat?.let { Blob.fromBytes(it.serialize()) }, + encrypted_to_longitude = encryptedToLong?.let { Blob.fromBytes(it.serialize()) }, + route_distance = route_distance, + route_duration = route_duration, + encrypted_routes = encryptedRoutes, + created_at = created_at, + updated_at = update_at + ) + } + + private fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher): LocationJourney { + val decryptedFromLat = groupCipher.decrypt(encrypted_from_latitude.toBytes()) + val decryptedFromLong = groupCipher.decrypt(encrypted_from_longitude.toBytes()) + val decryptedToLat = encrypted_to_latitude?.let { groupCipher.decrypt(it.toBytes()) } + val decryptedToLong = encrypted_to_longitude?.let { groupCipher.decrypt(it.toBytes()) } - docRef.set(journey).await() + val decryptedRoutes = encrypted_routes.map { + JourneyRoute( + latitude = groupCipher.decrypt(it.encrypted_latitude.toBytes()) + .toString(Charsets.UTF_8).toDouble(), + longitude = groupCipher.decrypt(it.encrypted_longitude.toBytes()) + .toString(Charsets.UTF_8).toDouble() + ) } + + return LocationJourney( + id = id, + user_id = user_id, + from_latitude = decryptedFromLat.toString(Charsets.UTF_8).toDouble(), + from_longitude = decryptedFromLong.toString(Charsets.UTF_8).toDouble(), + to_latitude = decryptedToLat?.toString(Charsets.UTF_8)?.toDouble(), + to_longitude = decryptedToLong?.toString(Charsets.UTF_8)?.toDouble(), + route_distance = route_distance, + route_duration = route_duration, + routes = decryptedRoutes, + created_at = created_at, + update_at = updated_at + ) } suspend fun updateLastLocationJourney(userId: String, journey: LocationJourney) { - try { - userPreferences.currentUser?.space_ids?.forEach { - spaceMemberJourneyRef(it, userId).document(journey.id).set(journey).await() + userPreferences.currentUser?.space_ids?.forEach { spaceId -> + val groupCipher = getGroupCipher(spaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher for spaceId: $spaceId, userId: $userId") + return@forEach + } + + val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher) + try { + spaceMemberJourneyRef(spaceId, userId).document(journey.id).set(encryptedJourney) + .await() + } catch (e: Exception) { + Timber.e( + e, + "Error while updating last location journey for spaceId: $spaceId, userId: $userId" + ) } - } catch (e: Exception) { - Timber.e(e, "Error while updating last location journey") } } - suspend fun getLastJourneyLocation(userId: String) = try { - spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) - .orderBy("created_at", Query.Direction.DESCENDING).limit(1) - .get().await().documents.firstOrNull()?.toObject() - } catch (e: Exception) { - Timber.e(e, "Error while getting last location journey") - null + suspend fun getLastJourneyLocation(userId: String): LocationJourney? { + val currentSpaceId = userPreferences.currentSpace ?: return null + val groupCipher = getGroupCipher(currentSpaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher for spaceId: $currentSpaceId, userId: $userId") + return null + } + + return try { + spaceMemberJourneyRef(currentSpaceId, userId) + .whereEqualTo("user_id", userId) + .orderBy("created_at", Query.Direction.DESCENDING) + .limit(1) + .get() + .await() + .documents + .firstOrNull() + ?.toObject() + ?.toDecryptedLocationJourney(groupCipher) + } catch (e: Exception) { + Timber.e(e, "Error while getting last location journey for userId: $userId") + null + } } - suspend fun getMoreJourneyHistory( - userId: String, - from: Long? - ): List { + suspend fun getMoreJourneyHistory(userId: String, from: Long?): List { + val currentSpaceId = userPreferences.currentSpace ?: return emptyList() + val groupCipher = getGroupCipher(currentSpaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher for spaceId: $currentSpaceId, userId: $userId") + return emptyList() + } + val query = if (from == null) { - spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId, userId) + .whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) .limit(20) } else { - spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) + spaceMemberJourneyRef(currentSpaceId, userId) + .whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) .whereLessThan("created_at", from) .limit(20) } - return query.get().await().documents.mapNotNull { it.toObject() } + + return try { + query.get().await().documents.mapNotNull { + it.toObject()?.toDecryptedLocationJourney(groupCipher) + } + } catch (e: Exception) { + Timber.e(e, "Error while getting journey history for userId: $userId") + emptyList() + } } - suspend fun getJourneyHistory( - userId: String, - from: Long, - to: Long - ): List { - val previousDayJourney = spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) - .whereLessThan("created_at", from) - .whereGreaterThanOrEqualTo("update_at", from) - .limit(1) - .get().await().documents.mapNotNull { it.toObject() } - - val currentDayJourney = spaceMemberJourneyRef(currentSpaceId, userId).whereEqualTo("user_id", userId) - .whereGreaterThanOrEqualTo("created_at", from) - .whereLessThanOrEqualTo("created_at", to) - .orderBy("created_at", Query.Direction.DESCENDING) - .limit(20) - .get().await().documents.mapNotNull { it.toObject() } - - return previousDayJourney + currentDayJourney + suspend fun getJourneyHistory(userId: String, from: Long, to: Long): List { + val currentSpaceId = userPreferences.currentSpace ?: return emptyList() + val groupCipher = getGroupCipher(currentSpaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher for spaceId: $currentSpaceId, userId: $userId") + return emptyList() + } + + return try { + val previousDayJourney = spaceMemberJourneyRef(currentSpaceId, userId) + .whereEqualTo("user_id", userId) + .whereLessThan("created_at", from) + .whereGreaterThanOrEqualTo("update_at", from) + .limit(1) + .get() + .await() + .documents + .mapNotNull { + it.toObject()?.toDecryptedLocationJourney(groupCipher) + } + + val currentDayJourney = spaceMemberJourneyRef(currentSpaceId, userId) + .whereEqualTo("user_id", userId) + .whereGreaterThanOrEqualTo("created_at", from) + .whereLessThanOrEqualTo("created_at", to) + .orderBy("created_at", Query.Direction.DESCENDING) + .limit(20) + .get() + .await() + .documents + .mapNotNull { + it.toObject()?.toDecryptedLocationJourney(groupCipher) + } + + previousDayJourney + currentDayJourney + } catch (e: Exception) { + Timber.e(e, "Error while getting journey history for userId: $userId") + emptyList() + } } suspend fun getLocationJourneyFromId(journeyId: String): LocationJourney? { - val userId = userPreferences.currentUser?.id ?: return null - return spaceMemberJourneyRef(currentSpaceId, userId).document(journeyId).get().await() - .toObject(LocationJourney::class.java) + val currentSpaceId = userPreferences.currentSpace ?: return null + val currentUser = userPreferences.currentUser ?: return null + val groupCipher = getGroupCipher(currentSpaceId, currentUser.id) ?: return null + + return try { + spaceMemberJourneyRef(currentSpaceId, currentUser.id).document(journeyId) + .get() + .await() + .toObject() + ?.toDecryptedLocationJourney(groupCipher) + } catch (e: Exception) { + Timber.e(e, "Error while getting journey by ID: $journeyId") + null + } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index e8d1a424..7b72d6df 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -44,13 +44,16 @@ class ApiLocationService @Inject constructor( private val spaceRef by lazy { db.collection(FIRESTORE_COLLECTION_SPACES) } private fun spaceMemberRef(spaceId: String) = - spaceRef.document(spaceId).collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") + .collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) private fun spaceMemberLocationRef(spaceId: String, userId: String) = - spaceMemberRef(spaceId).document(userId).collection(Config.FIRESTORE_COLLECTION_USER_LOCATIONS) + spaceMemberRef(spaceId.takeIf { it.isNotBlank() } ?: "null").document(userId) + .collection(Config.FIRESTORE_COLLECTION_USER_LOCATIONS) private fun spaceGroupKeysRef(spaceId: String) = - spaceRef.document(spaceId).collection(Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") + .collection(Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) suspend fun saveLastKnownLocation(userId: String) { val lastLocation = locationManager.getLastLocation() ?: return @@ -125,7 +128,10 @@ class ApiLocationService @Inject constructor( try { spaceMemberLocationRef(spaceId, userId).document(location.id).set(location).await() } catch (e: Exception) { - Timber.e(e, "Failed to save encrypted location for userId: $userId in spaceId: $spaceId") + Timber.e( + e, + "Failed to save encrypted location for userId: $userId in spaceId: $spaceId" + ) } } @@ -149,12 +155,17 @@ class ApiLocationService @Inject constructor( } } - private suspend fun decryptLocation(encryptedLocation: EncryptedApiLocation, userId: String): ApiLocation? { - val groupCipher = getGroupCipherAndDistributionMessage(currentSpaceId, userId)?.second ?: return null + private suspend fun decryptLocation( + encryptedLocation: EncryptedApiLocation, + userId: String + ): ApiLocation? { + val groupCipher = + getGroupCipherAndDistributionMessage(currentSpaceId, userId)?.second ?: return null return try { val latitudeBytes = groupCipher.decrypt(encryptedLocation.encrypted_latitude.toBytes()) - val longitudeBytes = groupCipher.decrypt(encryptedLocation.encrypted_longitude.toBytes()) + val longitudeBytes = + groupCipher.decrypt(encryptedLocation.encrypted_longitude.toBytes()) ApiLocation( id = encryptedLocation.id, @@ -201,7 +212,11 @@ class ApiLocationService @Inject constructor( senderDeviceId = senderKeyDistribution.senderDeviceId ) // Retry fetching the distribution after distribution - return getGroupCipherAndDistributionMessage(spaceId, userId, canDistributeSenderKey = false) + return getGroupCipherAndDistributionMessage( + spaceId, + userId, + canDistributeSenderKey = false + ) } null } ?: return null @@ -283,7 +298,10 @@ class ApiLocationService @Inject constructor( .await() Timber.d("Sender key distribution uploaded for new member: ${newMember.user_id} in spaceId=$spaceId.") } catch (e: Exception) { - Timber.e(e, "Failed to upload sender key distribution for new member userId=${newMember.user_id} in spaceId=$spaceId") + Timber.e( + e, + "Failed to upload sender key distribution for new member userId=${newMember.user_id} in spaceId=$spaceId" + ) } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index fdaa5431..67b2fbea 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -43,10 +43,10 @@ class BufferedSenderKeyStore @Inject constructor( private val inMemoryStore: MutableMap = mutableMapOf() private val sharedWithAddresses: MutableSet = mutableSetOf() - private suspend fun saveSenderKeyToServer(distributionId: UUID, senderKeyRecord: ApiSenderKeyRecord) { + private suspend fun saveSenderKeyToServer(senderKeyRecord: ApiSenderKeyRecord) { val currentUser = userPreferences.currentUser ?: return - spaceSenderKeyRecordRef(distributionId.toString(), currentUser.id) - .document(distributionId.toString()).set(senderKeyRecord).await() + spaceSenderKeyRecordRef(senderKeyRecord.distributionId, currentUser.id) + .document(senderKeyRecord.distributionId).set(senderKeyRecord).await() } override fun storeSenderKey( @@ -77,7 +77,7 @@ class BufferedSenderKeyStore @Inject constructor( distributionId = distributionId.toString(), record = Blob.fromBytes(record.serialize()) ) - saveSenderKeyToServer(distributionId, senderKeyRecord) + saveSenderKeyToServer(senderKeyRecord) } } @@ -91,16 +91,16 @@ class BufferedSenderKeyStore @Inject constructor( )?.let { inMemoryStore[key] = it it - } ?: fetchSenderKeyFromServer(distributionId)?.also { + } ?: fetchSenderKeyFromServer(sender)?.also { inMemoryStore[key] = it } } } - private suspend fun fetchSenderKeyFromServer(distributionId: UUID): SenderKeyRecord? { + private suspend fun fetchSenderKeyFromServer(sender: SignalProtocolAddress): SenderKeyRecord? { val currentUser = userPreferences.currentUser ?: return null - return spaceSenderKeyRecordRef(distributionId.toString(), currentUser.id) - .document(distributionId.toString()).get().await().toObject(ApiSenderKeyRecord::class.java)?.let { + return spaceSenderKeyRecordRef(sender.name.toString(), currentUser.id) + .document(sender.name.toString()).get().await().toObject(ApiSenderKeyRecord::class.java)?.let { try { SenderKeyRecord(it.record.toBytes()) } catch (e: Exception) { diff --git a/firestore.rules b/firestore.rules index e42b1d39..030a1eb9 100644 --- a/firestore.rules +++ b/firestore.rules @@ -133,31 +133,20 @@ service cloud.firestore { match /spaces/{spaceId}/group_keys/{senderId} { allow read: if isAuthorized() && isSpaceMember(spaceId); - allow create: if isAuthorized() && - request.auth.uid == senderId && - isSpaceMember(spaceId) && - request.resource.data.keys().hasAll(["senderId", "distributions", "createdAt"]) && - request.resource.data.senderId is string && - request.resource.data.distributions is list && - request.resource.data.createdAt is int; - + request.auth.uid == senderId && + isSpaceMember(spaceId) && + request.resource.data.keys().hasAll(["senderId", "distributions", "createdAt"]) && + request.resource.data.senderId is string && + request.resource.data.distributions is list && + request.resource.data.createdAt is int; allow update: if isAuthorized() && isSpaceMember(spaceId); allow delete: if isAuthorized() && isSpaceMember(spaceId); } - match /spaces/{spaceId}/space_members/{userId}/sender_key_record/{docId} { - allow read: if isAuthorized() && isSpaceMember(spaceId); - allow write: if isAuthorized() && request.auth.uid == userId && isSpaceMember(spaceId); - allow delete: if false; // Disallow deletion for safety, adjust if needed. - allow create: if isAuthorized() && - request.auth.uid == userId && - isSpaceMember(spaceId) && - request.resource.data.keys().hasAll(["address", "deviceId", "distributionId", "record"]) && - request.resource.data.address is string && - request.resource.data.deviceId is int && - request.resource.data.distributionId is string && - request.resource.data.record is bytes; + match /{path=**}/space_places/{place} { + allow read: if isAuthorized() && isSpaceMember(resource.data.space_id); + allow write: if false; } match /spaces/{spaceId}/space_places/{place} { @@ -165,10 +154,9 @@ service cloud.firestore { allow delete: if isAuthorized() && (isSpaceAdmin(resource.data.space_id) || request.auth.uid == resource.data.created_by); allow update: if isAuthorized() && - (request.auth.uid == resource.data.created_by || - (request.resource.data.diff(resource.data).affectedKeys().hasOnly(["space_member_ids"]) && - request.resource.data.space_member_ids.hasAny([request.auth.uid]) - )); + (request.auth.uid == resource.data.created_by || + (request.resource.data.diff(resource.data).affectedKeys().hasOnly(["space_member_ids"]) && + request.resource.data.space_member_ids.hasAny([request.auth.uid]))); allow create: if isAuthorized() && (isSpaceAdmin(request.resource.data.space_id) || request.auth.uid == request.resource.data.created_by) && request.resource.data.keys().hasAll(["id", "space_id", "created_by", "latitude", "longitude", "radius", "name", "created_at"]) && @@ -241,7 +229,14 @@ service cloud.firestore { (request.auth.uid == resource.data.user_id || readUserLocation()); allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; - allow create: if isAuthorized(); + allow create: if isAuthorized() && + request.auth.uid == request.resource.data.user_id && + request.resource.data.keys().hasAll(["id", "user_id", "encrypted_latitude", "encrypted_longitude", "created_at"]) && + request.resource.data.id is string && + request.resource.data.user_id is string && + request.resource.data.encrypted_latitude is bytes && + request.resource.data.encrypted_longitude is bytes && + request.resource.data.created_at is int; } match /user_journeys/{docId} { @@ -251,13 +246,27 @@ service cloud.firestore { allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && + request.resource.data.keys().hasAll(["id", "user_id", "encrypted_from_latitude", "encrypted_from_longitude", "created_at"]) && request.resource.data.id is string && request.resource.data.user_id is string && - request.resource.data.from_latitude is number && - request.resource.data.from_longitude is number && + request.resource.data.encrypted_from_latitude is bytes && + request.resource.data.encrypted_from_longitude is bytes && request.resource.data.created_at is int; } + + match /sender_key_record/{docId} { + allow read: if isAuthorized() && isSpaceMember(spaceId); + allow write: if isAuthorized() && isSpaceMember(spaceId); + allow delete: if false; + allow create: if isAuthorized() && + request.auth.uid == request.resource.data.user_id && + isSpaceMember(spaceId) && + request.resource.data.keys().hasAll(["address", "deviceId", "distributionId", "record"]) && + request.resource.data.address is string && + request.resource.data.deviceId is int && + request.resource.data.distributionId is string && + request.resource.data.record is bytes; + } } match /space_invitations/{docId} { From 9f4413cc1eb498ccc12d6cee88d86844a7cf7dec Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 2 Jan 2025 14:13:04 +0530 Subject: [PATCH 12/39] live updates pending --- .../ui/flow/onboard/OnboardViewModel.kt | 4 - .../yourspace/data/models/space/ApiSpace.kt | 15 +- .../service/location/ApiJourneyService.kt | 91 +++++++----- .../service/location/ApiLocationService.kt | 129 +++++++++--------- .../data/service/space/ApiSpaceService.kt | 41 ++++-- .../BufferedSenderKeyStore.kt | 35 +++-- firestore.rules | 10 +- 7 files changed, 190 insertions(+), 135 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/OnboardViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/OnboardViewModel.kt index dae356aa..8a3e6c61 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/OnboardViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/OnboardViewModel.kt @@ -36,10 +36,6 @@ class OnboardViewModel @Inject constructor( private val currentUser get() = authService.currentUser init { - Timber.e( - "XXXXXX:\n" + - "identity_key_public: ${userPreferences.currentUser?.identity_key_public?.toBytes()?.size}\n" - ) checkInternetConnection() val user = authService.currentUser _state.value = _state.value.copy( diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index 98666176..445f3e77 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -49,14 +49,23 @@ data class ApiSpaceInvitation( } /** + * Group key document structure for a single space. + */ +@Keep +data class GroupKeysDoc( + val docUpdatedAt: Long = System.currentTimeMillis(), // To be updated whenever users are added/removed + val senderKeys: Map = emptyMap() +) + +/* * Data class that represents the entire "groupKeys/{senderUserId}" doc * in Firestore for a single sender's key distribution. */ -data class SenderKeyDistribution( - val senderId: String = "", +@Keep +data class SenderKeyData( val senderDeviceId: Int = 0, val distributions: List = emptyList(), - val createdAt: Long = 0 + val dataUpdatedAt: Long = System.currentTimeMillis() // To be updated whenever a new distribution is added ) /** diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 19ad39be..9ea15d2b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -4,12 +4,13 @@ import com.canopas.yourspace.data.models.location.EncryptedJourneyRoute import com.canopas.yourspace.data.models.location.EncryptedLocationJourney import com.canopas.yourspace.data.models.location.JourneyRoute import com.canopas.yourspace.data.models.location.LocationJourney -import com.canopas.yourspace.data.models.space.SenderKeyDistribution +import com.canopas.yourspace.data.models.space.GroupKeysDoc import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.PrivateKeyUtils @@ -48,29 +49,40 @@ class ApiJourneyService @Inject constructor( private fun spaceGroupKeysRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") - .collection(Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) + .collection(FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) + .document(FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) - private suspend fun getGroupCipher(spaceId: String, userId: String): GroupCipher? { - val senderKeyDistributionRef = spaceGroupKeysRef(spaceId).document(userId).get().await() - val senderKeyDistribution = - senderKeyDistributionRef.toObject(SenderKeyDistribution::class.java) ?: return null + private suspend fun getGroupCipherAndDistributionMessage( + spaceId: String, + userId: String + ): Pair? { + val snapshot = spaceGroupKeysRef(spaceId).get().await() + val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: return null + val senderKeyData = groupKeysDoc.senderKeys[userId] ?: return null val currentUser = userPreferences.currentUser ?: return null - val privateKey = getCurrentUserPrivateKey(currentUser) ?: return null val distribution = - senderKeyDistribution.distributions.firstOrNull { it.recipientId == currentUser.id } + senderKeyData.distributions.firstOrNull { it.recipientId == currentUser.id } ?: return null val decryptedDistributionBytes = EphemeralECDHUtils.decrypt(distribution, privateKey) ?: return null val distributionMessage = SenderKeyDistributionMessage(decryptedDistributionBytes) - val groupAddress = SignalProtocolAddress(spaceId, senderKeyDistribution.senderDeviceId) - val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) - sessionBuilder.process(groupAddress, distributionMessage) + val groupAddress = SignalProtocolAddress(spaceId, senderKeyData.senderDeviceId) + bufferedSenderKeyStore.loadSenderKey(groupAddress, distributionMessage.distributionId) + + // Initialize the session + try { + GroupSessionBuilder(bufferedSenderKeyStore).process(groupAddress, distributionMessage) + } catch (e: Exception) { + Timber.e(e, "Error processing group session for spaceId=$spaceId, userId=$userId") + return null + } - return GroupCipher(bufferedSenderKeyStore, groupAddress) + val groupCipher = GroupCipher(bufferedSenderKeyStore, groupAddress) + return Pair(distributionMessage, groupCipher) } /** @@ -103,10 +115,11 @@ class ApiJourneyService @Inject constructor( newJourneyId: ((String) -> Unit)? = null ) { userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val groupCipher = getGroupCipher(spaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher for spaceId: $spaceId, userId: $userId") + val cipherAndMessage = getGroupCipherAndDistributionMessage(spaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $spaceId, userId: $userId") return@forEach } + val (distributionMessage, groupCipher) = cipherAndMessage val journey = LocationJourney( id = UUID.randomUUID().toString(), @@ -124,31 +137,35 @@ class ApiJourneyService @Inject constructor( val docRef = spaceMemberJourneyRef(spaceId, userId).document(journey.id) - val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher) + val encryptedJourney = + journey.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) newJourneyId?.invoke(encryptedJourney.id) docRef.set(encryptedJourney).await() } } - private fun LocationJourney.toEncryptedLocationJourney(groupCipher: GroupCipher): EncryptedLocationJourney { + private fun LocationJourney.toEncryptedLocationJourney( + groupCipher: GroupCipher, + distributionId: UUID + ): EncryptedLocationJourney { val encryptedFromLat = groupCipher.encrypt( - UUID.fromString(id), + distributionId, from_latitude.toString().toByteArray(Charsets.UTF_8) ) val encryptedFromLong = groupCipher.encrypt( - UUID.fromString(id), + distributionId, from_longitude.toString().toByteArray(Charsets.UTF_8) ) val encryptedToLat = to_latitude?.let { groupCipher.encrypt( - UUID.fromString(id), + distributionId, it.toString().toByteArray(Charsets.UTF_8) ) } val encryptedToLong = to_longitude?.let { groupCipher.encrypt( - UUID.fromString(id), + distributionId, it.toString().toByteArray(Charsets.UTF_8) ) } @@ -157,13 +174,13 @@ class ApiJourneyService @Inject constructor( EncryptedJourneyRoute( encrypted_latitude = Blob.fromBytes( groupCipher.encrypt( - UUID.fromString(id), + distributionId, it.latitude.toString().toByteArray(Charsets.UTF_8) ).serialize() ), encrypted_longitude = Blob.fromBytes( groupCipher.encrypt( - UUID.fromString(id), + distributionId, it.longitude.toString().toByteArray(Charsets.UTF_8) ).serialize() ) @@ -217,12 +234,14 @@ class ApiJourneyService @Inject constructor( suspend fun updateLastLocationJourney(userId: String, journey: LocationJourney) { userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val groupCipher = getGroupCipher(spaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher for spaceId: $spaceId, userId: $userId") + val cipherAndMessage = getGroupCipherAndDistributionMessage(spaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $spaceId, userId: $userId") return@forEach } + val (distributionMessage, groupCipher) = cipherAndMessage - val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher) + val encryptedJourney = + journey.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) try { spaceMemberJourneyRef(spaceId, userId).document(journey.id).set(encryptedJourney) .await() @@ -237,10 +256,11 @@ class ApiJourneyService @Inject constructor( suspend fun getLastJourneyLocation(userId: String): LocationJourney? { val currentSpaceId = userPreferences.currentSpace ?: return null - val groupCipher = getGroupCipher(currentSpaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher for spaceId: $currentSpaceId, userId: $userId") + val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: $userId") return null } + val (_, groupCipher) = cipherAndMessage return try { spaceMemberJourneyRef(currentSpaceId, userId) @@ -261,10 +281,11 @@ class ApiJourneyService @Inject constructor( suspend fun getMoreJourneyHistory(userId: String, from: Long?): List { val currentSpaceId = userPreferences.currentSpace ?: return emptyList() - val groupCipher = getGroupCipher(currentSpaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher for spaceId: $currentSpaceId, userId: $userId") + val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: $userId") return emptyList() } + val (_, groupCipher) = cipherAndMessage val query = if (from == null) { spaceMemberJourneyRef(currentSpaceId, userId) @@ -291,10 +312,11 @@ class ApiJourneyService @Inject constructor( suspend fun getJourneyHistory(userId: String, from: Long, to: Long): List { val currentSpaceId = userPreferences.currentSpace ?: return emptyList() - val groupCipher = getGroupCipher(currentSpaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher for spaceId: $currentSpaceId, userId: $userId") + val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, userId) ?: run { + Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: $userId") return emptyList() } + val (_, groupCipher) = cipherAndMessage return try { val previousDayJourney = spaceMemberJourneyRef(currentSpaceId, userId) @@ -332,7 +354,12 @@ class ApiJourneyService @Inject constructor( suspend fun getLocationJourneyFromId(journeyId: String): LocationJourney? { val currentSpaceId = userPreferences.currentSpace ?: return null val currentUser = userPreferences.currentUser ?: return null - val groupCipher = getGroupCipher(currentSpaceId, currentUser.id) ?: return null + val cipherAndMessage = + getGroupCipherAndDistributionMessage(currentSpaceId, currentUser.id) ?: run { + Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: ${currentUser.id}") + return null + } + val (_, groupCipher) = cipherAndMessage return try { spaceMemberJourneyRef(currentSpaceId, currentUser.id).document(journeyId) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 7b72d6df..b085016b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -3,18 +3,19 @@ package com.canopas.yourspace.data.service.location import com.canopas.yourspace.data.models.location.ApiLocation import com.canopas.yourspace.data.models.location.EncryptedApiLocation import com.canopas.yourspace.data.models.space.ApiSpaceMember -import com.canopas.yourspace.data.models.space.SenderKeyDistribution +import com.canopas.yourspace.data.models.space.GroupKeysDoc +import com.canopas.yourspace.data.models.space.SenderKeyData import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES +import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.PrivateKeyUtils import com.canopas.yourspace.data.utils.snapshotFlow import com.google.firebase.firestore.Blob -import com.google.firebase.firestore.FieldValue import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import kotlinx.coroutines.flow.Flow @@ -53,7 +54,8 @@ class ApiLocationService @Inject constructor( private fun spaceGroupKeysRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") - .collection(Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) + .collection(FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) + .document(FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) suspend fun saveLastKnownLocation(userId: String) { val lastLocation = locationManager.getLastLocation() ?: return @@ -180,6 +182,10 @@ class ApiLocationService @Inject constructor( } } + private suspend fun getSpaceMembers(spaceId: String): List { + return spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) + } + /** * Provide group cipher and sender key distribution message for a particular space and user. */ @@ -190,36 +196,13 @@ class ApiLocationService @Inject constructor( ): Pair? { val currentUser = userPreferences.currentUser ?: return null - val senderKeyDistribution = spaceGroupKeysRef(spaceId) - .document(userId) - .get() - .await() - .toObject(SenderKeyDistribution::class.java) ?: return null + val snapshot = spaceGroupKeysRef(spaceId).get().await() + val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: return null + val senderKeyData = groupKeysDoc.senderKeys[userId] ?: return null - val distribution = senderKeyDistribution.distributions - .firstOrNull { it.recipientId == currentUser.id } - ?: run { - if (canDistributeSenderKey) { - Timber.d("Distributing sender key to new member: userId=$userId in spaceId=$spaceId") - distributeSenderKeyToNewMember( - spaceId = spaceId, - senderUserId = senderKeyDistribution.senderId, - newMember = ApiSpaceMember( - user_id = userId, - space_id = spaceId, - identity_key_public = currentUser.identity_key_public - ), - senderDeviceId = senderKeyDistribution.senderDeviceId - ) - // Retry fetching the distribution after distribution - return getGroupCipherAndDistributionMessage( - spaceId, - userId, - canDistributeSenderKey = false - ) - } - null - } ?: return null + val distribution = senderKeyData.distributions.firstOrNull { + it.recipientId == currentUser.id + } ?: return null val currentUserPrivateKey = getCurrentUserPrivateKey(currentUser) ?: return null @@ -230,10 +213,29 @@ class ApiLocationService @Inject constructor( } val distributionMessage = SenderKeyDistributionMessage(decryptedDistribution) - val senderAddress = SignalProtocolAddress(spaceId, senderKeyDistribution.senderDeviceId) + val senderAddress = SignalProtocolAddress(spaceId, senderKeyData.senderDeviceId) bufferedSenderKeyStore.loadSenderKey(senderAddress, distributionMessage.distributionId) + // If the sender key data is outdated, we need to distribute the sender key to the pending users + if (senderKeyData.dataUpdatedAt < groupKeysDoc.docUpdatedAt && canDistributeSenderKey) { + // Here means the sender key data is outdated, so we need to distribute the sender key to the users. + val apiSpaceMembers = getSpaceMembers(spaceId) + val membersPendingForSenderKey = apiSpaceMembers.filter { member -> + senderKeyData.distributions.none { it.recipientId == member.user_id } + } + + if (membersPendingForSenderKey.isNotEmpty()) { + distributeSenderKeyToNewSpaceMembers( + spaceId = spaceId, + senderUserId = userId, + distributionMessage = distributionMessage, + senderDeviceId = senderKeyData.senderDeviceId, + apiSpaceMembers = membersPendingForSenderKey + ) + } + } + return try { GroupSessionBuilder(bufferedSenderKeyStore).process(senderAddress, distributionMessage) val groupCipher = GroupCipher(bufferedSenderKeyStore, senderAddress) @@ -261,47 +263,44 @@ class ApiLocationService @Inject constructor( } /** - * Distribute sender key to a new member. - */ - private suspend fun distributeSenderKeyToNewMember( + * Create a sender key distribution for the new users, and encrypt the distribution key + * for each member using their public key(ECDH). + **/ + private suspend fun distributeSenderKeyToNewSpaceMembers( spaceId: String, senderUserId: String, - newMember: ApiSpaceMember, - senderDeviceId: Int + distributionMessage: SenderKeyDistributionMessage, + senderDeviceId: Int, + apiSpaceMembers: List ) { - val groupAddress = SignalProtocolAddress(spaceId, senderDeviceId) - val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) - val distributionMessage = sessionBuilder.create(groupAddress, UUID.fromString(spaceId)) val distributionBytes = distributionMessage.serialize() + val docRef = spaceGroupKeysRef(spaceId) + val snapshot = docRef.get().await() + val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() - val publicBlob = newMember.identity_key_public ?: run { - Timber.e("New member's public key is null for userId=${newMember.user_id}") - return - } + val oldSenderKeyData = groupKeysDoc.senderKeys[senderUserId] ?: SenderKeyData() - val publicKey = try { - Curve.decodePoint(publicBlob.toBytes(), 0) - } catch (e: InvalidKeyException) { - Timber.e(e, "Invalid public key for new member userId=${newMember.user_id}") - return - } + val distributions = oldSenderKeyData.distributions.toMutableList() - val distribution = EphemeralECDHUtils.encrypt( - newMember.user_id, - distributionBytes, - publicKey - ) + for (member in apiSpaceMembers) { + val publicBlob = member.identity_key_public ?: continue + val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) - try { - spaceGroupKeysRef(spaceId).document(senderUserId) - .update("distributions", FieldValue.arrayUnion(distribution)) - .await() - Timber.d("Sender key distribution uploaded for new member: ${newMember.user_id} in spaceId=$spaceId.") - } catch (e: Exception) { - Timber.e( - e, - "Failed to upload sender key distribution for new member userId=${newMember.user_id} in spaceId=$spaceId" + // Encrypt distribution using member's public key + distributions.add( + EphemeralECDHUtils.encrypt( + member.user_id, + distributionBytes, + publicKey + ) ) } + + val newSenderKeyData = oldSenderKeyData.copy( + senderDeviceId = senderDeviceId, + distributions = distributions, + dataUpdatedAt = System.currentTimeMillis() + ) + docRef.update(mapOf("senderKeys.$senderUserId" to newSenderKeyData)).await() } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index d478b1f5..789b2036 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -3,9 +3,10 @@ package com.canopas.yourspace.data.service.space import com.canopas.yourspace.data.models.space.ApiSpace import com.canopas.yourspace.data.models.space.ApiSpaceMember import com.canopas.yourspace.data.models.space.EncryptedDistribution +import com.canopas.yourspace.data.models.space.GroupKeysDoc import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_ADMIN import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_MEMBER -import com.canopas.yourspace.data.models.space.SenderKeyDistribution +import com.canopas.yourspace.data.models.space.SenderKeyData import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.service.place.ApiPlaceService import com.canopas.yourspace.data.service.user.ApiUserService @@ -40,10 +41,10 @@ class ApiSpaceService @Inject constructor( spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") .collection(FIRESTORE_COLLECTION_SPACE_MEMBERS) - private fun spaceGroupKeysRef(spaceId: String) = - spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null").collection( - FIRESTORE_COLLECTION_SPACE_GROUP_KEYS - ) + private fun spaceGroupKeysDoc(spaceId: String) = + spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") + .collection(FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) + .document(FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) suspend fun createSpace(spaceName: String): String { val spaceId = UUID.randomUUID().toString() @@ -56,6 +57,11 @@ class ApiSpaceService @Inject constructor( admin_id = userId ) docRef.set(space).await() + + // Initialize the single group_keys doc to a default structure: + val emptyGroupKeys = GroupKeysDoc() + spaceGroupKeysDoc(spaceId).set(emptyGroupKeys).await() + joinSpace(spaceId, SPACE_MEMBER_ROLE_ADMIN) return spaceId } @@ -80,6 +86,10 @@ class ApiSpaceService @Inject constructor( apiUserService.addSpaceId(user.id, spaceId) + // Update the "docUpdatedAt" so others see membership changed + val docRef = spaceGroupKeysDoc(spaceId) + docRef.update("docUpdatedAt", System.currentTimeMillis()).await() + // Distribute sender key to all members distributeSenderKeyToSpaceMembers(spaceId, user.id) } @@ -107,17 +117,26 @@ class ApiSpaceService @Inject constructor( distributions.add(EphemeralECDHUtils.encrypt(member.user_id, distributionBytes, publicKey)) } - val docRef = spaceGroupKeysRef(spaceId).document(senderUserId) + val docRef = spaceGroupKeysDoc(spaceId) + val snapshot = docRef.get().await() + val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() - val data = SenderKeyDistribution( - senderId = senderUserId, + val oldSenderKeyData = groupKeysDoc.senderKeys[senderUserId] ?: SenderKeyData() + val newSenderKeyData = oldSenderKeyData.copy( senderDeviceId = deviceIdInt, distributions = distributions, - createdAt = System.currentTimeMillis() + dataUpdatedAt = System.currentTimeMillis() + ) + val updates = mapOf( + "senderKeys.$senderUserId" to newSenderKeyData.copy( + dataUpdatedAt = System.currentTimeMillis() + ), + "docUpdatedAt" to System.currentTimeMillis() ) - docRef.set(data).await() - Timber.d("Sender key distribution uploaded for $senderUserId in space $spaceId.") + docRef.update(updates).await() + + Timber.d("Sender key distribution updated for $senderUserId in space $spaceId") } suspend fun enableLocation(spaceId: String, userId: String, enable: Boolean) { diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index 67b2fbea..427c722a 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -54,8 +54,8 @@ class BufferedSenderKeyStore @Inject constructor( distributionId: UUID, record: SenderKeyRecord ) { - val key = StoreKey(sender, distributionId) - if (inMemoryStore.containsKey(key)) { + val key = StoreKey(sender, distributionId, sender.deviceId) + if (inMemoryStore.any { it.key.address.deviceId == sender.deviceId && it.key.distributionId == distributionId }) { Timber.d("Sender key already exists for $sender and $distributionId") return } @@ -82,7 +82,7 @@ class BufferedSenderKeyStore @Inject constructor( } override fun loadSenderKey(sender: SignalProtocolAddress, distributionId: UUID): SenderKeyRecord? { - val key = StoreKey(sender, distributionId) + val key = StoreKey(sender, distributionId, sender.deviceId) return inMemoryStore[key] ?: runBlocking { senderKeyDao.getSenderKeyRecord( address = sender.name, @@ -99,15 +99,26 @@ class BufferedSenderKeyStore @Inject constructor( private suspend fun fetchSenderKeyFromServer(sender: SignalProtocolAddress): SenderKeyRecord? { val currentUser = userPreferences.currentUser ?: return null - return spaceSenderKeyRecordRef(sender.name.toString(), currentUser.id) - .document(sender.name.toString()).get().await().toObject(ApiSenderKeyRecord::class.java)?.let { - try { - SenderKeyRecord(it.record.toBytes()) - } catch (e: Exception) { - Timber.e(e, "Failed to deserialize sender key record") - null + return try { + spaceSenderKeyRecordRef(sender.name.toString(), currentUser.id) + .whereEqualTo("deviceId", sender.deviceId) + .get() + .await() + .documents + .firstOrNull() + ?.toObject(ApiSenderKeyRecord::class.java) + ?.let { apiSenderKeyRecord -> + try { + SenderKeyRecord(apiSenderKeyRecord.record.toBytes()) + } catch (e: Exception) { + Timber.e(e, "Failed to deserialize sender key record") + null + } } - } + } catch (e: Exception) { + Timber.e(e, "Failed to fetch sender key from server for sender: $sender") + null + } } override fun getSenderKeySharedWith(distributionId: DistributionId?): MutableSet { @@ -127,5 +138,5 @@ class BufferedSenderKeyStore @Inject constructor( } } - data class StoreKey(val address: SignalProtocolAddress, val distributionId: UUID) + data class StoreKey(val address: SignalProtocolAddress, val distributionId: UUID, val senderDeviceId: Int) } diff --git a/firestore.rules b/firestore.rules index 030a1eb9..90ee2bff 100644 --- a/firestore.rules +++ b/firestore.rules @@ -131,15 +131,9 @@ service cloud.firestore { allow write: if false; } - match /spaces/{spaceId}/group_keys/{senderId} { + match /spaces/{spaceId}/group_keys/group_keys { allow read: if isAuthorized() && isSpaceMember(spaceId); - allow create: if isAuthorized() && - request.auth.uid == senderId && - isSpaceMember(spaceId) && - request.resource.data.keys().hasAll(["senderId", "distributions", "createdAt"]) && - request.resource.data.senderId is string && - request.resource.data.distributions is list && - request.resource.data.createdAt is int; + allow create: if isAuthorized() && isSpaceAdmin(spaceId); allow update: if isAuthorized() && isSpaceMember(spaceId); allow delete: if isAuthorized() && isSpaceMember(spaceId); } From 557f29ecb87b1c098c8c5f1a6e83b1bb8e4fbed2 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 2 Jan 2025 15:59:18 +0530 Subject: [PATCH 13/39] final commit --- .../data/service/auth/AuthService.kt | 9 +- .../service/location/ApiJourneyService.kt | 5 +- .../service/location/ApiLocationService.kt | 99 ++++++++++--------- .../yourspace/data/storage/UserPreferences.kt | 18 ++++ .../BufferedSenderKeyStore.kt | 1 - 5 files changed, 81 insertions(+), 51 deletions(-) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 56882e3b..9b6db9bf 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -9,7 +9,6 @@ import com.canopas.yourspace.data.storage.UserPreferences import com.google.android.gms.auth.api.signin.GoogleSignInAccount import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.FirebaseUser -import com.google.firebase.firestore.Blob import javax.inject.Inject import javax.inject.Singleton @@ -102,13 +101,15 @@ class AuthService @Inject constructor( currentUser = user } - fun signOut() { + suspend fun signOut() { locationManager.stopLocationTracking() currentUser = null currentUserSession = null userPreferences.isFCMRegistered = false userPreferences.setOnboardShown(false) userPreferences.currentSpace = "" + userPreferences.clearPasskey() + userPreferences.clearPrivateKey() firebaseAuth.signOut() locationManager.stopService() locationCache.clear() @@ -123,6 +124,8 @@ class AuthService @Inject constructor( suspend fun generateAndSaveUserKeys(passKey: String) { currentUser?.let { val updatedUser = apiUserService.generateAndSaveUserKeys(currentUser!!, passKey) + updatedUser.identity_key_private?.toBytes() + ?.let { privateKey -> userPreferences.storePrivateKey(privateKey) } currentUser = updatedUser } } @@ -132,7 +135,7 @@ class AuthService @Inject constructor( val validationResult = apiUserService.validatePasskey(user, passKey) if (validationResult != null) { userPreferences.storePasskey(passKey) - currentUser = currentUser?.copy(identity_key_private = Blob.fromBytes(validationResult)) + userPreferences.storePrivateKey(validationResult) } return validationResult != null } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 9ea15d2b..cb0cb0b5 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -89,12 +89,13 @@ class ApiJourneyService @Inject constructor( * Decrypts and retrieves the current user's private key. */ private suspend fun getCurrentUserPrivateKey(currentUser: ApiUser): ECPrivateKey? { + val privateKey = userPreferences.getPrivateKey() ?: currentUser.identity_key_private?.toBytes() return try { - Curve.decodePrivatePoint(currentUser.identity_key_private?.toBytes()) + Curve.decodePrivatePoint(privateKey) } catch (e: InvalidKeyException) { Timber.e(e, "Error decoding private key for userId=${currentUser.id}") PrivateKeyUtils.decryptPrivateKey( - currentUser.identity_key_private?.toBytes() ?: return null, + privateKey ?: return null, currentUser.identity_key_salt?.toBytes() ?: return null, userPreferences.getPasskey() ?: return null )?.let { Curve.decodePrivatePoint(it) } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index b085016b..49b16a24 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -19,14 +19,16 @@ import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.map import kotlinx.coroutines.tasks.await import org.signal.libsignal.protocol.InvalidKeyException +import org.signal.libsignal.protocol.NoSessionException import org.signal.libsignal.protocol.SignalProtocolAddress import org.signal.libsignal.protocol.ecc.Curve import org.signal.libsignal.protocol.ecc.ECPrivateKey import org.signal.libsignal.protocol.groups.GroupCipher import org.signal.libsignal.protocol.groups.GroupSessionBuilder +import org.signal.libsignal.protocol.groups.InvalidSenderKeySessionException import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage import timber.log.Timber import java.util.UUID @@ -102,60 +104,66 @@ class ApiLocationService @Inject constructor( longitude: Double, recordedAt: Long ) { - val cipherAndDistribution = getGroupCipherAndDistributionMessage( - spaceId = spaceId, - userId = userId, - canDistributeSenderKey = true - ) ?: return + try { + val cipherAndDistribution = getGroupCipherAndDistributionMessage( + spaceId = spaceId, + userId = userId, + canDistributeSenderKey = true + ) ?: return - val (distributionMessage, groupCipher) = cipherAndDistribution + val (distributionMessage, groupCipher) = cipherAndDistribution - val encryptedLatitude = groupCipher.encrypt( - distributionMessage.distributionId, - latitude.toString().toByteArray(Charsets.UTF_8) - ) - val encryptedLongitude = groupCipher.encrypt( - distributionMessage.distributionId, - longitude.toString().toByteArray(Charsets.UTF_8) - ) + val encryptedLatitude = groupCipher.encrypt( + distributionMessage.distributionId, + latitude.toString().toByteArray(Charsets.UTF_8) + ) + val encryptedLongitude = groupCipher.encrypt( + distributionMessage.distributionId, + longitude.toString().toByteArray(Charsets.UTF_8) + ) - val location = EncryptedApiLocation( - id = UUID.randomUUID().toString(), - user_id = userId, - encrypted_latitude = Blob.fromBytes(encryptedLatitude.serialize()), - encrypted_longitude = Blob.fromBytes(encryptedLongitude.serialize()), - created_at = recordedAt - ) + val location = EncryptedApiLocation( + id = UUID.randomUUID().toString(), + user_id = userId, + encrypted_latitude = Blob.fromBytes(encryptedLatitude.serialize()), + encrypted_longitude = Blob.fromBytes(encryptedLongitude.serialize()), + created_at = recordedAt + ) - try { spaceMemberLocationRef(spaceId, userId).document(location.id).set(location).await() } catch (e: Exception) { - Timber.e( - e, - "Failed to save encrypted location for userId: $userId in spaceId: $spaceId" - ) + when (e) { + is NoSessionException -> { + Timber.e("No session found for userId: $userId in spaceId: $spaceId. Skipping save.") + } + + is InvalidSenderKeySessionException -> { + Timber.e("Invalid sender key session for userId: $userId in spaceId: $spaceId. Skipping save.") + } + + else -> { + Timber.e(e, "Failed to save encrypted location for userId: $userId in spaceId: $spaceId") + } + } } } - fun getCurrentLocation(userId: String): Flow> = flow { - try { - val encryptedLocationsFlow = spaceMemberLocationRef(currentSpaceId, userId) - .whereEqualTo("user_id", userId) - .orderBy("created_at", Query.Direction.DESCENDING) - .limit(1) - .snapshotFlow(EncryptedApiLocation::class.java) - - encryptedLocationsFlow.collect { encryptedLocationList -> - emit( - encryptedLocationList.mapNotNull { encryptedLocation -> + fun getCurrentLocation(userId: String): Flow> = + spaceMemberLocationRef(currentSpaceId, userId) + .whereEqualTo("user_id", userId) + .orderBy("created_at", Query.Direction.DESCENDING) + .limit(1) + .snapshotFlow(EncryptedApiLocation::class.java) + .map { encryptedLocations -> + encryptedLocations.mapNotNull { encryptedLocation -> + try { decryptLocation(encryptedLocation, userId) + } catch (e: Exception) { + Timber.e(e, "Failed to decrypt location for userId: $userId") + null } - ) + } } - } catch (e: Exception) { - Timber.e(e, "Error while getting current location for userId: $userId") - } - } private suspend fun decryptLocation( encryptedLocation: EncryptedApiLocation, @@ -250,12 +258,13 @@ class ApiLocationService @Inject constructor( * Decrypts and retrieves the current user's private key. */ private suspend fun getCurrentUserPrivateKey(currentUser: ApiUser): ECPrivateKey? { + val privateKey = userPreferences.getPrivateKey() ?: currentUser.identity_key_private?.toBytes() return try { - Curve.decodePrivatePoint(currentUser.identity_key_private?.toBytes()) + Curve.decodePrivatePoint(privateKey) } catch (e: InvalidKeyException) { Timber.e(e, "Error decoding private key for userId=${currentUser.id}") PrivateKeyUtils.decryptPrivateKey( - currentUser.identity_key_private?.toBytes() ?: return null, + privateKey ?: return null, currentUser.identity_key_salt?.toBytes() ?: return null, userPreferences.getPasskey() ?: return null )?.let { Curve.decodePrivatePoint(it) } diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt b/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt index 931ad553..b2dcc8c1 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/UserPreferences.kt @@ -4,6 +4,7 @@ import android.util.Base64 import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.booleanPreferencesKey +import androidx.datastore.preferences.core.byteArrayPreferencesKey import androidx.datastore.preferences.core.edit import androidx.datastore.preferences.core.stringPreferencesKey import com.canopas.yourspace.data.models.user.ApiUser @@ -52,6 +53,7 @@ class UserPreferences @Inject constructor( val KEY_USER_MAP_STYLE = stringPreferencesKey("user_map_style") val KEY_USER_PASSKEY = stringPreferencesKey("user_passkey") + val KEY_USER_PRIVATE_KEY = byteArrayPreferencesKey("user_private_key") } suspend fun isIntroShown(): Boolean { @@ -188,6 +190,22 @@ class UserPreferences @Inject constructor( it.remove(KEY_USER_PASSKEY) } } + + suspend fun storePrivateKey(privateKey: ByteArray) { + preferencesDataStore.edit { preferences -> + preferences[PreferencesKey.KEY_USER_PRIVATE_KEY] = privateKey + } + } + + suspend fun getPrivateKey(): ByteArray? { + return preferencesDataStore.data.first()[PreferencesKey.KEY_USER_PRIVATE_KEY] + } + + suspend fun clearPrivateKey() { + preferencesDataStore.edit { + it.remove(PreferencesKey.KEY_USER_PRIVATE_KEY) + } + } } class BlobTypeAdapter { diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index 427c722a..12a7b708 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -56,7 +56,6 @@ class BufferedSenderKeyStore @Inject constructor( ) { val key = StoreKey(sender, distributionId, sender.deviceId) if (inMemoryStore.any { it.key.address.deviceId == sender.deviceId && it.key.distributionId == distributionId }) { - Timber.d("Sender key already exists for $sender and $distributionId") return } inMemoryStore[key] = record From 755fb1e4bccbbe0240ff3e6715889ddabc643184 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 2 Jan 2025 17:10:22 +0530 Subject: [PATCH 14/39] existing spaces changes --- .../flow/home/map/component/SelectedUserDetail.kt | 2 +- .../ui/flow/pin/setpin/SetPinViewModel.kt | 15 +++++++++------ .../yourspace/data/repository/SpaceRepository.kt | 4 ++++ .../data/service/space/ApiSpaceService.kt | 10 ++++++++++ firestore.rules | 2 +- 5 files changed, 25 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/component/SelectedUserDetail.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/component/SelectedUserDetail.kt index 2ce30946..5d719955 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/component/SelectedUserDetail.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/component/SelectedUserDetail.kt @@ -159,7 +159,7 @@ private fun MemberInfoView( val state by viewModel.state.collectAsState() var address by remember { mutableStateOf("") } - val time = timeAgo(location?.created_at ?: 0) + val time = timeAgo(location?.created_at ?: System.currentTimeMillis()) val userStateText = if (user.noNetwork) { stringResource(R.string.map_selected_user_item_no_network_state) } else if (user.locationPermissionDenied) { diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt index 35c41929..fbe0abc1 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -62,19 +62,22 @@ class SetPinViewModel @Inject constructor( if (pin.length == 4) { authService.generateAndSaveUserKeys(passKey = pin) val userId = authService.getUser()?.id - val userHasSpaces = userId?.let { - spaceRepository.getUserSpaces(it).firstOrNull()?.isNotEmpty() ?: false + val userSpaces = userId?.let { + spaceRepository.getUserSpaces(it) } - if (userHasSpaces == false) { + val userHasSpaces = userSpaces?.firstOrNull() != null + if (userHasSpaces) { + userPreferences.setOnboardShown(true) + spaceRepository.generateAndDistributeSenderKeysForExistingSpaces( + spaceIds = userSpaces?.firstOrNull()?.map { it.id } ?: emptyList()) navigator.navigateTo( - AppDestinations.onboard.path, + AppDestinations.home.path, popUpToRoute = AppDestinations.signIn.path, inclusive = true ) } else { - userPreferences.setOnboardShown(true) navigator.navigateTo( - AppDestinations.home.path, + AppDestinations.onboard.path, popUpToRoute = AppDestinations.signIn.path, inclusive = true ) diff --git a/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt b/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt index d2f31340..7512aa75 100644 --- a/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt +++ b/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt @@ -255,4 +255,8 @@ class SpaceRepository @Inject constructor( throw e } } + + suspend fun generateAndDistributeSenderKeysForExistingSpaces(spaceIds: List) { + spaceService.generateAndDistributeSenderKeysForExistingSpaces(spaceIds) + } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index 789b2036..7309d719 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -198,4 +198,14 @@ class ApiSpaceService @Inject constructor( throw e } } + + + suspend fun generateAndDistributeSenderKeysForExistingSpaces(spaceIds: List) { + val userId = authService.currentUser?.id ?: return + spaceIds.forEach { spaceId -> + val emptyGroupKeys = GroupKeysDoc() + spaceGroupKeysDoc(spaceId).set(emptyGroupKeys).await() + distributeSenderKeyToSpaceMembers(spaceId,userId) + } + } } diff --git a/firestore.rules b/firestore.rules index 90ee2bff..6bb59d5b 100644 --- a/firestore.rules +++ b/firestore.rules @@ -133,7 +133,7 @@ service cloud.firestore { match /spaces/{spaceId}/group_keys/group_keys { allow read: if isAuthorized() && isSpaceMember(spaceId); - allow create: if isAuthorized() && isSpaceAdmin(spaceId); + allow create: if isAuthorized() && (isSpaceAdmin(spaceId) || isSpaceMember(spaceId)); allow update: if isAuthorized() && isSpaceMember(spaceId); allow delete: if isAuthorized() && isSpaceMember(spaceId); } From 1d1f1a7725de4bc26b10554db6bcedc369888aad Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 2 Jan 2025 17:15:00 +0530 Subject: [PATCH 15/39] fix lint --- .../canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt | 3 ++- .../canopas/yourspace/data/service/space/ApiSpaceService.kt | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt index fbe0abc1..e755b804 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -69,7 +69,8 @@ class SetPinViewModel @Inject constructor( if (userHasSpaces) { userPreferences.setOnboardShown(true) spaceRepository.generateAndDistributeSenderKeysForExistingSpaces( - spaceIds = userSpaces?.firstOrNull()?.map { it.id } ?: emptyList()) + spaceIds = userSpaces?.firstOrNull()?.map { it.id } ?: emptyList() + ) navigator.navigateTo( AppDestinations.home.path, popUpToRoute = AppDestinations.signIn.path, diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index 7309d719..6b7646af 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -199,13 +199,12 @@ class ApiSpaceService @Inject constructor( } } - suspend fun generateAndDistributeSenderKeysForExistingSpaces(spaceIds: List) { val userId = authService.currentUser?.id ?: return spaceIds.forEach { spaceId -> val emptyGroupKeys = GroupKeysDoc() spaceGroupKeysDoc(spaceId).set(emptyGroupKeys).await() - distributeSenderKeyToSpaceMembers(spaceId,userId) + distributeSenderKeyToSpaceMembers(spaceId, userId) } } } From e8eaecbd6d1b839cf6b6136f90845fe74e4dd8ea Mon Sep 17 00:00:00 2001 From: cp-megh Date: Fri, 3 Jan 2025 10:59:26 +0530 Subject: [PATCH 16/39] fix session error and existing users flow --- .../canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt | 2 +- .../yourspace/data/service/location/ApiJourneyService.kt | 5 ++--- .../data/storage/bufferedkeystore/BufferedSenderKeyStore.kt | 3 ++- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt index e755b804..cf0bab40 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -65,7 +65,7 @@ class SetPinViewModel @Inject constructor( val userSpaces = userId?.let { spaceRepository.getUserSpaces(it) } - val userHasSpaces = userSpaces?.firstOrNull() != null + val userHasSpaces = userSpaces?.firstOrNull() != null && userSpaces.firstOrNull()?.isNotEmpty() == true if (userHasSpaces) { userPreferences.setOnboardShown(true) spaceRepository.generateAndDistributeSenderKeysForExistingSpaces( diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index cb0cb0b5..45c7d331 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -76,13 +76,12 @@ class ApiJourneyService @Inject constructor( // Initialize the session try { GroupSessionBuilder(bufferedSenderKeyStore).process(groupAddress, distributionMessage) + val groupCipher = GroupCipher(bufferedSenderKeyStore, groupAddress) + return Pair(distributionMessage, groupCipher) } catch (e: Exception) { Timber.e(e, "Error processing group session for spaceId=$spaceId, userId=$userId") return null } - - val groupCipher = GroupCipher(bufferedSenderKeyStore, groupAddress) - return Pair(distributionMessage, groupCipher) } /** diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index 12a7b708..ed8cca84 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -45,8 +45,9 @@ class BufferedSenderKeyStore @Inject constructor( private suspend fun saveSenderKeyToServer(senderKeyRecord: ApiSenderKeyRecord) { val currentUser = userPreferences.currentUser ?: return + val uniqueDocId = "${senderKeyRecord.deviceId}-${senderKeyRecord.distributionId}" spaceSenderKeyRecordRef(senderKeyRecord.distributionId, currentUser.id) - .document(senderKeyRecord.distributionId).set(senderKeyRecord).await() + .document(uniqueDocId).set(senderKeyRecord).await() } override fun storeSenderKey( From 24bb9de5e8b0f79e2894c8f3b2674e833e3e9dc3 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Fri, 3 Jan 2025 14:50:58 +0530 Subject: [PATCH 17/39] PR changes --- app/build.gradle.kts | 2 +- .../ui/flow/pin/enterpin/EnterPinScreen.kt | 22 ++-- .../ui/flow/pin/enterpin/EnterPinViewModel.kt | 26 ++-- .../ui/flow/pin/setpin/SetPinScreen.kt | 30 +++-- .../ui/flow/pin/setpin/SetPinViewModel.kt | 97 +++++++++------ app/src/main/res/values/strings.xml | 6 +- data/build.gradle.kts | 12 +- .../yourspace/data/di/AppDataProvider.kt | 3 +- .../data/models/location/ApiLocation.kt | 4 +- .../data/models/location/LocationJourney.kt | 8 +- .../yourspace/data/models/space/ApiSpace.kt | 24 +++- .../data/repository/SpaceRepository.kt | 7 +- .../data/service/auth/AuthService.kt | 38 +++--- .../service/location/ApiJourneyService.kt | 43 +++---- .../service/location/ApiLocationService.kt | 112 +++++++++++------- .../data/service/space/ApiSpaceService.kt | 64 +++++----- .../BufferedSenderKeyStore.kt | 24 ++-- .../data/storage/database/AppDatabase.kt | 8 ++ .../data/storage/database/SenderKeyDao.kt | 2 + .../data/utils/EphemeralECDHUtils.kt | 4 +- .../yourspace/data/utils/PrivateKeyUtils.kt | 2 +- firestore.rules | 11 +- 22 files changed, 345 insertions(+), 204 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4c84d7bb..76bdd23c 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -207,7 +207,7 @@ dependencies { implementation("androidx.core:core-splashscreen:1.0.1") // Desugaring - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.6") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") // Gson implementation("com.google.code.gson:gson:2.10.1") diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt index b1c3c502..7835c201 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt @@ -14,10 +14,9 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -29,6 +28,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import com.canopas.yourspace.R import com.canopas.yourspace.ui.component.OtpInputField import com.canopas.yourspace.ui.component.PrimaryButton +import com.canopas.yourspace.ui.flow.pin.setpin.PinErrorState @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -53,8 +53,14 @@ private fun EnterPinContent(modifier: Modifier) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() val context = LocalContext.current - val invalidPinText by remember { - mutableStateOf(context.getString(R.string.enter_pin_error_text)) + var pinErrorText = "" + LaunchedEffect(state.pinError) { + pinErrorText = when (state.pinError) { + PinErrorState.LENGTH_ERROR -> context.getString(R.string.enter_pin_error_text_length) + PinErrorState.CHARACTERS_ERROR -> context.getString(R.string.enter_pin_error_characters_input) + PinErrorState.INVALID_PIN -> context.getString(R.string.enter_pin_invalid_pin_text) + else -> "" + } } Column( @@ -91,8 +97,8 @@ private fun EnterPinContent(modifier: Modifier) { Spacer(modifier = Modifier.height(16.dp)) Text( - text = state.pinError ?: "", - color = if (!state.pinError.isNullOrEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, + text = pinErrorText, + color = if (pinErrorText.isNotEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, style = MaterialTheme.typography.bodyMedium, modifier = Modifier.padding(top = 8.dp) ) @@ -102,9 +108,9 @@ private fun EnterPinContent(modifier: Modifier) { PrimaryButton( label = stringResource(R.string.enter_pin_continue_button_text), onClick = { - viewModel.processPin(invalidPinText) + viewModel.processPin() }, - enabled = state.pin != "" && state.pinError == "", + enabled = state.pin != "" && state.pinError == null, modifier = Modifier.fillMaxWidth(), showLoader = state.showLoader ) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt index a08521dd..6fbe2f5d 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt @@ -6,6 +6,7 @@ import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.AppDispatcher import com.canopas.yourspace.domain.utils.ConnectivityObserver +import com.canopas.yourspace.ui.flow.pin.setpin.PinErrorState import com.canopas.yourspace.ui.navigation.AppDestinations import com.canopas.yourspace.ui.navigation.AppNavigator import dagger.hilt.android.lifecycle.HiltViewModel @@ -32,7 +33,18 @@ class EnterPinViewModel @Inject constructor( fun onPinChanged(newPin: String) { _state.value = _state.value.copy(pin = newPin) - _state.value = _state.value.copy(pinError = if (newPin.length == 4) "" else null) + if (newPin.length == 4) { + _state.value = _state.value.copy(pinError = null) + } + } + + private fun validatePin() { + val pin = state.value.pin + if (pin.length < 4) { + _state.value = _state.value.copy(pinError = PinErrorState.LENGTH_ERROR) + } else if (pin.length == 4 && !pin.contains(Regex("[0-9]"))) { + _state.value = _state.value.copy(pinError = PinErrorState.CHARACTERS_ERROR) + } } fun checkInternetConnection() { @@ -47,10 +59,11 @@ class EnterPinViewModel @Inject constructor( } } - fun processPin(invalidPinText: String) = viewModelScope.launch(appDispatcher.MAIN) { + fun processPin() = viewModelScope.launch(appDispatcher.MAIN) { _state.value = _state.value.copy(showLoader = true) val pin = state.value.pin - if (pin.length == 4) { + validatePin() + if (state.value.pinError == null) { val isPinValid = authService.validatePasskey(passKey = pin) if (isPinValid) { userPreferences.setOnboardShown(true) @@ -60,7 +73,7 @@ class EnterPinViewModel @Inject constructor( inclusive = true ) } else { - _state.value = _state.value.copy(pinError = invalidPinText) + _state.value = _state.value.copy(pinError = PinErrorState.INVALID_PIN) } } } @@ -69,7 +82,6 @@ class EnterPinViewModel @Inject constructor( data class EnterPinScreenState( val showLoader: Boolean = false, val pin: String = "", - val pinError: String? = null, - val connectivityStatus: ConnectivityObserver.Status = ConnectivityObserver.Status.Available, - val error: Exception? = null + val pinError: PinErrorState? = null, + val connectivityStatus: ConnectivityObserver.Status = ConnectivityObserver.Status.Available ) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt index 6525c28b..8d2575cf 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt @@ -14,10 +14,9 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -27,6 +26,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.canopas.yourspace.R +import com.canopas.yourspace.ui.component.AppBanner import com.canopas.yourspace.ui.component.OtpInputField import com.canopas.yourspace.ui.component.PrimaryButton @@ -53,8 +53,14 @@ private fun SetPinContent(modifier: Modifier) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() val context = LocalContext.current - val lengthErrorText by remember { - mutableStateOf(context.getString(R.string.set_pin_error_text_length)) + var pinErrorText = "" + + LaunchedEffect(state.pinError) { + pinErrorText = when (state.pinError) { + PinErrorState.LENGTH_ERROR -> context.getString(R.string.set_pin_error_text_length) + PinErrorState.CHARACTERS_ERROR -> context.getString(R.string.set_pin_error_characters_input) + else -> "" + } } Column( @@ -91,8 +97,8 @@ private fun SetPinContent(modifier: Modifier) { Spacer(modifier = Modifier.height(16.dp)) Text( - text = state.pinError ?: "", - color = if (!state.pinError.isNullOrEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, + text = pinErrorText, + color = if (pinErrorText.isNotEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, style = MaterialTheme.typography.bodyMedium, modifier = Modifier.padding(top = 8.dp) ) @@ -102,11 +108,19 @@ private fun SetPinContent(modifier: Modifier) { PrimaryButton( label = stringResource(R.string.set_pin_button_text), onClick = { - viewModel.processPin(lengthErrorText) + viewModel.processPin() }, - enabled = state.pin != "" && state.pinError == "", + enabled = state.pin != "" && state.pinError == null, modifier = Modifier.fillMaxWidth(), showLoader = state.showLoader ) } + + if (state.error != null) { + AppBanner( + msg = stringResource(R.string.common_something_went_wrong_error) + ) { + viewModel.onPinChanged("") + } + } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt index cf0bab40..e632fa64 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -17,6 +17,12 @@ import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch import javax.inject.Inject +enum class PinErrorState { + LENGTH_ERROR, + CHARACTERS_ERROR, + INVALID_PIN +} + @HiltViewModel class SetPinViewModel @Inject constructor( private val navigator: AppNavigator, @@ -36,7 +42,18 @@ class SetPinViewModel @Inject constructor( fun onPinChanged(newPin: String) { _state.value = _state.value.copy(pin = newPin) if (newPin.length == 4) { - _state.value = _state.value.copy(pinError = "") + _state.value = _state.value.copy(pinError = null) + } + } + + private fun validatePin() { + val pin = state.value.pin + if (pin.length < 4) { + _state.value = _state.value.copy(pinError = PinErrorState.LENGTH_ERROR) + } else if (pin.length == 4 && !pin.all { it.isDigit() }) { + _state.value = _state.value.copy(pinError = PinErrorState.CHARACTERS_ERROR) + } else { + _state.value = _state.value.copy(pinError = null) } } @@ -52,39 +69,52 @@ class SetPinViewModel @Inject constructor( } } - fun processPin(lengthError: String) = viewModelScope.launch(appDispatcher.MAIN) { + fun processPin() = viewModelScope.launch(appDispatcher.MAIN) { _state.value = _state.value.copy(showLoader = true) val pin = state.value.pin - if (pin.length < 4) { - _state.value = _state.value.copy(pinError = lengthError) - return@launch - } - if (pin.length == 4) { - authService.generateAndSaveUserKeys(passKey = pin) - val userId = authService.getUser()?.id - val userSpaces = userId?.let { - spaceRepository.getUserSpaces(it) - } - val userHasSpaces = userSpaces?.firstOrNull() != null && userSpaces.firstOrNull()?.isNotEmpty() == true - if (userHasSpaces) { - userPreferences.setOnboardShown(true) - spaceRepository.generateAndDistributeSenderKeysForExistingSpaces( - spaceIds = userSpaces?.firstOrNull()?.map { it.id } ?: emptyList() - ) - navigator.navigateTo( - AppDestinations.home.path, - popUpToRoute = AppDestinations.signIn.path, - inclusive = true - ) - } else { - navigator.navigateTo( - AppDestinations.onboard.path, - popUpToRoute = AppDestinations.signIn.path, - inclusive = true - ) + validatePin() + if (state.value.pinError == null) { + try { + authService.generateAndSaveUserKeys(passKey = pin) + val userId = authService.getUser()?.id + + if (userId == null) { + _state.value = _state.value.copy( + error = IllegalStateException("Failed to get user ID after key generation") + ) + return@launch + } + + val userSpaces = spaceRepository.getUserSpaces(userId) + + val userHasSpaces = + userSpaces.firstOrNull() != null && userSpaces.firstOrNull()?.isNotEmpty() == true + if (userHasSpaces) { + userPreferences.setOnboardShown(true) + try { + spaceRepository.generateAndDistributeSenderKeysForExistingSpaces( + spaceIds = userSpaces.firstOrNull()?.map { it.id } ?: emptyList() + ) + } catch (e: Exception) { + _state.value = _state.value.copy(error = e) + return@launch + } + + navigator.navigateTo( + AppDestinations.home.path, + popUpToRoute = AppDestinations.signIn.path, + inclusive = true + ) + } else { + navigator.navigateTo( + AppDestinations.onboard.path, + popUpToRoute = AppDestinations.signIn.path, + inclusive = true + ) + } + } catch (e: Exception) { + _state.value = _state.value.copy(error = e) } - } else { - _state.value = _state.value.copy(pinError = "Pin must be 4 characters") } } } @@ -92,8 +122,7 @@ class SetPinViewModel @Inject constructor( data class EnterPinScreenState( val showLoader: Boolean = false, val pin: String = "", - val confirmPin: String = "", - val pinError: String? = null, + val pinError: PinErrorState? = null, val connectivityStatus: ConnectivityObserver.Status = ConnectivityObserver.Status.Available, - val error: Exception? = null + val error: Throwable? = null ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 683f00f9..d5b80223 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -36,6 +36,7 @@ Go to Settings No Group Found! The group you are looking for isn\'t available or you may have been removed. + Something went wrong! In-App messaging It is used to show messages @@ -313,11 +314,14 @@ Your PIN ensures that only you can access your account Set Pin Pin must be at least 4 characters + Please enter only numbers Enter Your PIN Enter your 4-digit PIN to access your account Your PIN ensures that only you can access your account - Incorrect PIN. Please try again + Incorrect PIN. Please try again + Pin must be at least 4 characters + Please enter only numbers Continue \ No newline at end of file diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 56c50496..8ef13102 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -14,6 +14,11 @@ android { minSdk = 23 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + javaCompileOptions { + annotationProcessorOptions { + arguments["room.schemaLocation"] = "$projectDir/schemas" + } + } consumerProguardFiles("consumer-rules.pro") } @@ -81,7 +86,7 @@ dependencies { implementation("androidx.room:room-ktx:2.6.1") // Desugaring - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.6") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") // Place implementation("com.google.android.libraries.places:places:4.0.0") @@ -89,9 +94,4 @@ dependencies { // Signal Protocol implementation("org.signal:libsignal-client:0.64.1") implementation("org.signal:libsignal-android:0.64.1") - - // Bouncy-castle for Signal Protocol - implementation("org.bouncycastle:bcprov-jdk15on:1.70") - - implementation("androidx.security:security-crypto:1.1.0-alpha03") } diff --git a/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt b/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt index 437d29a5..69c2605b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt +++ b/data/src/main/java/com/canopas/yourspace/data/di/AppDataProvider.kt @@ -4,6 +4,7 @@ import android.content.Context import androidx.room.Room import com.canopas.yourspace.data.models.user.ApiUserSession import com.canopas.yourspace.data.storage.database.AppDatabase +import com.canopas.yourspace.data.storage.database.MIGRATION_1_1 import com.canopas.yourspace.data.storage.database.SenderKeyDao import com.canopas.yourspace.data.utils.Config import com.google.android.gms.location.GeofencingClient @@ -68,7 +69,7 @@ class AppDataProvider { AppDatabase::class.java, DATABASE_NAME ) - .fallbackToDestructiveMigration() + .addMigrations(MIGRATION_1_1) .build() } diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt index e0bfc4af..78b7c0c0 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt @@ -12,7 +12,7 @@ data class ApiLocation( val user_id: String = "", val latitude: Double = 0.0, val longitude: Double = 0.0, - val created_at: Long? = System.currentTimeMillis() + val created_at: Long = System.currentTimeMillis() ) @Keep @@ -22,7 +22,7 @@ data class EncryptedApiLocation( val user_id: String = "", val encrypted_latitude: Blob = Blob.fromBytes(ByteArray(0)), // Base64 encoded encrypted latitude val encrypted_longitude: Blob = Blob.fromBytes(ByteArray(0)), // Base64 encoded encrypted longitude - val created_at: Long? = System.currentTimeMillis() + val created_at: Long = System.currentTimeMillis() ) fun ApiLocation.toLocation() = android.location.Location("").apply { diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index fa465980..4fca5909 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -19,8 +19,8 @@ data class LocationJourney( val route_distance: Double? = null, val route_duration: Long? = null, val routes: List = emptyList(), - val created_at: Long? = System.currentTimeMillis(), - val update_at: Long? = System.currentTimeMillis() + val created_at: Long = System.currentTimeMillis(), + val update_at: Long = System.currentTimeMillis() ) @Keep @@ -35,8 +35,8 @@ data class EncryptedLocationJourney( val route_distance: Double? = null, val route_duration: Long? = null, val encrypted_routes: List = emptyList(), // Encrypted journey routes - val created_at: Long? = System.currentTimeMillis(), - val updated_at: Long? = System.currentTimeMillis() + val created_at: Long = System.currentTimeMillis(), + val updated_at: Long = System.currentTimeMillis() ) @Keep diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index 445f3e77..be2ee9c1 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -54,7 +54,7 @@ data class ApiSpaceInvitation( @Keep data class GroupKeysDoc( val docUpdatedAt: Long = System.currentTimeMillis(), // To be updated whenever users are added/removed - val senderKeys: Map = emptyMap() + val memberKeys: Map = emptyMap() ) /* @@ -62,8 +62,8 @@ data class GroupKeysDoc( * in Firestore for a single sender's key distribution. */ @Keep -data class SenderKeyData( - val senderDeviceId: Int = 0, +data class MemberKeyData( + val memberDeviceId: Int = 0, val distributions: List = emptyList(), val dataUpdatedAt: Long = System.currentTimeMillis() // To be updated whenever a new distribution is added ) @@ -78,4 +78,20 @@ data class EncryptedDistribution( val ephemeralPub: Blob = Blob.fromBytes(ByteArray(0)), // 32 bytes val iv: Blob = Blob.fromBytes(ByteArray(0)), // 12 bytes val ciphertext: Blob = Blob.fromBytes(ByteArray(0)) // AES/GCM ciphertext -) +) { + init { + validateFieldSizes() + } + + private fun validateFieldSizes() { + require(ephemeralPub.toBytes().size == 33 || ephemeralPub.toBytes().isEmpty()) { + "Invalid size for ephemeralPub: expected 33 bytes, got ${ephemeralPub.toBytes().size} bytes." + } + require(iv.toBytes().size == 16 || iv.toBytes().isEmpty()) { + "Invalid size for iv: expected 16 bytes, got ${iv.toBytes().size} bytes." + } + require(ciphertext.toBytes().size <= 64 * 1024 || ciphertext.toBytes().isEmpty()) { + "Invalid size for ciphertext: maximum allowed size is 64 KB, got ${ciphertext.toBytes().size} bytes." + } + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt b/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt index 7512aa75..76f26b7f 100644 --- a/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt +++ b/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt @@ -257,6 +257,11 @@ class SpaceRepository @Inject constructor( } suspend fun generateAndDistributeSenderKeysForExistingSpaces(spaceIds: List) { - spaceService.generateAndDistributeSenderKeysForExistingSpaces(spaceIds) + try { + spaceService.generateAndDistributeSenderKeysForExistingSpaces(spaceIds) + } catch (e: Exception) { + Timber.e(e, "Failed to generate and distribute sender keys") + throw e + } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 9b6db9bf..47c442e0 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -102,17 +102,24 @@ class AuthService @Inject constructor( } suspend fun signOut() { - locationManager.stopLocationTracking() - currentUser = null - currentUserSession = null - userPreferences.isFCMRegistered = false - userPreferences.setOnboardShown(false) - userPreferences.currentSpace = "" - userPreferences.clearPasskey() - userPreferences.clearPrivateKey() - firebaseAuth.signOut() - locationManager.stopService() - locationCache.clear() + try { + locationManager.stopLocationTracking() + currentUser = null + currentUserSession = null + userPreferences.isFCMRegistered = false + userPreferences.setOnboardShown(false) + userPreferences.currentSpace = "" + userPreferences.clearPasskey() + userPreferences.clearPrivateKey() + firebaseAuth.signOut() + locationManager.stopService() + locationCache.clear() + } catch (e: Exception) { + throw SecurityException("Failed to completely sign out. Some sensitive data might not be cleared.") + } finally { + // Force garbage collection to clean up any sensitive data in memory + System.gc() + } } suspend fun deleteAccount() { @@ -122,11 +129,12 @@ class AuthService @Inject constructor( } suspend fun generateAndSaveUserKeys(passKey: String) { - currentUser?.let { - val updatedUser = apiUserService.generateAndSaveUserKeys(currentUser!!, passKey) - updatedUser.identity_key_private?.toBytes() - ?.let { privateKey -> userPreferences.storePrivateKey(privateKey) } + val user = currentUser ?: throw IllegalStateException("No user logged in") + try { + val updatedUser = apiUserService.generateAndSaveUserKeys(user, passKey) currentUser = updatedUser + } catch (e: Exception) { + throw SecurityException("Failed to generate user keys", e) } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 45c7d331..b4b56e70 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -38,6 +38,8 @@ class ApiJourneyService @Inject constructor( private val bufferedSenderKeyStore: BufferedSenderKeyStore ) { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) + private val currentSpaceId: String + get() = userPreferences.currentSpace ?: "" private fun spaceMemberRef(spaceId: String) = spaceRef.document(spaceId.takeIf { it.isNotBlank() } ?: "null") @@ -58,19 +60,19 @@ class ApiJourneyService @Inject constructor( ): Pair? { val snapshot = spaceGroupKeysRef(spaceId).get().await() val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: return null - val senderKeyData = groupKeysDoc.senderKeys[userId] ?: return null + val memberKeyData = groupKeysDoc.memberKeys[userId] ?: return null val currentUser = userPreferences.currentUser ?: return null val privateKey = getCurrentUserPrivateKey(currentUser) ?: return null val distribution = - senderKeyData.distributions.firstOrNull { it.recipientId == currentUser.id } + memberKeyData.distributions.firstOrNull { it.recipientId == currentUser.id } ?: return null val decryptedDistributionBytes = EphemeralECDHUtils.decrypt(distribution, privateKey) ?: return null val distributionMessage = SenderKeyDistributionMessage(decryptedDistributionBytes) - val groupAddress = SignalProtocolAddress(spaceId, senderKeyData.senderDeviceId) + val groupAddress = SignalProtocolAddress(spaceId, memberKeyData.memberDeviceId) bufferedSenderKeyStore.loadSenderKey(groupAddress, distributionMessage.distributionId) // Initialize the session @@ -84,6 +86,21 @@ class ApiJourneyService @Inject constructor( } } + private suspend fun withGroupCipher( + userId: String, + block: suspend (GroupCipher) -> T?, + defaultValue: T + ): T { + val (_, groupCipher) = getGroupCipherAndDistributionMessage(currentSpaceId, userId) + ?: return defaultValue + return try { + block(groupCipher) ?: defaultValue + } catch (e: Exception) { + Timber.e(e, "Error executing operation for userId: $userId") + defaultValue + } + } + /** * Decrypts and retrieves the current user's private key. */ @@ -254,15 +271,8 @@ class ApiJourneyService @Inject constructor( } } - suspend fun getLastJourneyLocation(userId: String): LocationJourney? { - val currentSpaceId = userPreferences.currentSpace ?: return null - val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: $userId") - return null - } - val (_, groupCipher) = cipherAndMessage - - return try { + suspend fun getLastJourneyLocation(userId: String): LocationJourney? = + withGroupCipher(userId, { groupCipher -> spaceMemberJourneyRef(currentSpaceId, userId) .whereEqualTo("user_id", userId) .orderBy("created_at", Query.Direction.DESCENDING) @@ -273,14 +283,9 @@ class ApiJourneyService @Inject constructor( .firstOrNull() ?.toObject() ?.toDecryptedLocationJourney(groupCipher) - } catch (e: Exception) { - Timber.e(e, "Error while getting last location journey for userId: $userId") - null - } - } + }, null) suspend fun getMoreJourneyHistory(userId: String, from: Long?): List { - val currentSpaceId = userPreferences.currentSpace ?: return emptyList() val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, userId) ?: run { Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: $userId") return emptyList() @@ -311,7 +316,6 @@ class ApiJourneyService @Inject constructor( } suspend fun getJourneyHistory(userId: String, from: Long, to: Long): List { - val currentSpaceId = userPreferences.currentSpace ?: return emptyList() val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, userId) ?: run { Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: $userId") return emptyList() @@ -352,7 +356,6 @@ class ApiJourneyService @Inject constructor( } suspend fun getLocationJourneyFromId(journeyId: String): LocationJourney? { - val currentSpaceId = userPreferences.currentSpace ?: return null val currentUser = userPreferences.currentUser ?: return null val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, currentUser.id) ?: run { diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 49b16a24..ffda51f8 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -4,7 +4,7 @@ import com.canopas.yourspace.data.models.location.ApiLocation import com.canopas.yourspace.data.models.location.EncryptedApiLocation import com.canopas.yourspace.data.models.space.ApiSpaceMember import com.canopas.yourspace.data.models.space.GroupKeysDoc -import com.canopas.yourspace.data.models.space.SenderKeyData +import com.canopas.yourspace.data.models.space.MemberKeyData import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore @@ -31,18 +31,21 @@ import org.signal.libsignal.protocol.groups.GroupSessionBuilder import org.signal.libsignal.protocol.groups.InvalidSenderKeySessionException import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage import timber.log.Timber -import java.util.UUID import javax.inject.Inject import javax.inject.Singleton @Singleton class ApiLocationService @Inject constructor( - db: FirebaseFirestore, + private val db: FirebaseFirestore, private val locationManager: LocationManager, private val userPreferences: UserPreferences, private val bufferedSenderKeyStore: BufferedSenderKeyStore ) { - var currentSpaceId: String = userPreferences.currentSpace ?: "" + var currentSpaceId: String + get() = userPreferences.currentSpace ?: "" + set(value) { + userPreferences.currentSpace = value + } private val spaceRef by lazy { db.collection(FIRESTORE_COLLECTION_SPACES) } @@ -123,7 +126,6 @@ class ApiLocationService @Inject constructor( ) val location = EncryptedApiLocation( - id = UUID.randomUUID().toString(), user_id = userId, encrypted_latitude = Blob.fromBytes(encryptedLatitude.serialize()), encrypted_longitude = Blob.fromBytes(encryptedLongitude.serialize()), @@ -142,7 +144,10 @@ class ApiLocationService @Inject constructor( } else -> { - Timber.e(e, "Failed to save encrypted location for userId: $userId in spaceId: $spaceId") + Timber.e( + e, + "Failed to save encrypted location for userId: $userId in spaceId: $spaceId" + ) } } } @@ -177,11 +182,18 @@ class ApiLocationService @Inject constructor( val longitudeBytes = groupCipher.decrypt(encryptedLocation.encrypted_longitude.toBytes()) + val latitude = latitudeBytes.toString(Charsets.UTF_8).toDoubleOrNull() + val longitude = longitudeBytes.toString(Charsets.UTF_8).toDoubleOrNull() + if (latitude == null || longitude == null) { + Timber.e("Failed to decrypt location for userId: $userId") + return null + } + ApiLocation( id = encryptedLocation.id, user_id = userId, - latitude = latitudeBytes.toString(Charsets.UTF_8).toDouble(), - longitude = longitudeBytes.toString(Charsets.UTF_8).toDouble(), + latitude = latitude, + longitude = longitude, created_at = encryptedLocation.created_at ) } catch (e: Exception) { @@ -206,9 +218,9 @@ class ApiLocationService @Inject constructor( val snapshot = spaceGroupKeysRef(spaceId).get().await() val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: return null - val senderKeyData = groupKeysDoc.senderKeys[userId] ?: return null + val memberKeyData = groupKeysDoc.memberKeys[userId] ?: return null - val distribution = senderKeyData.distributions.firstOrNull { + val distribution = memberKeyData.distributions.firstOrNull { it.recipientId == currentUser.id } ?: return null @@ -221,16 +233,16 @@ class ApiLocationService @Inject constructor( } val distributionMessage = SenderKeyDistributionMessage(decryptedDistribution) - val senderAddress = SignalProtocolAddress(spaceId, senderKeyData.senderDeviceId) + val groupAddress = SignalProtocolAddress(spaceId, memberKeyData.memberDeviceId) - bufferedSenderKeyStore.loadSenderKey(senderAddress, distributionMessage.distributionId) + bufferedSenderKeyStore.loadSenderKey(groupAddress, distributionMessage.distributionId) // If the sender key data is outdated, we need to distribute the sender key to the pending users - if (senderKeyData.dataUpdatedAt < groupKeysDoc.docUpdatedAt && canDistributeSenderKey) { + if (memberKeyData.dataUpdatedAt < groupKeysDoc.docUpdatedAt && canDistributeSenderKey) { // Here means the sender key data is outdated, so we need to distribute the sender key to the users. val apiSpaceMembers = getSpaceMembers(spaceId) val membersPendingForSenderKey = apiSpaceMembers.filter { member -> - senderKeyData.distributions.none { it.recipientId == member.user_id } + memberKeyData.distributions.none { it.recipientId == member.user_id } } if (membersPendingForSenderKey.isNotEmpty()) { @@ -238,15 +250,15 @@ class ApiLocationService @Inject constructor( spaceId = spaceId, senderUserId = userId, distributionMessage = distributionMessage, - senderDeviceId = senderKeyData.senderDeviceId, + senderDeviceId = memberKeyData.memberDeviceId, apiSpaceMembers = membersPendingForSenderKey ) } } return try { - GroupSessionBuilder(bufferedSenderKeyStore).process(senderAddress, distributionMessage) - val groupCipher = GroupCipher(bufferedSenderKeyStore, senderAddress) + GroupSessionBuilder(bufferedSenderKeyStore).process(groupAddress, distributionMessage) + val groupCipher = GroupCipher(bufferedSenderKeyStore, groupAddress) Pair(distributionMessage, groupCipher) } catch (e: Exception) { Timber.e(e, "Error processing group session for spaceId=$spaceId, userId=$userId") @@ -258,7 +270,12 @@ class ApiLocationService @Inject constructor( * Decrypts and retrieves the current user's private key. */ private suspend fun getCurrentUserPrivateKey(currentUser: ApiUser): ECPrivateKey? { - val privateKey = userPreferences.getPrivateKey() ?: currentUser.identity_key_private?.toBytes() + val privateKey = try { + userPreferences.getPrivateKey() ?: currentUser.identity_key_private?.toBytes() + } catch (e: Exception) { + Timber.e(e, "Failed to retrieve private key for user ${currentUser.id}") + return null + } return try { Curve.decodePrivatePoint(privateKey) } catch (e: InvalidKeyException) { @@ -282,34 +299,39 @@ class ApiLocationService @Inject constructor( senderDeviceId: Int, apiSpaceMembers: List ) { - val distributionBytes = distributionMessage.serialize() - val docRef = spaceGroupKeysRef(spaceId) - val snapshot = docRef.get().await() - val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() - - val oldSenderKeyData = groupKeysDoc.senderKeys[senderUserId] ?: SenderKeyData() - - val distributions = oldSenderKeyData.distributions.toMutableList() - - for (member in apiSpaceMembers) { - val publicBlob = member.identity_key_public ?: continue - val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) - - // Encrypt distribution using member's public key - distributions.add( - EphemeralECDHUtils.encrypt( - member.user_id, - distributionBytes, - publicKey + db.runTransaction { transaction -> + val docRef = spaceGroupKeysRef(spaceId) + val distributionBytes = distributionMessage.serialize() + val snapshot = transaction.get(docRef) + val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() + val oldMemberKeyData = groupKeysDoc.memberKeys[senderUserId] ?: MemberKeyData() + val distributions = oldMemberKeyData.distributions.toMutableList() + + for (member in apiSpaceMembers) { + val publicBlob = member.identity_key_public ?: continue + val publicKeyBytes = publicBlob.toBytes() + if (publicKeyBytes.size != 33) { // Expected size for compressed EC public key + Timber.e("Invalid public key size for member ${member.user_id}") + continue + } + val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) + + // Encrypt distribution using member's public key + distributions.add( + EphemeralECDHUtils.encrypt( + member.user_id, + distributionBytes, + publicKey + ) ) - ) - } + } - val newSenderKeyData = oldSenderKeyData.copy( - senderDeviceId = senderDeviceId, - distributions = distributions, - dataUpdatedAt = System.currentTimeMillis() - ) - docRef.update(mapOf("senderKeys.$senderUserId" to newSenderKeyData)).await() + val newMemberKeyData = oldMemberKeyData.copy( + memberDeviceId = senderDeviceId, + distributions = distributions, + dataUpdatedAt = System.currentTimeMillis() + ) + transaction.update(docRef, mapOf("memberKeys.$senderUserId" to newMemberKeyData)) + }.await() } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index 6b7646af..1323f63e 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -4,13 +4,12 @@ import com.canopas.yourspace.data.models.space.ApiSpace import com.canopas.yourspace.data.models.space.ApiSpaceMember import com.canopas.yourspace.data.models.space.EncryptedDistribution import com.canopas.yourspace.data.models.space.GroupKeysDoc +import com.canopas.yourspace.data.models.space.MemberKeyData import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_ADMIN import com.canopas.yourspace.data.models.space.SPACE_MEMBER_ROLE_MEMBER -import com.canopas.yourspace.data.models.space.SenderKeyData import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.service.place.ApiPlaceService import com.canopas.yourspace.data.service.user.ApiUserService -import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.storage.bufferedkeystore.BufferedSenderKeyStore import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_GROUP_KEYS @@ -33,7 +32,6 @@ class ApiSpaceService @Inject constructor( private val authService: AuthService, private val apiUserService: ApiUserService, private val placeService: ApiPlaceService, - private val userPreferences: UserPreferences, private val bufferedSenderKeyStore: BufferedSenderKeyStore ) { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) @@ -99,9 +97,8 @@ class ApiSpaceService @Inject constructor( * for each member using their public key(ECDH). **/ private suspend fun distributeSenderKeyToSpaceMembers(spaceId: String, senderUserId: String) { - val deviceId = userPreferences.currentUserSession?.device_id ?: "" - val deviceIdInt = deviceId.hashCode() and 0x7FFFFFFF - val groupAddress = SignalProtocolAddress(spaceId, deviceIdInt) + val deviceId = UUID.randomUUID().mostSignificantBits and 0x7FFFFFFF + val groupAddress = SignalProtocolAddress(spaceId, deviceId.toInt()) val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) val distributionMessage = sessionBuilder.create(groupAddress, UUID.fromString(spaceId)) val distributionBytes = distributionMessage.serialize() @@ -111,31 +108,38 @@ class ApiSpaceService @Inject constructor( for (member in apiSpaceMembers) { val publicBlob = member.identity_key_public ?: continue - val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) + val publicKey = try { + val publicKeyBytes = publicBlob.toBytes() + if (publicKeyBytes.size != 33) { // Expected size for compressed EC public key + Timber.e("Invalid public key size for member ${member.user_id}") + continue + } + Curve.decodePoint(publicKeyBytes, 0) + } catch (e: Exception) { + Timber.e(e, "Failed to decode public key for member ${member.user_id}") + continue + } // Encrypt distribution using member's public key distributions.add(EphemeralECDHUtils.encrypt(member.user_id, distributionBytes, publicKey)) } - val docRef = spaceGroupKeysDoc(spaceId) - val snapshot = docRef.get().await() - val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() - - val oldSenderKeyData = groupKeysDoc.senderKeys[senderUserId] ?: SenderKeyData() - val newSenderKeyData = oldSenderKeyData.copy( - senderDeviceId = deviceIdInt, - distributions = distributions, - dataUpdatedAt = System.currentTimeMillis() - ) - val updates = mapOf( - "senderKeys.$senderUserId" to newSenderKeyData.copy( + db.runTransaction { transaction -> + val docRef = spaceGroupKeysDoc(spaceId) + val snapshot = transaction.get(docRef) + val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() + val oldMemberKeyData = groupKeysDoc.memberKeys[senderUserId] ?: MemberKeyData() + val newMemberKeyData = oldMemberKeyData.copy( + memberDeviceId = deviceId.toInt(), + distributions = distributions, dataUpdatedAt = System.currentTimeMillis() - ), - "docUpdatedAt" to System.currentTimeMillis() - ) - - docRef.update(updates).await() - + ) + val updates = mapOf( + "memberKeys.$senderUserId" to newMemberKeyData, + "docUpdatedAt" to System.currentTimeMillis() + ) + transaction.update(docRef, updates) + }.await() Timber.d("Sender key distribution updated for $senderUserId in space $spaceId") } @@ -202,9 +206,13 @@ class ApiSpaceService @Inject constructor( suspend fun generateAndDistributeSenderKeysForExistingSpaces(spaceIds: List) { val userId = authService.currentUser?.id ?: return spaceIds.forEach { spaceId -> - val emptyGroupKeys = GroupKeysDoc() - spaceGroupKeysDoc(spaceId).set(emptyGroupKeys).await() - distributeSenderKeyToSpaceMembers(spaceId, userId) + try { + val emptyGroupKeys = GroupKeysDoc() + spaceGroupKeysDoc(spaceId).set(emptyGroupKeys).await() + distributeSenderKeyToSpaceMembers(spaceId, userId) + } catch (e: Exception) { + Timber.e(e, "Failed to distribute sender key for space $spaceId") + } } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index ed8cca84..a6486676 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -4,11 +4,14 @@ import com.canopas.yourspace.data.models.user.ApiSenderKeyRecord import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.storage.database.SenderKeyDao import com.canopas.yourspace.data.storage.database.SenderKeyEntity +import com.canopas.yourspace.data.utils.AppDispatcher import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACES import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USER_SENDER_KEY_RECORD import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FirebaseFirestore +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import kotlinx.coroutines.tasks.await import org.signal.libsignal.protocol.SignalProtocolAddress @@ -26,7 +29,8 @@ import javax.inject.Singleton class BufferedSenderKeyStore @Inject constructor( db: FirebaseFirestore, @Named("sender_key_dao") private val senderKeyDao: SenderKeyDao, - private val userPreferences: UserPreferences + private val userPreferences: UserPreferences, + private val appDispatcher: AppDispatcher ) : SignalServiceSenderKeyStore { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) @@ -44,10 +48,14 @@ class BufferedSenderKeyStore @Inject constructor( private val sharedWithAddresses: MutableSet = mutableSetOf() private suspend fun saveSenderKeyToServer(senderKeyRecord: ApiSenderKeyRecord) { - val currentUser = userPreferences.currentUser ?: return - val uniqueDocId = "${senderKeyRecord.deviceId}-${senderKeyRecord.distributionId}" - spaceSenderKeyRecordRef(senderKeyRecord.distributionId, currentUser.id) - .document(uniqueDocId).set(senderKeyRecord).await() + try { + val currentUser = userPreferences.currentUser ?: return + val uniqueDocId = "${senderKeyRecord.deviceId}-${senderKeyRecord.distributionId}" + spaceSenderKeyRecordRef(senderKeyRecord.distributionId, currentUser.id) + .document(uniqueDocId).set(senderKeyRecord).await() + } catch (e: Exception) { + Timber.e(e, "Failed to save sender key to server: $senderKeyRecord") + } } override fun storeSenderKey( @@ -56,12 +64,12 @@ class BufferedSenderKeyStore @Inject constructor( record: SenderKeyRecord ) { val key = StoreKey(sender, distributionId, sender.deviceId) - if (inMemoryStore.any { it.key.address.deviceId == sender.deviceId && it.key.distributionId == distributionId }) { + if (inMemoryStore.containsKey(key)) { return } inMemoryStore[key] = record - runBlocking { + CoroutineScope(appDispatcher.IO).launch { senderKeyDao.insertSenderKey( SenderKeyEntity( address = sender.name, @@ -134,7 +142,7 @@ class BufferedSenderKeyStore @Inject constructor( override fun clearSenderKeySharedWith(addresses: Collection?) { addresses?.forEach { address -> - address?.let { sharedWithAddresses.add(it) } + address?.let { sharedWithAddresses.remove(it) } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/database/AppDatabase.kt b/data/src/main/java/com/canopas/yourspace/data/storage/database/AppDatabase.kt index 66aa1313..0b00b599 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/database/AppDatabase.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/database/AppDatabase.kt @@ -2,6 +2,8 @@ package com.canopas.yourspace.data.storage.database import androidx.room.Database import androidx.room.RoomDatabase +import androidx.room.migration.Migration +import androidx.sqlite.db.SupportSQLiteDatabase @Database( entities = [SenderKeyEntity::class], @@ -11,3 +13,9 @@ import androidx.room.RoomDatabase abstract class AppDatabase : RoomDatabase() { abstract fun senderKeyDao(): SenderKeyDao } + +val MIGRATION_1_1 = object : Migration(1, 1) { + override fun migrate(db: SupportSQLiteDatabase) { + // No changes required for now. + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt index 78531780..341e99c0 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyDao.kt @@ -5,6 +5,7 @@ import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.Query import org.signal.libsignal.protocol.groups.state.SenderKeyRecord +import timber.log.Timber @Dao interface SenderKeyDao { @@ -37,6 +38,7 @@ interface SenderKeyDao { try { SenderKeyRecord(it.record) } catch (e: Exception) { + Timber.e(e, "Failed to create SenderKeyRecord.") null } } diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt index 32ff02be..84a149ec 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt @@ -45,7 +45,7 @@ object EphemeralECDHUtils { val cipherKey: ByteArray = computeCipherKey(masterSecret, syntheticIv) val cipher = Cipher.getInstance("AES/CTR/NoPadding") - cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(cipherKey, "AES"), IvParameterSpec(ByteArray(16))) + cipher.init(Cipher.ENCRYPT_MODE, SecretKeySpec(cipherKey, "AES"), IvParameterSpec(syntheticIv)) val cipherText = cipher.doFinal(plaintext) return EncryptedDistribution( @@ -81,7 +81,7 @@ object EphemeralECDHUtils { val cipherKey = mac.doFinal(syntheticIv) val cipher = Cipher.getInstance("AES/CTR/NoPadding") - cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec(cipherKey, "AES"), IvParameterSpec(ByteArray(16))) + cipher.init(Cipher.DECRYPT_MODE, SecretKeySpec(cipherKey, "AES"), IvParameterSpec(syntheticIv)) val plaintext = cipher.doFinal(cipherText) mac.init(SecretKeySpec(masterSecret, "HmacSHA256")) diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt index abd45f43..a4435329 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt @@ -12,7 +12,7 @@ import kotlin.random.Random private const val AES_ALGORITHM = "AES/GCM/NoPadding" private const val KEY_DERIVATION_ALGORITHM = "PBKDF2WithHmacSHA256" private const val KEY_SIZE = 256 // bits -private const val ITERATION_COUNT = 10000 +private const val ITERATION_COUNT = 100000 private const val GCM_IV_SIZE = 12 // bytes private const val GCM_TAG_SIZE = 128 // bits diff --git a/firestore.rules b/firestore.rules index 6bb59d5b..4efe4bcd 100644 --- a/firestore.rules +++ b/firestore.rules @@ -138,11 +138,6 @@ service cloud.firestore { allow delete: if isAuthorized() && isSpaceMember(spaceId); } - match /{path=**}/space_places/{place} { - allow read: if isAuthorized() && isSpaceMember(resource.data.space_id); - allow write: if false; - } - match /spaces/{spaceId}/space_places/{place} { allow read: if isAuthorized() && isSpaceMember(spaceId); allow delete: if isAuthorized() && @@ -220,7 +215,7 @@ service cloud.firestore { match /spaces/{spaceId}/space_members/{docId} { match /user_locations/{docId} { allow read: if isAuthorized() && - (request.auth.uid == resource.data.user_id || readUserLocation()); + (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; allow create: if isAuthorized() && @@ -235,8 +230,8 @@ service cloud.firestore { match /user_journeys/{docId} { allow read: if isAuthorized() && - (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if true; + (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && From 43e054096a7d7bb21eb0c332c8473deeb3128dd7 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Fri, 3 Jan 2025 15:33:26 +0530 Subject: [PATCH 18/39] PR changes --- .../journey/components/LocationHistory.kt | 2 +- .../journey/detail/UserJourneyDetailScreen.kt | 2 +- .../timeline/JourneyTimelineViewModel.kt | 6 +- .../ui/flow/pin/enterpin/EnterPinViewModel.kt | 8 +- .../ui/flow/pin/setpin/SetPinViewModel.kt | 6 +- .../data/models/location/LocationJourney.kt | 96 ++++++++++++++++++- .../data/repository/JourneyRepository.kt | 18 ++-- .../data/service/auth/AuthService.kt | 3 - .../service/location/ApiJourneyService.kt | 95 +----------------- .../service/location/ApiLocationService.kt | 9 +- 10 files changed, 123 insertions(+), 122 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt index 28ebeba3..4634c46d 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt @@ -113,7 +113,7 @@ fun JourneyLocationItem( .padding(start = 16.dp) .weight(1f) ) { - val time = getFormattedJourneyTime(location.created_at ?: 0, location.update_at ?: 0) + val time = getFormattedJourneyTime(location.created_at ?: 0, location.updated_at ?: 0) val distance = getDistanceString(location.route_distance ?: 0.0) PlaceInfo(title, "$time - $distance") diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailScreen.kt index c42f9381..8c23a44d 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/detail/UserJourneyDetailScreen.kt @@ -174,7 +174,7 @@ private fun JourneyInfo(journey: LocationJourney) { .padding(start = 16.dp) .weight(1f) ) { - PlaceInfo(toAddressStr, getFormattedLocationTime(journey.update_at!!)) + PlaceInfo(toAddressStr, getFormattedLocationTime(journey.updated_at!!)) } } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/timeline/JourneyTimelineViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/timeline/JourneyTimelineViewModel.kt index fb488d7b..13801a08 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/timeline/JourneyTimelineViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/timeline/JourneyTimelineViewModel.kt @@ -98,7 +98,7 @@ class JourneyTimelineViewModel @Inject constructor( try { val from = _state.value.selectedTimeFrom val to = _state.value.selectedTimeTo - val lastJourneyTime = allJourneys.minOfOrNull { it.update_at!! } + val lastJourneyTime = allJourneys.minOfOrNull { it.updated_at!! } val locations = if (loadMore) { journeyService.getMoreJourneyHistory(userId, lastJourneyTime) @@ -108,7 +108,7 @@ class JourneyTimelineViewModel @Inject constructor( val filteredLocations = locations.filter { (it.created_at?.let { created -> created in from..to } ?: false) || - (it.update_at?.let { updated -> updated in from..to } ?: false) + (it.updated_at?.let { updated -> updated in from..to } ?: false) } val locationJourneys = (allJourneys + filteredLocations).groupByDate() @@ -177,7 +177,7 @@ class JourneyTimelineViewModel @Inject constructor( private fun List.groupByDate(): Map> { val journeys = this.distinctBy { it.id } - .sortedByDescending { it.update_at!! } + .sortedByDescending { it.updated_at!! } val groupedItems = mutableMapOf>() diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt index 6fbe2f5d..f2c7522b 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt @@ -41,9 +41,9 @@ class EnterPinViewModel @Inject constructor( private fun validatePin() { val pin = state.value.pin if (pin.length < 4) { - _state.value = _state.value.copy(pinError = PinErrorState.LENGTH_ERROR) - } else if (pin.length == 4 && !pin.contains(Regex("[0-9]"))) { - _state.value = _state.value.copy(pinError = PinErrorState.CHARACTERS_ERROR) + _state.value = _state.value.copy(pinError = PinErrorState.LENGTH_ERROR, showLoader = false) + } else if (pin.length == 4 && !pin.all { it.isDigit() }) { + _state.value = _state.value.copy(pinError = PinErrorState.CHARACTERS_ERROR, showLoader = false) } } @@ -73,7 +73,7 @@ class EnterPinViewModel @Inject constructor( inclusive = true ) } else { - _state.value = _state.value.copy(pinError = PinErrorState.INVALID_PIN) + _state.value = _state.value.copy(pinError = PinErrorState.INVALID_PIN, showLoader = false) } } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt index e632fa64..590d37b2 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -49,9 +49,9 @@ class SetPinViewModel @Inject constructor( private fun validatePin() { val pin = state.value.pin if (pin.length < 4) { - _state.value = _state.value.copy(pinError = PinErrorState.LENGTH_ERROR) + _state.value = _state.value.copy(pinError = PinErrorState.LENGTH_ERROR, showLoader = false) } else if (pin.length == 4 && !pin.all { it.isDigit() }) { - _state.value = _state.value.copy(pinError = PinErrorState.CHARACTERS_ERROR) + _state.value = _state.value.copy(pinError = PinErrorState.CHARACTERS_ERROR, showLoader = false) } else { _state.value = _state.value.copy(pinError = null) } @@ -113,7 +113,7 @@ class SetPinViewModel @Inject constructor( ) } } catch (e: Exception) { - _state.value = _state.value.copy(error = e) + _state.value = _state.value.copy(error = e, showLoader = false) } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index 4fca5909..cec877c8 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -5,6 +5,7 @@ import androidx.annotation.Keep import com.google.android.gms.maps.model.LatLng import com.google.firebase.firestore.Blob import com.squareup.moshi.JsonClass +import org.signal.libsignal.protocol.groups.GroupCipher import java.util.UUID @Keep @@ -20,7 +21,7 @@ data class LocationJourney( val route_duration: Long? = null, val routes: List = emptyList(), val created_at: Long = System.currentTimeMillis(), - val update_at: Long = System.currentTimeMillis() + val updated_at: Long = System.currentTimeMillis() ) @Keep @@ -88,3 +89,96 @@ fun Location.toLocationJourney(userId: String, journeyId: String) = LocationJour from_latitude = latitude, from_longitude = longitude ) + +/** + * Convert an [EncryptedLocationJourney] to a [LocationJourney] using the provided [GroupCipher] + */ +fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher): LocationJourney { + val decryptedFromLat = groupCipher.decrypt(encrypted_from_latitude.toBytes()) + val decryptedFromLong = groupCipher.decrypt(encrypted_from_longitude.toBytes()) + val decryptedToLat = encrypted_to_latitude?.let { groupCipher.decrypt(it.toBytes()) } + val decryptedToLong = encrypted_to_longitude?.let { groupCipher.decrypt(it.toBytes()) } + + val decryptedRoutes = encrypted_routes.map { + JourneyRoute( + latitude = groupCipher.decrypt(it.encrypted_latitude.toBytes()) + .toString(Charsets.UTF_8).toDouble(), + longitude = groupCipher.decrypt(it.encrypted_longitude.toBytes()) + .toString(Charsets.UTF_8).toDouble() + ) + } + + return LocationJourney( + id = id, + user_id = user_id, + from_latitude = decryptedFromLat.toString(Charsets.UTF_8).toDouble(), + from_longitude = decryptedFromLong.toString(Charsets.UTF_8).toDouble(), + to_latitude = decryptedToLat?.toString(Charsets.UTF_8)?.toDouble(), + to_longitude = decryptedToLong?.toString(Charsets.UTF_8)?.toDouble(), + route_distance = route_distance, + route_duration = route_duration, + routes = decryptedRoutes, + created_at = created_at, + updated_at = updated_at + ) +} + +/** + * Convert a [LocationJourney] to an [EncryptedLocationJourney] using the provided [GroupCipher] + */ +fun LocationJourney.toEncryptedLocationJourney( + groupCipher: GroupCipher, + distributionId: UUID +): EncryptedLocationJourney { + val encryptedFromLat = groupCipher.encrypt( + distributionId, + from_latitude.toString().toByteArray(Charsets.UTF_8) + ) + val encryptedFromLong = groupCipher.encrypt( + distributionId, + from_longitude.toString().toByteArray(Charsets.UTF_8) + ) + val encryptedToLat = to_latitude?.let { + groupCipher.encrypt( + distributionId, + it.toString().toByteArray(Charsets.UTF_8) + ) + } + val encryptedToLong = to_longitude?.let { + groupCipher.encrypt( + distributionId, + it.toString().toByteArray(Charsets.UTF_8) + ) + } + + val encryptedRoutes = routes.map { + EncryptedJourneyRoute( + encrypted_latitude = Blob.fromBytes( + groupCipher.encrypt( + distributionId, + it.latitude.toString().toByteArray(Charsets.UTF_8) + ).serialize() + ), + encrypted_longitude = Blob.fromBytes( + groupCipher.encrypt( + distributionId, + it.longitude.toString().toByteArray(Charsets.UTF_8) + ).serialize() + ) + ) + } + + return EncryptedLocationJourney( + id = id, + user_id = user_id, + encrypted_from_latitude = Blob.fromBytes(encryptedFromLat.serialize()), + encrypted_from_longitude = Blob.fromBytes(encryptedFromLong.serialize()), + encrypted_to_latitude = encryptedToLat?.let { Blob.fromBytes(it.serialize()) }, + encrypted_to_longitude = encryptedToLong?.let { Blob.fromBytes(it.serialize()) }, + route_distance = route_distance, + route_duration = route_duration, + encrypted_routes = encryptedRoutes, + created_at = created_at, + updated_at = updated_at + ) +} diff --git a/data/src/main/java/com/canopas/yourspace/data/repository/JourneyRepository.kt b/data/src/main/java/com/canopas/yourspace/data/repository/JourneyRepository.kt index 906dcd7e..62b54267 100644 --- a/data/src/main/java/com/canopas/yourspace/data/repository/JourneyRepository.kt +++ b/data/src/main/java/com/canopas/yourspace/data/repository/JourneyRepository.kt @@ -83,7 +83,7 @@ class JourneyRepository @Inject constructor( lastKnownJourney: LocationJourney ): Boolean { val calendar = Calendar.getInstance() - calendar.timeInMillis = lastKnownJourney.update_at!! + calendar.timeInMillis = lastKnownJourney.updated_at!! val lastKnownDay = calendar.get(Calendar.DAY_OF_MONTH) calendar.timeInMillis = extractedLocation?.time ?: System.currentTimeMillis() val currentDay = calendar.get(Calendar.DAY_OF_MONTH) @@ -94,7 +94,7 @@ class JourneyRepository @Inject constructor( extractedLocation: Location? = null, lastKnownJourney: LocationJourney ): Boolean { - val lastKnownDate = Instant.ofEpochMilli(lastKnownJourney.update_at!!) + val lastKnownDate = Instant.ofEpochMilli(lastKnownJourney.updated_at!!) .atZone(ZoneId.systemDefault()) .toLocalDate() val currentDate = @@ -135,7 +135,7 @@ class JourneyRepository @Inject constructor( lastKnownJourney: LocationJourney ) { val updatedJourney = lastKnownJourney.copy( - update_at = System.currentTimeMillis() + updated_at = System.currentTimeMillis() ) journeyService.updateLastLocationJourney( userId = userId, @@ -211,7 +211,7 @@ class JourneyRepository @Inject constructor( } val timeDifference = - (geometricMedian?.time ?: extractedLocation.time) - lastKnownJourney.update_at!! + (geometricMedian?.time ?: extractedLocation.time) - lastKnownJourney.updated_at!! if (lastKnownJourney.isSteadyLocation()) { // Handle steady user @@ -309,12 +309,12 @@ class JourneyRepository @Inject constructor( to_latitude = extractedLocation.latitude, to_longitude = extractedLocation.longitude, route_distance = distance.toDouble() + (lastKnownJourney.route_distance ?: 0.0), - route_duration = (lastKnownJourney.update_at!! - lastKnownJourney.created_at!!), + route_duration = (lastKnownJourney.updated_at!! - lastKnownJourney.created_at!!), routes = lastKnownJourney.routes + listOf(extractedLocation.toRoute()), created_at = lastKnownJourney.created_at ) val lastJourneyUpdatedTime = locationCache.getLastJourneyUpdatedTime(userId) - val timeDifference = journey.update_at!! - lastJourneyUpdatedTime + val timeDifference = journey.updated_at!! - lastJourneyUpdatedTime if (timeDifference >= MIN_UPDATE_INTERVAL_MS) { // Update last location journey in remote database // as one minute is passed since last update @@ -344,10 +344,10 @@ class JourneyRepository @Inject constructor( to_latitude = extractedLocation.latitude, to_longitude = extractedLocation.longitude, route_distance = distance.toDouble() + (lastKnownJourney.route_distance ?: 0.0), - route_duration = (lastKnownJourney.update_at!! - lastKnownJourney.created_at!!), + route_duration = (lastKnownJourney.updated_at!! - lastKnownJourney.created_at!!), routes = lastKnownJourney.routes + listOf(extractedLocation.toRoute()), created_at = lastKnownJourney.created_at, - update_at = lastKnownJourney.update_at + updated_at = lastKnownJourney.updated_at ) journeyService.updateLastLocationJourney( userId = userId, @@ -360,7 +360,7 @@ class JourneyRepository @Inject constructor( userId = userId, fromLatitude = extractedLocation.latitude, fromLongitude = extractedLocation.longitude, - createdAt = lastKnownJourney.update_at + createdAt = lastKnownJourney.updated_at ) { newJourneyId = it } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 47c442e0..26bcbd53 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -116,9 +116,6 @@ class AuthService @Inject constructor( locationCache.clear() } catch (e: Exception) { throw SecurityException("Failed to completely sign out. Some sensitive data might not be cleared.") - } finally { - // Force garbage collection to clean up any sensitive data in memory - System.gc() } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index b4b56e70..607a525c 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -1,9 +1,10 @@ package com.canopas.yourspace.data.service.location -import com.canopas.yourspace.data.models.location.EncryptedJourneyRoute import com.canopas.yourspace.data.models.location.EncryptedLocationJourney import com.canopas.yourspace.data.models.location.JourneyRoute import com.canopas.yourspace.data.models.location.LocationJourney +import com.canopas.yourspace.data.models.location.toDecryptedLocationJourney +import com.canopas.yourspace.data.models.location.toEncryptedLocationJourney import com.canopas.yourspace.data.models.space.GroupKeysDoc import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.storage.UserPreferences @@ -14,7 +15,6 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_GROUP_ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.PrivateKeyUtils -import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FirebaseFirestore import com.google.firebase.firestore.Query import com.google.firebase.firestore.toObject @@ -81,7 +81,7 @@ class ApiJourneyService @Inject constructor( val groupCipher = GroupCipher(bufferedSenderKeyStore, groupAddress) return Pair(distributionMessage, groupCipher) } catch (e: Exception) { - Timber.e(e, "Error processing group session for spaceId=$spaceId, userId=$userId") + Timber.e(e, "Error processing group session") return null } } @@ -149,7 +149,7 @@ class ApiJourneyService @Inject constructor( route_duration = routeDuration, routes = routes, created_at = createdAt ?: System.currentTimeMillis(), - update_at = updateAt ?: System.currentTimeMillis() + updated_at = updateAt ?: System.currentTimeMillis() ) val docRef = spaceMemberJourneyRef(spaceId, userId).document(journey.id) @@ -162,93 +162,6 @@ class ApiJourneyService @Inject constructor( } } - private fun LocationJourney.toEncryptedLocationJourney( - groupCipher: GroupCipher, - distributionId: UUID - ): EncryptedLocationJourney { - val encryptedFromLat = groupCipher.encrypt( - distributionId, - from_latitude.toString().toByteArray(Charsets.UTF_8) - ) - val encryptedFromLong = groupCipher.encrypt( - distributionId, - from_longitude.toString().toByteArray(Charsets.UTF_8) - ) - val encryptedToLat = to_latitude?.let { - groupCipher.encrypt( - distributionId, - it.toString().toByteArray(Charsets.UTF_8) - ) - } - val encryptedToLong = to_longitude?.let { - groupCipher.encrypt( - distributionId, - it.toString().toByteArray(Charsets.UTF_8) - ) - } - - val encryptedRoutes = routes.map { - EncryptedJourneyRoute( - encrypted_latitude = Blob.fromBytes( - groupCipher.encrypt( - distributionId, - it.latitude.toString().toByteArray(Charsets.UTF_8) - ).serialize() - ), - encrypted_longitude = Blob.fromBytes( - groupCipher.encrypt( - distributionId, - it.longitude.toString().toByteArray(Charsets.UTF_8) - ).serialize() - ) - ) - } - - return EncryptedLocationJourney( - id = id, - user_id = user_id, - encrypted_from_latitude = Blob.fromBytes(encryptedFromLat.serialize()), - encrypted_from_longitude = Blob.fromBytes(encryptedFromLong.serialize()), - encrypted_to_latitude = encryptedToLat?.let { Blob.fromBytes(it.serialize()) }, - encrypted_to_longitude = encryptedToLong?.let { Blob.fromBytes(it.serialize()) }, - route_distance = route_distance, - route_duration = route_duration, - encrypted_routes = encryptedRoutes, - created_at = created_at, - updated_at = update_at - ) - } - - private fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher): LocationJourney { - val decryptedFromLat = groupCipher.decrypt(encrypted_from_latitude.toBytes()) - val decryptedFromLong = groupCipher.decrypt(encrypted_from_longitude.toBytes()) - val decryptedToLat = encrypted_to_latitude?.let { groupCipher.decrypt(it.toBytes()) } - val decryptedToLong = encrypted_to_longitude?.let { groupCipher.decrypt(it.toBytes()) } - - val decryptedRoutes = encrypted_routes.map { - JourneyRoute( - latitude = groupCipher.decrypt(it.encrypted_latitude.toBytes()) - .toString(Charsets.UTF_8).toDouble(), - longitude = groupCipher.decrypt(it.encrypted_longitude.toBytes()) - .toString(Charsets.UTF_8).toDouble() - ) - } - - return LocationJourney( - id = id, - user_id = user_id, - from_latitude = decryptedFromLat.toString(Charsets.UTF_8).toDouble(), - from_longitude = decryptedFromLong.toString(Charsets.UTF_8).toDouble(), - to_latitude = decryptedToLat?.toString(Charsets.UTF_8)?.toDouble(), - to_longitude = decryptedToLong?.toString(Charsets.UTF_8)?.toDouble(), - route_distance = route_distance, - route_duration = route_duration, - routes = decryptedRoutes, - created_at = created_at, - update_at = updated_at - ) - } - suspend fun updateLastLocationJourney(userId: String, journey: LocationJourney) { userPreferences.currentUser?.space_ids?.forEach { spaceId -> val cipherAndMessage = getGroupCipherAndDistributionMessage(spaceId, userId) ?: run { diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index ffda51f8..d8b725a4 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -136,18 +136,15 @@ class ApiLocationService @Inject constructor( } catch (e: Exception) { when (e) { is NoSessionException -> { - Timber.e("No session found for userId: $userId in spaceId: $spaceId. Skipping save.") + Timber.e("No session found. Skipping save.") } is InvalidSenderKeySessionException -> { - Timber.e("Invalid sender key session for userId: $userId in spaceId: $spaceId. Skipping save.") + Timber.e("Invalid sender key session. Skipping save.") } else -> { - Timber.e( - e, - "Failed to save encrypted location for userId: $userId in spaceId: $spaceId" - ) + Timber.e(e, "Failed to save encrypted location") } } } From 7569da4f9c732bd580a06794b4cb42c599f3fba3 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Fri, 3 Jan 2025 16:37:05 +0530 Subject: [PATCH 19/39] Update readme --- README.md | 55 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index b78052d0..206b95b1 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,55 @@

-# GroupTrack - Stay connected, Anywhere! +# Grouptrack - Stay connected, Anywhere! Enhancing family safety and communication with real-time location sharing and modern UIs. cover ## Overview -Welcome to GroupTrack, an open-source Android application designed to enhance family safety through real-time location sharing and communication features. GroupTrack aims to provide peace of mind by ensuring the safety of your loved ones and facilitating seamless communication regardless of their location. +Welcome to Grouptrack, an open-source Android application designed to enhance family safety through real-time location sharing and communication features. Grouptrack aims to provide peace of mind by ensuring the safety of your loved ones and facilitating seamless communication regardless of their location. -GroupTrack adopts the MVVM architecture pattern and leverages Jetpack Compose for building modern UIs declaratively. This architecture ensures a clear separation of concerns, making the codebase more maintainable and testable. Jetpack Compose simplifies UI development by allowing developers to define UI elements and their behavior in a more intuitive way, resulting in a seamless user experience. +Grouptrack adopts the MVVM architecture pattern and leverages Jetpack Compose for building modern UIs declaratively. This architecture ensures a clear separation of concerns, making the codebase more maintainable and testable. Jetpack Compose simplifies UI development by allowing developers to define UI elements and their behavior in a more intuitive way, resulting in a seamless user experience. ## Download App - ## Features -GroupTrack is currently in active development 🚧, with plans to incorporate additional features shortly. +Grouptrack is currently in active development 🚧, with plans to incorporate additional features shortly. -GroupTrack ensures your loved ones' well-being with: +Grouptrack ensures your loved ones' well-being with: - [X] Real-time Location Sharing - [X] Secure Communication - [X] Location History with Routes - [X] Geo-fencing +- [X] End-to-End Encryption - [ ] SOS Help Alert +## Security Features + +### End-to-End Encryption +Grouptrack ensures the privacy and security of your data by implementing end-to-end encryption. This encryption method ensures that only the group members can access the location data, preventing unauthorized access by third parties. + +- 🔐 **Signal Protocol Integration** + - Leverages the industry-leading Signal Protocol for end-to-end encryption + - Provides advanced cryptographic protection for all shared location data + +- 🔒 **Comprehensive Data Protection** + - All location data are encrypted before transmission + - Encryption keys are uniquely generated for each user and space + - No third-party, including Grouptrack servers, can access unencrypted data + +- 🔑 **Advanced Encryption Mechanisms** + - Utilizes industry-standard encryption algorithms (e.g., AES-256) + - Implements secure key exchange protocols + - Ensures data integrity and confidentiality + +- 🛡️ **Privacy Guarantees** + - Encryption happens client-side before data leaves the device + - Encrypted data is stored securely with no server-side decryption + +*Note: End-to-end encryption ensures that only intended group member can decrypt and view shared information.* + ## Screenshots @@ -34,9 +59,9 @@ GroupTrack ensures your loved ones' well-being with: - - - + + +
Location History
Family Safety At Your Fingertips Say Goodbye to 'Where are You?' Texts Always Track Your Loved Ones Family Safety At Your Fingertips Say Goodbye to 'Where are You?' Texts Always Track Your Loved Ones
@@ -46,8 +71,8 @@ GroupTrack ensures your loved ones' well-being with: Communication - Customize Your Places According to Your Needs - Chat with Your Loved Ones Anytime, Anywhere + Customize Your Places According to Your Needs + Chat with Your Loved Ones Anytime, Anywhere @@ -70,14 +95,14 @@ Use the `applicationId` value specified in the `app/build.gradle` file of the ap Once the project is created, you will need to add the `google-services.json` file to the app module. For more information, refer to the [Firebase documentation](https://firebase.google.com/docs/android/setup). -GroupTrack uses the following Firebase services, Make sure you enable them in your Firebase project: +Grouptrack uses the following Firebase services, Make sure you enable them in your Firebase project: - Authentication (Phone, Google) - Firestore (To store user data) ## Tech stack -GroupTrack utilizes the latest Android technologies and adheres to industry best practices. Below is the current tech stack used in the development process: +Grouptrack utilizes the latest Android technologies and adheres to industry best practices. Below is the current tech stack used in the development process: - MVVM Architecture - Jetpack Compose @@ -100,13 +125,13 @@ GroupTrack utilizes the latest Android technologies and adheres to industry best The Canopas team enthusiastically welcomes contributions and project participation! There are a bunch of things you can do if you want to contribute! The [Contributor Guide](CONTRIBUTING.md) has all the information you need for everything from reporting bugs to contributing entire new features. Please don't hesitate to jump in if you'd like to, or even ask us questions if something isn't clear. ## Credits -GroupTrack is owned and maintained by the [Canopas team](https://canopas.com/). You can follow them on X at [@canopassoftware](https://x.com/canopassoftware) for project updates and releases. If you are interested in building apps or designing products, please let us know. We'd love to hear from you! +Grouptrack is owned and maintained by the [Canopas team](https://canopas.com/). You can follow them on X at [@canopassoftware](https://x.com/canopassoftware) for project updates and releases. If you are interested in building apps or designing products, please let us know. We'd love to hear from you! ## License -GroupTrack is licensed under the Apache License, Version 2.0. +Grouptrack is licensed under the Apache License, Version 2.0. ``` Copyright 2024 Canopas Software LLP From 4a767f0719f6020ab8554422eb5e2c7bf283131b Mon Sep 17 00:00:00 2001 From: Sneh Date: Mon, 6 Jan 2025 12:05:25 +0530 Subject: [PATCH 20/39] Fix address naming for moving journeys. --- .../journey/components/LocationHistory.kt | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt index 28ebeba3..67a155b9 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt @@ -480,23 +480,33 @@ fun Address.formattedTitle(toAddress: Address?): String { } private fun extractLocationName(address: Address): String { + val roadName = address.thoroughfare?.trim() + val area = address.subLocality?.trim() val featureName = address.featureName?.trim() - val thoroughfare = address.thoroughfare?.trim() + val city = address.locality?.trim() + val state = address.adminArea?.trim() val potentialNames = listOf( - featureName, - thoroughfare + roadName, + area, + city, + state, + featureName ).filterNot { it.isNullOrEmpty() } val cleanedNames = potentialNames.map { it?.replace(Regex("^[A-Za-z0-9]+\\+.*"), "")?.trim() } val name = cleanedNames.firstOrNull { it?.isNotEmpty() == true } ?: "Unknown Road" - val resultName = if (name.matches(Regex("^[0-9].*"))) { - val streetName = cleanedNames.getOrNull(1) ?: "" - "$name $streetName".trim() - } else { - name + val addressName = when { + name.matches(Regex("^[0-9].*")) -> { + val streetName = cleanedNames.getOrNull(1) ?: "" + "$name $streetName".trim() + } + roadName != null -> "$roadName, ${area ?: city}" + area != null -> "$area, $city" + featureName != null -> "$featureName, $city" + else -> name } - return resultName + return addressName } From c965bb08c63aa2ef1e72d6a4babb1bad0a65b6dc Mon Sep 17 00:00:00 2001 From: Sneh Date: Mon, 6 Jan 2025 14:04:09 +0530 Subject: [PATCH 21/39] Fix address naming for moving journeys. --- .../yourspace/ui/flow/home/home/HomeScreen.kt | 6 +-- .../ui/flow/home/home/HomeScreenViewModel.kt | 4 ++ .../yourspace/ui/flow/home/map/MapScreen.kt | 49 +++++++++++++++++-- .../ui/flow/home/map/MapViewModel.kt | 2 +- 4 files changed, 53 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt index f3112ca7..02a03c2c 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt @@ -81,7 +81,7 @@ fun HomeScreen(verifyingSpace: Boolean) { modifier = Modifier .padding(it) ) { - HomeScreenContent(navController) + HomeScreenContent(navController, viewModel) HomeTopBar(verifyingSpace) } @@ -207,13 +207,13 @@ private fun MapControl( @OptIn(ExperimentalAnimationApi::class) @Composable -fun HomeScreenContent(navController: NavHostController) { +fun HomeScreenContent(navController: NavHostController, viewModel: HomeScreenViewModel) { NavHost( navController = navController, startDestination = AppDestinations.map.path ) { tabComposable(AppDestinations.map.path) { - MapScreen() + MapScreen(viewModel) } tabComposable(AppDestinations.places.path) { diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreenViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreenViewModel.kt index b53ce479..038ded2d 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreenViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreenViewModel.kt @@ -119,6 +119,10 @@ class HomeScreenViewModel @Inject constructor( _state.value.copy(showSpaceSelectionPopup = !state.value.showSpaceSelectionPopup) } + fun dismissSpaceSelection() { + _state.value = _state.value.copy(showSpaceSelectionPopup = false) + } + fun navigateToCreateSpace() { navigator.navigateTo(AppDestinations.createSpace.path) } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt index 3e734ca8..92f185ed 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt @@ -57,6 +57,7 @@ import com.canopas.yourspace.domain.utils.isLocationServiceEnabled import com.canopas.yourspace.domain.utils.openLocationSettings import com.canopas.yourspace.ui.component.AppBanner import com.canopas.yourspace.ui.component.ShowEnableLocationDialog +import com.canopas.yourspace.ui.flow.home.home.HomeScreenViewModel import com.canopas.yourspace.ui.flow.home.map.component.AddMemberBtn import com.canopas.yourspace.ui.flow.home.map.component.MapCircles import com.canopas.yourspace.ui.flow.home.map.component.MapControlBtn @@ -85,9 +86,12 @@ private const val DEFAULT_CAMERA_ZOOM_FOR_SELECTED_USER = 17f @OptIn(ExperimentalPermissionsApi::class) @Composable -fun MapScreen() { +fun MapScreen(homeScreenViewModel: HomeScreenViewModel) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() + + val homeScreenState by homeScreenViewModel.state.collectAsState() + val scope = rememberCoroutineScope() if (state.errorMessage != null) { @@ -136,7 +140,7 @@ fun MapScreen() { } Box(modifier = Modifier.fillMaxSize()) { - MapView(cameraPositionState) + MapView(cameraPositionState, homeScreenViewModel) Column( modifier = Modifier @@ -145,6 +149,9 @@ fun MapScreen() { ) { Column(modifier = Modifier.align(Alignment.End)) { MapControlBtn(icon = R.drawable.ic_map_type) { + if (homeScreenState.showSpaceSelectionPopup) { + homeScreenViewModel.dismissSpaceSelection() + } viewModel.toggleStyleSheetVisibility(true) } @@ -153,6 +160,9 @@ fun MapScreen() { show = relocate ) { scope.launch { + if (homeScreenState.showSpaceSelectionPopup) { + homeScreenViewModel.dismissSpaceSelection() + } if (state.isMapLoaded) { cameraPositionState.animate( CameraUpdateFactory.newLatLngZoom( @@ -169,6 +179,9 @@ fun MapScreen() { containerColor = AppTheme.colorScheme.primary, contentColor = AppTheme.colorScheme.textInversePrimary ) { + if (homeScreenState.showSpaceSelectionPopup) { + homeScreenViewModel.dismissSpaceSelection() + } viewModel.navigateToPlaces() } } @@ -212,6 +225,9 @@ fun MapScreen() { } items(state.members) { MapUserItem(it) { + if (homeScreenState.showSpaceSelectionPopup) { + homeScreenViewModel.dismissSpaceSelection() + } viewModel.showMemberDetail(it) } } @@ -330,7 +346,8 @@ fun PermissionFooter(onClick: () -> Unit) { @Composable private fun MapView( - cameraPositionState: CameraPositionState + cameraPositionState: CameraPositionState, + homeScreenViewModel: HomeScreenViewModel ) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() @@ -368,6 +385,17 @@ private fun MapView( ), onMapLoaded = { viewModel.onMapLoaded() + }, + onMapClick = { + if (homeScreenViewModel.state.value.showSpaceSelectionPopup) { + homeScreenViewModel.dismissSpaceSelection() + } + if (state.showUserDetails) { + viewModel.dismissMemberDetail() + } + if (state.isStyleSheetVisible) { + viewModel.toggleStyleSheetVisibility(false) + } } ) { if (state.members.isNotEmpty()) { @@ -377,6 +405,12 @@ private fun MapView( location = it.location!!, isSelected = it.user.id == state.selectedUser?.user?.id ) { + if (homeScreenViewModel.state.value.showSpaceSelectionPopup) { + homeScreenViewModel.dismissSpaceSelection() + } + if (state.isStyleSheetVisible) { + viewModel.toggleStyleSheetVisibility(false) + } viewModel.showMemberDetail(it) } } @@ -388,7 +422,14 @@ private fun MapView( user = currentUser, location = location.toApiLocation(currentUser.id), isSelected = currentUser.id == state.selectedUser?.user?.id - ) {} + ) { + if (homeScreenViewModel.state.value.showSpaceSelectionPopup) { + homeScreenViewModel.dismissSpaceSelection() + } + if (state.isStyleSheetVisible) { + viewModel.toggleStyleSheetVisibility(false) + } + } } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapViewModel.kt index 31e766ea..f74a13cf 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapViewModel.kt @@ -182,7 +182,7 @@ class MapViewModel @Inject constructor( } fun toggleStyleSheetVisibility(isVisible: Boolean) { - _state.value = _state.value.copy(isStyleSheetVisible = isVisible) + _state.value = _state.value.copy(isStyleSheetVisible = isVisible, showUserDetails = false) } fun showJourneyTimeline() { From d9901d60272ede9659fb1e9a98bf275c1cbdf73c Mon Sep 17 00:00:00 2001 From: cp-megh Date: Mon, 6 Jan 2025 17:34:13 +0530 Subject: [PATCH 22/39] PR changes --- .../ui/flow/pin/enterpin/EnterPinScreen.kt | 30 +++++++------ .../ui/flow/pin/setpin/SetPinScreen.kt | 29 ++++++------- .../data/models/location/ApiLocation.kt | 4 +- .../data/models/location/LocationJourney.kt | 42 +++++++++---------- .../service/location/ApiLocationService.kt | 8 ++-- firestore.rules | 18 ++++---- 6 files changed, 63 insertions(+), 68 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt index 7835c201..926143d3 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt @@ -14,7 +14,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment @@ -53,15 +52,6 @@ private fun EnterPinContent(modifier: Modifier) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() val context = LocalContext.current - var pinErrorText = "" - LaunchedEffect(state.pinError) { - pinErrorText = when (state.pinError) { - PinErrorState.LENGTH_ERROR -> context.getString(R.string.enter_pin_error_text_length) - PinErrorState.CHARACTERS_ERROR -> context.getString(R.string.enter_pin_error_characters_input) - PinErrorState.INVALID_PIN -> context.getString(R.string.enter_pin_invalid_pin_text) - else -> "" - } - } Column( modifier = modifier @@ -96,12 +86,20 @@ private fun EnterPinContent(modifier: Modifier) { Spacer(modifier = Modifier.height(16.dp)) - Text( - text = pinErrorText, - color = if (pinErrorText.isNotEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier.padding(top = 8.dp) - ) + if (state.pinError != null) { + val pinErrorText = when (state.pinError) { + PinErrorState.LENGTH_ERROR -> context.getString(R.string.enter_pin_error_text_length) + PinErrorState.CHARACTERS_ERROR -> context.getString(R.string.enter_pin_error_characters_input) + PinErrorState.INVALID_PIN -> context.getString(R.string.enter_pin_invalid_pin_text) + else -> "" + } + Text( + text = pinErrorText, + color = if (pinErrorText.isNotEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 8.dp) + ) + } Spacer(modifier = Modifier.height(24.dp)) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt index 8d2575cf..55ead0f8 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt @@ -14,7 +14,6 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment @@ -53,15 +52,6 @@ private fun SetPinContent(modifier: Modifier) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() val context = LocalContext.current - var pinErrorText = "" - - LaunchedEffect(state.pinError) { - pinErrorText = when (state.pinError) { - PinErrorState.LENGTH_ERROR -> context.getString(R.string.set_pin_error_text_length) - PinErrorState.CHARACTERS_ERROR -> context.getString(R.string.set_pin_error_characters_input) - else -> "" - } - } Column( modifier = modifier @@ -96,12 +86,19 @@ private fun SetPinContent(modifier: Modifier) { Spacer(modifier = Modifier.height(16.dp)) - Text( - text = pinErrorText, - color = if (pinErrorText.isNotEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier.padding(top = 8.dp) - ) + if (state.pinError != null) { + val pinErrorText = when (state.pinError) { + PinErrorState.LENGTH_ERROR -> context.getString(R.string.set_pin_error_text_length) + PinErrorState.CHARACTERS_ERROR -> context.getString(R.string.set_pin_error_characters_input) + else -> "" + } + Text( + text = pinErrorText, + color = if (pinErrorText.isNotEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, + style = MaterialTheme.typography.bodyMedium, + modifier = Modifier.padding(top = 8.dp) + ) + } Spacer(modifier = Modifier.height(24.dp)) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt index 78b7c0c0..ec904edc 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/ApiLocation.kt @@ -20,8 +20,8 @@ data class ApiLocation( data class EncryptedApiLocation( val id: String = UUID.randomUUID().toString(), val user_id: String = "", - val encrypted_latitude: Blob = Blob.fromBytes(ByteArray(0)), // Base64 encoded encrypted latitude - val encrypted_longitude: Blob = Blob.fromBytes(ByteArray(0)), // Base64 encoded encrypted longitude + val latitude: Blob = Blob.fromBytes(ByteArray(0)), // Base64 encoded encrypted latitude + val longitude: Blob = Blob.fromBytes(ByteArray(0)), // Base64 encoded encrypted longitude val created_at: Long = System.currentTimeMillis() ) diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index cec877c8..6b59cdac 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -29,13 +29,13 @@ data class LocationJourney( data class EncryptedLocationJourney( val id: String = UUID.randomUUID().toString(), val user_id: String = "", - val encrypted_from_latitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted latitude - from - val encrypted_from_longitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted longitude - from - val encrypted_to_latitude: Blob? = null, // Encrypted latitude - to - val encrypted_to_longitude: Blob? = null, // Encrypted longitude - to + val from_latitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted latitude - from + val from_longitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted longitude - from + val to_latitude: Blob? = null, // Encrypted latitude - to + val to_longitude: Blob? = null, // Encrypted longitude - to val route_distance: Double? = null, val route_duration: Long? = null, - val encrypted_routes: List = emptyList(), // Encrypted journey routes + val routes: List = emptyList(), // Encrypted journey routes val created_at: Long = System.currentTimeMillis(), val updated_at: Long = System.currentTimeMillis() ) @@ -46,8 +46,8 @@ data class JourneyRoute(val latitude: Double = 0.0, val longitude: Double = 0.0) @Keep @JsonClass(generateAdapter = true) data class EncryptedJourneyRoute( - val encrypted_latitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted latitude - val encrypted_longitude: Blob = Blob.fromBytes(ByteArray(0)) // Encrypted longitude + val latitude: Blob = Blob.fromBytes(ByteArray(0)), // Encrypted latitude + val longitude: Blob = Blob.fromBytes(ByteArray(0)) // Encrypted longitude ) fun Location.toRoute(): JourneyRoute { @@ -94,16 +94,16 @@ fun Location.toLocationJourney(userId: String, journeyId: String) = LocationJour * Convert an [EncryptedLocationJourney] to a [LocationJourney] using the provided [GroupCipher] */ fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher): LocationJourney { - val decryptedFromLat = groupCipher.decrypt(encrypted_from_latitude.toBytes()) - val decryptedFromLong = groupCipher.decrypt(encrypted_from_longitude.toBytes()) - val decryptedToLat = encrypted_to_latitude?.let { groupCipher.decrypt(it.toBytes()) } - val decryptedToLong = encrypted_to_longitude?.let { groupCipher.decrypt(it.toBytes()) } + val decryptedFromLat = groupCipher.decrypt(from_latitude.toBytes()) + val decryptedFromLong = groupCipher.decrypt(from_longitude.toBytes()) + val decryptedToLat = to_latitude?.let { groupCipher.decrypt(it.toBytes()) } + val decryptedToLong = to_longitude?.let { groupCipher.decrypt(it.toBytes()) } - val decryptedRoutes = encrypted_routes.map { + val decryptedRoutes = routes.map { JourneyRoute( - latitude = groupCipher.decrypt(it.encrypted_latitude.toBytes()) + latitude = groupCipher.decrypt(it.latitude.toBytes()) .toString(Charsets.UTF_8).toDouble(), - longitude = groupCipher.decrypt(it.encrypted_longitude.toBytes()) + longitude = groupCipher.decrypt(it.longitude.toBytes()) .toString(Charsets.UTF_8).toDouble() ) } @@ -153,13 +153,13 @@ fun LocationJourney.toEncryptedLocationJourney( val encryptedRoutes = routes.map { EncryptedJourneyRoute( - encrypted_latitude = Blob.fromBytes( + latitude = Blob.fromBytes( groupCipher.encrypt( distributionId, it.latitude.toString().toByteArray(Charsets.UTF_8) ).serialize() ), - encrypted_longitude = Blob.fromBytes( + longitude = Blob.fromBytes( groupCipher.encrypt( distributionId, it.longitude.toString().toByteArray(Charsets.UTF_8) @@ -171,13 +171,13 @@ fun LocationJourney.toEncryptedLocationJourney( return EncryptedLocationJourney( id = id, user_id = user_id, - encrypted_from_latitude = Blob.fromBytes(encryptedFromLat.serialize()), - encrypted_from_longitude = Blob.fromBytes(encryptedFromLong.serialize()), - encrypted_to_latitude = encryptedToLat?.let { Blob.fromBytes(it.serialize()) }, - encrypted_to_longitude = encryptedToLong?.let { Blob.fromBytes(it.serialize()) }, + from_latitude = Blob.fromBytes(encryptedFromLat.serialize()), + from_longitude = Blob.fromBytes(encryptedFromLong.serialize()), + to_latitude = encryptedToLat?.let { Blob.fromBytes(it.serialize()) }, + to_longitude = encryptedToLong?.let { Blob.fromBytes(it.serialize()) }, route_distance = route_distance, route_duration = route_duration, - encrypted_routes = encryptedRoutes, + routes = encryptedRoutes, created_at = created_at, updated_at = updated_at ) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index d8b725a4..4632db19 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -127,8 +127,8 @@ class ApiLocationService @Inject constructor( val location = EncryptedApiLocation( user_id = userId, - encrypted_latitude = Blob.fromBytes(encryptedLatitude.serialize()), - encrypted_longitude = Blob.fromBytes(encryptedLongitude.serialize()), + latitude = Blob.fromBytes(encryptedLatitude.serialize()), + longitude = Blob.fromBytes(encryptedLongitude.serialize()), created_at = recordedAt ) @@ -175,9 +175,9 @@ class ApiLocationService @Inject constructor( getGroupCipherAndDistributionMessage(currentSpaceId, userId)?.second ?: return null return try { - val latitudeBytes = groupCipher.decrypt(encryptedLocation.encrypted_latitude.toBytes()) + val latitudeBytes = groupCipher.decrypt(encryptedLocation.latitude.toBytes()) val longitudeBytes = - groupCipher.decrypt(encryptedLocation.encrypted_longitude.toBytes()) + groupCipher.decrypt(encryptedLocation.longitude.toBytes()) val latitude = latitudeBytes.toString(Charsets.UTF_8).toDoubleOrNull() val longitude = longitudeBytes.toString(Charsets.UTF_8).toDoubleOrNull() diff --git a/firestore.rules b/firestore.rules index 4efe4bcd..9f7db645 100644 --- a/firestore.rules +++ b/firestore.rules @@ -47,7 +47,7 @@ service cloud.firestore { request.resource.data.get('fcm_token', '') is string && request.resource.data.get('profile_image', '') is string && request.resource.data.get('space_ids', []) is list; - allow update: if true; + allow update: if isAuthorized() && request.auth.uid == resource.data.id; allow delete: if isAuthorized() && request.auth.uid == resource.data.id; allow read: if isAuthorized(); @@ -69,7 +69,7 @@ service cloud.firestore { match /user_journeys/{docId} { allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || readUserLocation()); - allow update: if true; + allow update: if isAuthorized() && request.auth.uid == resource.data.user_id; allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && @@ -115,7 +115,7 @@ service cloud.firestore { } match /spaces/{spaceId} { - allow read: if true; + allow read: if isAuthorized() && isSpaceMember(spaceId); allow delete: if isAuthorized() && request.auth.uid == resource.data.admin_id; allow update: if isAuthorized() && request.auth.uid == resource.data.admin_id; allow create: if isAuthorized() && @@ -220,11 +220,11 @@ service cloud.firestore { allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "encrypted_latitude", "encrypted_longitude", "created_at"]) && + request.resource.data.keys().hasAll(["id", "user_id", "latitude", "longitude", "created_at"]) && request.resource.data.id is string && request.resource.data.user_id is string && - request.resource.data.encrypted_latitude is bytes && - request.resource.data.encrypted_longitude is bytes && + request.resource.data.latitude is bytes && + request.resource.data.longitude is bytes && request.resource.data.created_at is int; } @@ -235,11 +235,11 @@ service cloud.firestore { allow delete: if isAuthorized() && request.auth.uid == resource.data.user_id; allow create: if isAuthorized() && request.auth.uid == request.resource.data.user_id && - request.resource.data.keys().hasAll(["id", "user_id", "encrypted_from_latitude", "encrypted_from_longitude", "created_at"]) && + request.resource.data.keys().hasAll(["id", "user_id", "from_latitude", "from_longitude", "created_at"]) && request.resource.data.id is string && request.resource.data.user_id is string && - request.resource.data.encrypted_from_latitude is bytes && - request.resource.data.encrypted_from_longitude is bytes && + request.resource.data.from_latitude is bytes && + request.resource.data.from_longitude is bytes && request.resource.data.created_at is int; } From 33bf8328fe6f457e66f3ada12758fd6d73bd34ac Mon Sep 17 00:00:00 2001 From: cp-megh Date: Mon, 6 Jan 2025 17:42:24 +0530 Subject: [PATCH 23/39] merge main --- .../yourspace/data/repository/JourneyRepository.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/data/src/main/java/com/canopas/yourspace/data/repository/JourneyRepository.kt b/data/src/main/java/com/canopas/yourspace/data/repository/JourneyRepository.kt index fac8c3de..58dea8b1 100644 --- a/data/src/main/java/com/canopas/yourspace/data/repository/JourneyRepository.kt +++ b/data/src/main/java/com/canopas/yourspace/data/repository/JourneyRepository.kt @@ -83,7 +83,7 @@ class JourneyRepository @Inject constructor( lastKnownJourney: LocationJourney ): Boolean { val calendar = Calendar.getInstance() - calendar.timeInMillis = lastKnownJourney.updated_at!! + calendar.timeInMillis = lastKnownJourney.updated_at val lastKnownDay = calendar.get(Calendar.DAY_OF_MONTH) calendar.timeInMillis = extractedLocation?.time ?: System.currentTimeMillis() val currentDay = calendar.get(Calendar.DAY_OF_MONTH) @@ -94,7 +94,7 @@ class JourneyRepository @Inject constructor( extractedLocation: Location? = null, lastKnownJourney: LocationJourney ): Boolean { - val lastKnownDate = Instant.ofEpochMilli(lastKnownJourney.updated_at!!) + val lastKnownDate = Instant.ofEpochMilli(lastKnownJourney.updated_at) .atZone(ZoneId.systemDefault()) .toLocalDate() val currentDate = @@ -213,7 +213,7 @@ class JourneyRepository @Inject constructor( } val timeDifference = - (geometricMedian?.time ?: extractedLocation.time) - lastKnownJourney.updated_at!! + (geometricMedian?.time ?: extractedLocation.time) - lastKnownJourney.updated_at if (lastKnownJourney.type == JourneyType.STEADY) { // Handle steady user @@ -312,13 +312,13 @@ class JourneyRepository @Inject constructor( to_latitude = extractedLocation.latitude, to_longitude = extractedLocation.longitude, route_distance = distance.toDouble() + (lastKnownJourney.route_distance ?: 0.0), - route_duration = (lastKnownJourney.updated_at!! - lastKnownJourney.created_at!!), + route_duration = (lastKnownJourney.updated_at - lastKnownJourney.created_at), routes = lastKnownJourney.routes + listOf(extractedLocation.toRoute()), created_at = lastKnownJourney.created_at, type = JourneyType.MOVING ) val lastJourneyUpdatedTime = locationCache.getLastJourneyUpdatedTime(userId) - val timeDifference = journey.updated_at!! - lastJourneyUpdatedTime + val timeDifference = journey.updated_at - lastJourneyUpdatedTime if (timeDifference >= MIN_UPDATE_INTERVAL_MS) { // Update last location journey in remote database // as one minute is passed since last update @@ -348,7 +348,7 @@ class JourneyRepository @Inject constructor( to_latitude = extractedLocation.latitude, to_longitude = extractedLocation.longitude, route_distance = distance.toDouble() + (lastKnownJourney.route_distance ?: 0.0), - route_duration = (lastKnownJourney.updated_at!! - lastKnownJourney.created_at!!), + route_duration = (lastKnownJourney.updated_at - lastKnownJourney.created_at), routes = lastKnownJourney.routes + listOf(extractedLocation.toRoute()), created_at = lastKnownJourney.created_at, updated_at = lastKnownJourney.updated_at, @@ -410,7 +410,7 @@ class JourneyRepository @Inject constructor( lastJourney?.let { journey -> if (from != null && to != null) { val calendar = Calendar.getInstance() - calendar.timeInMillis = journey.created_at!! + calendar.timeInMillis = journey.created_at val lastKnownDay = calendar.get(Calendar.DAY_OF_MONTH) calendar.timeInMillis = from val fromDay = calendar.get(Calendar.DAY_OF_MONTH) From e7a451b87a2c5963fb7714a7d292aab9e2363aac Mon Sep 17 00:00:00 2001 From: cp-megh Date: Mon, 6 Jan 2025 18:00:45 +0530 Subject: [PATCH 24/39] minor change --- .../yourspace/data/service/location/ApiJourneyService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index fb329dd7..7f22f666 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -242,7 +242,7 @@ class ApiJourneyService @Inject constructor( val previousDayJourney = spaceMemberJourneyRef(currentSpaceId, userId) .whereEqualTo("user_id", userId) .whereLessThan("created_at", from) - .whereGreaterThanOrEqualTo("update_at", from) + .whereGreaterThanOrEqualTo("updated_at", from) .limit(1) .get() .await() From 59d8bddc37ee21068a03c24bcae854edabea19ab Mon Sep 17 00:00:00 2001 From: cp-megh Date: Tue, 7 Jan 2025 09:36:32 +0530 Subject: [PATCH 25/39] minor change --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 206b95b1..197ed2f0 100644 --- a/README.md +++ b/README.md @@ -59,9 +59,9 @@ Grouptrack ensures the privacy and security of your data by implementing end-to- Location History - Family Safety At Your Fingertips - Say Goodbye to 'Where are You?' Texts - Always Track Your Loved Ones + Family Safety At Your Fingertips + Say Goodbye to 'Where are You?' Texts + Always Track Your Loved Ones @@ -71,8 +71,8 @@ Grouptrack ensures the privacy and security of your data by implementing end-to- Communication - Customize Your Places According to Your Needs - Chat with Your Loved Ones Anytime, Anywhere + Customize Your Places According to Your Needs + Chat with Your Loved Ones Anytime, Anywhere From 22907109350448fcc73babbffcc47c893ea330bf Mon Sep 17 00:00:00 2001 From: cp-megh Date: Tue, 7 Jan 2025 09:39:02 +0530 Subject: [PATCH 26/39] minor change --- screenshots/cover_image.png | Bin 1454351 -> 856580 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshots/cover_image.png b/screenshots/cover_image.png index 74a64d2013625453e5b8ee0cd8586414d761b628..f68424563b63a01b28c216db43e3f905101f95b9 100644 GIT binary patch literal 856580 zcmXtfV{~L)*KNhNopfy5=-BDlw%M_5I~7|U+qT`Y&5m>Pymx$mSJl{KRPD1S)?6n- zQChRB8T1ceV1byh=~M#WZ=pr<@S1j-*L=xz{4pFegC9xG z$9xO7*;g4PFI}px$|I*&r!Yb*_X3Z<)K|(qX|s7$d+vGdw@_MMW(VoRa8QEnTb@^^ zeipEiF%wgVFqelQ$8LE;?@`)uv)#M~?-ee<4yfFdD&G~VD7g#uggcZn`3$-spOJ>g zNl(Ygj)M`AQN+j%mjtAjErQ;VIO0E))K%?R_);MvVW22uq{w)ewD#GJDZV4eg$eh^ zSjAiLt=~>A#2q4*V`6uDs5vkq2c#bNI|kOZJWrWGa-mP~vB!sl8~W|f!9xnb;zvpu z=gLVczc|425=DYL8w=eAzC#2~4DrN=k2lu;!cW5Uv0~^uZ5e1pJMt8>Wi?=IA#MNaqEMjhL zl7 z1aQEZe;^(Ox+jMjvRnZKPs6)C%rR3{kK0<{FW{ID*t*+3&YP=eU}+=fqZa&84j{uP zV;0N?cSs*3m7?3}-wmw$x_v>h`9wp#Q*snTy=yI?+ySKdUiQiG1X!n06J>A<)})9vW#W;YV$Nn_{$F5QVjdEZr>Uw<4x+B=u zks16lQlq|7w`gspZAL^EEiGx*oL^^P#cAX?((jroIG?Rdk^UJbZ^m3^Kw=^)LrgFg zu4guz5o0B(kkKTa@<;QBb^TbS&Ae4dRgm(&DGXgOo32`ygY5tVYqC5o@;aTpg;hzk zQ>Bu4R*Ib(3Z`7Cu&W*fEpsP4>C62W3ptB5Wo-^9wPnMwHmk^EL^EW0Q(+2=AclHJ~z!=JM&hrcOXHK<|#dPT6q*B+eS2IAqXkO4d_ssJHg zV$x`!xq_9UhmqZC$wl4s#Z7Q_Su&_y)HI1F@efSaGbme40B#}o=5xfxrovFjK`JT; zKz9&i*0CmDQ!3}s&o`=Li zyF%A)oHC061IV3bQv1LKvamlQ*JYqLf}pmjNUkH(Y^~Wz&|2oGZD=j4Da|Wut?6k} zcInLNDgD*cBd@VaT+y?jW_20&UTa$mY;nC%rGi5e8fdO47u7FbP*FqF5zm4huez$U zNNG$I!Gm2iLZ)o#01-n)68Ek4EiC8=HIL`S;!YY>x>0w{Rhc{fVymg2(W&cIbsI` z8hL5PZ@lE5>0<@L8|CAEvUG{srdAo~|Eq?{&B_KdN4Pd|{J0zAa;kH{CaGx^} z|K_p~ht6~92nZnaWS>6)!{;Sh+;6GL?pQ-1G)USbDg*+4`@H9q#lY~zcgacrSWFfm zgke8RtW*HI_0@AshB2o}tZp7N$iVC_Oxy158XBt8&CF)_ppN84&2|uw+Y`K`exEYM zcou7z8NY>Oy+8k%1QlsNEaUg+TVgUOyb#u-b(?4fgvjmZV1u`9=!eoE>mP{j7LRuw z(gw5<0kh{(hVHmqd{&-ej8b`wn_6A(mfQ519|l7EzdtdtUy88Ao{OnHNzT5`0yAj2 zARp4~04EdlAXia=a6*1hYv#u@dDs6@lddD2kh{t&F8^IfrAd@tAk|E!XO{3;1j;^* zTF_)aYJp~XDS{Ea(27#Kcza<=Ol^~emDH+PqG*0hMQY?zh00VhIlU>lZHfe5WR&)V z%ut#Fhc3^y7Rg+**EafE6(2qy0Cb9+`NV7V?^4BzrHOb~B8&ABMe%Uaud^cDltHUS z3sobG>cs^sJHH_dne+)Y1luLmjiNML3raQPG}l?&&d0qLqJB9zQ|0j@RJWEw%s-a1 zJ>fRfb4%y8;@s=(+)fVI1kj+dwevJu2YavcQCQP?yefKb<@q(QPNtfoTc*%D?HW4D z-g=u_$ABMM$=_WRk#InBDSi9X0xhXxC0Sm?;E+PAq?v};pz-F0b5Lj4c1d>P0rR0Y zJrV5zr|2(*?Vqvn@@5$qZ322FtwXb5VP2CO;DL0<(d%Pn?iET5H8g;Y_1_Qdc4C@h zCYm;4R5EHJ(fJn?I;70LLKueZ(GdwIff-LktYDugbLU|`3veN04z}lV?n4panUUOm z-Zc@SMv5rIfrwpr>#buF-jLI7b=O@f+-KFF$k8jjeU5Mt0=d?pU=V^%)y+SC_(vco z;{sr__7EWc6r1MOU!Cp49t<>Ez#D5@7gQL7Uy z8mH@VRVjkB3KMA#E=%Qe7-$)TREOH`j~ODZE0_Sf_DP!5^#AD742tuuW-Tk4tkz8v zW@%`pCNvi4cj_&O6Fx6X68%>k~Jo^YD(yJ6a4NKl;KM^N5K%lQE z$QMzZ+qogxuB`t78VQg9GXS=Hd+TfDD@!Ghs0AO7jzMEcHc*7ME!}{9I*wltoj!ZU z^RVAi@P`WAO&UAI#lL-di=QM%)mY*bhq2qq?4Fl>3D$`If}UH#HxeY=Ot4@0J%vF4@? zQP&?%=*kl5fwcUFdk)(nf%${$3?gq*lL}#}-ayup~T=-1!AmOVni}i{$yue9=Guw#(Z|73wQdIpKy6Wnhikb?l4wu`-ax_!= zrL^-3t<3Y{c}!S00gL;>-Dc+W(5ia0zcH!`Dm={9!8z&aYC9hhsW$Q#?-Jz}*THnU z>8eH%jZxcY&~%nA&7$`#m*v%A1c)rD^J`aEtO`xEh7xt0`(WZ-lk^K~5onh*$x>@I z@uNJZzQQwffa9EfVZB65j2c!8vZ^Y}<0{220hZkEZ@=GtgW{-(8*m>Kk*Au--kPV zse)d~5}eG!jNgDmlI)J9zTiT6>V;#Cyg~SEoY*bcZiypG+dmyc#vb3Ch-X~_&@N*T zKQ-NxbTjHWJliI52m|wqxa*a>!5!`1BXWf?;2(=|ffN>)+oHflfxryZ#G8d+j@992 zko6c*qK4Ro;oj#ki`7dLa1%XhMZnpK(?s$eUVS|Mu7(Vm53pqN$#gpJfkG#_*L7~q zqZ_dn#SdYHDprQ}i!wzER8q3W`Ge3OO#hQ;3(`ARe13vP3uO%Q9P!+-xHp`JWb?cp z^?U2z@bA`?5HKbk8Y6Vi&Z~qot05LIo{voR)*JU#)sLwh(1ww|wewo{p- zHmdpys9+941`f4LE!e28yub;Og85N^r~CjkHsqXH3~>||C)dC*1Dgw3Sti!XjH6#sb|XQek)y~J=J;h>t6IbHVU09@Mng$U>rS7UDs;SmPu z*)^P)H2z6RJ*RTTqqi@`z?9xNyyK>C9&y<%o2C`Xcg(TKP0;PghtJ8P;Z>_7e zBE%wJMy-~US)tLZi+MI$DVkXHi)b#**iDy2J~{e0TCa_+9^i$H#~bFUtW~5>{Ucem zlU+H=lM_`KIM{?-Fhk~Pt{bV&EHmb+Y)Va%ADU8Ujj*-!>+KKcz;t0`rjC}~DwTwnW$YNt<+R>fpL&D+g~pDq zuxH(BhxzfLU~nj{a(@ds)xp||@B1l{a&e^njFEHL=}3mztl8z7G%)oDrw;CmTy26D z!nfJ7n{k*t3LHf@2_&T{CeCC6MiemzV5fo*L>U*5I2zfBi6A~FjQviKk}Q}V3zpo` zm%J#cGO)lK>FP4j@S1$y#hDc?Q5D@K!Nz0)&W(~3c5R#I_SLvj;luKV;H0v#reQKU zQ}fP1RaXhOkD#cAy@`eTMDEsBy?cn)IYZnFxgZHaS%JNV{7VW9$IY5Ls;Q~jIdI({ zUZQ=n(=K&*v1YsHjYmxC?ozR5I*pD-u=oO;FhmP4n7K^DgJ_KPxi^C3sg~LH9`E0l z;u_K7KXN4Xo2a>Cr+BJX%PNtoFI%a)O8;zQuQ-1oK;7{74nH$DeS|I4 zvtMTAVAeoI_(=laKFm-#sGpum#d&}mSjxG6u*6ZmS^|VoT6b)KWfqqPdt(a}Rxy+N z`P@JNsI za_T?~QXAkbr?c>e593Fqxe!sMg;~IzKhEqqqz}T5?nVFpwKo*7EiMn4Y@O4rCT`vj z-@&kpDkpZicK|ncR7+Z}&QgO5CdP(|qa*whCBV^y*IF!VP>7{VjUhpDw9*ubBYA0B zcSjYQINcDxvJ2e@?xcbV!O!V28lTcL_}=K#zv79F=-$lOBg=jykNV>4nMO$ z$CuMwqz}R;alAXb*x9i+Mp?vbhlJ%%1Q{b=)JW zLmo~dVm&y)1dy-$7%UCT0McdG2n68MIRkj;-vOEBwA);5Fjr7jRYhj)^t~KUVSrmh zGI+!5T&?358!u?UMdvUgKyqYw_>7z?D3sMY+Oe<9<&dP0hKa?5YyPB*=gE@Fze*;s zrQu!D@$EcSmeL-IIGSGw2iJ8fDKDz(x>NKSD^GvsT9+ck z%Ni(ZZ~w%j&dRTsA#bv7w+XddU;T+=;uIpnuxyP%prvXon$s@2v`o?itg2>V&qNqK z3Y{Vb$>$xaGd^w35c0GcZf2++u4(aF-i|Tw*@XVJ{Gv~aGF!J{R<{u&zHY&W+kUCo zKBpwx6`8+Lc5?db3A=GC9%C@Q<8r#-nxn!K{#RQ0h+VU521(Uf05+-4(q=JafPeeQ z=qN_gQ{p=wviQ@1zAhJ|*)B>n$_uI*IrWtGBs=uOt7L z?PqcO@>kpWRc{536A6}+=q5jpeZq})*tNp)s{oc`E5g39iGSx-9Ne(HRe3M?NWC!j4>>U%aHsVOcFFK5gtWWILwq z&Fi(8k4(^va)MJhL#$k`QK{shV~mu}qSx)&(z81+jC{gm<;?~sPi%~2u3HCaOkwW` zc*c>=Z$pv@Y|b?G<~^Wb+gUz@S1xS8yx!5j+x#o?_vW5#89gw3>t-TyIu-7$WhZ-0LHeZ5_OUb=rh+JC+1f8B1oe~x^;?+W^TjeNa@34Z<4 z^?S(^+G0rhwM2{SaG=xUP z3WURfWV4P9<%_bPPf)NDQ^P7){BhNWJR!iYczGkiNA@?&9O3s`=L z;kpILg9|8RGch$Fyj+o@Gj8Uyted~GozI+PC^5*AghATeS12D<2t==z9hOk1h+`G< zE3MRhK8;^T>&k#Djw3T`o4VU{s`6j&lC{n#TKcvO2mch|LxWZ%EhpviuS+9A(-*?O z`fCh8XB*Ugn3xouwgc1=e?1aU9ve{{WzpxvaEsdCq#)&T=)h1C%QG0- z1?^SJ-%`@w&|=UBF>VHNBN+!XkKIt^>D$j3FB4=V=V4?dhuxk;j~3|+`v2`u!=sxr z#^KQh;q^fFVZ<~Jcl6#PS^3|nEDo8I<$mW@RNSj)noqR)drp?`ff^Ua?^!CD+ka5f z%K?N7O8z2V46kqAZ7m2FEozYk^`O__mYr z&gT!9UIs1ig3clEC*9K?j?ql4cmln3@w(Vp;-qgLe1rtk3k4(;jM*e&tOqBNW;ms* z8)F+_l{r|Pml+}3CitoDT2LM59$272(diC69st{M#d@;+kUfGO`vl&4tC!!`OQ_!Q z54-6I!xz|#v-cT3RSWicPz(bYlH4;bJ z8G`+x$5dDG;yQNr;_01mtq2o@RcYyB%CkSz4`tkd=~WL1zu-`7RyUL)Y|&xt8PzrV ziiWf^aJAf~e%90+$*I+F{4sEHCW|4Srq+k~q0F-hxfs`}7}rZ%giHFz%j!pE$E2bz zDRO&z%Zj83ZHzx0vf;x7!l!Jj9+G&~b-c7=>9CGq_{OwJNmDsw@aa>5QJbM1=-6rYKVxZn=YhCyc!u#Dk!m7uLS- z)E@9TDU!V7r6hCu8ZUp}|L!d}+Frv*l?>6#tuM3~#Zl<)^Jr10?>vVc>pe63z`Bf? zp21+qx9a+5`wrdHCG!#?#-xXe=uWOHYh1e6|6+j8s zMSN#8{uNop*(u0=(@-Mx%(j{2GkR*1?T=)xelrBXT}1}KUqx!)%ydrYPssPbEuAy&DMV$CEzV3B<@jd zB+x==r7RlT3Tv2ER^oi`WjE(x?oX-DEHgVzYWc_mh90wYsB+8d*)yFaGLK{WRN%n1 z5Var;6b*VK0|Q3`J4i&GVHbmHO3@j&P?_oU>as4K3Z=&7h;Ymk4mLF)&Ka!kAssy>LraobAHI<~=471Xo zHHQBP$FoxkiNeo(p9X)@nm?ELJq#y|<4QC+ax@Y8=hr4${J;L@(2=x*x)KjJgr*A- zrgJy28f2guJqly8)=}BhRlzkjkZwJ=0df}^9>LyGWp_6jxF3=1u5pQi`!{RQ>FNf( zNO^t7e71Xm;6nelWk;3a7O+X;6A-|Tf>_rmxl}|>-LAOeuUDPPgj|Nl z0JQrp0>7=0a;0U;V2MRB29MSyhKpMvMxSl9xan`z!Yz@L-gifDLPMS5ei$=k?ZrkZ zOJ*t|c%BHots139>_;c$oIll~3wDb#yiKUirJJiHK{CG}5$abAf$XjvCW1xN42aJu zTK~5Ta1JDBPl?au2iewLt#QXUV@ALXQj^)=wr2P-9D@K!fMW>#aKBX!|WLFyUh+&uaEp!qdaeVUhqP zN_fO`I#2j`&Y4M{%!5MyrHHAgu{Nwh@aw6>;PR*aX6x-3WnMOqD~$$D=y%qeO}S!u z344+HMe!Dl>`&PHyPFDA!JTPlKWU&I198xQx?`32=vU_L=6vtj;ek&eq&DfWt{u@lfX#8+oB&4JR6%vo z`M$Shq|zr_yY7~#k*EKSdPEoF?!M5GOADFemRWCL=6VO@WZ+Ovta4Zg9R$+|w_v3pWVK+c0>^`Ys{*}B+}V@dU_{IS50hxl{HjxcH|l73GDDN*R#H>je6YL;nn?yca$uKW# z5~317pP71@d`m~)T_J<$&l#R2dI8$fIn#B3m0WP}2ML#=HfFBci4ggEX3`ohJg1T< zh_ZMcq;Nc<`0L%sGl85`Yq#VI`0)JStz&Tka$K{afKYDJamH)2^}$^M2`5EWEb@8L zXjovC$w@MAPb+;_M0uOleg2R7vWk*4YQC|Q1cbc>Z(}XHRG@kz!=*VKjv|ivg z?3_?;%HMpN?;2)Z*`{QY-$>9n;04+e(dJjZ>f0Eo*0d05mGw)i@*;T}&d%;n#fAk$ z$fc`6bS^XDo_xCOcQSc-)nP1joHV7kX>jf~@#aYQ9-(EQ}Ky; zFO|_lJ&(~q2nhy3)OVDq&MUxF=$MxY_`;|TDVwDCt`R5DkV-s52l~gu?`kIqcFy`& zNw+28dDM3DaR&>qZ>DSTA_`O>+vhLdc~BEXm*f8MbPn%Ko*+>b{Qp!#600Hz=&Zgu zq4S78p+%neHJ9r-NxjI_DJ#nljyh?_t6UW03OmSoDn}v;n=4}&=ZyMYBk<&M|h0?emSqk&8Iqru(Hz5>U zi1h%MB(iS@c-O)O$OPob1K5P=*NjgfQ3oEuB+TfbwHHsa+XH^hlZMM8zAn7F!UX7a zP=EZ4$#uGbsQhUU4edXCjl`rOd!rAfGBMshj5%Ir0y8}t*j$YT$jsgfn}K&RW)qF+ z@b8PYwPV&7<5^B(g(2`#+}DU7@IYG_x9V$)8ii!r7)>{vg2n*@X5}s~u9_^lS!N;h z&2oL|Y5aAM$C@MAHf)yOWgg_pWyQM-nxCF*2zZ3+d`rg~?nFYq71)hD+U>a;qa6Ez zkCu{*l^f4*sIvTwfFoH46FWMXoo*tTx-Ibmk;(goH<7rt+EVfoE+DvCO>k!qn@oIAnM4B=)Q zCube5qg{WIrRdsTL*?5J1r%^ZA%nXP+WDH{ZqEF@q8}}4`ypBNt1-i`MvG4jiR9rx z&$C#e_rs@f7*1+7s+;?A#T%8f7g=l?JJ9d*o)^{w&|Y;7c-RmrnlW%=el}RD^WOo0 zwub+yz;H6~l8QU+s_Kdb8Or33$}7oW7Lk74iwEtSZM}W7Nz8J{o5GzYgEn^wiqjd-lwbm1|Wh-Fy0+#qFiB_ zER=AAg#Q`0wdki~;~Ts$>h&{kzWM(m^f8-lHwguqGM?qa&&dv(CXtHq zRS{pTmi{%9QFs|FhB3=E0Re0OdLUw{#`>oJSa+3tRxqBQz5Z7-2{VFOo?bM+VOXz; zVZ^h?C%*(1+ruxCTPr&!F**@W&_Td(GjJ;L@wK?r~|4)``wv(qvuK{1!{}G-C#&4aH6~Q z6i)3~HKc7~`zCqm`WkOZ;qs_M1*g1^u*kP##BAnVCPnbYmxxoCpmP?vcN2Aj1q?cO zz?W5bXXVUp`ss%{8vYcjsX~G?E=02gbII&}y zi0t*vHUClQP}S|#fX@&i=dc>-70$zIt*i*nlF8H|V2x`GJ)5~W80k(|`i?>UzTU0Q z`=`*gWb4ro0^ri4jQE{R2^Wuqaeo2s-1bf_t21fdA+3%+bjJ*?_|mB{+_tFENsGET z#Q|n3tN9xVvT6dkuzDD8JB#jqI6eGiUL&+v4t3e%T&Key; zQuA&EGOl`r8ciC{9yA;#zmFDejt=7YM~e#}hC6W4P-FQa$VHpAGfqgMv6xA!p+x*= z=lVHJ(9aG}rTQOK8XMDioOWz%Z2l~L zru2)mIb}Fi+$>2<E;-chcj~$`WUQA_7t$^ERiC|KN%1Ms$qSB+}bN_kybDwTAVe3gnV)JNA35;@T0n-$G$ zosFw?=Btz}?#w2)tO*WC0ch;@8_o6(cJn$lK6LmK1Vu!ros%OU83h@ALAo2Q~xGh2-|ycn?QSoz9IKbB%b^XA){st z1=xkmg+&c5&`mN0rwH<-oen0l7_J^c#jL=iE7_Gf^@ zELzvk;i4VPc=<=+e3j+tWO%Smu(0v{0vbpD0Mfv$Wf=Eg2@22SzD;Ve8Sm|Dy5r+w zXZVqI29trwO5!7}5f4O|n1NgH97=K{OhUBlU>E0?4wMlOUxN5EkdIq*!A2inx&15p zv=(0z{ZZ~J52no{7p%IEL$iU)EP36 zeu7@C?pB-s0b8GV8$&E(Gl!v}X!Bpn_PSo37>zS-~(1>4nChJClUjOIDA{JjW&kM_>0HUw95fJyL>$ zQ}ADWdaN4Gi+J0A$WH!rgU%{2ctsKW=a_Z5mSNZ4fH&NEkV}S%8!=Z*=W_ep8jZC% zn@^07OGh$h^E(d%)%AjBL+;ZmX=ZZyRlIk-O@IDY{rLh^A6E??Ia#A0ln#w0F16ux zP;5%wSrl1VCCk{l&kAB#t_bx9nF7`)OKB=E&*rBv!=@((Q^=D3N*f8ZN9c49?f-q_~6E4~9qcrRNZut7r8lbi{ddtm!!c}?0-u#2Nr(98N z@a1_+sm6NF@7BM-DMBR-`PaTrS#WJ@)n~ zIG^_TwDMe0l<%ev`^LW;snS_f2Ds221mBYVD&A^2LEqfSmg92i!(C4|^B02hpY!o& zSb(>sfD4bK?J$T!9d~BBkPL6xeHV$HQ_j@KE#J}~4{cfDedQ4M&6Ehnnh;_l)=F3N zBP=BaA@2NOImdMX7h~XCL8&?fqR;@t!)pxQ%6Hb|`7xYgz2a4)hc$st0Eq^^Ln+p; zPlC;JAW|ckJ%&jP_$Vd?^Q_B-AiAL4U3_N#CuZPEQd9MFZe&aaVOM5!x*8;~1Ez>7&l zgrw?m)pnfg^R$+x@B301Con!b%7hz}J6t+uQt`bhP+e_1SToiTV5S&3o`@>ic$=M%)@qSTn*jeH7<57~Mge{*tC+u$$-mO^P@yymp(V888 z-?)2lTo(5)#CEc`6y@k8Q;_*QAw8&p2k;Wc%68UCWnx8&2R4g?ayyDSvg!(zAC5xw z$#YlegB%+^6Pld97I|aZii{dJK=l+HlL3#JorvUX0?M*U(yu5&Cn{t%XOhc2HEdj_ zb$~sPzZ$RI*c)dkdD1p&Fgh$tg}WF&eE8?WolvY}8rpYi%bJTk zbiy%O(t#3{#=T02(_Ua$$XMl`IZ6El3;Yc0X(;agLcwIf=GA*LdD7iN)bF_7WLd%K zV28KZ@j`Ao&h6pF*JbbSjV~>7^Od@4Ch@`NTGIw^%l7N3J}qc=rR%A+Zu{eYLBu!D zrzCCd4ess0O%(pb*ZNq4&u(l(j*1q$i7MJumi2a~T*JLEDtb(V!?cz?=KDL|eOu%F z4S@im8AND*3hg!8l^S>bF1sG57&Pq})!msI+7;ryCF>Q#%5^OC%wEx*VC|FhDzrf1 z1IpW+L>SU7vuSc-oc5_ruOg-mYf#QXW)H0>J_sH0VZR39ULW4BIGYU;DsI08qC8VRK9-En&!Dz+Df=V!- z$z8HwD^(ebaOJRE=@TX{{lsmNziXJ=5o@8k? zD94SBryUgHCR;oe;dKtrd)tK6g(lwkDcJ`kD@617q&%;wp@hsb}{rp&#GQn~xFhl0;% zHP!v!khIH8usPAu;Nlg`c!gvKJ8WTq)6|JWHCxfL|SZ^X;b9y^LLr4r<1<7K2z?es&R z(h_U-&D?-PQpX0eNwv{^hAXHA`|USS44TXLf&`mVlENn&>`4+M$AQLkkJ)a%x+wax z4bPII{UPyTn*l$*YV8akw6Um3Ao_^Jb@%`=kqkDVqK1zr2$^=B{4v`Gtq-?E$zxEI zC_xf2SWhO5sfx9;LJj(mG*}9~r@}Wvs%B4!N->Fjvy0Q+i5UC(j7%gGztHGS7XA4m z_N5VeH+e1?&T6i|N8n(7%|B0ctLLePJ@fFVZY0M`^FU$dbz?t}32P?)V_)N(7GE0s z*dGZKy1rkrv*#8bi;G;J%ZNFMOYqwz42RFRCfVE$VnpYX7gAv!;|v(hUUcA?p`#d+ zk|ETT&#pJUz2h`ywl%aaA$ppb>R+7iUNorr?qKPNJhiLWa_>xcNw1_>gEv36&?#@G z(5gRuzcaV2ZJ)#K9BPwqDC)c0AM#zb+wSgaXh`Z6`lh$j(^HvLy0sR2A`l*u+gJkL zW`log=6Owxjjd*gyf;-zkXMc3bUBmFifSnCmtihRxb7b}?~r3X+nmP1fq7qF^VOLR&#sLiKoyLR99fpW!qLJ#KU;nDNh4UtJ>KyfPTAt&T^0{1+-Y}xkx zh6Z2{E*{>;6nG}C=TmP07!xX}qQA3p`9m0yZ!5dSiZYMZ? z>d@K9Q5Wf-^}Kq~-9iR$-&*_Kz90K>g8kUq%{FUQnhg)0{P3trW4|;tslBa1S&_)1 zA|ih81VAAY@POZ%HE?rt|GqmIb3U58!CjE;ph00<30D8$P3NurR$Wi|pg z0lk%1A>!lTy#=?t>VCWO@^)s5L8Ec0HO@Lad)X)Y!q(V2?zzL{{Q2I)>KfFcH$`Ph zoY^P|#ut1OQEZRgJ8gl3j)p%;?L3GJW;!=JNX*hKvFi{IB%QU~w^cJ}oEw_I?Tz}9 z~lZYb#kTGmzUEZ$g`A-A?DF z71D7u67C;8_c!_$Z+;-W2ZaD{l%!PPV3HNM zO9Q_1hda!Eyx(6dH(mv1EIvQZ6$<8_hfg5N0O98Po5c&6C=h9c1;oa_`yMtTK{r-T zGhI7pS}9#hfLIB9XSk#o$Ap^%uRlILIq+T#N8GRoTg!hD-H2%$N2TGG90*9}+8gLH zj{l9EOn49bdpZYte+Bq-()30`4y_)A9mr1lz@3(iXa%%CV7^Tq6mkS-Lj7aG-59bH z%J9C;7yEUddVId+KJX=Hwzir3($iJ%!++-;;%$!D;ciI$x3fEb_pf=Lq1$m%?&IJ- zVqIEJ>tE{6f9xy!bnOIW)7`b3XPo4M}3nmXo7t?Ys6vKyq9YNRPl<88e&ie75URO|D*Awmsj)^0@nCEqcmlF{2KL zu=M{Eov)AQM86Lbhgwis-@%Y=w7b$i zXK~mTSgu<&$!Bxje*D{x`|fBtIoA*YL(b3d1Npw*@8g%g&(ZgJRBc$(QB#B5c<%Z7 zxQ^dltv5C-^?5u~m4qb!MxBr9mcO3g`qqX6?_%ToogO4h-`7)0=%Uh6xSo+bzTYed zkm|y1z^BuNQkcfA5Q34#tJBkfv(-ztz>1CfeW9msIq{4&{zKLZx>q6A8(~F+Knngv zN^;zRTSwAk3YmBex(Ua3I-A@1>+?fI=>0g)FPGQd&drVE7YPXoNIyM2y_o8a8je zsb3cjGm>4ziP-cZdGQ!z`xd9cv~Peh7Hok?uzXLe#!NJz#?DC8=Jik@{)AN- ze%dGs_Bv0WCA~DDHL6={BWA%U%DTGrs1Z(1PNSvp4sQw>EQfE`Jz+g8EG!1S$iNIT zwenxc4W5r@qob0jj49IJOPCs3TJ6rq)8Bu~8=R0jM+8`n@90*)-D4;{6D|hqP&f+d zx2O?F7wiJeK0ZE1VKMq%Hmy`tRO~QAvGVbybJ+idpDBrqge_KvX<*dvuB0@rq^_u`sivy0=m>b(S3y59(;fBszOdd*A*3%o@v(X^`$F2C!Lj&Nnwk6f=?TPvhpgT~05CZdDkbo^{3` z+Sm?c?8C!=Q}A|XJB-$?e_+y@2L#WRaz5a6?K-f`1^~WS2+7L&iGE^>k(96o_Ya{Z z!v<7i`y!0=(qf9?P>3k1_q)UzIyq0zYAR#v_yc?QH8EL5JUC5RCiO9AV7CV~fP@Wh ze&B(2IMD|0q3|Xc;5bb}Ck|Z0X<>e??%y^9{GJ@ZHjnugYyz$?{>wD_Ce(H`+@Fbp zE6g})xhNA^K{{Ac$x2`>vI#R0af~?3V$z@Ds-;_YBq!J%Ghpp+5Lw3ea@$~bR$CeypG=sl35*Md1PiFgC+!m#qf zHoPOSG>1~H(=nIT?$9=uPbeHafQK0WIrAUtH7^qRA*gV0aNlqsRXAtSu=brQ{X4Ji zadUM&JUGy4cY*n|wY1c1b;#GCOPx5Z>-)B;B~;Qs6424nzbnhj%bE>leT2CsmUfkN zMS~)IWd2=j;6NNCA^{tYtf;6cRu&fM#@Ca=xX)PWeg0AwaX`! zQu(f%6cZ1^|Jw!VhXZ1tG+^)=qI`b@p(;gf-~B@I?sYhhag#R?+pGP(BPS&#HIc^n zwXyvP`QrV0TKdi18NBXSoZH@DDb?lWn%}(t-E)H9WduA9@5d!|1-{$C&foXY`*<#) zW+0DxzYj4Kkyy6tjU~*?C{BQL7Jq&IZN0v}Zf3N}3jBuHQ~>cR5_fs%?x zhet=hf1^XI_~-Z3Oua@&${&UbtN*&|U#?d5|D)*~<0|{3HGZ;fbE^(qpfN8uSt9)oztr&vxPnDP z@=hH{8~y^~r=)}=Wp=Uu835t#P(SE5)Q%9sHNf)O`f*WXvxu~243WC5y(9^AyCV;a z65OVL=bP4>l4{&0J82cMQEF3e2^$9q0mf|wZ?L5migC{~PMx@H6Ne?6VV)N+trhdH z%&l-2$Q}q_tU76_c3J_MZO<0HRuuRzTJt&cp7fgL1*P*28YT>s{M9jAzUsKOk!t#M zOpU1qit_gHW`>osb{Z!rvHZ>DYhXP~jA}-3uy35$-W;lLfV!)rlc}qet$ASeD`i4n z+^0M$x_mh6h)OE<1L#h+0tyS4w27|hW%Pp~!PcBcpULbH+@*6?217rCrM}Q$zps2T zw`LCnrYG$-sbT5~=YQ{6nH|6?{&X9g-ic}O!Xr4I*Cac90EQY!f}bdBAed(K^9l1O z7B5+7sadHLH=GXdGvkD&$wanv3N)Xf>VgHnI zooc^3TEe~W1=L#4-2f8TygGZYM+CPvln4{($Y`cM`uWQ*B-0?cAYp=f=!VC}iLnTKl5Z)kB z^Q``=ZcHDDO#>(&;x_G9zNf&Uur`a*zXx6hiqT1ft|B?8MY!{fjbWmo>B{9`O zXE#51M>+qe_Go0K;+!AsJhpMORcP=!dZ35}YZtonO?%@8pkjR2tfo=Qf4u#pjOB+x zt6WITVf7nm#>~ykHvBGxmI4PO8ql0a5=*O&kL?~G0NItxY8om-9jYkYSPOv)$;HLh zkOueh`gC)1F#Q3%N)%9y179BpqtFKX8m4tRJ^r(J`J*h-58GQ)qc9p=$Zk2#()TK! z{2$l_C@#PZ28ye=8BiFczK0YUa-PR?-x?ZNRWLP#+;&H|hvRH>og5tt1imnrhtNw( zNrlP*rF<|F<>h7b!-+kIeARKaO}1i|7PzGR?GN+n5@KU>y*r*)segQYBnx`Qkkg>g zVCj9N+->-BvC-b%K0B+{s3T}MM+d1qozI5_Ie-f*WDJyORI}A)YqWI8V}_pB&L>7kgJ;PCZdD)gX8YdmSHbMym10&4rDRup>Lj82 zCFdXEpALf|4p~r%F!L*POczQ%NP9^(&9YQg$# zU``HXlkLCI;WV2A72=!hs_idHH#zHKPEBsv3`6>o3@1fe zte+2RmSt(ekdz$e5d?aeBxr|YH5^n1f^4d_d#9dDS9|BDo(=ddeBz^akQd_T4>(}QBKdlhLokT00eo}y!UIB1}lhdH~sffYp`H>`l~Bv`$a;|
|qhA~YY;&Z5AK)TJst1I>tAEj`dxkMOw944 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 z%0D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ơ!p&3k&)uboYLa(PE{{ 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

1!pSD8BTpABt}o~*XzIZJxiJan;vkAc76Aa= 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 @Y(bm!#k(>wC#5>RH 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

N}hGga({vr^jBN= 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

KcF9g$6{#G9xX;8?E;^{b&VHN2=qqiRA? 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 D`}h(D literal 1454351 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

qzLhFMTK!5y?h>p&)Xtze^luS-u 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

    vkFIKR$4qV=~I33+F^%Jfps;3Sba;=y(M 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%0D#Y>xM_(C^&n! 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%0A$YJaj@Ds)0JxnX_8 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௡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 ^O>qkM0bO#z z{LPOka^IN zY$kt3>x8OS2P-O&+EvD9e)Ua$ zvo6>5`xaJ32t2KsTD*T;h$tchl1yF6T=-OZxv3a%K)TsVV`*Hnj$s^dr7)5)nfh&a!g2eD^Y_1r-+*&|BLF%2I&o z)#W}p9tv|jE|GR=)fg~@Cc^+pY_VZ5HT<(BSbDIx+C}B%ksgQjrbe-*MyI}(?MhMK zy_ZEO(TU8~hn0!f8cn5dmRQhFOojP+3p$yScfYQf4GfWsELhiG+^8s{C+5CEc_~XB zT_?&}6e*U|v$`~(ouZ~SXqOLG;sMNYgO4<%

    xJ6@TB~G<|v3xBqFQ% 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 q4W&?c}XAN_g0z1`9n2^i$oy}ksx?Tn0=)e6P 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�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

    lp~76y`919hO9|!O={C1PyM2 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

    `9wWctQtZzQ;T6kY^2 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�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 z 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 From 14eab9ea8bd801888d36e8b5041f9af839369c78 Mon Sep 17 00:00:00 2001 From: Sneh Date: Tue, 7 Jan 2025 15:14:52 +0530 Subject: [PATCH 27/39] Modify address format for journeys. --- .../journey/components/LocationHistory.kt | 65 +++++++++---------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt index 5a5388ac..f0bba78e 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/components/LocationHistory.kt @@ -101,7 +101,7 @@ fun JourneyLocationItem( } } - val title = fromAddress?.formattedTitle(toAddress) ?: "" + val title = formattedAddress(fromAddress, toAddress) Row( verticalAlignment = Alignment.Top, @@ -469,44 +469,39 @@ internal fun getFormattedLocationTimeForFirstItem(createdAt: Long): String { } fun Address.formattedTitle(toAddress: Address?): String { - val fromName = extractLocationName(this) - val toName = toAddress?.let { extractLocationName(it) } ?: "Unknown Road" + return formattedAddress(this, toAddress) +} - return if (toAddress == null) { - fromName - } else { - "$fromName -> $toName" +fun formattedAddress(fromPlace: Address?, toPlace: Address?): String { + val fromCity = fromPlace?.locality ?: "" + val toCity = toPlace?.locality ?: "" + + val fromArea = fromPlace?.subLocality ?: "" + val toArea = toPlace?.subLocality ?: "" + + val fromState = fromPlace?.adminArea ?: "" + val toState = toPlace?.adminArea ?: "" + + return when { + toPlace == null -> formatAddress(listOf(fromArea, fromCity)) + fromArea == toArea -> formatAddress(listOf(fromArea, fromCity)) + fromCity == toCity -> formatTwoPlaceAddress(listOf(fromArea), listOf(toArea, fromCity)) + fromState == toState -> formatTwoPlaceAddress(listOf(fromArea, fromCity), listOf(toArea, toCity)) + else -> formatTwoPlaceAddress(listOf(fromCity, fromState), listOf(toCity, toState)) } } -private fun extractLocationName(address: Address): String { - val roadName = address.thoroughfare?.trim() - val area = address.subLocality?.trim() - val featureName = address.featureName?.trim() - val city = address.locality?.trim() - val state = address.adminArea?.trim() - - val potentialNames = listOf( - roadName, - area, - city, - state, - featureName - ).filterNot { it.isNullOrEmpty() } - - val cleanedNames = potentialNames.map { it?.replace(Regex("^[A-Za-z0-9]+\\+.*"), "")?.trim() } - val name = cleanedNames.firstOrNull { it?.isNotEmpty() == true } ?: "Unknown Road" - - val addressName = when { - name.matches(Regex("^[0-9].*")) -> { - val streetName = cleanedNames.getOrNull(1) ?: "" - "$name $streetName".trim() - } - roadName != null -> "$roadName, ${area ?: city}" - area != null -> "$area, $city" - featureName != null -> "$featureName, $city" - else -> name +fun formatTwoPlaceAddress(fromPlace: List, toPlace: List): String { + val isFromPlaceEmpty = fromPlace.all { it.isEmpty() } + val isToPlaceEmpty = toPlace.all { it.isEmpty() } + + return when { + !isFromPlaceEmpty && !isToPlaceEmpty -> "${formatAddress(fromPlace)} -> ${formatAddress(toPlace)}" + !isFromPlaceEmpty && isToPlaceEmpty -> formatAddress(fromPlace) + else -> formatAddress(toPlace) } +} - return addressName +fun formatAddress(parts: List): String { + return parts.joinToString(", ") { it.ifEmpty { "Unknown" } } } From 65720cdb900d343c049251fb5650c245bd97e1ca Mon Sep 17 00:00:00 2001 From: cp-megh Date: Tue, 7 Jan 2025 16:08:19 +0530 Subject: [PATCH 28/39] WIP --- .../canopas/yourspace/YourSpaceApplication.kt | 5 + .../domain/keyrotation/KeyRotationWorker.kt | 68 +++++ .../data/models/location/LocationJourney.kt | 12 +- .../yourspace/data/models/space/ApiSpace.kt | 1 + .../service/location/ApiJourneyService.kt | 274 ++++++++++++------ .../service/location/ApiLocationService.kt | 15 +- .../data/service/space/ApiSpaceService.kt | 58 +++- .../BufferedSenderKeyStore.kt | 2 +- .../data/utils/EphemeralECDHUtils.kt | 2 +- 9 files changed, 325 insertions(+), 112 deletions(-) create mode 100644 app/src/main/java/com/canopas/yourspace/domain/keyrotation/KeyRotationWorker.kt diff --git a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt index 280911f1..0da90bc7 100644 --- a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt +++ b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt @@ -19,6 +19,7 @@ import com.canopas.yourspace.domain.fcm.FcmRegisterWorker import com.canopas.yourspace.domain.fcm.YOURSPACE_CHANNEL_GEOFENCE import com.canopas.yourspace.domain.fcm.YOURSPACE_CHANNEL_MESSAGES import com.canopas.yourspace.domain.fcm.YOURSPACE_CHANNEL_PLACES +import com.canopas.yourspace.domain.keyrotation.KeyRotationWorker import com.canopas.yourspace.domain.receiver.BatteryBroadcastReceiver import com.google.android.libraries.places.api.Places import com.google.firebase.crashlytics.FirebaseCrashlytics @@ -122,6 +123,10 @@ class YourSpaceApplication : if (userPreferences.currentUser != null && !userPreferences.isFCMRegistered) { FcmRegisterWorker.startService(this) } + + if (userPreferences.currentUser != null && userPreferences.currentUser?.identity_key_public != null) { + KeyRotationWorker.schedule(this) + } } override val workManagerConfiguration: Configuration diff --git a/app/src/main/java/com/canopas/yourspace/domain/keyrotation/KeyRotationWorker.kt b/app/src/main/java/com/canopas/yourspace/domain/keyrotation/KeyRotationWorker.kt new file mode 100644 index 00000000..702bfb6c --- /dev/null +++ b/app/src/main/java/com/canopas/yourspace/domain/keyrotation/KeyRotationWorker.kt @@ -0,0 +1,68 @@ +package com.canopas.yourspace.domain.keyrotation + +import android.content.Context +import androidx.hilt.work.HiltWorker +import androidx.work.Constraints +import androidx.work.CoroutineWorker +import androidx.work.ExistingPeriodicWorkPolicy +import androidx.work.NetworkType +import androidx.work.PeriodicWorkRequestBuilder +import androidx.work.WorkManager +import androidx.work.WorkerParameters +import com.canopas.yourspace.data.service.space.ApiSpaceService +import dagger.assisted.Assisted +import dagger.assisted.AssistedInject +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import timber.log.Timber +import java.util.concurrent.TimeUnit + +private const val KEY_ROTATION_WORKER = "KeyRotationWorker" + +@HiltWorker +class KeyRotationWorker @AssistedInject constructor( + @Assisted context: Context, + @Assisted workerParams: WorkerParameters, + private val apiSpaceService: ApiSpaceService +) : CoroutineWorker(context, workerParams) { + + override suspend fun doWork(): Result = withContext(Dispatchers.IO) { + Timber.d("Starting Key Rotation Worker...") + + return@withContext try { + val spaceIds = apiSpaceService.getUserSpacesToRotateKeys() + spaceIds.forEach { spaceId -> + apiSpaceService.rotateSenderKey(spaceId) + Timber.d("Rotated keys for space: $spaceId") + } + Timber.d("Key Rotation Worker completed successfully.") + Result.success() + } catch (e: Exception) { + Timber.e(e, "Error in Key Rotation Worker") + Result.retry() + } + } + + companion object { + fun schedule(context: Context) { + val workRequest = PeriodicWorkRequestBuilder(7, TimeUnit.DAYS) + .setInitialDelay(7, TimeUnit.DAYS) + .setConstraints( + Constraints.Builder() + .setRequiresBatteryNotLow(true) + .setRequiredNetworkType(NetworkType.CONNECTED) + .build() + ) + .build() + + WorkManager.getInstance(context) + .enqueueUniquePeriodicWork( + KEY_ROTATION_WORKER, + ExistingPeriodicWorkPolicy.KEEP, + workRequest + ) + + Timber.d("Scheduled Key Rotation Worker") + } + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index 6113e514..79328703 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -22,7 +22,8 @@ data class LocationJourney( val routes: List = emptyList(), val created_at: Long = System.currentTimeMillis(), val updated_at: Long = System.currentTimeMillis(), - val type: JourneyType? = null + val type: JourneyType? = null, + val key_id: String = "" ) @Keep @@ -39,7 +40,8 @@ data class EncryptedLocationJourney( val routes: List = emptyList(), // Encrypted journey routes val created_at: Long = System.currentTimeMillis(), val updated_at: Long = System.currentTimeMillis(), - val type: JourneyType? = null + val type: JourneyType? = null, + val key_id: String = "" ) @Keep @@ -140,7 +142,8 @@ fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher route_duration = route_duration, routes = decryptedRoutes, created_at = created_at, - updated_at = updated_at + updated_at = updated_at, + key_id = key_id ) } @@ -200,6 +203,7 @@ fun LocationJourney.toEncryptedLocationJourney( route_duration = route_duration, routes = encryptedRoutes, created_at = created_at, - updated_at = updated_at + updated_at = updated_at, + key_id = distributionId.toString() ) } diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index be2ee9c1..a16964de 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -74,6 +74,7 @@ data class MemberKeyData( * encrypted with the recipient's public key. */ data class EncryptedDistribution( + val id: String = UUID.randomUUID().toString(), val recipientId: String = "", val ephemeralPub: Blob = Blob.fromBytes(ByteArray(0)), // 32 bytes val iv: Blob = Blob.fromBytes(ByteArray(0)), // 12 bytes diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 7f22f666..5fa91d4b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -55,49 +55,70 @@ class ApiJourneyService @Inject constructor( .collection(FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) .document(FIRESTORE_COLLECTION_SPACE_GROUP_KEYS) - private suspend fun getGroupCipherAndDistributionMessage( + private suspend fun getGroupKeyDoc(spaceId: String): GroupKeysDoc? { + return try { + spaceGroupKeysRef(spaceId).get().await().toObject() + } catch (e: Exception) { + Timber.e(e, "Failed to fetch GroupKeysDoc for space: $spaceId") + null + } + } + + /** + * Loads the group cipher for the given [spaceId], [userId], [keyId], and already-loaded [groupKeysDoc]. + */ + private suspend fun getGroupCipherByKeyId( spaceId: String, - userId: String + userId: String, + keyId: String? = null, + groupKeysDoc: GroupKeysDoc ): Pair? { - val snapshot = spaceGroupKeysRef(spaceId).get().await() - val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: return null - val memberKeyData = groupKeysDoc.memberKeys[userId] ?: return null + Timber.e("XXXXXX: SpaceId: $spaceId, userId: $userId, keyId: $keyId") + val memberKeysData = groupKeysDoc.memberKeys[userId] ?: return null + val distribution = memberKeysData.distributions + .firstOrNull { + it.recipientId == userId && (keyId == null || it.id == keyId) + } ?: return null - val currentUser = userPreferences.currentUser ?: return null - val privateKey = getCurrentUserPrivateKey(currentUser) ?: return null + Timber.e("XXXXXX: distribution: $distribution") + val privateKey = getCurrentUserPrivateKey(userPreferences.currentUser!!) ?: return null - val distribution = - memberKeyData.distributions.firstOrNull { it.recipientId == currentUser.id } - ?: return null - val decryptedDistributionBytes = - EphemeralECDHUtils.decrypt(distribution, privateKey) ?: return null - val distributionMessage = SenderKeyDistributionMessage(decryptedDistributionBytes) + // Decrypt the distribution message + val decryptedBytes = EphemeralECDHUtils.decrypt(distribution, privateKey) ?: return null + val distributionMessage = SenderKeyDistributionMessage(decryptedBytes) - val groupAddress = SignalProtocolAddress(spaceId, memberKeyData.memberDeviceId) + Timber.e("XXXXXX: distributionMessage: $distributionMessage") + val groupAddress = SignalProtocolAddress(spaceId, memberKeysData.memberDeviceId) + // Ensures the distribution ID is loaded into the store bufferedSenderKeyStore.loadSenderKey(groupAddress, distributionMessage.distributionId) - // Initialize the session - try { + return try { GroupSessionBuilder(bufferedSenderKeyStore).process(groupAddress, distributionMessage) - val groupCipher = GroupCipher(bufferedSenderKeyStore, groupAddress) - return Pair(distributionMessage, groupCipher) + distributionMessage to GroupCipher(bufferedSenderKeyStore, groupAddress) } catch (e: Exception) { - Timber.e(e, "Error processing group session") - return null + Timber.e(e, "Error processing group session for space: $spaceId") + null } } - private suspend fun withGroupCipher( + /** + * Helper to run some block of code that needs a [GroupCipher], using an already-loaded [GroupKeysDoc]. + * Returns `defaultValue` if we fail to load the cipher or if the block returns null. + */ + private suspend inline fun runWithGroupCipher( + spaceId: String, userId: String, - block: suspend (GroupCipher) -> T?, - defaultValue: T + groupKeysDoc: GroupKeysDoc, + keyId: String? = null, + defaultValue: T, + crossinline block: (cipher: GroupCipher) -> T? ): T { - val (_, groupCipher) = getGroupCipherAndDistributionMessage(currentSpaceId, userId) + val (_, groupCipher) = getGroupCipherByKeyId(spaceId, userId, keyId, groupKeysDoc) ?: return defaultValue return try { block(groupCipher) ?: defaultValue } catch (e: Exception) { - Timber.e(e, "Error executing operation for userId: $userId") + Timber.e(e, "Error executing operation for userId: $userId in spaceId: $spaceId") defaultValue } } @@ -106,7 +127,8 @@ class ApiJourneyService @Inject constructor( * Decrypts and retrieves the current user's private key. */ private suspend fun getCurrentUserPrivateKey(currentUser: ApiUser): ECPrivateKey? { - val privateKey = userPreferences.getPrivateKey() ?: currentUser.identity_key_private?.toBytes() + val privateKey = + userPreferences.getPrivateKey() ?: currentUser.identity_key_private?.toBytes() return try { Curve.decodePrivatePoint(privateKey) } catch (e: InvalidKeyException) { @@ -119,6 +141,9 @@ class ApiJourneyService @Inject constructor( } } + /** + * Saves a new [LocationJourney] in all of the current user's spaces. + */ suspend fun saveCurrentJourney( userId: String, fromLatitude: Double, @@ -133,12 +158,23 @@ class ApiJourneyService @Inject constructor( type: JourneyType? = null, newJourneyId: ((String) -> Unit)? = null ) { - userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val cipherAndMessage = getGroupCipherAndDistributionMessage(spaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $spaceId, userId: $userId") - return@forEach - } - val (distributionMessage, groupCipher) = cipherAndMessage + val currentUser = userPreferences.currentUser ?: return + val spaceIds = currentUser.space_ids.orEmpty() + + spaceIds.forEach { spaceId -> + // Load groupKeysDoc once (per space) and reuse it if needed + val groupKeysDoc = getGroupKeyDoc(spaceId) ?: return@forEach + + val (distributionMessage, groupCipher) = getGroupCipherByKeyId( + spaceId, + userId, + null, + groupKeysDoc + ) + ?: run { + Timber.e("Failed to get group cipher for spaceId=$spaceId, userId=$userId") + return@forEach + } val journey = LocationJourney( id = UUID.randomUUID().toString(), @@ -155,58 +191,90 @@ class ApiJourneyService @Inject constructor( type = type ) - val docRef = spaceMemberJourneyRef(spaceId, userId).document(journey.id) - val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) newJourneyId?.invoke(encryptedJourney.id) - docRef.set(encryptedJourney).await() + try { + spaceMemberJourneyRef(spaceId, userId) + .document(journey.id) + .set(encryptedJourney) + .await() + } catch (e: Exception) { + Timber.e(e, "Error saving journey for spaceId: $spaceId, userId: $userId") + } } } + /** + * Updates the last [LocationJourney] for [userId]. + */ suspend fun updateLastLocationJourney(userId: String, journey: LocationJourney) { - userPreferences.currentUser?.space_ids?.forEach { spaceId -> - val cipherAndMessage = getGroupCipherAndDistributionMessage(spaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $spaceId, userId: $userId") - return@forEach - } - val (distributionMessage, groupCipher) = cipherAndMessage + val currentUser = userPreferences.currentUser ?: return + val spaceIds = currentUser.space_ids.orEmpty() + + spaceIds.forEach { spaceId -> + val groupKeysDoc = getGroupKeyDoc(spaceId) ?: return@forEach + + val (distributionMessage, groupCipher) = getGroupCipherByKeyId( + spaceId, + userId, + journey.key_id, + groupKeysDoc + ) + ?: run { + Timber.e("Failed to get group cipher for spaceId=$spaceId, userId=$userId") + return@forEach + } val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) try { - spaceMemberJourneyRef(spaceId, userId).document(journey.id).set(encryptedJourney) + spaceMemberJourneyRef(spaceId, userId) + .document(journey.id) + .set(encryptedJourney) .await() } catch (e: Exception) { - Timber.e( - e, - "Error while updating last location journey for spaceId: $spaceId, userId: $userId" - ) + Timber.e(e, "Error updating journey for spaceId=$spaceId, userId=$userId") } } } - suspend fun getLastJourneyLocation(userId: String): LocationJourney? = - withGroupCipher(userId, { groupCipher -> - spaceMemberJourneyRef(currentSpaceId, userId) - .whereEqualTo("user_id", userId) - .orderBy("created_at", Query.Direction.DESCENDING) - .limit(1) - .get() - .await() - .documents - .firstOrNull() - ?.toObject() - ?.toDecryptedLocationJourney(groupCipher) - }, null) + /** + * Fetches the most recent [LocationJourney] for [userId] in the current space. + */ + suspend fun getLastJourneyLocation(userId: String): LocationJourney? { + val encryptedJourney = spaceMemberJourneyRef(currentSpaceId, userId) + .orderBy("created_at", Query.Direction.DESCENDING) + .limit(1) + .get() + .await() + .documents + .firstOrNull() + ?.toObject() + ?: return null - suspend fun getMoreJourneyHistory(userId: String, from: Long?): List { - val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: $userId") - return emptyList() + // Fetch groupKeysDoc once + val groupKeysDoc = getGroupKeyDoc(currentSpaceId) ?: return null + + // Decrypt + return runWithGroupCipher( + spaceId = currentSpaceId, + userId = userId, + groupKeysDoc = groupKeysDoc, + keyId = encryptedJourney.key_id, + defaultValue = null + ) { cipher -> + encryptedJourney.toDecryptedLocationJourney(cipher) } - val (_, groupCipher) = cipherAndMessage + } + + /** + * Fetch more journey history, older than [from], in pages of up to 20. + * Loads GroupKeysDoc once, then decrypts each journey. + */ + suspend fun getMoreJourneyHistory(userId: String, from: Long?): List { + val groupKeysDoc = getGroupKeyDoc(currentSpaceId) ?: return emptyList() val query = if (from == null) { spaceMemberJourneyRef(currentSpaceId, userId) @@ -221,25 +289,27 @@ class ApiJourneyService @Inject constructor( .limit(20) } - return try { - query.get().await().documents.mapNotNull { - it.toObject()?.toDecryptedLocationJourney(groupCipher) - } - } catch (e: Exception) { - Timber.e(e, "Error while getting journey history for userId: $userId") - emptyList() + val encryptedJourneys = query.get().await().documents.mapNotNull { + it.toObject() } - } - suspend fun getJourneyHistory(userId: String, from: Long, to: Long): List { - val cipherAndMessage = getGroupCipherAndDistributionMessage(currentSpaceId, userId) ?: run { - Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: $userId") - return emptyList() + return encryptedJourneys.mapNotNull { encrypted -> + val cipherAndMessage = + getGroupCipherByKeyId(currentSpaceId, userId, encrypted.key_id, groupKeysDoc) + ?: return@mapNotNull null + encrypted.toDecryptedLocationJourney(cipherAndMessage.second) } - val (_, groupCipher) = cipherAndMessage + } + /** + * Fetch journey history between [from] and [to]. + * Loads GroupKeysDoc once, then decrypts each journey. + */ + suspend fun getJourneyHistory(userId: String, from: Long, to: Long): List { return try { - val previousDayJourney = spaceMemberJourneyRef(currentSpaceId, userId) + val groupKeysDoc = getGroupKeyDoc(currentSpaceId) ?: return emptyList() + + val previousDayEncrypted = spaceMemberJourneyRef(currentSpaceId, userId) .whereEqualTo("user_id", userId) .whereLessThan("created_at", from) .whereGreaterThanOrEqualTo("updated_at", from) @@ -247,11 +317,9 @@ class ApiJourneyService @Inject constructor( .get() .await() .documents - .mapNotNull { - it.toObject()?.toDecryptedLocationJourney(groupCipher) - } + .mapNotNull { it.toObject() } - val currentDayJourney = spaceMemberJourneyRef(currentSpaceId, userId) + val currentDayEncrypted = spaceMemberJourneyRef(currentSpaceId, userId) .whereEqualTo("user_id", userId) .whereGreaterThanOrEqualTo("created_at", from) .whereLessThanOrEqualTo("created_at", to) @@ -260,35 +328,49 @@ class ApiJourneyService @Inject constructor( .get() .await() .documents - .mapNotNull { - it.toObject()?.toDecryptedLocationJourney(groupCipher) - } + .mapNotNull { it.toObject() } - previousDayJourney + currentDayJourney + val allEncrypted = previousDayEncrypted + currentDayEncrypted + + allEncrypted.mapNotNull { encrypted -> + val cipherAndMessage = + getGroupCipherByKeyId(currentSpaceId, userId, encrypted.key_id, groupKeysDoc) + ?: return@mapNotNull null + encrypted.toDecryptedLocationJourney(cipherAndMessage.second) + } } catch (e: Exception) { Timber.e(e, "Error while getting journey history for userId: $userId") emptyList() } } + /** + * Retrieves a specific [LocationJourney] by its [journeyId]. + */ suspend fun getLocationJourneyFromId(journeyId: String): LocationJourney? { val currentUser = userPreferences.currentUser ?: return null - val cipherAndMessage = - getGroupCipherAndDistributionMessage(currentSpaceId, currentUser.id) ?: run { - Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $currentSpaceId, userId: ${currentUser.id}") - return null - } - val (_, groupCipher) = cipherAndMessage - return try { - spaceMemberJourneyRef(currentSpaceId, currentUser.id).document(journeyId) + val encryptedJourney = try { + spaceMemberJourneyRef(currentSpaceId, currentUser.id) + .document(journeyId) .get() .await() .toObject() - ?.toDecryptedLocationJourney(groupCipher) } catch (e: Exception) { Timber.e(e, "Error while getting journey by ID: $journeyId") - null + return null + } + + val groupKeysDoc = getGroupKeyDoc(currentSpaceId) ?: return null + + return runWithGroupCipher( + spaceId = currentSpaceId, + userId = currentUser.id, + groupKeysDoc = groupKeysDoc, + keyId = encryptedJourney?.key_id, + defaultValue = null + ) { cipher -> + encryptedJourney?.toDecryptedLocationJourney(cipher) } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 4632db19..185bb114 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -181,10 +181,7 @@ class ApiLocationService @Inject constructor( val latitude = latitudeBytes.toString(Charsets.UTF_8).toDoubleOrNull() val longitude = longitudeBytes.toString(Charsets.UTF_8).toDoubleOrNull() - if (latitude == null || longitude == null) { - Timber.e("Failed to decrypt location for userId: $userId") - return null - } + if (latitude == null || longitude == null) return null ApiLocation( id = encryptedLocation.id, @@ -225,7 +222,7 @@ class ApiLocationService @Inject constructor( val decryptedDistribution = EphemeralECDHUtils.decrypt(distribution, currentUserPrivateKey) ?: run { - Timber.e("Failed to decrypt distribution for userId=$userId in spaceId=$spaceId") + Timber.e("Failed to decrypt distribution for userId=$userId") return null } @@ -258,7 +255,7 @@ class ApiLocationService @Inject constructor( val groupCipher = GroupCipher(bufferedSenderKeyStore, groupAddress) Pair(distributionMessage, groupCipher) } catch (e: Exception) { - Timber.e(e, "Error processing group session for spaceId=$spaceId, userId=$userId") + Timber.e(e, "Error processing group session for userId=$userId") null } } @@ -278,9 +275,9 @@ class ApiLocationService @Inject constructor( } catch (e: InvalidKeyException) { Timber.e(e, "Error decoding private key for userId=${currentUser.id}") PrivateKeyUtils.decryptPrivateKey( - privateKey ?: return null, - currentUser.identity_key_salt?.toBytes() ?: return null, - userPreferences.getPasskey() ?: return null + encryptedPrivateKey = privateKey ?: return null, + salt = currentUser.identity_key_salt?.toBytes() ?: return null, + passkey = userPreferences.getPasskey() ?: return null )?.let { Curve.decodePrivatePoint(it) } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index 1323f63e..9fa15360 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -100,7 +100,7 @@ class ApiSpaceService @Inject constructor( val deviceId = UUID.randomUUID().mostSignificantBits and 0x7FFFFFFF val groupAddress = SignalProtocolAddress(spaceId, deviceId.toInt()) val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) - val distributionMessage = sessionBuilder.create(groupAddress, UUID.fromString(spaceId)) + val distributionMessage = sessionBuilder.create(groupAddress, UUID.randomUUID()) val distributionBytes = distributionMessage.serialize() val apiSpaceMembers = getSpaceMembers(spaceId) @@ -215,4 +215,60 @@ class ApiSpaceService @Inject constructor( } } } + + suspend fun rotateSenderKey(spaceId: String) { + val user = authService.currentUser ?: return + val deviceId = UUID.randomUUID().mostSignificantBits.toInt() + + val groupAddress = SignalProtocolAddress(spaceId, deviceId) + val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) + val newDistributionMessage = sessionBuilder.create(groupAddress, UUID.randomUUID()) + val newDistributionBytes = newDistributionMessage.serialize() + + val apiSpaceMembers = getSpaceMembers(spaceId) + val memberIds = apiSpaceMembers.map { it.user_id }.toSet() + val newDistributions = mutableListOf() + + for (member in apiSpaceMembers) { + val publicBlob = member.identity_key_public ?: continue + val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) + + newDistributions.add(EphemeralECDHUtils.encrypt(member.user_id, newDistributionBytes, publicKey)) + } + + db.runTransaction { transaction -> + val docRef = spaceGroupKeysDoc(spaceId) + val snapshot = transaction.get(docRef) + val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() + + val oldKeyData = groupKeysDoc.memberKeys[user.id] ?: MemberKeyData() + + // Filter out distributions for members who are no longer in the space + val filteredOldDistributions = oldKeyData.distributions.filter { it.recipientId in memberIds } + + val rotatedKeyData = oldKeyData.copy( + memberDeviceId = deviceId, + distributions = newDistributions + filteredOldDistributions, + dataUpdatedAt = System.currentTimeMillis() + ) + + val updates = mapOf( + "memberKeys.${user.id}" to rotatedKeyData, + "docUpdatedAt" to System.currentTimeMillis() + ) + + transaction.update(docRef, updates) + }.await() + + Timber.d("Key rotation completed for space: $spaceId") + } + + fun getUserSpacesToRotateKeys(): List { + val user = authService.currentUser ?: return emptyList() + if (user.identity_key_public == null) { + Timber.e("User identity key public is null, can't rotate keys") + return emptyList() + } + return user.space_ids ?: emptyList() + } } diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index a6486676..947aed2c 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -51,7 +51,7 @@ class BufferedSenderKeyStore @Inject constructor( try { val currentUser = userPreferences.currentUser ?: return val uniqueDocId = "${senderKeyRecord.deviceId}-${senderKeyRecord.distributionId}" - spaceSenderKeyRecordRef(senderKeyRecord.distributionId, currentUser.id) + spaceSenderKeyRecordRef(senderKeyRecord.address, currentUser.id) .document(uniqueDocId).set(senderKeyRecord).await() } catch (e: Exception) { Timber.e(e, "Failed to save sender key to server: $senderKeyRecord") diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt index 84a149ec..e86697a1 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt @@ -32,7 +32,7 @@ object EphemeralECDHUtils { * @param receiverId The unique identifier of the receiver. * @param plaintext The data to be encrypted as a byte array. * @param receiverPub The receiver's public key. - * @return EncryptedDistribution The encrypted data and associated metadata. + * @return EncryptedDistribution: The encrypted data and associated metadata. */ fun encrypt( receiverId: String, From cd86a5b3d9be70d84455a10fb949c4d75c604644 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Tue, 7 Jan 2025 16:49:45 +0530 Subject: [PATCH 29/39] WIP --- .../canopas/yourspace/YourSpaceApplication.kt | 5 -- .../domain/keyrotation/KeyRotationWorker.kt | 68 ------------------- .../data/service/space/ApiSpaceService.kt | 12 +--- 3 files changed, 2 insertions(+), 83 deletions(-) delete mode 100644 app/src/main/java/com/canopas/yourspace/domain/keyrotation/KeyRotationWorker.kt diff --git a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt index 0da90bc7..280911f1 100644 --- a/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt +++ b/app/src/main/java/com/canopas/yourspace/YourSpaceApplication.kt @@ -19,7 +19,6 @@ import com.canopas.yourspace.domain.fcm.FcmRegisterWorker import com.canopas.yourspace.domain.fcm.YOURSPACE_CHANNEL_GEOFENCE import com.canopas.yourspace.domain.fcm.YOURSPACE_CHANNEL_MESSAGES import com.canopas.yourspace.domain.fcm.YOURSPACE_CHANNEL_PLACES -import com.canopas.yourspace.domain.keyrotation.KeyRotationWorker import com.canopas.yourspace.domain.receiver.BatteryBroadcastReceiver import com.google.android.libraries.places.api.Places import com.google.firebase.crashlytics.FirebaseCrashlytics @@ -123,10 +122,6 @@ class YourSpaceApplication : if (userPreferences.currentUser != null && !userPreferences.isFCMRegistered) { FcmRegisterWorker.startService(this) } - - if (userPreferences.currentUser != null && userPreferences.currentUser?.identity_key_public != null) { - KeyRotationWorker.schedule(this) - } } override val workManagerConfiguration: Configuration diff --git a/app/src/main/java/com/canopas/yourspace/domain/keyrotation/KeyRotationWorker.kt b/app/src/main/java/com/canopas/yourspace/domain/keyrotation/KeyRotationWorker.kt deleted file mode 100644 index 702bfb6c..00000000 --- a/app/src/main/java/com/canopas/yourspace/domain/keyrotation/KeyRotationWorker.kt +++ /dev/null @@ -1,68 +0,0 @@ -package com.canopas.yourspace.domain.keyrotation - -import android.content.Context -import androidx.hilt.work.HiltWorker -import androidx.work.Constraints -import androidx.work.CoroutineWorker -import androidx.work.ExistingPeriodicWorkPolicy -import androidx.work.NetworkType -import androidx.work.PeriodicWorkRequestBuilder -import androidx.work.WorkManager -import androidx.work.WorkerParameters -import com.canopas.yourspace.data.service.space.ApiSpaceService -import dagger.assisted.Assisted -import dagger.assisted.AssistedInject -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import timber.log.Timber -import java.util.concurrent.TimeUnit - -private const val KEY_ROTATION_WORKER = "KeyRotationWorker" - -@HiltWorker -class KeyRotationWorker @AssistedInject constructor( - @Assisted context: Context, - @Assisted workerParams: WorkerParameters, - private val apiSpaceService: ApiSpaceService -) : CoroutineWorker(context, workerParams) { - - override suspend fun doWork(): Result = withContext(Dispatchers.IO) { - Timber.d("Starting Key Rotation Worker...") - - return@withContext try { - val spaceIds = apiSpaceService.getUserSpacesToRotateKeys() - spaceIds.forEach { spaceId -> - apiSpaceService.rotateSenderKey(spaceId) - Timber.d("Rotated keys for space: $spaceId") - } - Timber.d("Key Rotation Worker completed successfully.") - Result.success() - } catch (e: Exception) { - Timber.e(e, "Error in Key Rotation Worker") - Result.retry() - } - } - - companion object { - fun schedule(context: Context) { - val workRequest = PeriodicWorkRequestBuilder(7, TimeUnit.DAYS) - .setInitialDelay(7, TimeUnit.DAYS) - .setConstraints( - Constraints.Builder() - .setRequiresBatteryNotLow(true) - .setRequiredNetworkType(NetworkType.CONNECTED) - .build() - ) - .build() - - WorkManager.getInstance(context) - .enqueueUniquePeriodicWork( - KEY_ROTATION_WORKER, - ExistingPeriodicWorkPolicy.KEEP, - workRequest - ) - - Timber.d("Scheduled Key Rotation Worker") - } - } -} diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index 9fa15360..3281ea9b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -187,6 +187,7 @@ class ApiSpaceService @Inject constructor( .whereEqualTo("user_id", userId).get().await().documents.forEach { it.reference.delete().await() } + rotateSenderKey(spaceId) } suspend fun updateSpace(space: ApiSpace) { @@ -216,7 +217,7 @@ class ApiSpaceService @Inject constructor( } } - suspend fun rotateSenderKey(spaceId: String) { + private suspend fun rotateSenderKey(spaceId: String) { val user = authService.currentUser ?: return val deviceId = UUID.randomUUID().mostSignificantBits.toInt() @@ -262,13 +263,4 @@ class ApiSpaceService @Inject constructor( Timber.d("Key rotation completed for space: $spaceId") } - - fun getUserSpacesToRotateKeys(): List { - val user = authService.currentUser ?: return emptyList() - if (user.identity_key_public == null) { - Timber.e("User identity key public is null, can't rotate keys") - return emptyList() - } - return user.space_ids ?: emptyList() - } } From 701c297cdc6920708e5f810d1436355d1ea75f3f Mon Sep 17 00:00:00 2001 From: cp-megh Date: Tue, 7 Jan 2025 17:09:16 +0530 Subject: [PATCH 30/39] merge main --- .../data/repository/JourneyGenerator.kt | 36 +++++++++---------- .../service/location/ApiJourneyService.kt | 11 +++--- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/data/src/main/java/com/canopas/yourspace/data/repository/JourneyGenerator.kt b/data/src/main/java/com/canopas/yourspace/data/repository/JourneyGenerator.kt index e87519e2..4d919ade 100644 --- a/data/src/main/java/com/canopas/yourspace/data/repository/JourneyGenerator.kt +++ b/data/src/main/java/com/canopas/yourspace/data/repository/JourneyGenerator.kt @@ -38,7 +38,7 @@ fun getJourney( from_latitude = newLocation.latitude, from_longitude = newLocation.longitude, created_at = System.currentTimeMillis(), - update_at = System.currentTimeMillis(), + updated_at = System.currentTimeMillis(), type = JourneyType.STEADY ) return JourneyResult(null, newSteadyJourney) @@ -67,7 +67,7 @@ fun getJourney( } // 4. Calculate time difference - val timeDifference = newLocation.time - (lastKnownJourney.update_at ?: 0L) + val timeDifference = newLocation.time - lastKnownJourney.updated_at // 5. Check if the day changed val dayChanged = isDayChanged(newLocation, lastKnownJourney) @@ -77,7 +77,7 @@ fun getJourney( val updatedJourney = lastKnownJourney.copy( from_latitude = newLocation.latitude, from_longitude = newLocation.longitude, - update_at = System.currentTimeMillis() + updated_at = System.currentTimeMillis() ) return JourneyResult(updatedJourney, null) } @@ -86,14 +86,14 @@ fun getJourney( // Manage Journey // 1. lastKnownJourney is null, create a new journey // 2. If user is stationary - // a. update the journey with the last location and update the update_at + // a. update the journey with the last location and update the updated_at // b. If distance > 150, - // - update the journey with the last location and update the update_at + // - update the journey with the last location and update the updated_at // - create a new moving journey // 3. If user is moving - // a. If distance > 150, update the last location, route and update_at + // a. If distance > 150, update the last location, route and updated_at // b. If distance < 150 and time diff between two location updates > 5 mins, - // - update the journey with the last location and update the update_at, and stop the journey + // - update the journey with the last location and update the updated_at, and stop the journey // - create a new stationary journey // ----------------------------------------------------------------- if (lastKnownJourney.isSteady()) { @@ -105,7 +105,7 @@ fun getJourney( val updatedJourney = lastKnownJourney.copy( from_latitude = newLocation.latitude, from_longitude = newLocation.longitude, - update_at = System.currentTimeMillis() + updated_at = System.currentTimeMillis() ) // 2. Create NEW MOVING journey @@ -119,7 +119,7 @@ fun getJourney( route_distance = distance, route_duration = timeDifference, created_at = System.currentTimeMillis(), - update_at = System.currentTimeMillis(), + updated_at = System.currentTimeMillis(), type = JourneyType.MOVING ) return JourneyResult(updatedJourney, newMovingJourney) @@ -129,7 +129,7 @@ fun getJourney( val updatedJourney = lastKnownJourney.copy( from_latitude = newLocation.latitude, from_longitude = newLocation.longitude, - update_at = System.currentTimeMillis() + updated_at = System.currentTimeMillis() ) return JourneyResult(updatedJourney, null) } @@ -143,8 +143,8 @@ fun getJourney( to_latitude = newLocation.latitude, to_longitude = newLocation.longitude, route_distance = distance, - route_duration = (lastKnownJourney.update_at ?: System.currentTimeMillis()) - - (lastKnownJourney.created_at ?: System.currentTimeMillis()), + route_duration = lastKnownJourney.updated_at - + lastKnownJourney.created_at, routes = lastKnownJourney.routes + newLocation.toRoute() ) @@ -153,8 +153,8 @@ fun getJourney( user_id = userId, from_latitude = newLocation.latitude, from_longitude = newLocation.longitude, - created_at = lastKnownJourney.update_at ?: System.currentTimeMillis(), - update_at = System.currentTimeMillis(), + created_at = lastKnownJourney.updated_at, + updated_at = System.currentTimeMillis(), type = JourneyType.STEADY ) return JourneyResult(updatedJourney, newSteadyJourney) @@ -166,10 +166,10 @@ fun getJourney( to_longitude = newLocation.longitude, // Add new distance to previous distance, if you want cumulative route_distance = (lastKnownJourney.route_distance ?: 0.0) + distance, - route_duration = (lastKnownJourney.update_at ?: 0L) - - (lastKnownJourney.created_at ?: 0L), + route_duration = lastKnownJourney.updated_at - + lastKnownJourney.created_at, routes = lastKnownJourney.routes + newLocation.toRoute(), - update_at = System.currentTimeMillis() + updated_at = System.currentTimeMillis() ) return JourneyResult(updatedJourney, null) } @@ -186,7 +186,7 @@ private fun isDayChanged( newLocation: Location, lastKnownJourney: LocationJourney ): Boolean { - val lastMillis = lastKnownJourney.update_at ?: System.currentTimeMillis() + val lastMillis = lastKnownJourney.updated_at val lastCal = Calendar.getInstance().apply { timeInMillis = lastMillis } val lastDay = lastCal.get(Calendar.DAY_OF_YEAR) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 79113ef1..3bb8fa13 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -1,8 +1,6 @@ package com.canopas.yourspace.data.service.location import com.canopas.yourspace.data.models.location.EncryptedLocationJourney -import com.canopas.yourspace.data.models.location.JourneyRoute -import com.canopas.yourspace.data.models.location.JourneyType import com.canopas.yourspace.data.models.location.LocationJourney import com.canopas.yourspace.data.models.location.toDecryptedLocationJourney import com.canopas.yourspace.data.models.location.toEncryptedLocationJourney @@ -28,7 +26,6 @@ import org.signal.libsignal.protocol.groups.GroupCipher import org.signal.libsignal.protocol.groups.GroupSessionBuilder import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage import timber.log.Timber -import java.util.UUID import javax.inject.Inject import javax.inject.Singleton @@ -122,7 +119,8 @@ class ApiJourneyService @Inject constructor( suspend fun addJourney( userId: String, newJourney: LocationJourney - ) { + ): LocationJourney { + var journey: LocationJourney = newJourney userPreferences.currentUser?.space_ids?.forEach { spaceId -> val cipherAndMessage = getGroupCipherAndDistributionMessage(spaceId, userId) ?: run { Timber.e("Failed to retrieve GroupCipher and DistributionMessage for spaceId: $spaceId, userId: $userId") @@ -132,11 +130,14 @@ class ApiJourneyService @Inject constructor( val docRef = spaceMemberJourneyRef(spaceId, userId).document(newJourney.id) + journey = newJourney.copy(id = docRef.id) + val encryptedJourney = - newJourney.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) + journey.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) docRef.set(encryptedJourney).await() } + return journey } suspend fun updateJourney(userId: String, journey: LocationJourney) { From b98ae75358d15aa4cc4313d96ca5855de1cf633f Mon Sep 17 00:00:00 2001 From: Sneh Date: Wed, 8 Jan 2025 14:57:55 +0530 Subject: [PATCH 31/39] Remove passing the viewModel as parameter. --- .../yourspace/ui/flow/home/home/HomeScreen.kt | 6 +-- .../yourspace/ui/flow/home/map/MapScreen.kt | 38 +++++-------------- 2 files changed, 13 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt index 02a03c2c..03fa4382 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/home/HomeScreen.kt @@ -81,7 +81,7 @@ fun HomeScreen(verifyingSpace: Boolean) { modifier = Modifier .padding(it) ) { - HomeScreenContent(navController, viewModel) + HomeScreenContent(navController, viewModel::dismissSpaceSelection) HomeTopBar(verifyingSpace) } @@ -207,13 +207,13 @@ private fun MapControl( @OptIn(ExperimentalAnimationApi::class) @Composable -fun HomeScreenContent(navController: NavHostController, viewModel: HomeScreenViewModel) { +fun HomeScreenContent(navController: NavHostController, dismissSpaceSelection: () -> Unit) { NavHost( navController = navController, startDestination = AppDestinations.map.path ) { tabComposable(AppDestinations.map.path) { - MapScreen(viewModel) + MapScreen(dismissSpaceSelection) } tabComposable(AppDestinations.places.path) { diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt index 92f185ed..89d91d71 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt @@ -57,7 +57,6 @@ import com.canopas.yourspace.domain.utils.isLocationServiceEnabled import com.canopas.yourspace.domain.utils.openLocationSettings import com.canopas.yourspace.ui.component.AppBanner import com.canopas.yourspace.ui.component.ShowEnableLocationDialog -import com.canopas.yourspace.ui.flow.home.home.HomeScreenViewModel import com.canopas.yourspace.ui.flow.home.map.component.AddMemberBtn import com.canopas.yourspace.ui.flow.home.map.component.MapCircles import com.canopas.yourspace.ui.flow.home.map.component.MapControlBtn @@ -86,12 +85,9 @@ private const val DEFAULT_CAMERA_ZOOM_FOR_SELECTED_USER = 17f @OptIn(ExperimentalPermissionsApi::class) @Composable -fun MapScreen(homeScreenViewModel: HomeScreenViewModel) { +fun MapScreen(dismissSpaceSelection: () -> Unit) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() - - val homeScreenState by homeScreenViewModel.state.collectAsState() - val scope = rememberCoroutineScope() if (state.errorMessage != null) { @@ -140,7 +136,7 @@ fun MapScreen(homeScreenViewModel: HomeScreenViewModel) { } Box(modifier = Modifier.fillMaxSize()) { - MapView(cameraPositionState, homeScreenViewModel) + MapView(cameraPositionState, dismissSpaceSelection) Column( modifier = Modifier @@ -149,9 +145,7 @@ fun MapScreen(homeScreenViewModel: HomeScreenViewModel) { ) { Column(modifier = Modifier.align(Alignment.End)) { MapControlBtn(icon = R.drawable.ic_map_type) { - if (homeScreenState.showSpaceSelectionPopup) { - homeScreenViewModel.dismissSpaceSelection() - } + dismissSpaceSelection() viewModel.toggleStyleSheetVisibility(true) } @@ -160,9 +154,7 @@ fun MapScreen(homeScreenViewModel: HomeScreenViewModel) { show = relocate ) { scope.launch { - if (homeScreenState.showSpaceSelectionPopup) { - homeScreenViewModel.dismissSpaceSelection() - } + dismissSpaceSelection() if (state.isMapLoaded) { cameraPositionState.animate( CameraUpdateFactory.newLatLngZoom( @@ -179,9 +171,7 @@ fun MapScreen(homeScreenViewModel: HomeScreenViewModel) { containerColor = AppTheme.colorScheme.primary, contentColor = AppTheme.colorScheme.textInversePrimary ) { - if (homeScreenState.showSpaceSelectionPopup) { - homeScreenViewModel.dismissSpaceSelection() - } + dismissSpaceSelection() viewModel.navigateToPlaces() } } @@ -225,9 +215,7 @@ fun MapScreen(homeScreenViewModel: HomeScreenViewModel) { } items(state.members) { MapUserItem(it) { - if (homeScreenState.showSpaceSelectionPopup) { - homeScreenViewModel.dismissSpaceSelection() - } + dismissSpaceSelection() viewModel.showMemberDetail(it) } } @@ -347,7 +335,7 @@ fun PermissionFooter(onClick: () -> Unit) { @Composable private fun MapView( cameraPositionState: CameraPositionState, - homeScreenViewModel: HomeScreenViewModel + dismissSpaceSelection: () -> Unit ) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() @@ -387,9 +375,7 @@ private fun MapView( viewModel.onMapLoaded() }, onMapClick = { - if (homeScreenViewModel.state.value.showSpaceSelectionPopup) { - homeScreenViewModel.dismissSpaceSelection() - } + dismissSpaceSelection() if (state.showUserDetails) { viewModel.dismissMemberDetail() } @@ -405,9 +391,7 @@ private fun MapView( location = it.location!!, isSelected = it.user.id == state.selectedUser?.user?.id ) { - if (homeScreenViewModel.state.value.showSpaceSelectionPopup) { - homeScreenViewModel.dismissSpaceSelection() - } + dismissSpaceSelection() if (state.isStyleSheetVisible) { viewModel.toggleStyleSheetVisibility(false) } @@ -423,9 +407,7 @@ private fun MapView( location = location.toApiLocation(currentUser.id), isSelected = currentUser.id == state.selectedUser?.user?.id ) { - if (homeScreenViewModel.state.value.showSpaceSelectionPopup) { - homeScreenViewModel.dismissSpaceSelection() - } + dismissSpaceSelection() if (state.isStyleSheetVisible) { viewModel.toggleStyleSheetVisibility(false) } From a9102a9ec0a8b383a6d42ea603024ba76bdd3b42 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Wed, 8 Jan 2025 16:17:55 +0530 Subject: [PATCH 32/39] final commit --- app/build.gradle.kts | 5 +- .../data/models/location/LocationJourney.kt | 22 ++-- .../yourspace/data/models/space/ApiSpace.kt | 5 +- .../service/location/ApiJourneyService.kt | 30 +++-- .../service/location/ApiLocationService.kt | 104 +++++++++--------- .../data/service/space/ApiSpaceService.kt | 52 +-------- firestore.rules | 4 +- 7 files changed, 83 insertions(+), 139 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 76bdd23c..586b7113 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,4 @@ + import org.jetbrains.kotlin.konan.properties.hasProperty import java.util.Properties @@ -14,6 +15,7 @@ plugins { var versionMajor = 1 var versionMinor = 0 var versionBuild = 0 +val targetSdkVersion: Int = 34 android { namespace = "com.canopas.yourspace" @@ -30,6 +32,8 @@ android { defaultConfig { applicationId = "com.canopas.yourspace" minSdk = 24 + targetSdk = targetSdkVersion + versionCode = versionMajor * 1000000 + versionMinor * 10000 + versionBuild versionName = "$versionMajor.$versionMinor.$versionBuild" setProperty("archivesBaseName", "GroupTrack-$versionName-$versionCode") @@ -59,7 +63,6 @@ android { buildConfigField("String", "PLACE_API_KEY", "\"${p.getProperty("PLACE_API_KEY")}\"") } } - signingConfigs { if (System.getenv("APKSIGN_KEYSTORE") != null) { create("release") { diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index 0ec95815..6af4ac93 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -22,7 +22,7 @@ data class LocationJourney( val routes: List = emptyList(), val created_at: Long = System.currentTimeMillis(), val updated_at: Long = System.currentTimeMillis(), - val type: JourneyType? = null, + val type: JourneyType = if (to_latitude != null && to_longitude != null) JourneyType.MOVING else JourneyType.STEADY, val key_id: String = "" ) @@ -40,7 +40,7 @@ data class EncryptedLocationJourney( val routes: List = emptyList(), // Encrypted journey routes val created_at: Long = System.currentTimeMillis(), val updated_at: Long = System.currentTimeMillis(), - val type: JourneyType? = null, + val type: JourneyType = if (to_latitude != null && to_longitude != null) JourneyType.MOVING else JourneyType.STEADY, val key_id: String = "" ) @@ -85,19 +85,9 @@ fun LocationJourney.toRoute(): List { } } -fun LocationJourney.isSteady(): Boolean { - if (type != null) { - return type == JourneyType.STEADY - } - return to_latitude == null || to_longitude == null -} +fun LocationJourney.isSteady() = type == JourneyType.STEADY -fun LocationJourney.isMoving(): Boolean { - if (type != null) { - return type == JourneyType.MOVING - } - return to_latitude != null && to_longitude != null -} +fun LocationJourney.isMoving() = type == JourneyType.MOVING fun LocationJourney.toLocationFromSteadyJourney() = Location("").apply { latitude = this@toLocationFromSteadyJourney.from_latitude @@ -151,6 +141,7 @@ fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher routes = decryptedRoutes, created_at = created_at, updated_at = updated_at, + type = type, key_id = key_id ) } @@ -212,6 +203,7 @@ fun LocationJourney.toEncryptedLocationJourney( routes = encryptedRoutes, created_at = created_at, updated_at = updated_at, - key_id = distributionId.toString() + type = type, + key_id = key_id ) } diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index a16964de..c584b134 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -57,7 +57,7 @@ data class GroupKeysDoc( val memberKeys: Map = emptyMap() ) -/* +/** * Data class that represents the entire "groupKeys/{senderUserId}" doc * in Firestore for a single sender's key distribution. */ @@ -78,7 +78,8 @@ data class EncryptedDistribution( val recipientId: String = "", val ephemeralPub: Blob = Blob.fromBytes(ByteArray(0)), // 32 bytes val iv: Blob = Blob.fromBytes(ByteArray(0)), // 12 bytes - val ciphertext: Blob = Blob.fromBytes(ByteArray(0)) // AES/GCM ciphertext + val ciphertext: Blob = Blob.fromBytes(ByteArray(0)), // AES/GCM ciphertext + val createdAt: Long = System.currentTimeMillis() ) { init { validateFieldSizes() diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 43018fae..ba4be5b5 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -56,7 +56,7 @@ class ApiJourneyService @Inject constructor( return try { spaceGroupKeysRef(spaceId).get().await().toObject() } catch (e: Exception) { - Timber.e(e, "Failed to fetch GroupKeysDoc for space: $spaceId") + Timber.e(e, "Failed to fetch GroupKeysDoc") null } } @@ -69,31 +69,29 @@ class ApiJourneyService @Inject constructor( userId: String, keyId: String? = null, groupKeysDoc: GroupKeysDoc - ): Pair? { - Timber.e("XXXXXX: SpaceId: $spaceId, userId: $userId, keyId: $keyId") + ): Triple? { val memberKeysData = groupKeysDoc.memberKeys[userId] ?: return null val distribution = memberKeysData.distributions + .sortedByDescending { it.createdAt } .firstOrNull { it.recipientId == userId && (keyId == null || it.id == keyId) } ?: return null - Timber.e("XXXXXX: distribution: $distribution") val privateKey = getCurrentUserPrivateKey(userPreferences.currentUser!!) ?: return null // Decrypt the distribution message val decryptedBytes = EphemeralECDHUtils.decrypt(distribution, privateKey) ?: return null val distributionMessage = SenderKeyDistributionMessage(decryptedBytes) - Timber.e("XXXXXX: distributionMessage: $distributionMessage") val groupAddress = SignalProtocolAddress(spaceId, memberKeysData.memberDeviceId) // Ensures the distribution ID is loaded into the store bufferedSenderKeyStore.loadSenderKey(groupAddress, distributionMessage.distributionId) return try { GroupSessionBuilder(bufferedSenderKeyStore).process(groupAddress, distributionMessage) - distributionMessage to GroupCipher(bufferedSenderKeyStore, groupAddress) + Triple(distributionMessage, GroupCipher(bufferedSenderKeyStore, groupAddress), distribution.id) } catch (e: Exception) { - Timber.e(e, "Error processing group session for space: $spaceId") + Timber.e(e, "Error processing group session") null } } @@ -115,7 +113,7 @@ class ApiJourneyService @Inject constructor( return try { block(groupCipher) ?: defaultValue } catch (e: Exception) { - Timber.e(e, "Error executing operation for userId: $userId in spaceId: $spaceId") + Timber.e(e, "Error executing run operation") defaultValue } } @@ -147,23 +145,22 @@ class ApiJourneyService @Inject constructor( ): LocationJourney { var journey: LocationJourney = newJourney userPreferences.currentUser?.space_ids?.forEach { spaceId -> - // Load groupKeysDoc once (per space) and reuse it if needed val groupKeysDoc = getGroupKeyDoc(spaceId) ?: return@forEach - val (distributionMessage, groupCipher) = getGroupCipherByKeyId( + val (distributionMessage, groupCipher, keyId) = getGroupCipherByKeyId( spaceId, userId, null, groupKeysDoc ) ?: run { - Timber.e("Failed to get group cipher for spaceId=$spaceId, userId=$userId") + Timber.e("Failed to get group cipher") return@forEach } val docRef = spaceMemberJourneyRef(spaceId, userId).document(newJourney.id) - journey = newJourney.copy(id = docRef.id) + journey = newJourney.copy(id = docRef.id, key_id = keyId) val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) @@ -187,7 +184,7 @@ class ApiJourneyService @Inject constructor( groupKeysDoc ) ?: run { - Timber.e("Failed to get group cipher for spaceId=$spaceId, userId=$userId") + Timber.e("Failed to get group cipher") return@forEach } @@ -199,7 +196,7 @@ class ApiJourneyService @Inject constructor( .set(encryptedJourney) .await() } catch (e: Exception) { - Timber.e(e, "Error updating journey for spaceId=$spaceId, userId=$userId") + Timber.e(e, "Error updating journey") } } } @@ -218,7 +215,6 @@ class ApiJourneyService @Inject constructor( ?.toObject() ?: return null - // Fetch groupKeysDoc once val groupKeysDoc = getGroupKeyDoc(currentSpaceId) ?: return null // Decrypt @@ -303,7 +299,7 @@ class ApiJourneyService @Inject constructor( encrypted.toDecryptedLocationJourney(cipherAndMessage.second) } } catch (e: Exception) { - Timber.e(e, "Error while getting journey history for userId: $userId") + Timber.e(e, "Error while getting journey history") emptyList() } } @@ -321,7 +317,7 @@ class ApiJourneyService @Inject constructor( .await() .toObject() } catch (e: Exception) { - Timber.e(e, "Error while getting journey by ID: $journeyId") + Timber.e(e, "Error while getting journey") return null } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index 185bb114..b5c8a4ba 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -3,6 +3,7 @@ package com.canopas.yourspace.data.service.location import com.canopas.yourspace.data.models.location.ApiLocation import com.canopas.yourspace.data.models.location.EncryptedApiLocation import com.canopas.yourspace.data.models.space.ApiSpaceMember +import com.canopas.yourspace.data.models.space.EncryptedDistribution import com.canopas.yourspace.data.models.space.GroupKeysDoc import com.canopas.yourspace.data.models.space.MemberKeyData import com.canopas.yourspace.data.models.user.ApiUser @@ -31,6 +32,7 @@ import org.signal.libsignal.protocol.groups.GroupSessionBuilder import org.signal.libsignal.protocol.groups.InvalidSenderKeySessionException import org.signal.libsignal.protocol.message.SenderKeyDistributionMessage import timber.log.Timber +import java.util.UUID import javax.inject.Inject import javax.inject.Singleton @@ -214,7 +216,9 @@ class ApiLocationService @Inject constructor( val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: return null val memberKeyData = groupKeysDoc.memberKeys[userId] ?: return null - val distribution = memberKeyData.distributions.firstOrNull { + val distribution = memberKeyData.distributions.sortedByDescending { + it.createdAt + }.firstOrNull { it.recipientId == currentUser.id } ?: return null @@ -234,20 +238,7 @@ class ApiLocationService @Inject constructor( // If the sender key data is outdated, we need to distribute the sender key to the pending users if (memberKeyData.dataUpdatedAt < groupKeysDoc.docUpdatedAt && canDistributeSenderKey) { // Here means the sender key data is outdated, so we need to distribute the sender key to the users. - val apiSpaceMembers = getSpaceMembers(spaceId) - val membersPendingForSenderKey = apiSpaceMembers.filter { member -> - memberKeyData.distributions.none { it.recipientId == member.user_id } - } - - if (membersPendingForSenderKey.isNotEmpty()) { - distributeSenderKeyToNewSpaceMembers( - spaceId = spaceId, - senderUserId = userId, - distributionMessage = distributionMessage, - senderDeviceId = memberKeyData.memberDeviceId, - apiSpaceMembers = membersPendingForSenderKey - ) - } + rotateSenderKey(spaceId = spaceId, deviceId = memberKeyData.memberDeviceId) } return try { @@ -267,13 +258,13 @@ class ApiLocationService @Inject constructor( val privateKey = try { userPreferences.getPrivateKey() ?: currentUser.identity_key_private?.toBytes() } catch (e: Exception) { - Timber.e(e, "Failed to retrieve private key for user ${currentUser.id}") + Timber.e(e, "Failed to retrieve private key") return null } return try { Curve.decodePrivatePoint(privateKey) } catch (e: InvalidKeyException) { - Timber.e(e, "Error decoding private key for userId=${currentUser.id}") + Timber.e(e, "Error decoding private key") PrivateKeyUtils.decryptPrivateKey( encryptedPrivateKey = privateKey ?: return null, salt = currentUser.identity_key_salt?.toBytes() ?: return null, @@ -283,49 +274,56 @@ class ApiLocationService @Inject constructor( } /** - * Create a sender key distribution for the new users, and encrypt the distribution key - * for each member using their public key(ECDH). - **/ - private suspend fun distributeSenderKeyToNewSpaceMembers( - spaceId: String, - senderUserId: String, - distributionMessage: SenderKeyDistributionMessage, - senderDeviceId: Int, - apiSpaceMembers: List - ) { + * Rotates the sender key for a given space. + */ + private suspend fun rotateSenderKey(spaceId: String, deviceId: Int) { + val user = userPreferences.currentUser ?: return + + val groupAddress = SignalProtocolAddress(spaceId, deviceId) + val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) + val newDistributionMessage = sessionBuilder.create(groupAddress, UUID.randomUUID()) + val newDistributionBytes = newDistributionMessage.serialize() + + val apiSpaceMembers = getSpaceMembers(spaceId) + val memberIds = apiSpaceMembers.map { it.user_id }.toSet() + val newDistributions = mutableListOf() + + for (member in apiSpaceMembers) { + val publicBlob = member.identity_key_public ?: continue + val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) + + newDistributions.add( + EphemeralECDHUtils.encrypt( + member.user_id, + newDistributionBytes, + publicKey + ) + ) + } + db.runTransaction { transaction -> val docRef = spaceGroupKeysRef(spaceId) - val distributionBytes = distributionMessage.serialize() val snapshot = transaction.get(docRef) val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() - val oldMemberKeyData = groupKeysDoc.memberKeys[senderUserId] ?: MemberKeyData() - val distributions = oldMemberKeyData.distributions.toMutableList() - - for (member in apiSpaceMembers) { - val publicBlob = member.identity_key_public ?: continue - val publicKeyBytes = publicBlob.toBytes() - if (publicKeyBytes.size != 33) { // Expected size for compressed EC public key - Timber.e("Invalid public key size for member ${member.user_id}") - continue - } - val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) - - // Encrypt distribution using member's public key - distributions.add( - EphemeralECDHUtils.encrypt( - member.user_id, - distributionBytes, - publicKey - ) - ) - } - val newMemberKeyData = oldMemberKeyData.copy( - memberDeviceId = senderDeviceId, - distributions = distributions, + val oldKeyData = groupKeysDoc.memberKeys[user.id] ?: MemberKeyData() + + // Filter out distributions for members who are no longer in the space + val filteredOldDistributions = + oldKeyData.distributions.filter { it.recipientId in memberIds } + + val rotatedKeyData = oldKeyData.copy( + memberDeviceId = deviceId, + distributions = newDistributions + filteredOldDistributions, dataUpdatedAt = System.currentTimeMillis() ) - transaction.update(docRef, mapOf("memberKeys.$senderUserId" to newMemberKeyData)) + + val updates = mapOf( + "memberKeys.${user.id}" to rotatedKeyData, + "docUpdatedAt" to System.currentTimeMillis() + ) + + transaction.update(docRef, updates) }.await() } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index 3281ea9b..ed96a665 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -187,7 +187,10 @@ class ApiSpaceService @Inject constructor( .whereEqualTo("user_id", userId).get().await().documents.forEach { it.reference.delete().await() } - rotateSenderKey(spaceId) + + // Update the "docUpdatedAt" so others see membership changed and remove sender key for the removed user + val docRef = spaceGroupKeysDoc(spaceId) + docRef.update("docUpdatedAt", System.currentTimeMillis()).await() } suspend fun updateSpace(space: ApiSpace) { @@ -216,51 +219,4 @@ class ApiSpaceService @Inject constructor( } } } - - private suspend fun rotateSenderKey(spaceId: String) { - val user = authService.currentUser ?: return - val deviceId = UUID.randomUUID().mostSignificantBits.toInt() - - val groupAddress = SignalProtocolAddress(spaceId, deviceId) - val sessionBuilder = GroupSessionBuilder(bufferedSenderKeyStore) - val newDistributionMessage = sessionBuilder.create(groupAddress, UUID.randomUUID()) - val newDistributionBytes = newDistributionMessage.serialize() - - val apiSpaceMembers = getSpaceMembers(spaceId) - val memberIds = apiSpaceMembers.map { it.user_id }.toSet() - val newDistributions = mutableListOf() - - for (member in apiSpaceMembers) { - val publicBlob = member.identity_key_public ?: continue - val publicKey = Curve.decodePoint(publicBlob.toBytes(), 0) - - newDistributions.add(EphemeralECDHUtils.encrypt(member.user_id, newDistributionBytes, publicKey)) - } - - db.runTransaction { transaction -> - val docRef = spaceGroupKeysDoc(spaceId) - val snapshot = transaction.get(docRef) - val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() - - val oldKeyData = groupKeysDoc.memberKeys[user.id] ?: MemberKeyData() - - // Filter out distributions for members who are no longer in the space - val filteredOldDistributions = oldKeyData.distributions.filter { it.recipientId in memberIds } - - val rotatedKeyData = oldKeyData.copy( - memberDeviceId = deviceId, - distributions = newDistributions + filteredOldDistributions, - dataUpdatedAt = System.currentTimeMillis() - ) - - val updates = mapOf( - "memberKeys.${user.id}" to rotatedKeyData, - "docUpdatedAt" to System.currentTimeMillis() - ) - - transaction.update(docRef, updates) - }.await() - - Timber.d("Key rotation completed for space: $spaceId") - } } diff --git a/firestore.rules b/firestore.rules index 9f7db645..0a5cb351 100644 --- a/firestore.rules +++ b/firestore.rules @@ -190,7 +190,7 @@ service cloud.firestore { allow write: if false; } - match /spaces/{spaceId}/space_members/{member} { + match /spaces/{spaceId}/space_members/{docId} { allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); allow delete: if isAuthorized() && @@ -210,9 +210,7 @@ service cloud.firestore { (request.resource.data.role == 1 || request.resource.data.role == 2) && request.resource.data.location_enabled is bool && request.resource.data.created_at is int; - } - match /spaces/{spaceId}/space_members/{docId} { match /user_locations/{docId} { allow read: if isAuthorized() && (request.auth.uid == resource.data.user_id || isSpaceMember(spaceId)); From 898b8eff081e00afec0294e6472e498a4c4ff67e Mon Sep 17 00:00:00 2001 From: Sneh Date: Thu, 9 Jan 2025 10:16:40 +0530 Subject: [PATCH 33/39] Rename space to group and GroupTrack to Grouptrack. --- CONTRIBUTING.md | 4 ++-- README.md | 20 ++++++++++---------- app/src/main/res/values/strings.xml | 16 ++++++++-------- docs/_config.yml | 2 +- docs/account-deletion-guide.md | 6 +++--- docs/privacy-policy.md | 4 ++-- 6 files changed, 26 insertions(+), 26 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 46b68325..55afb2fd 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,7 +12,7 @@ If you are reporting a bug, please help speed up problem diagnosis by providing We actively welcome your pull requests. You can find instructions on building the project in [README.md](https://github.com/canopas/group-track-android). 1. Fork the repo and create your branch from `master`. 2. If you've added code that should be tested, add tests -4. Make sure your code lints. +3. Make sure your code lints. ## Labels Labels on issues are managed by contributors, you don't have to worry about them. Here's a list of what they mean: @@ -29,4 +29,4 @@ Labels on issues are managed by contributors, you don't have to worry about them * **non-library**: issue is not in the core library code, but rather in documentation, samples, build process, releases ## License - By contributing to GroupTrack, you agree that your contributions will be licensed under its Apache License, Version 2.0. See LICENSE file for details. + By contributing to Grouptrack, you agree that your contributions will be licensed under its Apache License, Version 2.0. See LICENSE file for details. diff --git a/README.md b/README.md index b78052d0..afb8e9ad 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,23 @@

    -# GroupTrack - Stay connected, Anywhere! +# Grouptrack - Stay connected, Anywhere! Enhancing family safety and communication with real-time location sharing and modern UIs. cover ## Overview -Welcome to GroupTrack, an open-source Android application designed to enhance family safety through real-time location sharing and communication features. GroupTrack aims to provide peace of mind by ensuring the safety of your loved ones and facilitating seamless communication regardless of their location. +Welcome to Grouptrack, an open-source Android application designed to enhance family safety through real-time location sharing and communication features. Grouptrack aims to provide peace of mind by ensuring the safety of your loved ones and facilitating seamless communication regardless of their location. -GroupTrack adopts the MVVM architecture pattern and leverages Jetpack Compose for building modern UIs declaratively. This architecture ensures a clear separation of concerns, making the codebase more maintainable and testable. Jetpack Compose simplifies UI development by allowing developers to define UI elements and their behavior in a more intuitive way, resulting in a seamless user experience. +Grouptrack adopts the MVVM architecture pattern and leverages Jetpack Compose for building modern UIs declaratively. This architecture ensures a clear separation of concerns, making the codebase more maintainable and testable. Jetpack Compose simplifies UI development by allowing developers to define UI elements and their behavior in a more intuitive way, resulting in a seamless user experience. ## Download App ## Features -GroupTrack is currently in active development 🚧, with plans to incorporate additional features shortly. +Grouptrack is currently in active development 🚧, with plans to incorporate additional features shortly. -GroupTrack ensures your loved ones' well-being with: +Grouptrack ensures your loved ones' well-being with: - [X] Real-time Location Sharing - [X] Secure Communication @@ -29,7 +29,7 @@ GroupTrack ensures your loved ones' well-being with: - + @@ -70,14 +70,14 @@ Use the `applicationId` value specified in the `app/build.gradle` file of the ap Once the project is created, you will need to add the `google-services.json` file to the app module. For more information, refer to the [Firebase documentation](https://firebase.google.com/docs/android/setup). -GroupTrack uses the following Firebase services, Make sure you enable them in your Firebase project: +Grouptrack uses the following Firebase services, Make sure you enable them in your Firebase project: - Authentication (Phone, Google) - Firestore (To store user data) ## Tech stack -GroupTrack utilizes the latest Android technologies and adheres to industry best practices. Below is the current tech stack used in the development process: +Grouptrack utilizes the latest Android technologies and adheres to industry best practices. Below is the current tech stack used in the development process: - MVVM Architecture - Jetpack Compose @@ -100,13 +100,13 @@ GroupTrack utilizes the latest Android technologies and adheres to industry best The Canopas team enthusiastically welcomes contributions and project participation! There are a bunch of things you can do if you want to contribute! The [Contributor Guide](CONTRIBUTING.md) has all the information you need for everything from reporting bugs to contributing entire new features. Please don't hesitate to jump in if you'd like to, or even ask us questions if something isn't clear. ## Credits -GroupTrack is owned and maintained by the [Canopas team](https://canopas.com/). You can follow them on X at [@canopassoftware](https://x.com/canopassoftware) for project updates and releases. If you are interested in building apps or designing products, please let us know. We'd love to hear from you! +Grouptrack is owned and maintained by the [Canopas team](https://canopas.com/). You can follow them on X at [@canopassoftware](https://x.com/canopassoftware) for project updates and releases. If you are interested in building apps or designing products, please let us know. We'd love to hear from you! ## License -GroupTrack is licensed under the Apache License, Version 2.0. +Grouptrack is licensed under the Apache License, Version 2.0. ``` Copyright 2024 Canopas Software LLP diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d95eb32a..aae37828 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -28,11 +28,11 @@ You\'ve been logged outYou need to sign in again to continue using the application.Turn on location/GPS - Your location/GPS setting must be turned on for GroupTrack to work. Please turn on location/GPS in the settings + Your location/GPS setting must be turned on for Grouptrack to work. Please turn on location/GPS in the settingsLocation Access Required - GroupTrack\'s location-sharing feature works correctly when it can access your location all the time. This ensures it gives you accurate, real-time updates. + Grouptrack\'s location-sharing feature works correctly when it can access your location all the time. This ensures it gives you accurate, real-time updates.Go to settings > select "Allow all the time" - Go to settings > GroupTrack app info > Location permission > select "Allow all the time" + Go to settings > Grouptrack app info > Location permission > select "Allow all the time"Go to SettingsNo Group Found!The group you are looking for isn\'t available or you may have been removed. @@ -94,7 +94,7 @@ It appears the code is no longer valid or has expired. Please review and enter a valid code.Enable Permissions - For an effective user experience on GroupTrack, it\'s necessary to enable these permissions. + For an effective user experience on Grouptrack, it\'s necessary to enable these permissions.We prioritize the security of your information and want to assure you that we do not share your data with any third-party entities.Location accessFor seamless sharing of your live location with a trusted contact requires permission for location access. @@ -104,7 +104,7 @@ Notification accessStay connected and receive timely updates by enabling notification permission for check-ins, alerts, and messages from your trusted one.Enable permission - To receive timely updates, check-ins, and alerts from GroupTrack, grant notification access. We respect your privacy and will only use notifications to enhance your experience. Enable now for seamless communication! + To receive timely updates, check-ins, and alerts from Grouptrack, grant notification access. We respect your privacy and will only use notifications to enhance your experience. Enable now for seamless communication!Enable Notification AccessHome @@ -112,7 +112,7 @@ PlacesStay closed to your loved one - Allow GroupTrack to access your location data. + Allow Grouptrack to access your location data.Device location/GPS is off. Please turn it on!Location sharing is currently not possibleSome permissions are missing - grant access @@ -177,7 +177,7 @@ App version: %sShare appRate us - Check out GroupTrack - the best app to stay connected with your loved ones! Download now: %1$s + Check out Grouptrack - the best app to stay connected with your loved ones! Download now: %1$sEdit profileSave @@ -225,7 +225,7 @@ Your groupsTurn off Battery Optimization for Location Sharing - For location sharing feature to work properly for your Groups, turn off Battery Optimization in your phone settings for the GroupTrack app. This won\'t affect your other apps. + For location sharing feature to work properly for your Groups, turn off Battery Optimization in your phone settings for the Grouptrack app. This won\'t affect your other apps.Change nowPlaces diff --git a/docs/_config.yml b/docs/_config.yml index ab71ae50..de334ce5 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,2 +1,2 @@ -title: GroupTrack - Stay connected, Anywhere! +title: Grouptrack - Stay connected, Anywhere! description: Enhance family safety with real-time location sharing. diff --git a/docs/account-deletion-guide.md b/docs/account-deletion-guide.md index ba1b27b6..e7e929df 100644 --- a/docs/account-deletion-guide.md +++ b/docs/account-deletion-guide.md @@ -1,9 +1,9 @@ -# GroupTrack Account Deletion +# Grouptrack Account Deletion -If you wish to delete your GroupTrack account, follow these steps: +If you wish to delete your Grouptrack account, follow these steps: (Note : If you're an admin of any group, you must have to transfer admin rights to another user before proceeding.) -1. Open the **GroupTrack** app on your device. +1. Open the **Grouptrack** app on your device. 2. Go to **Home** and tap on **Settings**. diff --git a/docs/privacy-policy.md b/docs/privacy-policy.md index 7d91863b..81d200d3 100644 --- a/docs/privacy-policy.md +++ b/docs/privacy-policy.md @@ -19,11 +19,11 @@ For the purposes of this Privacy Policy: - __Account__ means a unique account created for You to access our Service or parts of our Service. - __Affiliate__ means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority. -- __Application__ refers to GroupTrack, the software program provided by the Company. +- __Application__ refers to Grouptrack, the software program provided by the Company. -- __Company__ (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to GroupTrack. +- __Company__ (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to Grouptrack. From 25db65d0dae2efef397d476aeab9f85e225d9049 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 9 Jan 2025 11:39:14 +0530 Subject: [PATCH 34/39] PR changes --- .../com/canopas/yourspace/ui/MainViewModel.kt | 14 +-- .../yourspace/ui/component/OtpTextField.kt | 5 +- .../home/map/component/SelectedUserDetail.kt | 2 +- .../timeline/JourneyTimelineViewModel.kt | 10 +- .../ui/flow/pin/enterpin/EnterPinScreen.kt | 22 ++-- .../ui/flow/pin/enterpin/EnterPinViewModel.kt | 38 +++---- .../ui/flow/pin/setpin/SetPinScreen.kt | 23 +--- .../ui/flow/pin/setpin/SetPinViewModel.kt | 96 +++++++--------- app/src/main/res/values/strings.xml | 4 - data/build.gradle.kts | 1 + .../data/models/location/LocationJourney.kt | 105 ------------------ .../yourspace/data/models/space/ApiSpace.kt | 20 ++-- .../data/models/user/ApiSenderKeyRecord.kt | 21 +++- .../data/repository/SpaceRepository.kt | 1 - .../data/service/auth/AuthService.kt | 2 +- .../service/location/ApiJourneyService.kt | 17 ++- .../service/location/ApiLocationService.kt | 24 ++-- .../data/service/location/JourneyKtx.kt | 97 ++++++++++++++++ .../data/service/space/ApiSpaceService.kt | 28 +++-- .../data/service/user/ApiUserService.kt | 14 ++- .../BufferedSenderKeyStore.kt | 66 +++++------ .../bufferedkeystore/DistributionId.kt | 61 ---------- .../SignalServiceSenderKeyStore.kt | 21 +--- .../data/storage/database/SenderKeyEntity.kt | 13 ++- .../data/utils/EphemeralECDHUtils.kt | 10 +- .../yourspace/data/utils/PrivateKeyUtils.kt | 4 +- 26 files changed, 299 insertions(+), 420 deletions(-) create mode 100644 data/src/main/java/com/canopas/yourspace/data/service/location/JourneyKtx.kt delete mode 100644 data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/DistributionId.kt diff --git a/app/src/main/java/com/canopas/yourspace/ui/MainViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/MainViewModel.kt index 28c866dc..b221187c 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/MainViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/MainViewModel.kt @@ -44,18 +44,16 @@ class MainViewModel @Inject constructor( viewModelScope.launch { val currentUser = authService.getUser() val isExistingUser = currentUser != null - val showSetPinScreen = - isExistingUser && currentUser!!.identity_key_public?.toBytes() - .contentEquals(currentUser.identity_key_private?.toBytes()) - val showEnterPinScreen = - isExistingUser && currentUser!!.identity_key_public?.toBytes() - .contentEquals(currentUser.identity_key_private?.toBytes()) && userPreferences.getPasskey() - .isNullOrEmpty() + val identityKeysMatch = currentUser?.let { + it.identity_key_public?.toBytes().contentEquals(it.identity_key_private?.toBytes()) + } ?: false + val showSetPinScreen = isExistingUser && identityKeysMatch + val showEnterPinScreen = showSetPinScreen && userPreferences.getPasskey().isNullOrEmpty() val initialRoute = when { !userPreferences.isIntroShown() -> AppDestinations.intro.path userPreferences.currentUser == null -> AppDestinations.signIn.path - showSetPinScreen -> AppDestinations.setPin.path showEnterPinScreen -> AppDestinations.enterPin.path + showSetPinScreen -> AppDestinations.setPin.path !userPreferences.isOnboardShown() -> AppDestinations.onboard.path else -> AppDestinations.home.path } diff --git a/app/src/main/java/com/canopas/yourspace/ui/component/OtpTextField.kt b/app/src/main/java/com/canopas/yourspace/ui/component/OtpTextField.kt index 36e601c8..7b261d99 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/component/OtpTextField.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/component/OtpTextField.kt @@ -37,7 +37,8 @@ fun OtpInputField( pinText: String, onPinTextChange: (String) -> Unit, textStyle: TextStyle = AppTheme.appTypography.header2, - digitCount: Int = 6 + digitCount: Int = 6, + keyboardType: KeyboardType = KeyboardType.Text ) { val focusRequester = remember { FocusRequester() } BoxWithConstraints( @@ -55,7 +56,7 @@ fun OtpInputField( onPinTextChange(it) } }, - keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text), + keyboardOptions = KeyboardOptions(keyboardType = keyboardType), modifier = Modifier.focusRequester(focusRequester), decorationBox = { Row( diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/component/SelectedUserDetail.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/component/SelectedUserDetail.kt index e5aac09a..44650923 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/component/SelectedUserDetail.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/component/SelectedUserDetail.kt @@ -159,7 +159,7 @@ private fun MemberInfoView( val state by viewModel.state.collectAsState() var address by remember { mutableStateOf("") } - val time = timeAgo(location?.created_at ?: System.currentTimeMillis()) + val time = location?.created_at?.let { timeAgo(it) } ?: "" val userStateText = if (user.noNetwork) { stringResource(R.string.map_selected_user_item_no_network_state) } else if (user.locationPermissionDenied) { diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/timeline/JourneyTimelineViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/timeline/JourneyTimelineViewModel.kt index 367d3426..55b52e5d 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/journey/timeline/JourneyTimelineViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/journey/timeline/JourneyTimelineViewModel.kt @@ -96,7 +96,7 @@ class JourneyTimelineViewModel @Inject constructor( try { val from = _state.value.selectedTimeFrom val to = _state.value.selectedTimeTo - val lastJourneyTime = allJourneys.minOfOrNull { it.updated_at!! } + val lastJourneyTime = allJourneys.minOfOrNull { it.updated_at } val locations = if (loadMore) { journeyService.getMoreJourneyHistory(userId, lastJourneyTime) @@ -105,8 +105,8 @@ class JourneyTimelineViewModel @Inject constructor( } val filteredLocations = locations.filter { - (it.created_at?.let { created -> created in from..to } ?: false) || - (it.updated_at?.let { updated -> updated in from..to } ?: false) + it.created_at in from..to || + it.updated_at in from..to } val locationJourneys = (allJourneys + filteredLocations).groupByDate() @@ -158,12 +158,12 @@ class JourneyTimelineViewModel @Inject constructor( private fun List.groupByDate(): Map> { val journeys = this.distinctBy { it.id } - .sortedByDescending { it.updated_at!! } + .sortedByDescending { it.updated_at } val groupedItems = mutableMapOf>() for (journey in journeys) { - val date = getDayStartTimestamp(journey.created_at!!) + val date = getDayStartTimestamp(journey.created_at) if (!groupedItems.containsKey(date)) { groupedItems[date] = mutableListOf() diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt index 926143d3..e06e23b1 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinScreen.kt @@ -18,16 +18,14 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import com.canopas.yourspace.R import com.canopas.yourspace.ui.component.OtpInputField import com.canopas.yourspace.ui.component.PrimaryButton -import com.canopas.yourspace.ui.flow.pin.setpin.PinErrorState @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -51,7 +49,6 @@ fun EnterPinScreen() { private fun EnterPinContent(modifier: Modifier) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() - val context = LocalContext.current Column( modifier = modifier @@ -81,21 +78,16 @@ private fun EnterPinContent(modifier: Modifier) { OtpInputField( pinText = state.pin, onPinTextChange = { viewModel.onPinChanged(it) }, - digitCount = 4 + digitCount = 4, + keyboardType = KeyboardType.Number ) Spacer(modifier = Modifier.height(16.dp)) - if (state.pinError != null) { - val pinErrorText = when (state.pinError) { - PinErrorState.LENGTH_ERROR -> context.getString(R.string.enter_pin_error_text_length) - PinErrorState.CHARACTERS_ERROR -> context.getString(R.string.enter_pin_error_characters_input) - PinErrorState.INVALID_PIN -> context.getString(R.string.enter_pin_invalid_pin_text) - else -> "" - } + if (state.isPinInvalid) { Text( - text = pinErrorText, - color = if (pinErrorText.isNotEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, + text = stringResource(R.string.enter_pin_invalid_pin_text), + color = MaterialTheme.colorScheme.error, style = MaterialTheme.typography.bodyMedium, modifier = Modifier.padding(top = 8.dp) ) @@ -108,7 +100,7 @@ private fun EnterPinContent(modifier: Modifier) { onClick = { viewModel.processPin() }, - enabled = state.pin != "" && state.pinError == null, + enabled = state.pin != "" && !state.isPinInvalid && state.pin.length == 4, modifier = Modifier.fillMaxWidth(), showLoader = state.showLoader ) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt index f2c7522b..5f8eb21c 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/enterpin/EnterPinViewModel.kt @@ -6,7 +6,6 @@ import com.canopas.yourspace.data.service.auth.AuthService import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.AppDispatcher import com.canopas.yourspace.domain.utils.ConnectivityObserver -import com.canopas.yourspace.ui.flow.pin.setpin.PinErrorState import com.canopas.yourspace.ui.navigation.AppDestinations import com.canopas.yourspace.ui.navigation.AppNavigator import dagger.hilt.android.lifecycle.HiltViewModel @@ -34,16 +33,7 @@ class EnterPinViewModel @Inject constructor( fun onPinChanged(newPin: String) { _state.value = _state.value.copy(pin = newPin) if (newPin.length == 4) { - _state.value = _state.value.copy(pinError = null) - } - } - - private fun validatePin() { - val pin = state.value.pin - if (pin.length < 4) { - _state.value = _state.value.copy(pinError = PinErrorState.LENGTH_ERROR, showLoader = false) - } else if (pin.length == 4 && !pin.all { it.isDigit() }) { - _state.value = _state.value.copy(pinError = PinErrorState.CHARACTERS_ERROR, showLoader = false) + _state.value = _state.value.copy(isPinInvalid = false) } } @@ -62,19 +52,17 @@ class EnterPinViewModel @Inject constructor( fun processPin() = viewModelScope.launch(appDispatcher.MAIN) { _state.value = _state.value.copy(showLoader = true) val pin = state.value.pin - validatePin() - if (state.value.pinError == null) { - val isPinValid = authService.validatePasskey(passKey = pin) - if (isPinValid) { - userPreferences.setOnboardShown(true) - navigator.navigateTo( - AppDestinations.home.path, - popUpToRoute = AppDestinations.signIn.path, - inclusive = true - ) - } else { - _state.value = _state.value.copy(pinError = PinErrorState.INVALID_PIN, showLoader = false) - } + val isPinValid = authService.validatePasskey(passKey = pin) + if (isPinValid) { + userPreferences.setOnboardShown(true) + navigator.navigateTo( + AppDestinations.home.path, + popUpToRoute = AppDestinations.signIn.path, + inclusive = true + ) + _state.value = _state.value.copy(showLoader = false) + } else { + _state.value = _state.value.copy(isPinInvalid = true, showLoader = false) } } } @@ -82,6 +70,6 @@ class EnterPinViewModel @Inject constructor( data class EnterPinScreenState( val showLoader: Boolean = false, val pin: String = "", - val pinError: PinErrorState? = null, + val isPinInvalid: Boolean = false, val connectivityStatus: ConnectivityObserver.Status = ConnectivityObserver.Status.Available ) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt index 55ead0f8..e1c08cd7 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinScreen.kt @@ -18,9 +18,8 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel @@ -51,7 +50,6 @@ fun SetPinScreen() { private fun SetPinContent(modifier: Modifier) { val viewModel = hiltViewModel() val state by viewModel.state.collectAsState() - val context = LocalContext.current Column( modifier = modifier @@ -81,25 +79,12 @@ private fun SetPinContent(modifier: Modifier) { OtpInputField( pinText = state.pin, onPinTextChange = { viewModel.onPinChanged(it) }, - digitCount = 4 + digitCount = 4, + keyboardType = KeyboardType.Number ) Spacer(modifier = Modifier.height(16.dp)) - if (state.pinError != null) { - val pinErrorText = when (state.pinError) { - PinErrorState.LENGTH_ERROR -> context.getString(R.string.set_pin_error_text_length) - PinErrorState.CHARACTERS_ERROR -> context.getString(R.string.set_pin_error_characters_input) - else -> "" - } - Text( - text = pinErrorText, - color = if (pinErrorText.isNotEmpty()) MaterialTheme.colorScheme.error else Color.Transparent, - style = MaterialTheme.typography.bodyMedium, - modifier = Modifier.padding(top = 8.dp) - ) - } - Spacer(modifier = Modifier.height(24.dp)) PrimaryButton( @@ -107,7 +92,7 @@ private fun SetPinContent(modifier: Modifier) { onClick = { viewModel.processPin() }, - enabled = state.pin != "" && state.pinError == null, + enabled = state.enableButton, modifier = Modifier.fillMaxWidth(), showLoader = state.showLoader ) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt index 590d37b2..d1280f4a 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/pin/setpin/SetPinViewModel.kt @@ -17,12 +17,6 @@ import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch import javax.inject.Inject -enum class PinErrorState { - LENGTH_ERROR, - CHARACTERS_ERROR, - INVALID_PIN -} - @HiltViewModel class SetPinViewModel @Inject constructor( private val navigator: AppNavigator, @@ -40,21 +34,7 @@ class SetPinViewModel @Inject constructor( } fun onPinChanged(newPin: String) { - _state.value = _state.value.copy(pin = newPin) - if (newPin.length == 4) { - _state.value = _state.value.copy(pinError = null) - } - } - - private fun validatePin() { - val pin = state.value.pin - if (pin.length < 4) { - _state.value = _state.value.copy(pinError = PinErrorState.LENGTH_ERROR, showLoader = false) - } else if (pin.length == 4 && !pin.all { it.isDigit() }) { - _state.value = _state.value.copy(pinError = PinErrorState.CHARACTERS_ERROR, showLoader = false) - } else { - _state.value = _state.value.copy(pinError = null) - } + _state.value = _state.value.copy(pin = newPin, enableButton = newPin.length == 4) } fun checkInternetConnection() { @@ -72,49 +52,49 @@ class SetPinViewModel @Inject constructor( fun processPin() = viewModelScope.launch(appDispatcher.MAIN) { _state.value = _state.value.copy(showLoader = true) val pin = state.value.pin - validatePin() - if (state.value.pinError == null) { - try { - authService.generateAndSaveUserKeys(passKey = pin) - val userId = authService.getUser()?.id - if (userId == null) { - _state.value = _state.value.copy( - error = IllegalStateException("Failed to get user ID after key generation") - ) - return@launch - } + try { + authService.generateAndSaveUserKeys(passKey = pin) + val userId = authService.getUser()?.id - val userSpaces = spaceRepository.getUserSpaces(userId) + if (userId == null) { + _state.value = _state.value.copy( + error = IllegalStateException("Failed to get user ID after key generation"), + showLoader = false + ) + return@launch + } - val userHasSpaces = - userSpaces.firstOrNull() != null && userSpaces.firstOrNull()?.isNotEmpty() == true - if (userHasSpaces) { - userPreferences.setOnboardShown(true) - try { - spaceRepository.generateAndDistributeSenderKeysForExistingSpaces( - spaceIds = userSpaces.firstOrNull()?.map { it.id } ?: emptyList() - ) - } catch (e: Exception) { - _state.value = _state.value.copy(error = e) - return@launch - } + val userSpaces = spaceRepository.getUserSpaces(userId) - navigator.navigateTo( - AppDestinations.home.path, - popUpToRoute = AppDestinations.signIn.path, - inclusive = true - ) - } else { - navigator.navigateTo( - AppDestinations.onboard.path, - popUpToRoute = AppDestinations.signIn.path, - inclusive = true + val userHasSpaces = + userSpaces.firstOrNull() != null && userSpaces.firstOrNull()?.isNotEmpty() == true + if (userHasSpaces) { + userPreferences.setOnboardShown(true) + try { + spaceRepository.generateAndDistributeSenderKeysForExistingSpaces( + spaceIds = userSpaces.firstOrNull()?.map { it.id } ?: emptyList() ) + } catch (e: Exception) { + _state.value = _state.value.copy(error = e, showLoader = false) + return@launch } - } catch (e: Exception) { - _state.value = _state.value.copy(error = e, showLoader = false) + + navigator.navigateTo( + AppDestinations.home.path, + popUpToRoute = AppDestinations.signIn.path, + inclusive = true + ) + } else { + navigator.navigateTo( + AppDestinations.onboard.path, + popUpToRoute = AppDestinations.signIn.path, + inclusive = true + ) } + _state.value = _state.value.copy(showLoader = false) + } catch (e: Exception) { + _state.value = _state.value.copy(error = e, showLoader = false) } } } @@ -122,7 +102,7 @@ class SetPinViewModel @Inject constructor( data class EnterPinScreenState( val showLoader: Boolean = false, val pin: String = "", - val pinError: PinErrorState? = null, + val enableButton: Boolean = false, val connectivityStatus: ConnectivityObserver.Status = ConnectivityObserver.Status.Available, val error: Throwable? = null ) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 42a61274..1e2f7a3b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -314,15 +314,11 @@ Secure your account by setting a 4-digit PIN Your PIN ensures that only you can access your account Set Pin - Pin must be at least 4 characters - Please enter only numbers Enter Your PIN Enter your 4-digit PIN to access your account Your PIN ensures that only you can access your account Incorrect PIN. Please try again - Pin must be at least 4 characters - Please enter only numbers Continue \ No newline at end of file diff --git a/data/build.gradle.kts b/data/build.gradle.kts index 8ef13102..cd6ab7fe 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -73,6 +73,7 @@ dependencies { // Moshi implementation("com.squareup.moshi:moshi-kotlin:1.15.0") + ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0") // Timber implementation("com.jakewharton.timber:timber:5.0.1") diff --git a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt index 6af4ac93..038b3daa 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/location/LocationJourney.kt @@ -5,7 +5,6 @@ import androidx.annotation.Keep import com.google.android.gms.maps.model.LatLng import com.google.firebase.firestore.Blob import com.squareup.moshi.JsonClass -import org.signal.libsignal.protocol.groups.GroupCipher import java.util.UUID @Keep @@ -99,111 +98,7 @@ fun LocationJourney.toLocationFromMovingJourney() = Location("").apply { longitude = this@toLocationFromMovingJourney.to_longitude ?: 0.0 } -fun Location.toLocationJourney(userId: String, journeyId: String) = LocationJourney( - id = journeyId, - user_id = userId, - from_latitude = latitude, - from_longitude = longitude -) - enum class JourneyType { MOVING, STEADY } - -/** - * Convert an [EncryptedLocationJourney] to a [LocationJourney] using the provided [GroupCipher] - */ -fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher): LocationJourney { - val decryptedFromLat = groupCipher.decrypt(from_latitude.toBytes()) - val decryptedFromLong = groupCipher.decrypt(from_longitude.toBytes()) - val decryptedToLat = to_latitude?.let { groupCipher.decrypt(it.toBytes()) } - val decryptedToLong = to_longitude?.let { groupCipher.decrypt(it.toBytes()) } - - val decryptedRoutes = routes.map { - JourneyRoute( - latitude = groupCipher.decrypt(it.latitude.toBytes()) - .toString(Charsets.UTF_8).toDouble(), - longitude = groupCipher.decrypt(it.longitude.toBytes()) - .toString(Charsets.UTF_8).toDouble() - ) - } - - return LocationJourney( - id = id, - user_id = user_id, - from_latitude = decryptedFromLat.toString(Charsets.UTF_8).toDouble(), - from_longitude = decryptedFromLong.toString(Charsets.UTF_8).toDouble(), - to_latitude = decryptedToLat?.toString(Charsets.UTF_8)?.toDouble(), - to_longitude = decryptedToLong?.toString(Charsets.UTF_8)?.toDouble(), - route_distance = route_distance, - route_duration = route_duration, - routes = decryptedRoutes, - created_at = created_at, - updated_at = updated_at, - type = type, - key_id = key_id - ) -} - -/** - * Convert a [LocationJourney] to an [EncryptedLocationJourney] using the provided [GroupCipher] - */ -fun LocationJourney.toEncryptedLocationJourney( - groupCipher: GroupCipher, - distributionId: UUID -): EncryptedLocationJourney { - val encryptedFromLat = groupCipher.encrypt( - distributionId, - from_latitude.toString().toByteArray(Charsets.UTF_8) - ) - val encryptedFromLong = groupCipher.encrypt( - distributionId, - from_longitude.toString().toByteArray(Charsets.UTF_8) - ) - val encryptedToLat = to_latitude?.let { - groupCipher.encrypt( - distributionId, - it.toString().toByteArray(Charsets.UTF_8) - ) - } - val encryptedToLong = to_longitude?.let { - groupCipher.encrypt( - distributionId, - it.toString().toByteArray(Charsets.UTF_8) - ) - } - - val encryptedRoutes = routes.map { - EncryptedJourneyRoute( - latitude = Blob.fromBytes( - groupCipher.encrypt( - distributionId, - it.latitude.toString().toByteArray(Charsets.UTF_8) - ).serialize() - ), - longitude = Blob.fromBytes( - groupCipher.encrypt( - distributionId, - it.longitude.toString().toByteArray(Charsets.UTF_8) - ).serialize() - ) - ) - } - - return EncryptedLocationJourney( - id = id, - user_id = user_id, - from_latitude = Blob.fromBytes(encryptedFromLat.serialize()), - from_longitude = Blob.fromBytes(encryptedFromLong.serialize()), - to_latitude = encryptedToLat?.let { Blob.fromBytes(it.serialize()) }, - to_longitude = encryptedToLong?.let { Blob.fromBytes(it.serialize()) }, - route_distance = route_distance, - route_duration = route_duration, - routes = encryptedRoutes, - created_at = created_at, - updated_at = updated_at, - type = type, - key_id = key_id - ) -} diff --git a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt index c584b134..8c52b010 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/space/ApiSpace.kt @@ -53,8 +53,8 @@ data class ApiSpaceInvitation( */ @Keep data class GroupKeysDoc( - val docUpdatedAt: Long = System.currentTimeMillis(), // To be updated whenever users are added/removed - val memberKeys: Map = emptyMap() + val doc_updated_at: Long = System.currentTimeMillis(), // To be updated whenever users are added/removed + val member_keys: Map = emptyMap() ) /** @@ -63,9 +63,9 @@ data class GroupKeysDoc( */ @Keep data class MemberKeyData( - val memberDeviceId: Int = 0, + val member_device_id: Int = 0, val distributions: List = emptyList(), - val dataUpdatedAt: Long = System.currentTimeMillis() // To be updated whenever a new distribution is added + val data_updated_at: Long = System.currentTimeMillis() // To be updated whenever a new distribution is added ) /** @@ -75,19 +75,19 @@ data class MemberKeyData( */ data class EncryptedDistribution( val id: String = UUID.randomUUID().toString(), - val recipientId: String = "", - val ephemeralPub: Blob = Blob.fromBytes(ByteArray(0)), // 32 bytes - val iv: Blob = Blob.fromBytes(ByteArray(0)), // 12 bytes + val recipient_id: String = "", + val ephemeral_pub: Blob = Blob.fromBytes(ByteArray(0)), // 33 bytes (compressed distribution key) + val iv: Blob = Blob.fromBytes(ByteArray(0)), // 16 bytes val ciphertext: Blob = Blob.fromBytes(ByteArray(0)), // AES/GCM ciphertext - val createdAt: Long = System.currentTimeMillis() + val created_at: Long = System.currentTimeMillis() ) { init { validateFieldSizes() } private fun validateFieldSizes() { - require(ephemeralPub.toBytes().size == 33 || ephemeralPub.toBytes().isEmpty()) { - "Invalid size for ephemeralPub: expected 33 bytes, got ${ephemeralPub.toBytes().size} bytes." + require(ephemeral_pub.toBytes().size == 33 || ephemeral_pub.toBytes().isEmpty()) { + "Invalid size for ephemeralPub: expected 33 bytes, got ${ephemeral_pub.toBytes().size} bytes." } require(iv.toBytes().size == 16 || iv.toBytes().isEmpty()) { "Invalid size for iv: expected 16 bytes, got ${iv.toBytes().size} bytes." diff --git a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiSenderKeyRecord.kt b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiSenderKeyRecord.kt index 64fbbeff..2c1cdf08 100644 --- a/data/src/main/java/com/canopas/yourspace/data/models/user/ApiSenderKeyRecord.kt +++ b/data/src/main/java/com/canopas/yourspace/data/models/user/ApiSenderKeyRecord.kt @@ -5,13 +5,26 @@ import com.google.firebase.firestore.Blob import com.squareup.moshi.JsonClass import java.util.UUID +/** +* Represents a sender key record for Signal Protocol implementation. + * @property id Unique identifier for the record. + * @property address The sender's address in Signal Protocol format, relatively spaceId for our use case. + * @property device_id The sender's device ID(must be positive). + * @property distribution_id The distribution ID for the sender key. - A random UUID. + * @property record The actual sender key record. + * @property created_at The timestamp when the record was created. +* */ @Keep @JsonClass(generateAdapter = true) data class ApiSenderKeyRecord( val id: String = UUID.randomUUID().toString(), val address: String = "", - val deviceId: Int = 0, - val distributionId: String = "", + val device_id: Int = 0, + val distribution_id: String = "", val record: Blob = Blob.fromBytes(ByteArray(0)), - val createdAt: Long = System.currentTimeMillis() -) + val created_at: Long = System.currentTimeMillis() +) { + init { + require(device_id > 0) { "Device ID must be non-negative." } + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt b/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt index e85168d2..fd32ea30 100644 --- a/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt +++ b/data/src/main/java/com/canopas/yourspace/data/repository/SpaceRepository.kt @@ -268,7 +268,6 @@ class SpaceRepository @Inject constructor( spaceService.generateAndDistributeSenderKeysForExistingSpaces(spaceIds) } catch (e: Exception) { Timber.e(e, "Failed to generate and distribute sender keys") - throw e } } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt index 26bcbd53..f76e081d 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/auth/AuthService.kt @@ -115,7 +115,7 @@ class AuthService @Inject constructor( locationManager.stopService() locationCache.clear() } catch (e: Exception) { - throw SecurityException("Failed to completely sign out. Some sensitive data might not be cleared.") + throw SecurityException("Failed to completely sign out. Some sensitive data might not be cleared.", e) } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index ba4be5b5..196ac27b 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -2,8 +2,6 @@ package com.canopas.yourspace.data.service.location import com.canopas.yourspace.data.models.location.EncryptedLocationJourney import com.canopas.yourspace.data.models.location.LocationJourney -import com.canopas.yourspace.data.models.location.toDecryptedLocationJourney -import com.canopas.yourspace.data.models.location.toEncryptedLocationJourney import com.canopas.yourspace.data.models.space.GroupKeysDoc import com.canopas.yourspace.data.models.user.ApiUser import com.canopas.yourspace.data.storage.UserPreferences @@ -70,20 +68,21 @@ class ApiJourneyService @Inject constructor( keyId: String? = null, groupKeysDoc: GroupKeysDoc ): Triple? { - val memberKeysData = groupKeysDoc.memberKeys[userId] ?: return null + val memberKeysData = groupKeysDoc.member_keys[userId] ?: return null val distribution = memberKeysData.distributions - .sortedByDescending { it.createdAt } + .sortedByDescending { it.created_at } .firstOrNull { - it.recipientId == userId && (keyId == null || it.id == keyId) + it.recipient_id == userId && (keyId == null || it.id == keyId) } ?: return null - val privateKey = getCurrentUserPrivateKey(userPreferences.currentUser!!) ?: return null + val currentUser = userPreferences.currentUser ?: return null + val privateKey = getCurrentUserPrivateKey(currentUser) ?: return null // Decrypt the distribution message val decryptedBytes = EphemeralECDHUtils.decrypt(distribution, privateKey) ?: return null val distributionMessage = SenderKeyDistributionMessage(decryptedBytes) - val groupAddress = SignalProtocolAddress(spaceId, memberKeysData.memberDeviceId) + val groupAddress = SignalProtocolAddress(spaceId, memberKeysData.member_device_id) // Ensures the distribution ID is loaded into the store bufferedSenderKeyStore.loadSenderKey(groupAddress, distributionMessage.distributionId) @@ -105,9 +104,9 @@ class ApiJourneyService @Inject constructor( userId: String, groupKeysDoc: GroupKeysDoc, keyId: String? = null, - defaultValue: T, + defaultValue: T?, crossinline block: (cipher: GroupCipher) -> T? - ): T { + ): T? { val (_, groupCipher) = getGroupCipherByKeyId(spaceId, userId, keyId, groupKeysDoc) ?: return defaultValue return try { diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt index b5c8a4ba..bbbee0c7 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiLocationService.kt @@ -214,12 +214,12 @@ class ApiLocationService @Inject constructor( val snapshot = spaceGroupKeysRef(spaceId).get().await() val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: return null - val memberKeyData = groupKeysDoc.memberKeys[userId] ?: return null + val memberKeyData = groupKeysDoc.member_keys[userId] ?: return null val distribution = memberKeyData.distributions.sortedByDescending { - it.createdAt + it.created_at }.firstOrNull { - it.recipientId == currentUser.id + it.recipient_id == currentUser.id } ?: return null val currentUserPrivateKey = getCurrentUserPrivateKey(currentUser) ?: return null @@ -231,14 +231,14 @@ class ApiLocationService @Inject constructor( } val distributionMessage = SenderKeyDistributionMessage(decryptedDistribution) - val groupAddress = SignalProtocolAddress(spaceId, memberKeyData.memberDeviceId) + val groupAddress = SignalProtocolAddress(spaceId, memberKeyData.member_device_id) bufferedSenderKeyStore.loadSenderKey(groupAddress, distributionMessage.distributionId) // If the sender key data is outdated, we need to distribute the sender key to the pending users - if (memberKeyData.dataUpdatedAt < groupKeysDoc.docUpdatedAt && canDistributeSenderKey) { + if (memberKeyData.data_updated_at < groupKeysDoc.doc_updated_at && canDistributeSenderKey) { // Here means the sender key data is outdated, so we need to distribute the sender key to the users. - rotateSenderKey(spaceId = spaceId, deviceId = memberKeyData.memberDeviceId) + rotateSenderKey(spaceId = spaceId, deviceId = memberKeyData.member_device_id) } return try { @@ -306,21 +306,21 @@ class ApiLocationService @Inject constructor( val snapshot = transaction.get(docRef) val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() - val oldKeyData = groupKeysDoc.memberKeys[user.id] ?: MemberKeyData() + val oldKeyData = groupKeysDoc.member_keys[user.id] ?: MemberKeyData() // Filter out distributions for members who are no longer in the space val filteredOldDistributions = - oldKeyData.distributions.filter { it.recipientId in memberIds } + oldKeyData.distributions.filter { it.recipient_id in memberIds } val rotatedKeyData = oldKeyData.copy( - memberDeviceId = deviceId, + member_device_id = deviceId, distributions = newDistributions + filteredOldDistributions, - dataUpdatedAt = System.currentTimeMillis() + data_updated_at = System.currentTimeMillis() ) val updates = mapOf( - "memberKeys.${user.id}" to rotatedKeyData, - "docUpdatedAt" to System.currentTimeMillis() + "member_keys.${user.id}" to rotatedKeyData, + "doc_updated_at" to System.currentTimeMillis() ) transaction.update(docRef, updates) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/JourneyKtx.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/JourneyKtx.kt new file mode 100644 index 00000000..b107a273 --- /dev/null +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/JourneyKtx.kt @@ -0,0 +1,97 @@ +package com.canopas.yourspace.data.service.location + +import com.canopas.yourspace.data.models.location.EncryptedJourneyRoute +import com.canopas.yourspace.data.models.location.EncryptedLocationJourney +import com.canopas.yourspace.data.models.location.JourneyRoute +import com.canopas.yourspace.data.models.location.LocationJourney +import com.google.firebase.firestore.Blob +import org.signal.libsignal.protocol.groups.GroupCipher +import timber.log.Timber +import java.util.UUID + +/** + * Convert an [EncryptedLocationJourney] to a [LocationJourney] using the provided [GroupCipher] + */ +fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher): LocationJourney { + val decryptedFromLat = groupCipher.decrypt(from_latitude) + val decryptedFromLong = groupCipher.decrypt(from_longitude) + val decryptedToLat = to_latitude?.let { groupCipher.decrypt(it) } + val decryptedToLong = to_longitude?.let { groupCipher.decrypt(it) } + + val decryptedRoutes = routes.map { + JourneyRoute( + latitude = groupCipher.decrypt(it.latitude), + longitude = groupCipher.decrypt(it.longitude) + ) + } + + return LocationJourney( + id = id, + user_id = user_id, + from_latitude = decryptedFromLat, + from_longitude = decryptedFromLong, + to_latitude = decryptedToLat, + to_longitude = decryptedToLong, + route_distance = route_distance, + route_duration = route_duration, + routes = decryptedRoutes, + created_at = created_at, + updated_at = updated_at, + type = type, + key_id = key_id + ) +} + +/** + * Convert a [LocationJourney] to an [EncryptedLocationJourney] using the provided [GroupCipher] + */ +fun LocationJourney.toEncryptedLocationJourney( + groupCipher: GroupCipher, + distributionId: UUID +): EncryptedLocationJourney { + val encryptedFromLat = groupCipher.encrypt(distributionId, from_latitude) + val encryptedFromLong = groupCipher.encrypt(distributionId, from_longitude) + val encryptedToLat = to_latitude?.let { groupCipher.encrypt(distributionId, it) } + val encryptedToLong = to_longitude?.let { groupCipher.encrypt(distributionId, it) } + + val encryptedRoutes = routes.map { + EncryptedJourneyRoute( + latitude = groupCipher.encrypt(distributionId, it.latitude), + longitude = groupCipher.encrypt(distributionId, it.longitude) + ) + } + + return EncryptedLocationJourney( + id = id, + user_id = user_id, + from_latitude = encryptedFromLat, + from_longitude = encryptedFromLong, + to_latitude = encryptedToLat, + to_longitude = encryptedToLong, + route_distance = route_distance, + route_duration = route_duration, + routes = encryptedRoutes, + created_at = created_at, + updated_at = updated_at, + type = type, + key_id = key_id + ) +} + +fun GroupCipher.decrypt(data: Blob): Double { + return try { + decrypt(data.toBytes()).toString(Charsets.UTF_8).toDouble() + } catch (e: Exception) { + Timber.e(e, "Failed to decrypt double") + 0.0 + } +} + +fun GroupCipher.encrypt(distributionId: UUID, data: Double): Blob { + return try { + Blob.fromBytes(encrypt(distributionId, data.toString().toByteArray(Charsets.UTF_8)).serialize()) + } catch (e: Exception) { + Timber.e(e, "Failed to encrypt double") + Blob.fromBytes(ByteArray(0)) + } +} diff --git a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt index ed96a665..91191031 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/space/ApiSpaceService.kt @@ -16,6 +16,7 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_GROUP_ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBERS import com.canopas.yourspace.data.utils.EphemeralECDHUtils import com.canopas.yourspace.data.utils.snapshotFlow +import com.google.firebase.firestore.FieldValue import com.google.firebase.firestore.FirebaseFirestore import kotlinx.coroutines.tasks.await import org.signal.libsignal.protocol.SignalProtocolAddress @@ -25,6 +26,7 @@ import timber.log.Timber import java.util.UUID import javax.inject.Inject import javax.inject.Singleton +import kotlin.jvm.Throws @Singleton class ApiSpaceService @Inject constructor( @@ -68,8 +70,9 @@ class ApiSpaceService @Inject constructor( return spaceMemberRef(spaceId).get().await().toObjects(ApiSpaceMember::class.java) } + @Throws(IllegalStateException::class) suspend fun joinSpace(spaceId: String, role: Int = SPACE_MEMBER_ROLE_MEMBER) { - val user = authService.currentUser ?: return + val user = authService.currentUser ?: throw IllegalStateException("No authenticated user") spaceMemberRef(spaceId) .document(user.id).also { val member = ApiSpaceMember( @@ -86,7 +89,7 @@ class ApiSpaceService @Inject constructor( // Update the "docUpdatedAt" so others see membership changed val docRef = spaceGroupKeysDoc(spaceId) - docRef.update("docUpdatedAt", System.currentTimeMillis()).await() + docRef.update("doc_updated_at", System.currentTimeMillis()).await() // Distribute sender key to all members distributeSenderKeyToSpaceMembers(spaceId, user.id) @@ -111,12 +114,12 @@ class ApiSpaceService @Inject constructor( val publicKey = try { val publicKeyBytes = publicBlob.toBytes() if (publicKeyBytes.size != 33) { // Expected size for compressed EC public key - Timber.e("Invalid public key size for member ${member.user_id}") + Timber.e("Invalid public key size for a space member") continue } Curve.decodePoint(publicKeyBytes, 0) } catch (e: Exception) { - Timber.e(e, "Failed to decode public key for member ${member.user_id}") + Timber.e(e, "Failed to decode public key for a space member") continue } @@ -128,15 +131,15 @@ class ApiSpaceService @Inject constructor( val docRef = spaceGroupKeysDoc(spaceId) val snapshot = transaction.get(docRef) val groupKeysDoc = snapshot.toObject(GroupKeysDoc::class.java) ?: GroupKeysDoc() - val oldMemberKeyData = groupKeysDoc.memberKeys[senderUserId] ?: MemberKeyData() + val oldMemberKeyData = groupKeysDoc.member_keys[senderUserId] ?: MemberKeyData() val newMemberKeyData = oldMemberKeyData.copy( - memberDeviceId = deviceId.toInt(), + member_device_id = deviceId.toInt(), distributions = distributions, - dataUpdatedAt = System.currentTimeMillis() + data_updated_at = System.currentTimeMillis() ) val updates = mapOf( - "memberKeys.$senderUserId" to newMemberKeyData, - "docUpdatedAt" to System.currentTimeMillis() + "member_keys.$senderUserId" to newMemberKeyData, + "doc_updated_at" to System.currentTimeMillis() ) transaction.update(docRef, updates) }.await() @@ -190,7 +193,12 @@ class ApiSpaceService @Inject constructor( // Update the "docUpdatedAt" so others see membership changed and remove sender key for the removed user val docRef = spaceGroupKeysDoc(spaceId) - docRef.update("docUpdatedAt", System.currentTimeMillis()).await() + docRef.update( + mapOf( + "doc_updated_at" to System.currentTimeMillis(), + "member_keys.$userId" to FieldValue.delete() + ) + ).await() } suspend fun updateSpace(space: ApiSpace) { diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 97cddcbe..d87042c4 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -9,7 +9,6 @@ import com.canopas.yourspace.data.storage.UserPreferences import com.canopas.yourspace.data.utils.Config import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USERS import com.canopas.yourspace.data.utils.Device -import com.canopas.yourspace.data.utils.EncryptionException import com.canopas.yourspace.data.utils.PrivateKeyUtils import com.canopas.yourspace.data.utils.snapshotFlow import com.google.android.gms.auth.api.signin.GoogleSignInAccount @@ -27,9 +26,9 @@ import org.signal.libsignal.protocol.IdentityKey import org.signal.libsignal.protocol.IdentityKeyPair import org.signal.libsignal.protocol.ecc.Curve import timber.log.Timber +import java.security.SecureRandom import javax.inject.Inject import javax.inject.Singleton -import kotlin.random.Random const val NETWORK_STATUS_CHECK_INTERVAL = 3 * 60 * 1000 @@ -50,9 +49,10 @@ class ApiUserService @Inject constructor( suspend fun getUser(userId: String): ApiUser? { return try { userRef.document(userId).get().await().toObject(ApiUser::class.java)?.let { user -> - if (user.id != currentUser?.id) return user + if (currentUser == null || user.id != currentUser.id) return user val decryptedPrivateKey = decryptPrivateKey(user) ?: return@let user - user.copy(identity_key_private = Blob.fromBytes(decryptedPrivateKey)) + userPreferences.storePrivateKey(decryptedPrivateKey) + user } } catch (e: Exception) { Timber.e(e, "Error while getting user") @@ -121,7 +121,7 @@ class ApiUserService @Inject constructor( suspend fun generateAndSaveUserKeys(user: ApiUser, passKey: String): ApiUser { val identityKeyPair = generateIdentityKeyPair() - val salt = ByteArray(16).apply { Random.nextBytes(this) } + val salt = ByteArray(16).apply { SecureRandom().nextBytes(this) } val encryptedPrivateKey = PrivateKeyUtils.encryptPrivateKey( identityKeyPair.privateKey.serialize(), passkey = passKey, @@ -132,12 +132,14 @@ class ApiUserService @Inject constructor( userRef.document(user.id).update( mapOf( + "updated_at" to System.currentTimeMillis(), "identity_key_public" to Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), "identity_key_private" to Blob.fromBytes(encryptedPrivateKey), "identity_key_salt" to Blob.fromBytes(salt) ) ).await() return user.copy( + updated_at = System.currentTimeMillis(), identity_key_public = Blob.fromBytes(identityKeyPair.publicKey.publicKey.serialize()), identity_key_private = Blob.fromBytes(identityKeyPair.privateKey.serialize()), identity_key_salt = Blob.fromBytes(salt) @@ -174,7 +176,7 @@ class ApiUserService @Inject constructor( val passkey = pin ?: userPreferences.getPasskey() ?: return null val decrypted = PrivateKeyUtils.decryptPrivateKey(encryptedPrivateKey, salt, passkey) decrypted - } catch (e: EncryptionException) { + } catch (e: Exception) { Timber.e(e, "Failed to decrypt private key for user ${user.id}") null } diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index 947aed2c..3ed29b5e 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -10,6 +10,7 @@ import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_SPACE_MEMBER import com.canopas.yourspace.data.utils.Config.FIRESTORE_COLLECTION_USER_SENDER_KEY_RECORD import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FirebaseFirestore +import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking @@ -45,12 +46,11 @@ class BufferedSenderKeyStore @Inject constructor( .collection(FIRESTORE_COLLECTION_USER_SENDER_KEY_RECORD) private val inMemoryStore: MutableMap = mutableMapOf() - private val sharedWithAddresses: MutableSet = mutableSetOf() private suspend fun saveSenderKeyToServer(senderKeyRecord: ApiSenderKeyRecord) { try { val currentUser = userPreferences.currentUser ?: return - val uniqueDocId = "${senderKeyRecord.deviceId}-${senderKeyRecord.distributionId}" + val uniqueDocId = "${senderKeyRecord.device_id}-${senderKeyRecord.distribution_id}" spaceSenderKeyRecordRef(senderKeyRecord.address, currentUser.id) .document(uniqueDocId).set(senderKeyRecord).await() } catch (e: Exception) { @@ -81,8 +81,8 @@ class BufferedSenderKeyStore @Inject constructor( val senderKeyRecord = ApiSenderKeyRecord( address = sender.name, - deviceId = sender.deviceId, - distributionId = distributionId.toString(), + device_id = sender.deviceId, + distribution_id = distributionId.toString(), record = Blob.fromBytes(record.serialize()) ) saveSenderKeyToServer(senderKeyRecord) @@ -91,25 +91,42 @@ class BufferedSenderKeyStore @Inject constructor( override fun loadSenderKey(sender: SignalProtocolAddress, distributionId: UUID): SenderKeyRecord? { val key = StoreKey(sender, distributionId, sender.deviceId) - return inMemoryStore[key] ?: runBlocking { - senderKeyDao.getSenderKeyRecord( - address = sender.name, - deviceId = sender.deviceId, - distributionId = distributionId.toString() - )?.let { - inMemoryStore[key] = it - it - } ?: fetchSenderKeyFromServer(sender)?.also { - inMemoryStore[key] = it + + return inMemoryStore[key] ?: kotlin.run { + val deferred = CompletableDeferred() + CoroutineScope(appDispatcher.IO).launch { + try { + val senderKeyRecord = senderKeyDao.getSenderKeyRecord( + address = sender.name, + deviceId = sender.deviceId, + distributionId = distributionId.toString() + )?.also { + inMemoryStore[key] = it + } ?: fetchSenderKeyFromServer(sender, distributionId)?.also { + inMemoryStore[key] = it + } + deferred.complete(senderKeyRecord) + } catch (e: Exception) { + deferred.completeExceptionally(e) + } + } + runBlocking { + try { + deferred.await() + } catch (e: Exception) { + Timber.e(e, "Error loading sender key") + null + } } } } - private suspend fun fetchSenderKeyFromServer(sender: SignalProtocolAddress): SenderKeyRecord? { + private suspend fun fetchSenderKeyFromServer(sender: SignalProtocolAddress, distributionId: UUID): SenderKeyRecord? { val currentUser = userPreferences.currentUser ?: return null return try { spaceSenderKeyRecordRef(sender.name.toString(), currentUser.id) - .whereEqualTo("deviceId", sender.deviceId) + .whereEqualTo("device_id", sender.deviceId) + .whereEqualTo("distribution_id", distributionId.toString()) .get() .await() .documents @@ -129,22 +146,5 @@ class BufferedSenderKeyStore @Inject constructor( } } - override fun getSenderKeySharedWith(distributionId: DistributionId?): MutableSet { - throw UnsupportedOperationException("Should not happen during the intended usage pattern of this class") - } - - override fun markSenderKeySharedWith( - distributionId: DistributionId?, - addresses: Collection? - ) { - throw UnsupportedOperationException("Should not happen during the intended usage pattern of this class") - } - - override fun clearSenderKeySharedWith(addresses: Collection?) { - addresses?.forEach { address -> - address?.let { sharedWithAddresses.remove(it) } - } - } - data class StoreKey(val address: SignalProtocolAddress, val distributionId: UUID, val senderDeviceId: Int) } diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/DistributionId.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/DistributionId.kt deleted file mode 100644 index 98547e40..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/DistributionId.kt +++ /dev/null @@ -1,61 +0,0 @@ -package com.canopas.yourspace.data.storage.bufferedkeystore - -import java.util.Objects -import java.util.UUID - -/** - * Represents the distributionId that is used to identify this group's sender key session. - * - * This is just a UUID, but we wrap it in order to provide some type safety and limit confusion - * around the multiple UUIDs we throw around. - */ -class DistributionId private constructor(private val uuid: UUID) { - /** - * Some devices appear to have a bad UUID.toString() that misrenders an all-zero UUID as "0000-0000". - * To account for this, we will keep our own string value, to prevent queries from going awry and such. - */ - private var stringValue: String? = null - - init { - if (uuid.leastSignificantBits == 0L && uuid.mostSignificantBits == 0L) { - this.stringValue = MY_STORY_STRING - } else { - this.stringValue = uuid.toString() - } - } - - fun asUuid(): UUID { - return uuid - } - - override fun toString(): String { - return stringValue!! - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other == null || javaClass != other.javaClass) return false - val that = other as DistributionId - return uuid == that.uuid - } - - override fun hashCode(): Int { - return Objects.hash(uuid) - } - - companion object { - private const val MY_STORY_STRING = "00000000-0000-0000-0000-000000000000" - - fun from(id: String?): DistributionId { - return DistributionId(UUID.fromString(id)) - } - - fun from(uuid: UUID): DistributionId { - return DistributionId(uuid) - } - - fun create(): DistributionId { - return DistributionId(UUID.randomUUID()) - } - } -} diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt index 0ec2bc41..771ad373 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt @@ -1,28 +1,9 @@ package com.canopas.yourspace.data.storage.bufferedkeystore -import org.signal.libsignal.protocol.SignalProtocolAddress import org.signal.libsignal.protocol.groups.state.SenderKeyStore /** * And extension of the normal protocol sender key store interface that has additional methods that are * needed in the service layer, but not the protocol layer. */ -interface SignalServiceSenderKeyStore : SenderKeyStore { - /** - * @return A set of protocol addresses that have previously been sent the sender key data for the provided distributionId. - */ - fun getSenderKeySharedWith(distributionId: DistributionId?): Set? - - /** - * Marks the provided addresses as having been sent the sender key data for the provided distributionId. - */ - fun markSenderKeySharedWith( - distributionId: DistributionId?, - addresses: Collection? - ) - - /** - * Marks the provided addresses as not knowing about any distributionIds. - */ - fun clearSenderKeySharedWith(addresses: Collection?) -} +interface SignalServiceSenderKeyStore : SenderKeyStore diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyEntity.kt b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyEntity.kt index ca21e7af..db63bca7 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyEntity.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/database/SenderKeyEntity.kt @@ -4,13 +4,18 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey -@Entity(tableName = "sender_keys") +@Entity( + tableName = "sender_keys", + indices = [ + androidx.room.Index(value = ["address", "device_id", "distribution_id"], unique = true) + ] +) data class SenderKeyEntity( @PrimaryKey(autoGenerate = true) val id: Long = 0, - @ColumnInfo(name = "address") val address: String, + @ColumnInfo(name = "address", collate = ColumnInfo.NOCASE) val address: String, @ColumnInfo(name = "device_id") val deviceId: Int, - @ColumnInfo(name = "distribution_id") val distributionId: String, - @ColumnInfo(name = "record") val record: ByteArray, + @ColumnInfo(name = "distribution_id", collate = ColumnInfo.NOCASE) val distributionId: String, + @ColumnInfo(name = "record", typeAffinity = ColumnInfo.BLOB) val record: ByteArray, @ColumnInfo(name = "created_at") val createdAt: Long = System.currentTimeMillis() ) { override fun equals(other: Any?): Boolean { diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt index e86697a1..da0f7c20 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/EphemeralECDHUtils.kt @@ -49,8 +49,8 @@ object EphemeralECDHUtils { val cipherText = cipher.doFinal(plaintext) return EncryptedDistribution( - recipientId = receiverId, - ephemeralPub = Blob.fromBytes(ephemeralKeyPair.publicKey.serialize()), + recipient_id = receiverId, + ephemeral_pub = Blob.fromBytes(ephemeralKeyPair.publicKey.serialize()), iv = Blob.fromBytes(syntheticIv), ciphertext = Blob.fromBytes(cipherText) ) @@ -70,7 +70,7 @@ object EphemeralECDHUtils { return try { val syntheticIv = message.iv.toBytes() val cipherText = message.ciphertext.toBytes() - val ephemeralPublic = Curve.decodePoint(message.ephemeralPub.toBytes(), 0) + val ephemeralPublic = Curve.decodePoint(message.ephemeral_pub.toBytes(), 0) val masterSecret = Curve.calculateAgreement(ephemeralPublic, receiverPrivateKey) val mac = Mac.getInstance("HmacSHA256") @@ -135,10 +135,10 @@ object EphemeralECDHUtils { val keyMac = Mac.getInstance("HmacSHA256") keyMac.init(SecretKeySpec(masterSecret, "HmacSHA256")) - val cipherKeyKey: ByteArray = keyMac.doFinal(input) + val cipherKey: ByteArray = keyMac.doFinal(input) val cipherMac = Mac.getInstance("HmacSHA256") - cipherMac.init(SecretKeySpec(cipherKeyKey, "HmacSHA256")) + cipherMac.init(SecretKeySpec(cipherKey, "HmacSHA256")) return cipherMac.doFinal(syntheticIv) } } diff --git a/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt b/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt index a4435329..20855ef0 100644 --- a/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt +++ b/data/src/main/java/com/canopas/yourspace/data/utils/PrivateKeyUtils.kt @@ -1,13 +1,13 @@ package com.canopas.yourspace.data.utils import timber.log.Timber +import java.security.SecureRandom import javax.crypto.Cipher import javax.crypto.SecretKey import javax.crypto.SecretKeyFactory import javax.crypto.spec.GCMParameterSpec import javax.crypto.spec.PBEKeySpec import javax.crypto.spec.SecretKeySpec -import kotlin.random.Random private const val AES_ALGORITHM = "AES/GCM/NoPadding" private const val KEY_DERIVATION_ALGORITHM = "PBKDF2WithHmacSHA256" @@ -42,7 +42,7 @@ object PrivateKeyUtils { private fun encryptData(data: ByteArray, key: SecretKey): ByteArray { return try { val cipher = Cipher.getInstance(AES_ALGORITHM) - val iv = ByteArray(GCM_IV_SIZE).apply { Random.nextBytes(this) } + val iv = ByteArray(GCM_IV_SIZE).apply { SecureRandom().nextBytes(this) } val spec = GCMParameterSpec(GCM_TAG_SIZE, iv) cipher.init(Cipher.ENCRYPT_MODE, key, spec) val encrypted = cipher.doFinal(data) From bc3ad8e5c5e53f5ce8a7edc22533151837091dc4 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 9 Jan 2025 12:02:32 +0530 Subject: [PATCH 35/39] PR changes --- .../service/location/ApiJourneyService.kt | 12 ++++---- .../data/service/location/JourneyKtx.kt | 28 +++++++++---------- .../data/service/user/ApiUserService.kt | 18 ++++++++---- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 196ac27b..32f70e64 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -164,7 +164,7 @@ class ApiJourneyService @Inject constructor( val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) - docRef.set(encryptedJourney).await() + encryptedJourney?.let { docRef.set(it).await() } } return journey } @@ -190,10 +190,12 @@ class ApiJourneyService @Inject constructor( val encryptedJourney = journey.toEncryptedLocationJourney(groupCipher, distributionMessage.distributionId) try { - spaceMemberJourneyRef(spaceId, userId) - .document(journey.id) - .set(encryptedJourney) - .await() + encryptedJourney?.let { + spaceMemberJourneyRef(spaceId, userId) + .document(journey.id) + .set(it) + .await() + } } catch (e: Exception) { Timber.e(e, "Error updating journey") } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/JourneyKtx.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/JourneyKtx.kt index b107a273..677999ec 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/JourneyKtx.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/JourneyKtx.kt @@ -12,16 +12,16 @@ import java.util.UUID /** * Convert an [EncryptedLocationJourney] to a [LocationJourney] using the provided [GroupCipher] */ -fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher): LocationJourney { - val decryptedFromLat = groupCipher.decrypt(from_latitude) - val decryptedFromLong = groupCipher.decrypt(from_longitude) +fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher): LocationJourney? { + val decryptedFromLat = groupCipher.decrypt(from_latitude) ?: return null + val decryptedFromLong = groupCipher.decrypt(from_longitude) ?: return null val decryptedToLat = to_latitude?.let { groupCipher.decrypt(it) } val decryptedToLong = to_longitude?.let { groupCipher.decrypt(it) } val decryptedRoutes = routes.map { JourneyRoute( - latitude = groupCipher.decrypt(it.latitude), - longitude = groupCipher.decrypt(it.longitude) + latitude = groupCipher.decrypt(it.latitude) ?: return null, + longitude = groupCipher.decrypt(it.longitude) ?: return null ) } @@ -48,16 +48,16 @@ fun EncryptedLocationJourney.toDecryptedLocationJourney(groupCipher: GroupCipher fun LocationJourney.toEncryptedLocationJourney( groupCipher: GroupCipher, distributionId: UUID -): EncryptedLocationJourney { - val encryptedFromLat = groupCipher.encrypt(distributionId, from_latitude) - val encryptedFromLong = groupCipher.encrypt(distributionId, from_longitude) +): EncryptedLocationJourney? { + val encryptedFromLat = groupCipher.encrypt(distributionId, from_latitude) ?: return null + val encryptedFromLong = groupCipher.encrypt(distributionId, from_longitude) ?: return null val encryptedToLat = to_latitude?.let { groupCipher.encrypt(distributionId, it) } val encryptedToLong = to_longitude?.let { groupCipher.encrypt(distributionId, it) } val encryptedRoutes = routes.map { EncryptedJourneyRoute( - latitude = groupCipher.encrypt(distributionId, it.latitude), - longitude = groupCipher.encrypt(distributionId, it.longitude) + latitude = groupCipher.encrypt(distributionId, it.latitude) ?: return null, + longitude = groupCipher.encrypt(distributionId, it.longitude) ?: return null ) } @@ -78,20 +78,20 @@ fun LocationJourney.toEncryptedLocationJourney( ) } -fun GroupCipher.decrypt(data: Blob): Double { +fun GroupCipher.decrypt(data: Blob): Double? { return try { decrypt(data.toBytes()).toString(Charsets.UTF_8).toDouble() } catch (e: Exception) { Timber.e(e, "Failed to decrypt double") - 0.0 + null } } -fun GroupCipher.encrypt(distributionId: UUID, data: Double): Blob { +fun GroupCipher.encrypt(distributionId: UUID, data: Double): Blob? { return try { Blob.fromBytes(encrypt(distributionId, data.toString().toByteArray(Charsets.UTF_8)).serialize()) } catch (e: Exception) { Timber.e(e, "Failed to encrypt double") - Blob.fromBytes(ByteArray(0)) + null } } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index d87042c4..63ee2323 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -16,6 +16,7 @@ import com.google.firebase.auth.FirebaseUser import com.google.firebase.firestore.Blob import com.google.firebase.firestore.FieldValue import com.google.firebase.firestore.FirebaseFirestore +import com.google.firebase.firestore.FirebaseFirestoreException import com.google.firebase.functions.FirebaseFunctions import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.map @@ -48,15 +49,20 @@ class ApiUserService @Inject constructor( suspend fun getUser(userId: String): ApiUser? { return try { - userRef.document(userId).get().await().toObject(ApiUser::class.java)?.let { user -> - if (currentUser == null || user.id != currentUser.id) return user - val decryptedPrivateKey = decryptPrivateKey(user) ?: return@let user - userPreferences.storePrivateKey(decryptedPrivateKey) - user + val user = userRef.document(userId).get().await().toObject(ApiUser::class.java) + when { + user == null -> null + currentUser == null || user.id != currentUser.id -> user + else -> decryptPrivateKey(user)?.let { decryptedKey -> + user.copy(identity_key_private = Blob.fromBytes(decryptedKey)) + } } - } catch (e: Exception) { + } catch (e: FirebaseFirestoreException) { Timber.e(e, "Error while getting user") null + } catch (e: SecurityException) { + Timber.e(e, "Error decrypting user data") + null } } From 659bfe22ad29e12fcc4f11b587978b7e491f6b1a Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 9 Jan 2025 12:13:17 +0530 Subject: [PATCH 36/39] minor change --- .../com/canopas/yourspace/data/service/user/ApiUserService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt index 63ee2323..3af443e8 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/user/ApiUserService.kt @@ -166,7 +166,7 @@ class ApiUserService @Inject constructor( return if (decryptedPrivateKey != null) { decryptedPrivateKey } else { - Timber.e("Failed to validate passkey for user ${user.id}") + Timber.e("Failed to validate passkey for user") null } } From 9c73d95993495e1b4321a7523a88c3dec05685d2 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 9 Jan 2025 15:02:54 +0530 Subject: [PATCH 37/39] minor changes --- .../storage/bufferedkeystore/BufferedSenderKeyStore.kt | 3 ++- .../bufferedkeystore/SignalServiceSenderKeyStore.kt | 9 --------- 2 files changed, 2 insertions(+), 10 deletions(-) delete mode 100644 data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt index 3ed29b5e..febd4117 100644 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt +++ b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/BufferedSenderKeyStore.kt @@ -17,6 +17,7 @@ import kotlinx.coroutines.runBlocking import kotlinx.coroutines.tasks.await import org.signal.libsignal.protocol.SignalProtocolAddress import org.signal.libsignal.protocol.groups.state.SenderKeyRecord +import org.signal.libsignal.protocol.groups.state.SenderKeyStore import timber.log.Timber import java.util.UUID import javax.inject.Inject @@ -32,7 +33,7 @@ class BufferedSenderKeyStore @Inject constructor( @Named("sender_key_dao") private val senderKeyDao: SenderKeyDao, private val userPreferences: UserPreferences, private val appDispatcher: AppDispatcher -) : SignalServiceSenderKeyStore { +) : SenderKeyStore { private val spaceRef = db.collection(FIRESTORE_COLLECTION_SPACES) diff --git a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt b/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt deleted file mode 100644 index 771ad373..00000000 --- a/data/src/main/java/com/canopas/yourspace/data/storage/bufferedkeystore/SignalServiceSenderKeyStore.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.canopas.yourspace.data.storage.bufferedkeystore - -import org.signal.libsignal.protocol.groups.state.SenderKeyStore - -/** - * And extension of the normal protocol sender key store interface that has additional methods that are - * needed in the service layer, but not the protocol layer. - */ -interface SignalServiceSenderKeyStore : SenderKeyStore From fa0a64196e9d619a8357408ec87384fef37eed76 Mon Sep 17 00:00:00 2001 From: Sneh Date: Thu, 9 Jan 2025 15:47:47 +0530 Subject: [PATCH 38/39] Update the app dependencies and plugins with latest version --- app/build.gradle.kts | 34 +++++++++++++++++----------------- build.gradle.kts | 2 +- data/build.gradle.kts | 14 +++++++------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 204fb571..1ac41465 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -17,7 +17,7 @@ var versionBuild = 0 android { namespace = "com.canopas.yourspace" - compileSdk = 34 + compileSdk = 35 if (System.getenv("CI_RUN_NUMBER") != null) { versionBuild = System.getenv("CI_RUN_NUMBER").toInt() @@ -129,33 +129,33 @@ android { dependencies { - implementation("androidx.core:core-ktx:1.13.1") - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.6") - implementation("androidx.activity:activity-compose:1.9.2") - implementation(platform("androidx.compose:compose-bom:2024.09.03")) + implementation("androidx.core:core-ktx:1.15.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7") + implementation("androidx.activity:activity-compose:1.9.3") + implementation(platform("androidx.compose:compose-bom:2024.12.01")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") - implementation("androidx.navigation:navigation-compose:2.8.2") + implementation("androidx.navigation:navigation-compose:2.8.5") implementation("androidx.hilt:hilt-navigation-compose:1.2.0") - implementation("androidx.compose.foundation:foundation:1.7.3") + implementation("androidx.compose.foundation:foundation:1.7.6") - implementation(platform("com.google.firebase:firebase-bom:33.4.0")) + implementation(platform("com.google.firebase:firebase-bom:33.7.0")) implementation("com.google.firebase:firebase-firestore-ktx") implementation("com.google.firebase:firebase-messaging-ktx") implementation("com.google.firebase:firebase-auth") implementation("com.google.firebase:firebase-storage") implementation("com.google.firebase:firebase-crashlytics") - implementation("com.google.android.gms:play-services-auth:21.2.0") - implementation("androidx.lifecycle:lifecycle-process:2.8.6") + implementation("com.google.android.gms:play-services-auth:21.3.0") + implementation("androidx.lifecycle:lifecycle-process:2.8.7") // Test testImplementation("junit:junit:4.13.2") - testImplementation("androidx.arch.core:core-testing:2.1.0") + testImplementation("androidx.arch.core:core-testing:2.2.0") androidTestImplementation("androidx.test.ext:junit:1.2.1") androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") - androidTestImplementation(platform("androidx.compose:compose-bom:2024.09.03")) + androidTestImplementation(platform("androidx.compose:compose-bom:2024.12.01")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") @@ -165,14 +165,14 @@ dependencies { testImplementation("org.mockito:mockito-core:5.7.0") // Hilt - val hilt = "2.50" + val hilt = "2.51.1" implementation("com.google.dagger:hilt-android:$hilt") ksp("com.google.dagger:hilt-compiler:$hilt") // Work manager implementation("androidx.hilt:hilt-work:1.2.0") ksp("androidx.hilt:hilt-compiler:1.2.0") - implementation("androidx.work:work-runtime-ktx:2.9.1") + implementation("androidx.work:work-runtime-ktx:2.10.0") // DataStore implementation("androidx.datastore:datastore-preferences:1.1.1") @@ -191,13 +191,13 @@ dependencies { // Map implementation("com.google.maps.android:maps-compose:4.3.0") - implementation("com.google.maps.android:android-maps-utils:0.4.4") + implementation("com.google.maps.android:android-maps-utils:3.6.0") // Image cropper implementation("com.vanniktech:android-image-cropper:4.5.0") // Place - implementation("com.google.android.libraries.places:places:4.0.0") + implementation("com.google.android.libraries.places:places:4.1.0") // Room-DB implementation("androidx.room:room-runtime:2.6.1") @@ -208,7 +208,7 @@ dependencies { implementation("androidx.core:core-splashscreen:1.0.1") // Desugaring - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.3") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") // Gson implementation("com.google.code.gson:gson:2.10.1") diff --git a/build.gradle.kts b/build.gradle.kts index 6161aafc..ebbb46cf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ plugins { id("com.android.application") version "8.6.1" apply false id("org.jetbrains.kotlin.android") version "1.9.0" apply false id("com.android.library") version "8.6.1" apply false - id("com.google.dagger.hilt.android") version "2.50" apply false + id("com.google.dagger.hilt.android") version "2.51.1" apply false id("com.google.gms.google-services") version "4.4.2" apply false id("org.jlleitschuh.gradle.ktlint") version "11.4.2" id("com.google.firebase.crashlytics") version "3.0.2" apply false diff --git a/data/build.gradle.kts b/data/build.gradle.kts index e0d79d8e..6ec3084f 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -8,7 +8,7 @@ plugins { android { namespace = "com.canopas.yourspace.data" - compileSdk = 34 + compileSdk = 35 defaultConfig { minSdk = 23 @@ -41,7 +41,7 @@ android { dependencies { - implementation("androidx.core:core-ktx:1.13.1") + implementation("androidx.core:core-ktx:1.15.0") implementation("androidx.appcompat:appcompat:1.7.0") implementation("com.google.android.material:material:1.12.0") testImplementation("junit:junit:4.13.2") @@ -49,7 +49,7 @@ dependencies { androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") // Hilt - val hilt = "2.50" + val hilt = "2.51.1" implementation("com.google.dagger:hilt-android:$hilt") ksp("com.google.dagger:hilt-compiler:$hilt") @@ -57,9 +57,9 @@ dependencies { implementation("androidx.datastore:datastore-preferences:1.1.1") // Firebase - implementation(platform("com.google.firebase:firebase-bom:33.4.0")) + implementation(platform("com.google.firebase:firebase-bom:33.7.0")) implementation("com.google.firebase:firebase-auth") - implementation("com.google.android.gms:play-services-auth:21.2.0") + implementation("com.google.android.gms:play-services-auth:21.3.0") implementation("com.google.firebase:firebase-firestore") implementation("com.google.firebase:firebase-storage") implementation("com.google.firebase:firebase-functions") @@ -79,8 +79,8 @@ dependencies { implementation("androidx.room:room-ktx:2.6.1") // Desugaring - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.3") + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") // Place - implementation("com.google.android.libraries.places:places:4.0.0") + implementation("com.google.android.libraries.places:places:4.1.0") } From fc6784bf1e7b15b1bd39a2c051659964d301d973 Mon Sep 17 00:00:00 2001 From: cp-megh Date: Thu, 9 Jan 2025 16:21:04 +0530 Subject: [PATCH 39/39] minor changes --- data/build.gradle.kts | 4 ++-- .../yourspace/data/service/location/ApiJourneyService.kt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/build.gradle.kts b/data/build.gradle.kts index cd6ab7fe..523a621c 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -93,6 +93,6 @@ dependencies { implementation("com.google.android.libraries.places:places:4.0.0") // Signal Protocol - implementation("org.signal:libsignal-client:0.64.1") - implementation("org.signal:libsignal-android:0.64.1") + implementation("org.signal:libsignal-client:0.65.0") + implementation("org.signal:libsignal-android:0.65.0") } diff --git a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt index 32f70e64..efdf64e9 100644 --- a/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt +++ b/data/src/main/java/com/canopas/yourspace/data/service/location/ApiJourneyService.kt @@ -126,7 +126,7 @@ class ApiJourneyService @Inject constructor( return try { Curve.decodePrivatePoint(privateKey) } catch (e: InvalidKeyException) { - Timber.e(e, "Error decoding private key for userId=${currentUser.id}") + Timber.e(e, "Error decoding private key") PrivateKeyUtils.decryptPrivateKey( privateKey ?: return null, currentUser.identity_key_salt?.toBytes() ?: return null,
    Create/Join SpaceCreate/Join Group Share Location Location History

    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�lB6a={GE%XypV0vx{Fiz_*_KG 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

mLm|;C`m>KA5yJju^B8f$5(H~}X9Ac{3xF^> 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 z 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%0DoO`Sug^otsLs?$d< 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⋘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