mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-28 12:23:31 +01:00
SignalProtocolStore: Make preKeys and kyberPreKeys zone-aware
This commit is contained in:
@@ -958,6 +958,8 @@ type WritableInterface = {
|
||||
createOrUpdateSession: (data: SessionType) => void;
|
||||
createOrUpdateSessions: (array: Array<SessionType>) => void;
|
||||
commitDecryptResult(options: {
|
||||
kyberPreKeysToRemove: Array<PreKeyIdType>;
|
||||
preKeysToRemove: Array<PreKeyIdType>;
|
||||
senderKeys: Array<SenderKeyType>;
|
||||
sessions: Array<SessionType>;
|
||||
unprocessed: Array<UnprocessedType>;
|
||||
|
||||
@@ -1601,16 +1601,46 @@ function createOrUpdateSessions(
|
||||
function commitDecryptResult(
|
||||
db: WritableDB,
|
||||
{
|
||||
kyberPreKeysToRemove,
|
||||
preKeysToRemove,
|
||||
senderKeys,
|
||||
sessions,
|
||||
unprocessed,
|
||||
}: {
|
||||
kyberPreKeysToRemove: Array<PreKeyIdType>;
|
||||
preKeysToRemove: Array<PreKeyIdType>;
|
||||
senderKeys: Array<SenderKeyType>;
|
||||
sessions: Array<SessionType>;
|
||||
unprocessed: Array<UnprocessedType>;
|
||||
}
|
||||
): void {
|
||||
db.transaction(() => {
|
||||
if (kyberPreKeysToRemove.length > 0) {
|
||||
const kyberPreKeyChanges = removeKyberPreKeyById(
|
||||
db,
|
||||
kyberPreKeysToRemove
|
||||
);
|
||||
if (kyberPreKeyChanges === kyberPreKeysToRemove.length) {
|
||||
logger.info(
|
||||
`commitDecryptResult: Removed ${kyberPreKeyChanges} kyberPreKeys`
|
||||
);
|
||||
} else {
|
||||
logger.error(
|
||||
`commitDecryptResult: Changed ${kyberPreKeyChanges} keys, but had ${kyberPreKeysToRemove.length} kyberPreKeys to remove`
|
||||
);
|
||||
}
|
||||
}
|
||||
if (preKeysToRemove.length > 0) {
|
||||
const preKeyChanges = removePreKeyById(db, preKeysToRemove);
|
||||
if (preKeyChanges === preKeysToRemove.length) {
|
||||
logger.info(`commitDecryptResult: Removed ${preKeyChanges} preKeys`);
|
||||
} else {
|
||||
logger.error(
|
||||
`commitDecryptResult: Changed ${preKeyChanges} keys, but had ${preKeysToRemove.length} preKeys to remove`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
for (const item of senderKeys) {
|
||||
createOrUpdateSenderKey(db, item);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user