crypto: Remove the myDeviceInfoHolder

This commit is contained in:
Damir Jelić 2021-03-26 16:01:01 +01:00
parent d49bdbe016
commit 32cf645c5f
2 changed files with 40 additions and 2 deletions

View file

@ -130,7 +130,6 @@ internal class DefaultCryptoService @Inject constructor(
private val deviceId: String?, private val deviceId: String?,
@SessionFilesDirectory @SessionFilesDirectory
private val dataDir: File, private val dataDir: File,
private val myDeviceInfoHolder: Lazy<MyDeviceInfoHolder>,
// the crypto store // the crypto store
private val cryptoStore: IMXCryptoStore, private val cryptoStore: IMXCryptoStore,
// Set of parameters used to configure/customize the end-to-end crypto. // Set of parameters used to configure/customize the end-to-end crypto.
@ -218,7 +217,7 @@ internal class DefaultCryptoService @Inject constructor(
} }
override fun getMyDevice(): CryptoDeviceInfo { override fun getMyDevice(): CryptoDeviceInfo {
return myDeviceInfoHolder.get().myDevice return olmMachine!!.ownDevice()
} }
override fun fetchDevicesList(callback: MatrixCallback<DevicesListResponse>) { override fun fetchDevicesList(callback: MatrixCallback<DevicesListResponse>) {

View file

@ -27,6 +27,9 @@ import org.matrix.android.sdk.internal.di.MoshiProvider
import org.matrix.android.sdk.internal.session.sync.model.DeviceListResponse import org.matrix.android.sdk.internal.session.sync.model.DeviceListResponse
import org.matrix.android.sdk.internal.session.sync.model.DeviceOneTimeKeysCountSyncResponse import org.matrix.android.sdk.internal.session.sync.model.DeviceOneTimeKeysCountSyncResponse
import org.matrix.android.sdk.internal.session.sync.model.ToDeviceSyncResponse import org.matrix.android.sdk.internal.session.sync.model.ToDeviceSyncResponse
import org.matrix.android.sdk.internal.crypto.model.CryptoDeviceInfo
import org.matrix.android.sdk.internal.crypto.crosssigning.DeviceTrustLevel
import org.matrix.android.sdk.internal.crypto.model.rest.UnsignedDeviceInfo
import org.matrix.android.sdk.api.session.events.model.Content import org.matrix.android.sdk.api.session.events.model.Content
import timber.log.Timber import timber.log.Timber
import uniffi.olm.Device as InnerDevice import uniffi.olm.Device as InnerDevice
@ -67,6 +70,26 @@ class Device(inner: InnerDevice, machine: InnerMachine) {
fun startVerification(): InnerSas { fun startVerification(): InnerSas {
return this.machine.startVerification(this.inner) return this.machine.startVerification(this.inner)
} }
fun toCryptoDeviceInfo(): CryptoDeviceInfo {
return CryptoDeviceInfo(
this.deviceId(),
this.userId(),
// TODO pass the algorithms here.
listOf(),
this.keys(),
// TODO pass the signatures here.
mapOf(),
// TODO pass the display name here.
UnsignedDeviceInfo(),
// TODO pass trust levels here
DeviceTrustLevel(false, false),
// TODO is the device blacklisted
false,
// TODO
null
)
}
} }
internal class OlmMachine(user_id: String, device_id: String, path: File) { internal class OlmMachine(user_id: String, device_id: String, path: File) {
@ -84,6 +107,22 @@ internal class OlmMachine(user_id: String, device_id: String, path: File) {
return this.inner.identityKeys() return this.inner.identityKeys()
} }
fun ownDevice(): CryptoDeviceInfo {
return CryptoDeviceInfo(
this.deviceId(),
this.userId(),
// TODO pass the algorithms here.
listOf(),
this.identityKeys(),
mapOf(),
UnsignedDeviceInfo(),
DeviceTrustLevel(false, true),
false,
null
)
}
suspend fun outgoingRequests(): List<Request> = withContext(Dispatchers.IO) { suspend fun outgoingRequests(): List<Request> = withContext(Dispatchers.IO) {
inner.outgoingRequests() inner.outgoingRequests()
} }