Skip to content

Commit 595a51e

Browse files
committed
crypto: fix accept forward key
1 parent ecc1aa8 commit 595a51e

1 file changed

Lines changed: 18 additions & 19 deletions

File tree

sdn-sdk-android/src/main/java/org/sdn/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ internal class MXMegolmDecryption(
248248
senderKey = forwardedRoomKeyContent.senderKey.orEmpty(),
249249
).isEmpty()
250250

251-
trusted = false
251+
trusted = forceAccept
252252

253253
if (!forceAccept && wasNotRequested) {
254254
// val senderId = cryptoStore.deviceWithIdentityKey(event.getSenderKey().orEmpty())?.userId.orEmpty()
@@ -258,26 +258,25 @@ internal class MXMegolmDecryption(
258258
return
259259
}
260260

261-
// Check who sent the request, as we requested we have the device keys (no need to download)
262-
val sessionThatIsSharing = cryptoStore.deviceWithIdentityKey(eventSenderKey)
263-
if (sessionThatIsSharing == null) {
264-
Timber.tag(loggerTag.value).w("Ignoring forwarded_room_key from unknown device with identity $eventSenderKey")
265-
return
266-
}
267-
val isOwnDevice = myUserId == sessionThatIsSharing.userId
268-
val isDeviceVerified = sessionThatIsSharing.isVerified
269-
val isFromSessionInitiator = sessionThatIsSharing.identityKey() == sessionInitiatorSenderKey
270-
271-
val isLegitForward = (isOwnDevice && isDeviceVerified) ||
272-
(!cryptoConfig.limitRoomKeyRequestsToMyDevices && isFromSessionInitiator)
273-
274-
val shouldAcceptForward = forceAccept || isLegitForward
275-
276-
if (!shouldAcceptForward) {
277-
Timber.tag(loggerTag.value)
261+
if (!forceAccept) {
262+
// Check who sent the request, as we requested we have the device keys (no need to download)
263+
val sessionThatIsSharing = cryptoStore.deviceWithIdentityKey(eventSenderKey)
264+
if (sessionThatIsSharing == null) {
265+
Timber.tag(loggerTag.value).w("Ignoring forwarded_room_key from unknown device with identity $eventSenderKey")
266+
return
267+
}
268+
val isOwnDevice = myUserId == sessionThatIsSharing.userId
269+
val isDeviceVerified = sessionThatIsSharing.isVerified
270+
val isFromSessionInitiator = sessionThatIsSharing.identityKey() == sessionInitiatorSenderKey
271+
272+
val isLegitForward = (isOwnDevice && isDeviceVerified) ||
273+
(!cryptoConfig.limitRoomKeyRequestsToMyDevices && isFromSessionInitiator)
274+
if (!isLegitForward) {
275+
Timber.tag(loggerTag.value)
278276
.w("Ignoring forwarded_room_key device:$eventSenderKey, ownVerified:{$isOwnDevice&&$isDeviceVerified}," +
279277
" fromInitiator:$isFromSessionInitiator")
280-
return
278+
return
279+
}
281280
}
282281
} else {
283282
// It's a m.room_key so safe

0 commit comments

Comments
 (0)