fix: Skip invalid keys which got corrupted in database

This commit is contained in:
Krille 2024-01-26 09:41:55 +01:00
parent 566f960b92
commit d94e6d2ac8
No known key found for this signature in database
GPG Key ID: E067ECD60F1A0652
1 changed files with 10 additions and 6 deletions

View File

@ -111,18 +111,22 @@ class DeviceKeysList {
outdated = dbEntry['outdated']; outdated = dbEntry['outdated'];
deviceKeys = {}; deviceKeys = {};
for (final childEntry in childEntries) { for (final childEntry in childEntries) {
try {
final entry = DeviceKeys.fromDb(childEntry, client); final entry = DeviceKeys.fromDb(childEntry, client);
if (entry.isValid) { if (!entry.isValid) throw Exception('Invalid device keys');
deviceKeys[childEntry['device_id']] = entry; deviceKeys[childEntry['device_id']] = entry;
} else { } catch (e, s) {
Logs().w('Skipping invalid user device key', e, s);
outdated = true; outdated = true;
} }
} }
for (final crossSigningEntry in crossSigningEntries) { for (final crossSigningEntry in crossSigningEntries) {
try {
final entry = CrossSigningKey.fromDbJson(crossSigningEntry, client); final entry = CrossSigningKey.fromDbJson(crossSigningEntry, client);
if (entry.isValid) { if (!entry.isValid) throw Exception('Invalid device keys');
crossSigningKeys[crossSigningEntry['public_key']] = entry; crossSigningKeys[crossSigningEntry['public_key']] = entry;
} else { } catch (e, s) {
Logs().w('Skipping invalid cross siging key', e, s);
outdated = true; outdated = true;
} }
} }