make sure keys are valid
This commit is contained in:
parent
11d788b68f
commit
0fabed9cc3
|
@ -1648,16 +1648,15 @@ class Client {
|
||||||
// Set the new device key for this device
|
// Set the new device key for this device
|
||||||
|
|
||||||
if (!oldKeys.containsKey(deviceId)) {
|
if (!oldKeys.containsKey(deviceId)) {
|
||||||
_userDeviceKeys[userId].deviceKeys[deviceId] =
|
final entry = DeviceKeys.fromJson(rawDeviceKeyEntry.value);
|
||||||
DeviceKeys.fromJson(rawDeviceKeyEntry.value);
|
if (entry.isValid) {
|
||||||
|
_userDeviceKeys[userId].deviceKeys[deviceId] = entry;
|
||||||
if (deviceId == deviceID &&
|
if (deviceId == deviceID &&
|
||||||
_userDeviceKeys[userId].deviceKeys[deviceId].ed25519Key ==
|
entry.ed25519Key ==
|
||||||
fingerprintKey) {
|
fingerprintKey) {
|
||||||
// Always trust the own device
|
// Always trust the own device
|
||||||
_userDeviceKeys[userId].deviceKeys[deviceId].verified = true;
|
entry.verified = true;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
_userDeviceKeys[userId].deviceKeys[deviceId] = oldKeys[deviceId];
|
|
||||||
}
|
}
|
||||||
if (database != null) {
|
if (database != null) {
|
||||||
dbActions.add(() => database.storeUserDeviceKey(
|
dbActions.add(() => database.storeUserDeviceKey(
|
||||||
|
@ -1670,6 +1669,9 @@ class Client {
|
||||||
_userDeviceKeys[userId].deviceKeys[deviceId].blocked,
|
_userDeviceKeys[userId].deviceKeys[deviceId].blocked,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
_userDeviceKeys[userId].deviceKeys[deviceId] = oldKeys[deviceId];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (database != null) {
|
if (database != null) {
|
||||||
for (final oldDeviceKeyEntry in oldKeys.entries) {
|
for (final oldDeviceKeyEntry in oldKeys.entries) {
|
||||||
|
|
|
@ -15,7 +15,12 @@ class DeviceKeysList {
|
||||||
outdated = dbEntry.outdated;
|
outdated = dbEntry.outdated;
|
||||||
deviceKeys = {};
|
deviceKeys = {};
|
||||||
for (final childEntry in childEntries) {
|
for (final childEntry in childEntries) {
|
||||||
deviceKeys[childEntry.deviceId] = DeviceKeys.fromDb(childEntry);
|
final entry = DeviceKeys.fromDb(childEntry);
|
||||||
|
if (entry.isValid) {
|
||||||
|
deviceKeys[childEntry.deviceId] = entry;
|
||||||
|
} else {
|
||||||
|
outdated = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +67,8 @@ class DeviceKeys {
|
||||||
String get curve25519Key => keys['curve25519:$deviceId'];
|
String get curve25519Key => keys['curve25519:$deviceId'];
|
||||||
String get ed25519Key => keys['ed25519:$deviceId'];
|
String get ed25519Key => keys['ed25519:$deviceId'];
|
||||||
|
|
||||||
|
bool get isValid => userId != null && deviceId != null && curve25519Key != null && ed25519Key != null;
|
||||||
|
|
||||||
Future<void> setVerified(bool newVerified, Client client) {
|
Future<void> setVerified(bool newVerified, Client client) {
|
||||||
verified = newVerified;
|
verified = newVerified;
|
||||||
return client.database?.setVerifiedUserDeviceKey(newVerified, client.id, userId, deviceId);
|
return client.database?.setVerifiedUserDeviceKey(newVerified, client.id, userId, deviceId);
|
||||||
|
|
Loading…
Reference in a new issue