Merge branch 'krille/decrypt-last-event' into 'main'
fix: Decrypt of last event might make an old message as last event See merge request famedly/company/frontend/famedlysdk!1110
This commit is contained in:
		
						commit
						a536a7ea8b
					
				|  | @ -183,9 +183,14 @@ class KeyManager { | ||||||
|     final room = client.getRoomById(roomId); |     final room = client.getRoomById(roomId); | ||||||
|     if (room != null) { |     if (room != null) { | ||||||
|       // attempt to decrypt the last event |       // attempt to decrypt the last event | ||||||
|       final event = room.getState(EventTypes.Encrypted); |       final event = room.lastEvent; | ||||||
|       if (event != null && event.content['session_id'] == sessionId) { |       if (event != null && | ||||||
|         room.setState(encryption.decryptRoomEventSync(roomId, event)); |           event.type == EventTypes.Encrypted && | ||||||
|  |           event.content['session_id'] == sessionId) { | ||||||
|  |         final decrypted = encryption.decryptRoomEventSync(roomId, event); | ||||||
|  |         if (decrypted.type != EventTypes.Encrypted) { | ||||||
|  |           room.setState(decrypted); | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|       // and finally broadcast the new session |       // and finally broadcast the new session | ||||||
|       room.onSessionKeyReceived.add(sessionId); |       room.onSessionKeyReceived.add(sessionId); | ||||||
|  | @ -887,7 +892,11 @@ class KeyManager { | ||||||
|       // we *received* an incoming key request |       // we *received* an incoming key request | ||||||
|       final encryptedContent = event.encryptedContent; |       final encryptedContent = event.encryptedContent; | ||||||
|       if (encryptedContent == null) { |       if (encryptedContent == null) { | ||||||
|         return; // event wasn't encrypted, this is a security risk |         Logs().w( | ||||||
|  |           'Ignoring an unencrypted forwarded key from a to device message', | ||||||
|  |           event.toJson(), | ||||||
|  |         ); | ||||||
|  |         return; | ||||||
|       } |       } | ||||||
|       final request = outgoingShareRequests.values.firstWhereOrNull((r) => |       final request = outgoingShareRequests.values.firstWhereOrNull((r) => | ||||||
|           r.room.id == event.content['room_id'] && |           r.room.id == event.content['room_id'] && | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue