mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-21 08:58:19 +01:00
Remove tempKeys
Now that we simply establish and save a session via SessionBuilder rather than saving the keys to pass in during encrypt, we can stop caching them in memory in between the identity key check and the encryption step. // FREEBIE
This commit is contained in:
@@ -11,18 +11,9 @@
|
||||
window.textsecure = window.textsecure || {};
|
||||
window.textsecure.storage = window.textsecure.storage || {};
|
||||
|
||||
var tempKeys = {};
|
||||
|
||||
window.textsecure.storage.devices = {
|
||||
saveKeysToDeviceObject: function(deviceObject) {
|
||||
return textsecure.protocol_wrapper.processPreKey(deviceObject).then(function() {
|
||||
tempKeys[deviceObject.encodedNumber] = deviceObject;
|
||||
});
|
||||
},
|
||||
|
||||
removeTempKeysFromDevice: function(encodedNumber) {
|
||||
delete tempKeys[encodedNumber];
|
||||
return Promise.resolve();
|
||||
return textsecure.protocol_wrapper.processPreKey(deviceObject);
|
||||
},
|
||||
|
||||
getStaleDeviceIdsForNumber: function(number) {
|
||||
@@ -32,9 +23,9 @@
|
||||
}
|
||||
var updateDevices = [];
|
||||
return Promise.all(deviceIds.map(function(deviceId) {
|
||||
var encodedNumber = number + '.' + deviceId;
|
||||
return textsecure.protocol_wrapper.hasOpenSession(encodedNumber).then(function(hasSession) {
|
||||
if (!hasSession && !tempKeys[encodedNumber]) {
|
||||
var address = new libsignal.SignalProtocolAddress(number, deviceId).toString();
|
||||
return textsecure.protocol_wrapper.hasOpenSession(address).then(function(hasSession) {
|
||||
if (!hasSession) {
|
||||
updateDevices.push(deviceId);
|
||||
}
|
||||
});
|
||||
@@ -49,24 +40,13 @@
|
||||
return [];
|
||||
}
|
||||
return textsecure.storage.protocol.getDeviceIds(number).then(function(deviceIds) {
|
||||
// Add pending devices from tempKeys
|
||||
for (var encodedNumber in tempKeys) {
|
||||
var deviceNumber = textsecure.utils.unencodeNumber(encodedNumber)[0];
|
||||
var deviceId = parseInt(textsecure.utils.unencodeNumber(encodedNumber)[1]);
|
||||
if (deviceNumber === number && deviceIds.indexOf(deviceId) < 0) {
|
||||
deviceIds.push(deviceId);
|
||||
}
|
||||
}
|
||||
return Promise.all(deviceIds.map(function(deviceId) {
|
||||
var encodedNumber = number + '.' + deviceId;
|
||||
var deviceObject = tempKeys[encodedNumber] || {};
|
||||
deviceObject.encodedNumber = encodedNumber;
|
||||
deviceObject.identityKey = identityKey;
|
||||
return textsecure.protocol_wrapper.getRegistrationId(encodedNumber).then(function(registrationId) {
|
||||
if (deviceObject.registrationId === undefined) {
|
||||
deviceObject.registrationId = registrationId;
|
||||
}
|
||||
return deviceObject;
|
||||
var address = new libsignal.SignalProtocolAddress(number, deviceId).toString();
|
||||
return textsecure.protocol_wrapper.getRegistrationId(address).then(function(registrationId) {
|
||||
return {
|
||||
encodedNumber : address,
|
||||
registrationId : registrationId
|
||||
};
|
||||
});
|
||||
}));
|
||||
});
|
||||
@@ -78,7 +58,6 @@
|
||||
for (var j in deviceIdsToRemove) {
|
||||
promise = promise.then(function() {
|
||||
var encodedNumber = number + "." + deviceIdsToRemove[j];
|
||||
delete tempKeys[encodedNumber];
|
||||
return textsecure.storage.protocol.removeSession(encodedNumber);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user