fix: do not pass the verified device list

This commit is contained in:
Reza 2022-11-24 10:19:52 +01:00
parent 8f37466295
commit dd4d0696b3
2 changed files with 19 additions and 27 deletions

View File

@ -159,21 +159,20 @@ class KeyVerification {
return methods; return methods;
} }
Future<void> sendStart({List<Device>? verifiedDevices}) async { Future<void> sendStart() async {
await send( await send(
EventTypes.KeyVerificationRequest, EventTypes.KeyVerificationRequest,
{ {
'methods': knownVerificationMethods, 'methods': knownVerificationMethods,
if (room == null) 'timestamp': DateTime.now().millisecondsSinceEpoch, if (room == null) 'timestamp': DateTime.now().millisecondsSinceEpoch,
}, },
verifiedDevices: verifiedDevices,
); );
startedVerification = true; startedVerification = true;
setState(KeyVerificationState.waitingAccept); setState(KeyVerificationState.waitingAccept);
lastActivity = DateTime.now(); lastActivity = DateTime.now();
} }
Future<void> start({List<Device>? verifiedDevices}) async { Future<void> start() async {
if (room == null) { if (room == null) {
transactionId = client.generateUniqueTransactionId(); transactionId = client.generateUniqueTransactionId();
} }
@ -183,9 +182,7 @@ class KeyVerification {
setState(KeyVerificationState.askSSSS); setState(KeyVerificationState.askSSSS);
_nextAction = 'request'; _nextAction = 'request';
} else { } else {
await sendStart( await sendStart();
verifiedDevices: verifiedDevices,
);
} }
} }
@ -610,8 +607,11 @@ class KeyVerification {
} }
} }
Future<void> send(String type, Map<String, dynamic> payload, Future<void> send(
{List<Device>? verifiedDevices}) async { String type,
Map<String, dynamic> payload,
) async {
Logs().e('payload is ', payload);
makePayload(payload); makePayload(payload);
Logs().i('[Key Verification] Sending type $type: $payload'); Logs().i('[Key Verification] Sending type $type: $payload');
if (room != null) { if (room != null) {
@ -635,21 +635,16 @@ class KeyVerification {
EventTypes.KeyVerificationRequest, EventTypes.KeyVerificationRequest,
EventTypes.KeyVerificationCancel, EventTypes.KeyVerificationCancel,
}.contains(type)) { }.contains(type)) {
if (verifiedDevices == null || verifiedDevices.isEmpty) { final deviceKeys = client.userDeviceKeys[userId]?.deviceKeys;
await client.sendToDevicesOfUserIds({userId}, type, payload); deviceKeys?.removeWhere((_, value) =>
} else { value.hasValidSignatureChain(verifiedByTheirMasterKey: true) ==
final deviceKeys = client.userDeviceKeys[userId]?.deviceKeys; false);
deviceKeys?.removeWhere((key, _) => !verifiedDevices if (deviceKeys != null) {
.map((device) => device.deviceId) await client.sendToDeviceEncrypted(
.toList() deviceKeys.values.toList(),
.contains(key)); type,
if (deviceKeys != null && deviceKeys.isNotEmpty) { payload,
await client.sendToDeviceEncrypted( );
deviceKeys.values.toList(),
type,
payload,
);
}
} }
} else { } else {
Logs().e( Logs().e(

View File

@ -70,7 +70,6 @@ class DeviceKeysList {
Future<KeyVerification> startVerification({ Future<KeyVerification> startVerification({
bool? newDirectChatEnableEncryption, bool? newDirectChatEnableEncryption,
List<StateEvent>? newDirectChatInitialState, List<StateEvent>? newDirectChatInitialState,
List<Device>? verifiedDevices,
}) async { }) async {
final encryption = client.encryption; final encryption = client.encryption;
if (encryption == null) { if (encryption == null) {
@ -97,9 +96,7 @@ class DeviceKeysList {
// start verification with verified devices // start verification with verified devices
final request = KeyVerification( final request = KeyVerification(
encryption: encryption, userId: userId, deviceId: '*'); encryption: encryption, userId: userId, deviceId: '*');
await request.start( await request.start();
verifiedDevices: verifiedDevices,
);
encryption.keyVerificationManager.addRequest(request); encryption.keyVerificationManager.addRequest(request);
return request; return request;
} }