Merge (un)encrypted storage layers
This commit is contained in:
parent
454b4726bd
commit
00cb420d37
12 changed files with 102 additions and 143 deletions
|
@ -96,8 +96,8 @@
|
||||||
type : 'incoming'
|
type : 'incoming'
|
||||||
});
|
});
|
||||||
|
|
||||||
var newUnreadCount = textsecure.storage.getUnencrypted("unreadCount", 0) + 1;
|
var newUnreadCount = textsecure.storage.get("unreadCount", 0) + 1;
|
||||||
textsecure.storage.putUnencrypted("unreadCount", newUnreadCount);
|
textsecure.storage.put("unreadCount", newUnreadCount);
|
||||||
extension.navigator.setBadgeText(newUnreadCount);
|
extension.navigator.setBadgeText(newUnreadCount);
|
||||||
|
|
||||||
conversation.save().then(function() {
|
conversation.save().then(function() {
|
||||||
|
|
|
@ -33,14 +33,14 @@
|
||||||
inbox.on('change:unreadCount', function(model, count) {
|
inbox.on('change:unreadCount', function(model, count) {
|
||||||
var prev = model.previous('unreadCount');
|
var prev = model.previous('unreadCount');
|
||||||
if (count < prev) { // decreased
|
if (count < prev) { // decreased
|
||||||
var newUnreadCount = textsecure.storage.getUnencrypted("unreadCount") - (prev - count);
|
var newUnreadCount = textsecure.storage.get("unreadCount") - (prev - count);
|
||||||
if (newUnreadCount <= 0) {
|
if (newUnreadCount <= 0) {
|
||||||
newUnreadCount = 0;
|
newUnreadCount = 0;
|
||||||
extension.navigator.setBadgeText("");
|
extension.navigator.setBadgeText("");
|
||||||
} else {
|
} else {
|
||||||
extension.navigator.setBadgeText(newUnreadCount);
|
extension.navigator.setBadgeText(newUnreadCount);
|
||||||
}
|
}
|
||||||
textsecure.storage.putUnencrypted("unreadCount", newUnreadCount);
|
textsecure.storage.put("unreadCount", newUnreadCount);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -37705,16 +37705,16 @@ window.axolotl.sessions = {
|
||||||
;(function() {
|
;(function() {
|
||||||
var axolotlInstance = axolotl.protocol({
|
var axolotlInstance = axolotl.protocol({
|
||||||
getMyRegistrationId: function() {
|
getMyRegistrationId: function() {
|
||||||
return textsecure.storage.getUnencrypted("registrationId");
|
return textsecure.storage.get("registrationId");
|
||||||
},
|
},
|
||||||
put: function(key, value) {
|
put: function(key, value) {
|
||||||
return textsecure.storage.putEncrypted(key, value);
|
return textsecure.storage.put(key, value);
|
||||||
},
|
},
|
||||||
get: function(key, defaultValue) {
|
get: function(key, defaultValue) {
|
||||||
return textsecure.storage.getEncrypted(key, defaultValue);
|
return textsecure.storage.get(key, defaultValue);
|
||||||
},
|
},
|
||||||
remove: function(key) {
|
remove: function(key) {
|
||||||
return textsecure.storage.removeEncrypted(key);
|
return textsecure.storage.remove(key);
|
||||||
},
|
},
|
||||||
|
|
||||||
identityKeys: {
|
identityKeys: {
|
||||||
|
@ -37876,7 +37876,7 @@ window.axolotl.sessions = {
|
||||||
window.textsecure.crypto = {
|
window.textsecure.crypto = {
|
||||||
// Decrypts message into a raw string
|
// Decrypts message into a raw string
|
||||||
decryptWebsocketMessage: function(message) {
|
decryptWebsocketMessage: function(message) {
|
||||||
var signaling_key = textsecure.storage.getEncrypted("signaling_key"); //TODO: in crypto_storage
|
var signaling_key = textsecure.storage.get("signaling_key"); //TODO: in crypto_storage
|
||||||
var aes_key = toArrayBuffer(signaling_key.substring(0, 32));
|
var aes_key = toArrayBuffer(signaling_key.substring(0, 32));
|
||||||
var mac_key = toArrayBuffer(signaling_key.substring(32, 32 + 20));
|
var mac_key = toArrayBuffer(signaling_key.substring(32, 32 + 20));
|
||||||
|
|
||||||
|
@ -37961,45 +37961,25 @@ window.axolotl.sessions = {
|
||||||
window.textsecure.storage = window.textsecure.storage || {};
|
window.textsecure.storage = window.textsecure.storage || {};
|
||||||
|
|
||||||
window.textsecure.storage = {
|
window.textsecure.storage = {
|
||||||
|
|
||||||
/*****************************
|
/*****************************
|
||||||
*** Base Storage Routines ***
|
*** Base Storage Routines ***
|
||||||
*****************************/
|
*****************************/
|
||||||
putEncrypted: function(key, value) {
|
put: function(key, value) {
|
||||||
//TODO
|
|
||||||
if (value === undefined)
|
if (value === undefined)
|
||||||
throw new Error("Tried to store undefined");
|
throw new Error("Tried to store undefined");
|
||||||
localStorage.setItem("e" + key, textsecure.utils.jsonThing(value));
|
localStorage.setItem("" + key, textsecure.utils.jsonThing(value));
|
||||||
},
|
},
|
||||||
|
|
||||||
getEncrypted: function(key, defaultValue) {
|
get: function(key, defaultValue) {
|
||||||
//TODO
|
var value = localStorage.getItem("" + key);
|
||||||
var value = localStorage.getItem("e" + key);
|
|
||||||
if (value === null)
|
if (value === null)
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
return JSON.parse(value);
|
return JSON.parse(value);
|
||||||
},
|
},
|
||||||
|
|
||||||
removeEncrypted: function(key) {
|
remove: function(key) {
|
||||||
localStorage.removeItem("e" + key);
|
localStorage.removeItem("" + key);
|
||||||
},
|
},
|
||||||
|
|
||||||
putUnencrypted: function(key, value) {
|
|
||||||
if (value === undefined)
|
|
||||||
throw new Error("Tried to store undefined");
|
|
||||||
localStorage.setItem("u" + key, textsecure.utils.jsonThing(value));
|
|
||||||
},
|
|
||||||
|
|
||||||
getUnencrypted: function(key, defaultValue) {
|
|
||||||
var value = localStorage.getItem("u" + key);
|
|
||||||
if (value === null)
|
|
||||||
return defaultValue;
|
|
||||||
return JSON.parse(value);
|
|
||||||
},
|
|
||||||
|
|
||||||
removeUnencrypted: function(key) {
|
|
||||||
localStorage.removeItem("u" + key);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
@ -38031,18 +38011,18 @@ window.axolotl.sessions = {
|
||||||
|
|
||||||
window.textsecure.storage.user = {
|
window.textsecure.storage.user = {
|
||||||
setNumberAndDeviceId: function(number, deviceId) {
|
setNumberAndDeviceId: function(number, deviceId) {
|
||||||
textsecure.storage.putUnencrypted("number_id", number + "." + deviceId);
|
textsecure.storage.put("number_id", number + "." + deviceId);
|
||||||
},
|
},
|
||||||
|
|
||||||
getNumber: function(key, defaultValue) {
|
getNumber: function(key, defaultValue) {
|
||||||
var number_id = textsecure.storage.getUnencrypted("number_id");
|
var number_id = textsecure.storage.get("number_id");
|
||||||
if (number_id === undefined)
|
if (number_id === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
return textsecure.utils.unencodeNumber(number_id)[0];
|
return textsecure.utils.unencodeNumber(number_id)[0];
|
||||||
},
|
},
|
||||||
|
|
||||||
getDeviceId: function(key) {
|
getDeviceId: function(key) {
|
||||||
var number_id = textsecure.storage.getUnencrypted("number_id");
|
var number_id = textsecure.storage.get("number_id");
|
||||||
if (number_id === undefined)
|
if (number_id === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
return textsecure.utils.unencodeNumber(number_id)[1];
|
return textsecure.utils.unencodeNumber(number_id)[1];
|
||||||
|
@ -38050,7 +38030,6 @@ window.axolotl.sessions = {
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|
||||||
/* vim: ts=4:sw=4
|
/* vim: ts=4:sw=4
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
@ -38099,7 +38078,7 @@ window.axolotl.sessions = {
|
||||||
},
|
},
|
||||||
|
|
||||||
getDeviceObjectsForNumber: function(number) {
|
getDeviceObjectsForNumber: function(number) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
if (map === undefined)
|
if (map === undefined)
|
||||||
return [];
|
return [];
|
||||||
for (key in map.devices) {
|
for (key in map.devices) {
|
||||||
|
@ -38115,23 +38094,23 @@ window.axolotl.sessions = {
|
||||||
},
|
},
|
||||||
|
|
||||||
getIdentityKeyForNumber: function(number) {
|
getIdentityKeyForNumber: function(number) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
return map === undefined ? undefined : map.identityKey;
|
return map === undefined ? undefined : map.identityKey;
|
||||||
},
|
},
|
||||||
|
|
||||||
checkSaveIdentityKeyForNumber: function(number, identityKey) {
|
checkSaveIdentityKeyForNumber: function(number, identityKey) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
if (map === undefined)
|
if (map === undefined)
|
||||||
textsecure.storage.putEncrypted("devices" + number, { devices: [], identityKey: identityKey});
|
textsecure.storage.put("devices" + number, { devices: [], identityKey: identityKey});
|
||||||
else if (getString(map.identityKey) !== getString(identityKey))
|
else if (getString(map.identityKey) !== getString(identityKey))
|
||||||
throw new Error("Attempted to overwrite a different identity key");
|
throw new Error("Attempted to overwrite a different identity key");
|
||||||
},
|
},
|
||||||
|
|
||||||
removeIdentityKeyForNumber: function(number) {
|
removeIdentityKeyForNumber: function(number) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
if (map === undefined)
|
if (map === undefined)
|
||||||
throw new Error("Tried to remove identity for unknown number");
|
throw new Error("Tried to remove identity for unknown number");
|
||||||
textsecure.storage.removeEncrypted("devices" + number);
|
textsecure.storage.remove("devices" + number);
|
||||||
},
|
},
|
||||||
|
|
||||||
getDeviceObject: function(encodedNumber, returnIdentityKey) {
|
getDeviceObject: function(encodedNumber, returnIdentityKey) {
|
||||||
|
@ -38157,7 +38136,7 @@ window.axolotl.sessions = {
|
||||||
},
|
},
|
||||||
|
|
||||||
removeDeviceIdsForNumber: function(number, deviceIdsToRemove) {
|
removeDeviceIdsForNumber: function(number, deviceIdsToRemove) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
if (map === undefined)
|
if (map === undefined)
|
||||||
throw new Error("Tried to remove device for unknown number");
|
throw new Error("Tried to remove device for unknown number");
|
||||||
|
|
||||||
|
@ -38179,10 +38158,10 @@ window.axolotl.sessions = {
|
||||||
throw new Error("Tried to remove unknown device");
|
throw new Error("Tried to remove unknown device");
|
||||||
|
|
||||||
if (newDevices.length === 0)
|
if (newDevices.length === 0)
|
||||||
textsecure.storage.removeEncrypted("devices" + number);
|
textsecure.storage.remove("devices" + number);
|
||||||
else {
|
else {
|
||||||
map.devices = newDevices;
|
map.devices = newDevices;
|
||||||
textsecure.storage.putEncrypted("devices" + number, map);
|
textsecure.storage.put("devices" + number, map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -38192,7 +38171,7 @@ window.axolotl.sessions = {
|
||||||
throw new Error("Tried to store invalid deviceObject");
|
throw new Error("Tried to store invalid deviceObject");
|
||||||
|
|
||||||
var number = textsecure.utils.unencodeNumber(deviceObject.encodedNumber)[0];
|
var number = textsecure.utils.unencodeNumber(deviceObject.encodedNumber)[0];
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
|
|
||||||
if (deviceObject.sessions !== undefined)
|
if (deviceObject.sessions !== undefined)
|
||||||
deviceObject.sessions = deviceObject.sessions.serialize()
|
deviceObject.sessions = deviceObject.sessions.serialize()
|
||||||
|
@ -38223,7 +38202,7 @@ window.axolotl.sessions = {
|
||||||
map.devices.push(deviceObject);
|
map.devices.push(deviceObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
textsecure.storage.putEncrypted("devices" + number, map);
|
textsecure.storage.put("devices" + number, map);
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
@ -38254,10 +38233,10 @@ window.axolotl.sessions = {
|
||||||
|
|
||||||
window.textsecure.storage.groups = {
|
window.textsecure.storage.groups = {
|
||||||
createNewGroup: function(numbers, groupId) {
|
createNewGroup: function(numbers, groupId) {
|
||||||
if (groupId !== undefined && textsecure.storage.getEncrypted("group" + groupId) !== undefined)
|
if (groupId !== undefined && textsecure.storage.get("group" + groupId) !== undefined)
|
||||||
throw new Error("Tried to recreate group");
|
throw new Error("Tried to recreate group");
|
||||||
|
|
||||||
while (groupId === undefined || textsecure.storage.getEncrypted("group" + groupId) !== undefined)
|
while (groupId === undefined || textsecure.storage.get("group" + groupId) !== undefined)
|
||||||
groupId = getString(textsecure.crypto.getRandomBytes(16));
|
groupId = getString(textsecure.crypto.getRandomBytes(16));
|
||||||
|
|
||||||
var me = textsecure.storage.user.getNumber();
|
var me = textsecure.storage.user.getNumber();
|
||||||
|
@ -38280,13 +38259,13 @@ window.axolotl.sessions = {
|
||||||
for (var i in finalNumbers)
|
for (var i in finalNumbers)
|
||||||
groupObject.numberRegistrationIds[finalNumbers[i]] = {};
|
groupObject.numberRegistrationIds[finalNumbers[i]] = {};
|
||||||
|
|
||||||
textsecure.storage.putEncrypted("group" + groupId, groupObject);
|
textsecure.storage.put("group" + groupId, groupObject);
|
||||||
|
|
||||||
return {id: groupId, numbers: finalNumbers};
|
return {id: groupId, numbers: finalNumbers};
|
||||||
},
|
},
|
||||||
|
|
||||||
getNumbers: function(groupId) {
|
getNumbers: function(groupId) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
@ -38294,7 +38273,7 @@ window.axolotl.sessions = {
|
||||||
},
|
},
|
||||||
|
|
||||||
removeNumber: function(groupId, number) {
|
removeNumber: function(groupId, number) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
@ -38306,14 +38285,14 @@ window.axolotl.sessions = {
|
||||||
if (i > -1) {
|
if (i > -1) {
|
||||||
group.numbers.slice(i, 1);
|
group.numbers.slice(i, 1);
|
||||||
delete group.numberRegistrationIds[number];
|
delete group.numberRegistrationIds[number];
|
||||||
textsecure.storage.putEncrypted("group" + groupId, group);
|
textsecure.storage.put("group" + groupId, group);
|
||||||
}
|
}
|
||||||
|
|
||||||
return group.numbers;
|
return group.numbers;
|
||||||
},
|
},
|
||||||
|
|
||||||
addNumbers: function(groupId, numbers) {
|
addNumbers: function(groupId, numbers) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
@ -38327,16 +38306,16 @@ window.axolotl.sessions = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
textsecure.storage.putEncrypted("group" + groupId, group);
|
textsecure.storage.put("group" + groupId, group);
|
||||||
return group.numbers;
|
return group.numbers;
|
||||||
},
|
},
|
||||||
|
|
||||||
deleteGroup: function(groupId) {
|
deleteGroup: function(groupId) {
|
||||||
textsecure.storage.removeEncrypted("group" + groupId);
|
textsecure.storage.remove("group" + groupId);
|
||||||
},
|
},
|
||||||
|
|
||||||
getGroup: function(groupId) {
|
getGroup: function(groupId) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
@ -38344,7 +38323,7 @@ window.axolotl.sessions = {
|
||||||
},
|
},
|
||||||
|
|
||||||
needUpdateByDeviceRegistrationId: function(groupId, number, encodedNumber, registrationId) {
|
needUpdateByDeviceRegistrationId: function(groupId, number, encodedNumber, registrationId) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
throw new Error("Unknown group for device registration id");
|
throw new Error("Unknown group for device registration id");
|
||||||
|
|
||||||
|
@ -38356,7 +38335,7 @@ window.axolotl.sessions = {
|
||||||
|
|
||||||
var needUpdate = group.numberRegistrationIds[number][encodedNumber] !== undefined;
|
var needUpdate = group.numberRegistrationIds[number][encodedNumber] !== undefined;
|
||||||
group.numberRegistrationIds[number][encodedNumber] = registrationId;
|
group.numberRegistrationIds[number][encodedNumber] = registrationId;
|
||||||
textsecure.storage.putEncrypted("group" + groupId, group);
|
textsecure.storage.put("group" + groupId, group);
|
||||||
return needUpdate;
|
return needUpdate;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -38879,19 +38858,19 @@ textsecure.processDecrypted = function(decrypted, source) {
|
||||||
|
|
||||||
window.textsecure.registerSingleDevice = function(number, verificationCode, stepDone) {
|
window.textsecure.registerSingleDevice = function(number, verificationCode, stepDone) {
|
||||||
var signalingKey = textsecure.crypto.getRandomBytes(32 + 20);
|
var signalingKey = textsecure.crypto.getRandomBytes(32 + 20);
|
||||||
textsecure.storage.putEncrypted('signaling_key', signalingKey);
|
textsecure.storage.put('signaling_key', signalingKey);
|
||||||
|
|
||||||
var password = btoa(getString(textsecure.crypto.getRandomBytes(16)));
|
var password = btoa(getString(textsecure.crypto.getRandomBytes(16)));
|
||||||
password = password.substring(0, password.length - 2);
|
password = password.substring(0, password.length - 2);
|
||||||
textsecure.storage.putEncrypted("password", password);
|
textsecure.storage.put("password", password);
|
||||||
|
|
||||||
var registrationId = new Uint16Array(textsecure.crypto.getRandomBytes(2))[0];
|
var registrationId = new Uint16Array(textsecure.crypto.getRandomBytes(2))[0];
|
||||||
registrationId = registrationId & 0x3fff;
|
registrationId = registrationId & 0x3fff;
|
||||||
textsecure.storage.putUnencrypted("registrationId", registrationId);
|
textsecure.storage.put("registrationId", registrationId);
|
||||||
|
|
||||||
return textsecure.api.confirmCode(number, verificationCode, password, signalingKey, registrationId, true).then(function() {
|
return textsecure.api.confirmCode(number, verificationCode, password, signalingKey, registrationId, true).then(function() {
|
||||||
textsecure.storage.user.setNumberAndDeviceId(number, 1);
|
textsecure.storage.user.setNumberAndDeviceId(number, 1);
|
||||||
textsecure.storage.putUnencrypted("regionCode", libphonenumber.util.getRegionCodeForNumber(number));
|
textsecure.storage.put("regionCode", libphonenumber.util.getRegionCodeForNumber(number));
|
||||||
stepDone(1);
|
stepDone(1);
|
||||||
|
|
||||||
return textsecure.protocol_wrapper.generateKeys().then(function(keys) {
|
return textsecure.protocol_wrapper.generateKeys().then(function(keys) {
|
||||||
|
@ -38909,19 +38888,19 @@ window.textsecure.registerSecondDevice = function(encodedProvisionEnvelope, cryp
|
||||||
stepDone(1);
|
stepDone(1);
|
||||||
|
|
||||||
var signalingKey = textsecure.crypto.getRandomBytes(32 + 20);
|
var signalingKey = textsecure.crypto.getRandomBytes(32 + 20);
|
||||||
textsecure.storage.putEncrypted('signaling_key', signalingKey);
|
textsecure.storage.put('signaling_key', signalingKey);
|
||||||
|
|
||||||
var password = btoa(getString(textsecure.crypto.getRandomBytes(16)));
|
var password = btoa(getString(textsecure.crypto.getRandomBytes(16)));
|
||||||
password = password.substring(0, password.length - 2);
|
password = password.substring(0, password.length - 2);
|
||||||
textsecure.storage.putEncrypted("password", password);
|
textsecure.storage.put("password", password);
|
||||||
|
|
||||||
var registrationId = new Uint16Array(textsecure.crypto.getRandomBytes(2))[0];
|
var registrationId = new Uint16Array(textsecure.crypto.getRandomBytes(2))[0];
|
||||||
registrationId = registrationId & 0x3fff;
|
registrationId = registrationId & 0x3fff;
|
||||||
textsecure.storage.putUnencrypted("registrationId", registrationId);
|
textsecure.storage.put("registrationId", registrationId);
|
||||||
|
|
||||||
return textsecure.api.confirmCode(identityKey.number, identityKey.provisioningCode, password, signalingKey, registrationId, false).then(function(result) {
|
return textsecure.api.confirmCode(identityKey.number, identityKey.provisioningCode, password, signalingKey, registrationId, false).then(function(result) {
|
||||||
textsecure.storage.user.setNumberAndDeviceId(identityKey.number, result.deviceId);
|
textsecure.storage.user.setNumberAndDeviceId(identityKey.number, result.deviceId);
|
||||||
textsecure.storage.putUnencrypted("regionCode", libphonenumber.util.getRegionCodeForNumber(identityKey.number));
|
textsecure.storage.put("regionCode", libphonenumber.util.getRegionCodeForNumber(identityKey.number));
|
||||||
stepDone(2);
|
stepDone(2);
|
||||||
|
|
||||||
return textsecure.protocol_wrapper.generateKeys().then(function(keys) {
|
return textsecure.protocol_wrapper.generateKeys().then(function(keys) {
|
||||||
|
@ -39130,7 +39109,7 @@ window.textsecure.api = function () {
|
||||||
|
|
||||||
if (param.do_auth) {
|
if (param.do_auth) {
|
||||||
param.user = textsecure.storage.user.getNumber() + "." + textsecure.storage.user.getDeviceId();
|
param.user = textsecure.storage.user.getNumber() + "." + textsecure.storage.user.getDeviceId();
|
||||||
param.password = textsecure.storage.getEncrypted("password");
|
param.password = textsecure.storage.get("password");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
@ -39356,7 +39335,7 @@ window.textsecure.api = function () {
|
||||||
var params = '';
|
var params = '';
|
||||||
if (auth) {
|
if (auth) {
|
||||||
var user = textsecure.storage.user.getNumber() + "." + textsecure.storage.user.getDeviceId();
|
var user = textsecure.storage.user.getNumber() + "." + textsecure.storage.user.getDeviceId();
|
||||||
var password = textsecure.storage.getEncrypted("password");
|
var password = textsecure.storage.get("password");
|
||||||
var params = 'login=%2B' + encodeURIComponent(user.substring(1)) + '&password=' + encodeURIComponent(password);
|
var params = 'login=%2B' + encodeURIComponent(user.substring(1)) + '&password=' + encodeURIComponent(password);
|
||||||
}
|
}
|
||||||
return window.textsecure.websocket(URL+params)
|
return window.textsecure.websocket(URL+params)
|
||||||
|
|
|
@ -95,11 +95,11 @@
|
||||||
localStorage.clear();
|
localStorage.clear();
|
||||||
|
|
||||||
localStorage.setItem('first_install_ran', 1);
|
localStorage.setItem('first_install_ran', 1);
|
||||||
textsecure.storage.putUnencrypted('registrationId', registrationId);
|
textsecure.storage.put('registrationId', registrationId);
|
||||||
textsecure.storage.putEncrypted('signaling_key', signalingKey);
|
textsecure.storage.put('signaling_key', signalingKey);
|
||||||
textsecure.storage.putEncrypted('password', password);
|
textsecure.storage.put('password', password);
|
||||||
textsecure.storage.user.setNumberAndDeviceId(number, 1);
|
textsecure.storage.user.setNumberAndDeviceId(number, 1);
|
||||||
textsecure.storage.putUnencrypted('regionCode', libphonenumber.util.getRegionCodeForNumber(number));
|
textsecure.storage.put('regionCode', libphonenumber.util.getRegionCodeForNumber(number));
|
||||||
|
|
||||||
log('verifying code');
|
log('verifying code');
|
||||||
return textsecure.api.confirmCode(
|
return textsecure.api.confirmCode(
|
||||||
|
|
|
@ -96,7 +96,7 @@ window.textsecure.api = function () {
|
||||||
|
|
||||||
if (param.do_auth) {
|
if (param.do_auth) {
|
||||||
param.user = textsecure.storage.user.getNumber() + "." + textsecure.storage.user.getDeviceId();
|
param.user = textsecure.storage.user.getNumber() + "." + textsecure.storage.user.getDeviceId();
|
||||||
param.password = textsecure.storage.getEncrypted("password");
|
param.password = textsecure.storage.get("password");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
|
@ -322,7 +322,7 @@ window.textsecure.api = function () {
|
||||||
var params = '';
|
var params = '';
|
||||||
if (auth) {
|
if (auth) {
|
||||||
var user = textsecure.storage.user.getNumber() + "." + textsecure.storage.user.getDeviceId();
|
var user = textsecure.storage.user.getNumber() + "." + textsecure.storage.user.getDeviceId();
|
||||||
var password = textsecure.storage.getEncrypted("password");
|
var password = textsecure.storage.get("password");
|
||||||
var params = 'login=%2B' + encodeURIComponent(user.substring(1)) + '&password=' + encodeURIComponent(password);
|
var params = 'login=%2B' + encodeURIComponent(user.substring(1)) + '&password=' + encodeURIComponent(password);
|
||||||
}
|
}
|
||||||
return window.textsecure.websocket(URL+params)
|
return window.textsecure.websocket(URL+params)
|
||||||
|
|
|
@ -5,16 +5,16 @@
|
||||||
;(function() {
|
;(function() {
|
||||||
var axolotlInstance = axolotl.protocol({
|
var axolotlInstance = axolotl.protocol({
|
||||||
getMyRegistrationId: function() {
|
getMyRegistrationId: function() {
|
||||||
return textsecure.storage.getUnencrypted("registrationId");
|
return textsecure.storage.get("registrationId");
|
||||||
},
|
},
|
||||||
put: function(key, value) {
|
put: function(key, value) {
|
||||||
return textsecure.storage.putEncrypted(key, value);
|
return textsecure.storage.put(key, value);
|
||||||
},
|
},
|
||||||
get: function(key, defaultValue) {
|
get: function(key, defaultValue) {
|
||||||
return textsecure.storage.getEncrypted(key, defaultValue);
|
return textsecure.storage.get(key, defaultValue);
|
||||||
},
|
},
|
||||||
remove: function(key) {
|
remove: function(key) {
|
||||||
return textsecure.storage.removeEncrypted(key);
|
return textsecure.storage.remove(key);
|
||||||
},
|
},
|
||||||
|
|
||||||
identityKeys: {
|
identityKeys: {
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
window.textsecure.crypto = {
|
window.textsecure.crypto = {
|
||||||
// Decrypts message into a raw string
|
// Decrypts message into a raw string
|
||||||
decryptWebsocketMessage: function(message) {
|
decryptWebsocketMessage: function(message) {
|
||||||
var signaling_key = textsecure.storage.getEncrypted("signaling_key"); //TODO: in crypto_storage
|
var signaling_key = textsecure.storage.get("signaling_key"); //TODO: in crypto_storage
|
||||||
var aes_key = toArrayBuffer(signaling_key.substring(0, 32));
|
var aes_key = toArrayBuffer(signaling_key.substring(0, 32));
|
||||||
var mac_key = toArrayBuffer(signaling_key.substring(32, 32 + 20));
|
var mac_key = toArrayBuffer(signaling_key.substring(32, 32 + 20));
|
||||||
|
|
||||||
|
|
|
@ -255,19 +255,19 @@ textsecure.processDecrypted = function(decrypted, source) {
|
||||||
|
|
||||||
window.textsecure.registerSingleDevice = function(number, verificationCode, stepDone) {
|
window.textsecure.registerSingleDevice = function(number, verificationCode, stepDone) {
|
||||||
var signalingKey = textsecure.crypto.getRandomBytes(32 + 20);
|
var signalingKey = textsecure.crypto.getRandomBytes(32 + 20);
|
||||||
textsecure.storage.putEncrypted('signaling_key', signalingKey);
|
textsecure.storage.put('signaling_key', signalingKey);
|
||||||
|
|
||||||
var password = btoa(getString(textsecure.crypto.getRandomBytes(16)));
|
var password = btoa(getString(textsecure.crypto.getRandomBytes(16)));
|
||||||
password = password.substring(0, password.length - 2);
|
password = password.substring(0, password.length - 2);
|
||||||
textsecure.storage.putEncrypted("password", password);
|
textsecure.storage.put("password", password);
|
||||||
|
|
||||||
var registrationId = new Uint16Array(textsecure.crypto.getRandomBytes(2))[0];
|
var registrationId = new Uint16Array(textsecure.crypto.getRandomBytes(2))[0];
|
||||||
registrationId = registrationId & 0x3fff;
|
registrationId = registrationId & 0x3fff;
|
||||||
textsecure.storage.putUnencrypted("registrationId", registrationId);
|
textsecure.storage.put("registrationId", registrationId);
|
||||||
|
|
||||||
return textsecure.api.confirmCode(number, verificationCode, password, signalingKey, registrationId, true).then(function() {
|
return textsecure.api.confirmCode(number, verificationCode, password, signalingKey, registrationId, true).then(function() {
|
||||||
textsecure.storage.user.setNumberAndDeviceId(number, 1);
|
textsecure.storage.user.setNumberAndDeviceId(number, 1);
|
||||||
textsecure.storage.putUnencrypted("regionCode", libphonenumber.util.getRegionCodeForNumber(number));
|
textsecure.storage.put("regionCode", libphonenumber.util.getRegionCodeForNumber(number));
|
||||||
stepDone(1);
|
stepDone(1);
|
||||||
|
|
||||||
return textsecure.protocol_wrapper.generateKeys().then(function(keys) {
|
return textsecure.protocol_wrapper.generateKeys().then(function(keys) {
|
||||||
|
@ -285,19 +285,19 @@ window.textsecure.registerSecondDevice = function(encodedProvisionEnvelope, cryp
|
||||||
stepDone(1);
|
stepDone(1);
|
||||||
|
|
||||||
var signalingKey = textsecure.crypto.getRandomBytes(32 + 20);
|
var signalingKey = textsecure.crypto.getRandomBytes(32 + 20);
|
||||||
textsecure.storage.putEncrypted('signaling_key', signalingKey);
|
textsecure.storage.put('signaling_key', signalingKey);
|
||||||
|
|
||||||
var password = btoa(getString(textsecure.crypto.getRandomBytes(16)));
|
var password = btoa(getString(textsecure.crypto.getRandomBytes(16)));
|
||||||
password = password.substring(0, password.length - 2);
|
password = password.substring(0, password.length - 2);
|
||||||
textsecure.storage.putEncrypted("password", password);
|
textsecure.storage.put("password", password);
|
||||||
|
|
||||||
var registrationId = new Uint16Array(textsecure.crypto.getRandomBytes(2))[0];
|
var registrationId = new Uint16Array(textsecure.crypto.getRandomBytes(2))[0];
|
||||||
registrationId = registrationId & 0x3fff;
|
registrationId = registrationId & 0x3fff;
|
||||||
textsecure.storage.putUnencrypted("registrationId", registrationId);
|
textsecure.storage.put("registrationId", registrationId);
|
||||||
|
|
||||||
return textsecure.api.confirmCode(identityKey.number, identityKey.provisioningCode, password, signalingKey, registrationId, false).then(function(result) {
|
return textsecure.api.confirmCode(identityKey.number, identityKey.provisioningCode, password, signalingKey, registrationId, false).then(function(result) {
|
||||||
textsecure.storage.user.setNumberAndDeviceId(identityKey.number, result.deviceId);
|
textsecure.storage.user.setNumberAndDeviceId(identityKey.number, result.deviceId);
|
||||||
textsecure.storage.putUnencrypted("regionCode", libphonenumber.util.getRegionCodeForNumber(identityKey.number));
|
textsecure.storage.put("regionCode", libphonenumber.util.getRegionCodeForNumber(identityKey.number));
|
||||||
stepDone(2);
|
stepDone(2);
|
||||||
|
|
||||||
return textsecure.protocol_wrapper.generateKeys().then(function(keys) {
|
return textsecure.protocol_wrapper.generateKeys().then(function(keys) {
|
||||||
|
|
|
@ -25,45 +25,25 @@
|
||||||
window.textsecure.storage = window.textsecure.storage || {};
|
window.textsecure.storage = window.textsecure.storage || {};
|
||||||
|
|
||||||
window.textsecure.storage = {
|
window.textsecure.storage = {
|
||||||
|
|
||||||
/*****************************
|
/*****************************
|
||||||
*** Base Storage Routines ***
|
*** Base Storage Routines ***
|
||||||
*****************************/
|
*****************************/
|
||||||
putEncrypted: function(key, value) {
|
put: function(key, value) {
|
||||||
//TODO
|
|
||||||
if (value === undefined)
|
if (value === undefined)
|
||||||
throw new Error("Tried to store undefined");
|
throw new Error("Tried to store undefined");
|
||||||
localStorage.setItem("e" + key, textsecure.utils.jsonThing(value));
|
localStorage.setItem("" + key, textsecure.utils.jsonThing(value));
|
||||||
},
|
},
|
||||||
|
|
||||||
getEncrypted: function(key, defaultValue) {
|
get: function(key, defaultValue) {
|
||||||
//TODO
|
var value = localStorage.getItem("" + key);
|
||||||
var value = localStorage.getItem("e" + key);
|
|
||||||
if (value === null)
|
if (value === null)
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
return JSON.parse(value);
|
return JSON.parse(value);
|
||||||
},
|
},
|
||||||
|
|
||||||
removeEncrypted: function(key) {
|
remove: function(key) {
|
||||||
localStorage.removeItem("e" + key);
|
localStorage.removeItem("" + key);
|
||||||
},
|
},
|
||||||
|
|
||||||
putUnencrypted: function(key, value) {
|
|
||||||
if (value === undefined)
|
|
||||||
throw new Error("Tried to store undefined");
|
|
||||||
localStorage.setItem("u" + key, textsecure.utils.jsonThing(value));
|
|
||||||
},
|
|
||||||
|
|
||||||
getUnencrypted: function(key, defaultValue) {
|
|
||||||
var value = localStorage.getItem("u" + key);
|
|
||||||
if (value === null)
|
|
||||||
return defaultValue;
|
|
||||||
return JSON.parse(value);
|
|
||||||
},
|
|
||||||
|
|
||||||
removeUnencrypted: function(key) {
|
|
||||||
localStorage.removeItem("u" + key);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
getDeviceObjectsForNumber: function(number) {
|
getDeviceObjectsForNumber: function(number) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
if (map === undefined)
|
if (map === undefined)
|
||||||
return [];
|
return [];
|
||||||
for (key in map.devices) {
|
for (key in map.devices) {
|
||||||
|
@ -62,23 +62,23 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
getIdentityKeyForNumber: function(number) {
|
getIdentityKeyForNumber: function(number) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
return map === undefined ? undefined : map.identityKey;
|
return map === undefined ? undefined : map.identityKey;
|
||||||
},
|
},
|
||||||
|
|
||||||
checkSaveIdentityKeyForNumber: function(number, identityKey) {
|
checkSaveIdentityKeyForNumber: function(number, identityKey) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
if (map === undefined)
|
if (map === undefined)
|
||||||
textsecure.storage.putEncrypted("devices" + number, { devices: [], identityKey: identityKey});
|
textsecure.storage.put("devices" + number, { devices: [], identityKey: identityKey});
|
||||||
else if (getString(map.identityKey) !== getString(identityKey))
|
else if (getString(map.identityKey) !== getString(identityKey))
|
||||||
throw new Error("Attempted to overwrite a different identity key");
|
throw new Error("Attempted to overwrite a different identity key");
|
||||||
},
|
},
|
||||||
|
|
||||||
removeIdentityKeyForNumber: function(number) {
|
removeIdentityKeyForNumber: function(number) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
if (map === undefined)
|
if (map === undefined)
|
||||||
throw new Error("Tried to remove identity for unknown number");
|
throw new Error("Tried to remove identity for unknown number");
|
||||||
textsecure.storage.removeEncrypted("devices" + number);
|
textsecure.storage.remove("devices" + number);
|
||||||
},
|
},
|
||||||
|
|
||||||
getDeviceObject: function(encodedNumber, returnIdentityKey) {
|
getDeviceObject: function(encodedNumber, returnIdentityKey) {
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
removeDeviceIdsForNumber: function(number, deviceIdsToRemove) {
|
removeDeviceIdsForNumber: function(number, deviceIdsToRemove) {
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
if (map === undefined)
|
if (map === undefined)
|
||||||
throw new Error("Tried to remove device for unknown number");
|
throw new Error("Tried to remove device for unknown number");
|
||||||
|
|
||||||
|
@ -126,10 +126,10 @@
|
||||||
throw new Error("Tried to remove unknown device");
|
throw new Error("Tried to remove unknown device");
|
||||||
|
|
||||||
if (newDevices.length === 0)
|
if (newDevices.length === 0)
|
||||||
textsecure.storage.removeEncrypted("devices" + number);
|
textsecure.storage.remove("devices" + number);
|
||||||
else {
|
else {
|
||||||
map.devices = newDevices;
|
map.devices = newDevices;
|
||||||
textsecure.storage.putEncrypted("devices" + number, map);
|
textsecure.storage.put("devices" + number, map);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -139,7 +139,7 @@
|
||||||
throw new Error("Tried to store invalid deviceObject");
|
throw new Error("Tried to store invalid deviceObject");
|
||||||
|
|
||||||
var number = textsecure.utils.unencodeNumber(deviceObject.encodedNumber)[0];
|
var number = textsecure.utils.unencodeNumber(deviceObject.encodedNumber)[0];
|
||||||
var map = textsecure.storage.getEncrypted("devices" + number);
|
var map = textsecure.storage.get("devices" + number);
|
||||||
|
|
||||||
if (deviceObject.sessions !== undefined)
|
if (deviceObject.sessions !== undefined)
|
||||||
deviceObject.sessions = deviceObject.sessions.serialize()
|
deviceObject.sessions = deviceObject.sessions.serialize()
|
||||||
|
@ -170,6 +170,6 @@
|
||||||
map.devices.push(deviceObject);
|
map.devices.push(deviceObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
textsecure.storage.putEncrypted("devices" + number, map);
|
textsecure.storage.put("devices" + number, map);
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -25,10 +25,10 @@
|
||||||
|
|
||||||
window.textsecure.storage.groups = {
|
window.textsecure.storage.groups = {
|
||||||
createNewGroup: function(numbers, groupId) {
|
createNewGroup: function(numbers, groupId) {
|
||||||
if (groupId !== undefined && textsecure.storage.getEncrypted("group" + groupId) !== undefined)
|
if (groupId !== undefined && textsecure.storage.get("group" + groupId) !== undefined)
|
||||||
throw new Error("Tried to recreate group");
|
throw new Error("Tried to recreate group");
|
||||||
|
|
||||||
while (groupId === undefined || textsecure.storage.getEncrypted("group" + groupId) !== undefined)
|
while (groupId === undefined || textsecure.storage.get("group" + groupId) !== undefined)
|
||||||
groupId = getString(textsecure.crypto.getRandomBytes(16));
|
groupId = getString(textsecure.crypto.getRandomBytes(16));
|
||||||
|
|
||||||
var me = textsecure.storage.user.getNumber();
|
var me = textsecure.storage.user.getNumber();
|
||||||
|
@ -51,13 +51,13 @@
|
||||||
for (var i in finalNumbers)
|
for (var i in finalNumbers)
|
||||||
groupObject.numberRegistrationIds[finalNumbers[i]] = {};
|
groupObject.numberRegistrationIds[finalNumbers[i]] = {};
|
||||||
|
|
||||||
textsecure.storage.putEncrypted("group" + groupId, groupObject);
|
textsecure.storage.put("group" + groupId, groupObject);
|
||||||
|
|
||||||
return {id: groupId, numbers: finalNumbers};
|
return {id: groupId, numbers: finalNumbers};
|
||||||
},
|
},
|
||||||
|
|
||||||
getNumbers: function(groupId) {
|
getNumbers: function(groupId) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
removeNumber: function(groupId, number) {
|
removeNumber: function(groupId, number) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
@ -77,14 +77,14 @@
|
||||||
if (i > -1) {
|
if (i > -1) {
|
||||||
group.numbers.slice(i, 1);
|
group.numbers.slice(i, 1);
|
||||||
delete group.numberRegistrationIds[number];
|
delete group.numberRegistrationIds[number];
|
||||||
textsecure.storage.putEncrypted("group" + groupId, group);
|
textsecure.storage.put("group" + groupId, group);
|
||||||
}
|
}
|
||||||
|
|
||||||
return group.numbers;
|
return group.numbers;
|
||||||
},
|
},
|
||||||
|
|
||||||
addNumbers: function(groupId, numbers) {
|
addNumbers: function(groupId, numbers) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
@ -98,16 +98,16 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
textsecure.storage.putEncrypted("group" + groupId, group);
|
textsecure.storage.put("group" + groupId, group);
|
||||||
return group.numbers;
|
return group.numbers;
|
||||||
},
|
},
|
||||||
|
|
||||||
deleteGroup: function(groupId) {
|
deleteGroup: function(groupId) {
|
||||||
textsecure.storage.removeEncrypted("group" + groupId);
|
textsecure.storage.remove("group" + groupId);
|
||||||
},
|
},
|
||||||
|
|
||||||
getGroup: function(groupId) {
|
getGroup: function(groupId) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
needUpdateByDeviceRegistrationId: function(groupId, number, encodedNumber, registrationId) {
|
needUpdateByDeviceRegistrationId: function(groupId, number, encodedNumber, registrationId) {
|
||||||
var group = textsecure.storage.getEncrypted("group" + groupId);
|
var group = textsecure.storage.get("group" + groupId);
|
||||||
if (group === undefined)
|
if (group === undefined)
|
||||||
throw new Error("Unknown group for device registration id");
|
throw new Error("Unknown group for device registration id");
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@
|
||||||
|
|
||||||
var needUpdate = group.numberRegistrationIds[number][encodedNumber] !== undefined;
|
var needUpdate = group.numberRegistrationIds[number][encodedNumber] !== undefined;
|
||||||
group.numberRegistrationIds[number][encodedNumber] = registrationId;
|
group.numberRegistrationIds[number][encodedNumber] = registrationId;
|
||||||
textsecure.storage.putEncrypted("group" + groupId, group);
|
textsecure.storage.put("group" + groupId, group);
|
||||||
return needUpdate;
|
return needUpdate;
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,18 +25,18 @@
|
||||||
|
|
||||||
window.textsecure.storage.user = {
|
window.textsecure.storage.user = {
|
||||||
setNumberAndDeviceId: function(number, deviceId) {
|
setNumberAndDeviceId: function(number, deviceId) {
|
||||||
textsecure.storage.putUnencrypted("number_id", number + "." + deviceId);
|
textsecure.storage.put("number_id", number + "." + deviceId);
|
||||||
},
|
},
|
||||||
|
|
||||||
getNumber: function(key, defaultValue) {
|
getNumber: function(key, defaultValue) {
|
||||||
var number_id = textsecure.storage.getUnencrypted("number_id");
|
var number_id = textsecure.storage.get("number_id");
|
||||||
if (number_id === undefined)
|
if (number_id === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
return textsecure.utils.unencodeNumber(number_id)[0];
|
return textsecure.utils.unencodeNumber(number_id)[0];
|
||||||
},
|
},
|
||||||
|
|
||||||
getDeviceId: function(key) {
|
getDeviceId: function(key) {
|
||||||
var number_id = textsecure.storage.getUnencrypted("number_id");
|
var number_id = textsecure.storage.get("number_id");
|
||||||
if (number_id === undefined)
|
if (number_id === undefined)
|
||||||
return undefined;
|
return undefined;
|
||||||
return textsecure.utils.unencodeNumber(number_id)[1];
|
return textsecure.utils.unencodeNumber(number_id)[1];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue