Compare commits
3 Commits
683a76cc80
...
7600804aa1
Author | SHA1 | Date | |
---|---|---|---|
7600804aa1 | |||
a4589b6e09 | |||
d0986a4608 |
@ -293,11 +293,15 @@ class OmemoDoubleRatchet {
|
|||||||
return plaintext;
|
return plaintext;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (header.dhPub != await dhr?.getBytes()) {
|
final dhPubMatches = listsEqual(
|
||||||
|
header.dhPub ?? <int>[],
|
||||||
|
await dhr?.getBytes() ?? <int>[],
|
||||||
|
);
|
||||||
|
if (!dhPubMatches) {
|
||||||
await _skipMessageKeys(header.pn!);
|
await _skipMessageKeys(header.pn!);
|
||||||
await _dhRatchet(header);
|
await _dhRatchet(header);
|
||||||
}
|
}
|
||||||
|
|
||||||
await _skipMessageKeys(header.n!);
|
await _skipMessageKeys(header.n!);
|
||||||
final newCkr = await kdfCk(ckr!, kdfCkNextChainKey);
|
final newCkr = await kdfCk(ckr!, kdfCkNextChainKey);
|
||||||
final mk = await kdfCk(ckr!, kdfCkNextMessageKey);
|
final mk = await kdfCk(ckr!, kdfCkNextMessageKey);
|
||||||
|
@ -386,13 +386,22 @@ class OmemoSessionManager {
|
|||||||
_eventStreamController.add(DeviceModifiedEvent(_device));
|
_eventStreamController.add(DeviceModifiedEvent(_device));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the device map, i.e. the mapping of bare Jid to its device identifiers
|
||||||
|
/// we have built sessions with.
|
||||||
|
Future<Map<String, List<int>>> getDeviceMap() async {
|
||||||
|
Map<String, List<int>>? map;
|
||||||
|
|
||||||
|
await _lock.synchronized(() async {
|
||||||
|
map = _deviceMap;
|
||||||
|
});
|
||||||
|
|
||||||
|
return map!;
|
||||||
|
}
|
||||||
|
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
OmemoDoubleRatchet getRatchet(String jid, int deviceId) => _ratchetMap[RatchetMapKey(jid, deviceId)]!;
|
OmemoDoubleRatchet getRatchet(String jid, int deviceId) => _ratchetMap[RatchetMapKey(jid, deviceId)]!;
|
||||||
|
|
||||||
@visibleForTesting
|
|
||||||
Map<String, List<int>> getDeviceMap() => _deviceMap;
|
|
||||||
|
|
||||||
@visibleForTesting
|
@visibleForTesting
|
||||||
Map<RatchetMapKey, OmemoDoubleRatchet> getRatchetMap() => _ratchetMap;
|
Map<RatchetMapKey, OmemoDoubleRatchet> getRatchetMap() => _ratchetMap;
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ void main() {
|
|||||||
final oldDevice = await oldSession.getDevice();
|
final oldDevice = await oldSession.getDevice();
|
||||||
final newDevice = await newSession.getDevice();
|
final newDevice = await newSession.getDevice();
|
||||||
expect(await oldDevice.equals(newDevice), true);
|
expect(await oldDevice.equals(newDevice), true);
|
||||||
expect(oldSession.getDeviceMap(), newSession.getDeviceMap());
|
expect(await oldSession.getDeviceMap(), await newSession.getDeviceMap());
|
||||||
|
|
||||||
expect(oldSession.getRatchetMap().length, newSession.getRatchetMap().length);
|
expect(oldSession.getRatchetMap().length, newSession.getRatchetMap().length);
|
||||||
for (final session in oldSession.getRatchetMap().entries) {
|
for (final session in oldSession.getRatchetMap().entries) {
|
||||||
|
Loading…
Reference in New Issue
Block a user