Update protocol libs

Rename storage functions

// FREEBIE
This commit is contained in:
lilia 2016-04-21 15:40:43 -07:00
parent b5ddd41a5e
commit 1fe5d63015
11 changed files with 91 additions and 91 deletions

View file

@ -83,7 +83,7 @@
AxolotlStore.prototype = { AxolotlStore.prototype = {
constructor: AxolotlStore, constructor: AxolotlStore,
getMyIdentityKey: function() { getIdentityKeyPair: function() {
var item = new Item({id: 'identityKey'}); var item = new Item({id: 'identityKey'});
return new Promise(function(resolve) { return new Promise(function(resolve) {
item.fetch().then(function() { item.fetch().then(function() {
@ -91,7 +91,7 @@
}); });
}); });
}, },
getMyRegistrationId: function() { getLocalRegistrationId: function() {
var item = new Item({id: 'registrationId'}); var item = new Item({id: 'registrationId'});
return new Promise(function(resolve) { return new Promise(function(resolve) {
item.fetch().then(function() { item.fetch().then(function() {
@ -101,7 +101,7 @@
}, },
/* Returns a prekeypair object or undefined */ /* Returns a prekeypair object or undefined */
getPreKey: function(keyId) { loadPreKey: function(keyId) {
var prekey = new PreKey({id: keyId}); var prekey = new PreKey({id: keyId});
return new Promise(function(resolve) { return new Promise(function(resolve) {
prekey.fetch().then(function() { prekey.fetch().then(function() {
@ -112,7 +112,7 @@
}).fail(resolve); }).fail(resolve);
}); });
}, },
putPreKey: function(keyId, keyPair) { storePreKey: function(keyId, keyPair) {
var prekey = new PreKey({ var prekey = new PreKey({
id : keyId, id : keyId,
publicKey : keyPair.pubKey, publicKey : keyPair.pubKey,
@ -139,7 +139,7 @@
}, },
/* Returns a signed keypair object or undefined */ /* Returns a signed keypair object or undefined */
getSignedPreKey: function(keyId) { loadSignedPreKey: function(keyId) {
var prekey = new SignedPreKey({id: keyId}); var prekey = new SignedPreKey({id: keyId});
return new Promise(function(resolve) { return new Promise(function(resolve) {
prekey.fetch().then(function() { prekey.fetch().then(function() {
@ -150,7 +150,7 @@
}).fail(resolve); }).fail(resolve);
}); });
}, },
putSignedPreKey: function(keyId, keyPair) { storeSignedPreKey: function(keyId, keyPair) {
var prekey = new SignedPreKey({ var prekey = new SignedPreKey({
id : keyId, id : keyId,
publicKey : keyPair.pubKey, publicKey : keyPair.pubKey,
@ -171,7 +171,7 @@
}); });
}, },
getSession: function(encodedNumber) { loadSession: function(encodedNumber) {
if (encodedNumber === null || encodedNumber === undefined) { if (encodedNumber === null || encodedNumber === undefined) {
throw new Error("Tried to get session for undefined/null number"); throw new Error("Tried to get session for undefined/null number");
} }
@ -183,7 +183,7 @@
}); });
}, },
putSession: function(encodedNumber, record) { storeSession: function(encodedNumber, record) {
if (encodedNumber === null || encodedNumber === undefined) { if (encodedNumber === null || encodedNumber === undefined) {
throw new Error("Tried to put session for undefined/null number"); throw new Error("Tried to put session for undefined/null number");
} }
@ -246,7 +246,7 @@
}); });
}, },
getIdentityKey: function(identifier) { loadIdentityKey: function(identifier) {
if (identifier === null || identifier === undefined) { if (identifier === null || identifier === undefined) {
throw new Error("Tried to get identity key for undefined/null key"); throw new Error("Tried to get identity key for undefined/null key");
} }

View file

@ -34330,7 +34330,7 @@ window.axolotl.protocol = function(storage_interface) {
var crypto_storage = {}; var crypto_storage = {};
function getRecord(encodedNumber) { function getRecord(encodedNumber) {
return storage_interface.getSession(encodedNumber).then(function(serialized) { return storage_interface.loadSession(encodedNumber).then(function(serialized) {
if (serialized === undefined) { if (serialized === undefined) {
return undefined; return undefined;
} }
@ -34390,12 +34390,12 @@ window.axolotl.protocol = function(storage_interface) {
else if (record.registrationId === null) else if (record.registrationId === null)
throw new Error("Had open sessions on a record that had no registrationId set"); throw new Error("Had open sessions on a record that had no registrationId set");
return storage_interface.getIdentityKey(encodedNumber).then(function(identityKey) { return storage_interface.loadIdentityKey(encodedNumber).then(function(identityKey) {
if (identityKey !== undefined && toString(identityKey) !== toString(record.identityKey)) if (identityKey !== undefined && toString(identityKey) !== toString(record.identityKey))
throw new Error("Tried to change identity key at save time"); throw new Error("Tried to change identity key at save time");
return storage_interface.putIdentityKey(encodedNumber, record.identityKey).then(function() { return storage_interface.putIdentityKey(encodedNumber, record.identityKey).then(function() {
return storage_interface.putSession(encodedNumber, record.serialize()); return storage_interface.storeSession(encodedNumber, record.serialize());
}); });
}); });
}); });
@ -34462,7 +34462,7 @@ window.axolotl.protocol = function(storage_interface) {
crypto_storage.getSessionOrIdentityKeyByBaseKey = function(encodedNumber, baseKey) { crypto_storage.getSessionOrIdentityKeyByBaseKey = function(encodedNumber, baseKey) {
return getRecord(encodedNumber).then(function(record) { return getRecord(encodedNumber).then(function(record) {
if (record === undefined) { if (record === undefined) {
return storage_interface.getIdentityKey(encodedNumber).then(function(identityKey) { return storage_interface.loadIdentityKey(encodedNumber).then(function(identityKey) {
if (identityKey === undefined) if (identityKey === undefined)
return undefined; return undefined;
return { indexInfo: { remoteIdentityKey: identityKey } }; return { indexInfo: { remoteIdentityKey: identityKey } };
@ -34538,7 +34538,7 @@ window.axolotl.protocol = function(storage_interface) {
} }
var initSession = function(isInitiator, ourEphemeralKey, ourSignedKey, encodedNumber, theirIdentityPubKey, theirEphemeralPubKey, theirSignedPubKey) { var initSession = function(isInitiator, ourEphemeralKey, ourSignedKey, encodedNumber, theirIdentityPubKey, theirEphemeralPubKey, theirSignedPubKey) {
return storage_interface.getMyIdentityKey().then(function(ourIdentityKey) { return storage_interface.getIdentityKeyPair().then(function(ourIdentityKey) {
if (isInitiator) { if (isInitiator) {
if (ourSignedKey !== undefined) { if (ourSignedKey !== undefined) {
throw new Error("Invalid call to initSession"); throw new Error("Invalid call to initSession");
@ -34674,8 +34674,8 @@ window.axolotl.protocol = function(storage_interface) {
var initSessionFromPreKeyWhisperMessage = function(encodedNumber, message) { var initSessionFromPreKeyWhisperMessage = function(encodedNumber, message) {
var preKeyPair, signedPreKeyPair, session; var preKeyPair, signedPreKeyPair, session;
return Promise.all([ return Promise.all([
storage_interface.getPreKey(message.preKeyId), storage_interface.loadPreKey(message.preKeyId),
storage_interface.getSignedPreKey(message.signedPreKeyId), storage_interface.loadSignedPreKey(message.signedPreKeyId),
crypto_storage.getSessionOrIdentityKeyByBaseKey(encodedNumber, toArrayBuffer(message.baseKey)) crypto_storage.getSessionOrIdentityKeyByBaseKey(encodedNumber, toArrayBuffer(message.baseKey))
]).then(function(results) { ]).then(function(results) {
preKeyPair = results[0]; preKeyPair = results[0];
@ -34839,7 +34839,7 @@ window.axolotl.protocol = function(storage_interface) {
return HKDF(toArrayBuffer(messageKey), '', "WhisperMessageKeys"); return HKDF(toArrayBuffer(messageKey), '', "WhisperMessageKeys");
}); });
}).then(function(keys) { }).then(function(keys) {
return storage_interface.getMyIdentityKey().then(function(ourIdentityKey) { return storage_interface.getIdentityKeyPair().then(function(ourIdentityKey) {
var macInput = new Uint8Array(messageProto.byteLength + 33*2 + 1); var macInput = new Uint8Array(messageProto.byteLength + 33*2 + 1);
macInput.set(new Uint8Array(toArrayBuffer(session.indexInfo.remoteIdentityKey))); macInput.set(new Uint8Array(toArrayBuffer(session.indexInfo.remoteIdentityKey)));
@ -34920,8 +34920,8 @@ window.axolotl.protocol = function(storage_interface) {
var ourIdentityKey, myRegistrationId, session, hadSession; var ourIdentityKey, myRegistrationId, session, hadSession;
return Promise.all([ return Promise.all([
storage_interface.getMyIdentityKey(), storage_interface.getIdentityKeyPair(),
storage_interface.getMyRegistrationId(), storage_interface.getLocalRegistrationId(),
crypto_storage.getOpenSession(deviceObject.encodedNumber) crypto_storage.getOpenSession(deviceObject.encodedNumber)
]).then(function(results) { ]).then(function(results) {
ourIdentityKey = results[0]; ourIdentityKey = results[0];
@ -35614,7 +35614,7 @@ axolotlInternal.RecipientRecord = function() {
window.textsecure.storage.devices = { window.textsecure.storage.devices = {
saveKeysToDeviceObject: function(deviceObject) { saveKeysToDeviceObject: function(deviceObject) {
var number = textsecure.utils.unencodeNumber(deviceObject.encodedNumber)[0]; var number = textsecure.utils.unencodeNumber(deviceObject.encodedNumber)[0];
return textsecure.storage.axolotl.getIdentityKey(number).then(function(identityKey) { return textsecure.storage.axolotl.loadIdentityKey(number).then(function(identityKey) {
if (identityKey !== undefined && deviceObject.identityKey !== undefined && getString(identityKey) != getString(deviceObject.identityKey)) { if (identityKey !== undefined && deviceObject.identityKey !== undefined && getString(identityKey) != getString(deviceObject.identityKey)) {
var error = new Error("Identity key changed"); var error = new Error("Identity key changed");
error.identityKey = deviceObject.identityKey; error.identityKey = deviceObject.identityKey;
@ -35658,7 +35658,7 @@ axolotlInternal.RecipientRecord = function() {
}); });
}, },
getDeviceObjectsForNumber: function(number) { getDeviceObjectsForNumber: function(number) {
return textsecure.storage.axolotl.getIdentityKey(number).then(function(identityKey) { return textsecure.storage.axolotl.loadIdentityKey(number).then(function(identityKey) {
if (identityKey === undefined) { if (identityKey === undefined) {
return []; return [];
} }
@ -36856,14 +36856,14 @@ var TextSecureServer = (function() {
var store = textsecure.storage.axolotl; var store = textsecure.storage.axolotl;
return store.getMyIdentityKey().then(function(identityKey) { return store.getIdentityKeyPair().then(function(identityKey) {
var result = { preKeys: [], identityKey: identityKey.pubKey }; var result = { preKeys: [], identityKey: identityKey.pubKey };
var promises = []; var promises = [];
for (var keyId = startId; keyId < startId+count; ++keyId) { for (var keyId = startId; keyId < startId+count; ++keyId) {
promises.push( promises.push(
axolotl.util.generatePreKey(keyId).then(function(res) { axolotl.util.generatePreKey(keyId).then(function(res) {
store.putPreKey(res.keyId, res.keyPair); store.storePreKey(res.keyId, res.keyPair);
result.preKeys.push({ result.preKeys.push({
keyId : res.keyId, keyId : res.keyId,
publicKey : res.keyPair.pubKey publicKey : res.keyPair.pubKey
@ -36875,7 +36875,7 @@ var TextSecureServer = (function() {
promises.push( promises.push(
axolotl.util.generateSignedPreKey(identityKey, signedKeyId).then(function(res) { axolotl.util.generateSignedPreKey(identityKey, signedKeyId).then(function(res) {
store.putSignedPreKey(res.keyId, res.keyPair); store.storeSignedPreKey(res.keyId, res.keyPair);
result.signedPreKey = { result.signedPreKey = {
keyId : res.keyId, keyId : res.keyId,
publicKey : res.keyPair.pubKey, publicKey : res.keyPair.pubKey,

View file

@ -170,8 +170,8 @@
if (this.model.isPrivate()) { if (this.model.isPrivate()) {
var their_number = this.model.id; var their_number = this.model.id;
var our_number = textsecure.storage.user.getNumber(); var our_number = textsecure.storage.user.getNumber();
textsecure.storage.axolotl.getIdentityKey(their_number).then(function(their_key) { textsecure.storage.axolotl.loadIdentityKey(their_number).then(function(their_key) {
textsecure.storage.axolotl.getIdentityKey(our_number).then(function(our_key) { textsecure.storage.axolotl.loadIdentityKey(our_number).then(function(our_key) {
var view = new Whisper.KeyVerificationPanelView({ var view = new Whisper.KeyVerificationPanelView({
model: { their_key: their_key, your_key: our_key } model: { their_key: their_key, your_key: our_key }
}).render(); }).render();

View file

@ -12,11 +12,11 @@
initialize: function(options) { initialize: function(options) {
this.contact = options.contact; this.contact = options.contact;
this.conversation = options.conversation; this.conversation = options.conversation;
textsecure.storage.axolotl.getIdentityKey(textsecure.storage.user.getNumber()).then(function(our_key) { textsecure.storage.axolotl.loadIdentityKey(textsecure.storage.user.getNumber()).then(function(our_key) {
this.your_key = our_key; this.your_key = our_key;
this.render(); this.render();
}.bind(this)); }.bind(this));
textsecure.storage.axolotl.getIdentityKey(textsecure.storage.user.getNumber()).then(function(our_key) { textsecure.storage.axolotl.loadIdentityKey(textsecure.storage.user.getNumber()).then(function(our_key) {
var view = new Whisper.KeyVerificationView({ var view = new Whisper.KeyVerificationView({
model: { model: {
their_key : this.model.identityKey, their_key : this.model.identityKey,

View file

@ -141,14 +141,14 @@
var store = textsecure.storage.axolotl; var store = textsecure.storage.axolotl;
return store.getMyIdentityKey().then(function(identityKey) { return store.getIdentityKeyPair().then(function(identityKey) {
var result = { preKeys: [], identityKey: identityKey.pubKey }; var result = { preKeys: [], identityKey: identityKey.pubKey };
var promises = []; var promises = [];
for (var keyId = startId; keyId < startId+count; ++keyId) { for (var keyId = startId; keyId < startId+count; ++keyId) {
promises.push( promises.push(
axolotl.util.generatePreKey(keyId).then(function(res) { axolotl.util.generatePreKey(keyId).then(function(res) {
store.putPreKey(res.keyId, res.keyPair); store.storePreKey(res.keyId, res.keyPair);
result.preKeys.push({ result.preKeys.push({
keyId : res.keyId, keyId : res.keyId,
publicKey : res.keyPair.pubKey publicKey : res.keyPair.pubKey
@ -160,7 +160,7 @@
promises.push( promises.push(
axolotl.util.generateSignedPreKey(identityKey, signedKeyId).then(function(res) { axolotl.util.generateSignedPreKey(identityKey, signedKeyId).then(function(res) {
store.putSignedPreKey(res.keyId, res.keyPair); store.storeSignedPreKey(res.keyId, res.keyPair);
result.signedPreKey = { result.signedPreKey = {
keyId : res.keyId, keyId : res.keyId,
publicKey : res.keyPair.pubKey, publicKey : res.keyPair.pubKey,

View file

@ -34216,7 +34216,7 @@ window.axolotl.protocol = function(storage_interface) {
var crypto_storage = {}; var crypto_storage = {};
function getRecord(encodedNumber) { function getRecord(encodedNumber) {
return storage_interface.getSession(encodedNumber).then(function(serialized) { return storage_interface.loadSession(encodedNumber).then(function(serialized) {
if (serialized === undefined) { if (serialized === undefined) {
return undefined; return undefined;
} }
@ -34276,12 +34276,12 @@ window.axolotl.protocol = function(storage_interface) {
else if (record.registrationId === null) else if (record.registrationId === null)
throw new Error("Had open sessions on a record that had no registrationId set"); throw new Error("Had open sessions on a record that had no registrationId set");
return storage_interface.getIdentityKey(encodedNumber).then(function(identityKey) { return storage_interface.loadIdentityKey(encodedNumber).then(function(identityKey) {
if (identityKey !== undefined && toString(identityKey) !== toString(record.identityKey)) if (identityKey !== undefined && toString(identityKey) !== toString(record.identityKey))
throw new Error("Tried to change identity key at save time"); throw new Error("Tried to change identity key at save time");
return storage_interface.putIdentityKey(encodedNumber, record.identityKey).then(function() { return storage_interface.putIdentityKey(encodedNumber, record.identityKey).then(function() {
return storage_interface.putSession(encodedNumber, record.serialize()); return storage_interface.storeSession(encodedNumber, record.serialize());
}); });
}); });
}); });
@ -34348,7 +34348,7 @@ window.axolotl.protocol = function(storage_interface) {
crypto_storage.getSessionOrIdentityKeyByBaseKey = function(encodedNumber, baseKey) { crypto_storage.getSessionOrIdentityKeyByBaseKey = function(encodedNumber, baseKey) {
return getRecord(encodedNumber).then(function(record) { return getRecord(encodedNumber).then(function(record) {
if (record === undefined) { if (record === undefined) {
return storage_interface.getIdentityKey(encodedNumber).then(function(identityKey) { return storage_interface.loadIdentityKey(encodedNumber).then(function(identityKey) {
if (identityKey === undefined) if (identityKey === undefined)
return undefined; return undefined;
return { indexInfo: { remoteIdentityKey: identityKey } }; return { indexInfo: { remoteIdentityKey: identityKey } };
@ -34424,7 +34424,7 @@ window.axolotl.protocol = function(storage_interface) {
} }
var initSession = function(isInitiator, ourEphemeralKey, ourSignedKey, encodedNumber, theirIdentityPubKey, theirEphemeralPubKey, theirSignedPubKey) { var initSession = function(isInitiator, ourEphemeralKey, ourSignedKey, encodedNumber, theirIdentityPubKey, theirEphemeralPubKey, theirSignedPubKey) {
return storage_interface.getMyIdentityKey().then(function(ourIdentityKey) { return storage_interface.getIdentityKeyPair().then(function(ourIdentityKey) {
if (isInitiator) { if (isInitiator) {
if (ourSignedKey !== undefined) { if (ourSignedKey !== undefined) {
throw new Error("Invalid call to initSession"); throw new Error("Invalid call to initSession");
@ -34560,8 +34560,8 @@ window.axolotl.protocol = function(storage_interface) {
var initSessionFromPreKeyWhisperMessage = function(encodedNumber, message) { var initSessionFromPreKeyWhisperMessage = function(encodedNumber, message) {
var preKeyPair, signedPreKeyPair, session; var preKeyPair, signedPreKeyPair, session;
return Promise.all([ return Promise.all([
storage_interface.getPreKey(message.preKeyId), storage_interface.loadPreKey(message.preKeyId),
storage_interface.getSignedPreKey(message.signedPreKeyId), storage_interface.loadSignedPreKey(message.signedPreKeyId),
crypto_storage.getSessionOrIdentityKeyByBaseKey(encodedNumber, toArrayBuffer(message.baseKey)) crypto_storage.getSessionOrIdentityKeyByBaseKey(encodedNumber, toArrayBuffer(message.baseKey))
]).then(function(results) { ]).then(function(results) {
preKeyPair = results[0]; preKeyPair = results[0];
@ -34725,7 +34725,7 @@ window.axolotl.protocol = function(storage_interface) {
return HKDF(toArrayBuffer(messageKey), '', "WhisperMessageKeys"); return HKDF(toArrayBuffer(messageKey), '', "WhisperMessageKeys");
}); });
}).then(function(keys) { }).then(function(keys) {
return storage_interface.getMyIdentityKey().then(function(ourIdentityKey) { return storage_interface.getIdentityKeyPair().then(function(ourIdentityKey) {
var macInput = new Uint8Array(messageProto.byteLength + 33*2 + 1); var macInput = new Uint8Array(messageProto.byteLength + 33*2 + 1);
macInput.set(new Uint8Array(toArrayBuffer(session.indexInfo.remoteIdentityKey))); macInput.set(new Uint8Array(toArrayBuffer(session.indexInfo.remoteIdentityKey)));
@ -34806,8 +34806,8 @@ window.axolotl.protocol = function(storage_interface) {
var ourIdentityKey, myRegistrationId, session, hadSession; var ourIdentityKey, myRegistrationId, session, hadSession;
return Promise.all([ return Promise.all([
storage_interface.getMyIdentityKey(), storage_interface.getIdentityKeyPair(),
storage_interface.getMyRegistrationId(), storage_interface.getLocalRegistrationId(),
crypto_storage.getOpenSession(deviceObject.encodedNumber) crypto_storage.getOpenSession(deviceObject.encodedNumber)
]).then(function(results) { ]).then(function(results) {
ourIdentityKey = results[0]; ourIdentityKey = results[0];

View file

@ -16,7 +16,7 @@
window.textsecure.storage.devices = { window.textsecure.storage.devices = {
saveKeysToDeviceObject: function(deviceObject) { saveKeysToDeviceObject: function(deviceObject) {
var number = textsecure.utils.unencodeNumber(deviceObject.encodedNumber)[0]; var number = textsecure.utils.unencodeNumber(deviceObject.encodedNumber)[0];
return textsecure.storage.axolotl.getIdentityKey(number).then(function(identityKey) { return textsecure.storage.axolotl.loadIdentityKey(number).then(function(identityKey) {
if (identityKey !== undefined && deviceObject.identityKey !== undefined && getString(identityKey) != getString(deviceObject.identityKey)) { if (identityKey !== undefined && deviceObject.identityKey !== undefined && getString(identityKey) != getString(deviceObject.identityKey)) {
var error = new Error("Identity key changed"); var error = new Error("Identity key changed");
error.identityKey = deviceObject.identityKey; error.identityKey = deviceObject.identityKey;
@ -60,7 +60,7 @@
}); });
}, },
getDeviceObjectsForNumber: function(number) { getDeviceObjectsForNumber: function(number) {
return textsecure.storage.axolotl.getIdentityKey(number).then(function(identityKey) { return textsecure.storage.axolotl.loadIdentityKey(number).then(function(identityKey) {
if (identityKey === undefined) { if (identityKey === undefined) {
return []; return [];
} }

View file

@ -19,25 +19,25 @@ describe("Key generation", function() {
} }
function itStoresPreKey(keyId) { function itStoresPreKey(keyId) {
it('prekey ' + keyId + ' is valid', function(done) { it('prekey ' + keyId + ' is valid', function(done) {
return textsecure.storage.axolotl.getPreKey(keyId).then(function(keyPair) { return textsecure.storage.axolotl.loadPreKey(keyId).then(function(keyPair) {
validateStoredKeyPair(keyPair); validateStoredKeyPair(keyPair);
}).then(done,done); }).then(done,done);
}); });
} }
function itStoresSignedPreKey(keyId) { function itStoresSignedPreKey(keyId) {
it('signed prekey ' + keyId + ' is valid', function(done) { it('signed prekey ' + keyId + ' is valid', function(done) {
return textsecure.storage.axolotl.getSignedPreKey(keyId).then(function(keyPair) { return textsecure.storage.axolotl.loadSignedPreKey(keyId).then(function(keyPair) {
validateStoredKeyPair(keyPair); validateStoredKeyPair(keyPair);
}).then(done,done); }).then(done,done);
}); });
} }
function validateResultKey(resultKey) { function validateResultKey(resultKey) {
return textsecure.storage.axolotl.getPreKey(resultKey.keyId).then(function(keyPair) { return textsecure.storage.axolotl.loadPreKey(resultKey.keyId).then(function(keyPair) {
assertEqualArrayBuffers(resultKey.publicKey, keyPair.pubKey); assertEqualArrayBuffers(resultKey.publicKey, keyPair.pubKey);
}); });
} }
function validateResultSignedKey(resultSignedKey) { function validateResultSignedKey(resultSignedKey) {
return textsecure.storage.axolotl.getSignedPreKey(resultSignedKey.keyId).then(function(keyPair) { return textsecure.storage.axolotl.loadSignedPreKey(resultSignedKey.keyId).then(function(keyPair) {
assertEqualArrayBuffers(resultSignedKey.publicKey, keyPair.pubKey); assertEqualArrayBuffers(resultSignedKey.publicKey, keyPair.pubKey);
}); });
} }
@ -164,7 +164,7 @@ describe("Key generation", function() {
validateResultSignedKey(result.signedPreKey).then(done,done); validateResultSignedKey(result.signedPreKey).then(done,done);
}); });
it('deletes signed key 1', function() { it('deletes signed key 1', function() {
textsecure.storage.axolotl.getSignedPreKey(1).then(function(keyPair) { textsecure.storage.axolotl.loadSignedPreKey(1).then(function(keyPair) {
assert.isUndefined(keyPair); assert.isUndefined(keyPair);
}); });
}); });

View file

@ -3,10 +3,10 @@ function AxolotlStore() {
} }
AxolotlStore.prototype = { AxolotlStore.prototype = {
getMyIdentityKey: function() { getIdentityKeyPair: function() {
return Promise.resolve(this.get('identityKey')); return Promise.resolve(this.get('identityKey'));
}, },
getMyRegistrationId: function() { getLocalRegistrationId: function() {
return Promise.resolve(this.get('registrationId')); return Promise.resolve(this.get('registrationId'));
}, },
put: function(key, value) { put: function(key, value) {
@ -29,7 +29,7 @@ AxolotlStore.prototype = {
delete this.store[key]; delete this.store[key];
}, },
getIdentityKey: function(identifier) { loadIdentityKey: function(identifier) {
if (identifier === null || identifier === undefined) if (identifier === null || identifier === undefined)
throw new Error("Tried to get identity key for undefined/null key"); throw new Error("Tried to get identity key for undefined/null key");
return new Promise(function(resolve) { return new Promise(function(resolve) {
@ -45,13 +45,13 @@ AxolotlStore.prototype = {
}, },
/* Returns a prekeypair object or undefined */ /* Returns a prekeypair object or undefined */
getPreKey: function(keyId) { loadPreKey: function(keyId) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
var res = this.get('25519KeypreKey' + keyId); var res = this.get('25519KeypreKey' + keyId);
resolve(res); resolve(res);
}.bind(this)); }.bind(this));
}, },
putPreKey: function(keyId, keyPair) { storePreKey: function(keyId, keyPair) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
resolve(this.put('25519KeypreKey' + keyId, keyPair)); resolve(this.put('25519KeypreKey' + keyId, keyPair));
}.bind(this)); }.bind(this));
@ -63,13 +63,13 @@ AxolotlStore.prototype = {
}, },
/* Returns a signed keypair object or undefined */ /* Returns a signed keypair object or undefined */
getSignedPreKey: function(keyId) { loadSignedPreKey: function(keyId) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
var res = this.get('25519KeysignedKey' + keyId); var res = this.get('25519KeysignedKey' + keyId);
resolve(res); resolve(res);
}.bind(this)); }.bind(this));
}, },
putSignedPreKey: function(keyId, keyPair) { storeSignedPreKey: function(keyId, keyPair) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
resolve(this.put('25519KeysignedKey' + keyId, keyPair)); resolve(this.put('25519KeysignedKey' + keyId, keyPair));
}.bind(this)); }.bind(this));
@ -80,12 +80,12 @@ AxolotlStore.prototype = {
}.bind(this)); }.bind(this));
}, },
getSession: function(identifier) { loadSession: function(identifier) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
resolve(this.get('session' + identifier)); resolve(this.get('session' + identifier));
}.bind(this)); }.bind(this));
}, },
putSession: function(identifier, record) { storeSession: function(identifier, record) {
return new Promise(function(resolve) { return new Promise(function(resolve) {
resolve(this.put('session' + identifier, record)); resolve(this.put('session' + identifier, record));
}.bind(this)); }.bind(this));

View file

@ -19,27 +19,27 @@ describe("AxolotlStore", function() {
}; };
it('retrieves my registration id', function(done) { it('retrieves my registration id', function(done) {
store.put('registrationId', 1337); store.put('registrationId', 1337);
store.getMyRegistrationId().then(function(reg) { store.getLocalRegistrationId().then(function(reg) {
assert.strictEqual(reg, 1337); assert.strictEqual(reg, 1337);
}).then(done, done); }).then(done, done);
}); });
it('retrieves my identity key', function(done) { it('retrieves my identity key', function(done) {
store.put('identityKey', identityKey); store.put('identityKey', identityKey);
store.getMyIdentityKey().then(function(key) { store.getIdentityKeyPair().then(function(key) {
assertEqualArrayBuffers(key.pubKey, identityKey.pubKey); assertEqualArrayBuffers(key.pubKey, identityKey.pubKey);
assertEqualArrayBuffers(key.privKey, identityKey.privKey); assertEqualArrayBuffers(key.privKey, identityKey.privKey);
}).then(done,done); }).then(done,done);
}); });
it('stores identity keys', function(done) { it('stores identity keys', function(done) {
store.putIdentityKey(identifier, testKey.pubKey).then(function() { store.putIdentityKey(identifier, testKey.pubKey).then(function() {
return store.getIdentityKey(identifier).then(function(key) { return store.loadIdentityKey(identifier).then(function(key) {
assertEqualArrayBuffers(key, testKey.pubKey); assertEqualArrayBuffers(key, testKey.pubKey);
}); });
}).then(done,done); }).then(done,done);
}); });
it('stores prekeys', function(done) { it('stores prekeys', function(done) {
store.putPreKey(1, testKey).then(function() { store.storePreKey(1, testKey).then(function() {
return store.getPreKey(1).then(function(key) { return store.loadPreKey(1).then(function(key) {
assertEqualArrayBuffers(key.pubKey, testKey.pubKey); assertEqualArrayBuffers(key.pubKey, testKey.pubKey);
assertEqualArrayBuffers(key.privKey, testKey.privKey); assertEqualArrayBuffers(key.privKey, testKey.privKey);
}); });
@ -47,17 +47,17 @@ describe("AxolotlStore", function() {
}); });
it('deletes prekeys', function(done) { it('deletes prekeys', function(done) {
before(function(done) { before(function(done) {
store.putPreKey(2, testKey).then(done); store.storePreKey(2, testKey).then(done);
}); });
store.removePreKey(2, testKey).then(function() { store.removePreKey(2, testKey).then(function() {
return store.getPreKey(2).then(function(key) { return store.loadPreKey(2).then(function(key) {
assert.isUndefined(key); assert.isUndefined(key);
}); });
}).then(done,done); }).then(done,done);
}); });
it('stores signed prekeys', function(done) { it('stores signed prekeys', function(done) {
store.putSignedPreKey(3, testKey).then(function() { store.storeSignedPreKey(3, testKey).then(function() {
return store.getSignedPreKey(3).then(function(key) { return store.loadSignedPreKey(3).then(function(key) {
assertEqualArrayBuffers(key.pubKey, testKey.pubKey); assertEqualArrayBuffers(key.pubKey, testKey.pubKey);
assertEqualArrayBuffers(key.privKey, testKey.privKey); assertEqualArrayBuffers(key.privKey, testKey.privKey);
}); });
@ -65,10 +65,10 @@ describe("AxolotlStore", function() {
}); });
it('deletes signed prekeys', function(done) { it('deletes signed prekeys', function(done) {
before(function(done) { before(function(done) {
store.putSignedPreKey(4, testKey).then(done); store.storeSignedPreKey(4, testKey).then(done);
}); });
store.removeSignedPreKey(4, testKey).then(function() { store.removeSignedPreKey(4, testKey).then(function() {
return store.getSignedPreKey(4).then(function(key) { return store.loadSignedPreKey(4).then(function(key) {
assert.isUndefined(key); assert.isUndefined(key);
}); });
}).then(done,done); }).then(done,done);
@ -81,11 +81,11 @@ describe("AxolotlStore", function() {
var promise = Promise.resolve(); var promise = Promise.resolve();
devices.forEach(function(encodedNumber) { devices.forEach(function(encodedNumber) {
promise = promise.then(function() { promise = promise.then(function() {
return store.putSession(encodedNumber, testRecord + encodedNumber) return store.storeSession(encodedNumber, testRecord + encodedNumber)
}); });
}); });
promise.then(function() { promise.then(function() {
return Promise.all(devices.map(store.getSession.bind(store))).then(function(records) { return Promise.all(devices.map(store.loadSession.bind(store))).then(function(records) {
for (var i in records) { for (var i in records) {
assert.strictEqual(records[i], testRecord + devices[i]); assert.strictEqual(records[i], testRecord + devices[i]);
}; };
@ -100,12 +100,12 @@ describe("AxolotlStore", function() {
var promise = Promise.resolve(); var promise = Promise.resolve();
devices.forEach(function(encodedNumber) { devices.forEach(function(encodedNumber) {
promise = promise.then(function() { promise = promise.then(function() {
return store.putSession(encodedNumber, testRecord + encodedNumber) return store.storeSession(encodedNumber, testRecord + encodedNumber)
}); });
}); });
promise.then(function() { promise.then(function() {
return store.removeAllSessions(identifier).then(function(record) { return store.removeAllSessions(identifier).then(function(record) {
return Promise.all(devices.map(store.getSession.bind(store))).then(function(records) { return Promise.all(devices.map(store.loadSession.bind(store))).then(function(records) {
for (var i in records) { for (var i in records) {
assert.isUndefined(records[i]); assert.isUndefined(records[i]);
}; };
@ -121,7 +121,7 @@ describe("AxolotlStore", function() {
var promise = Promise.resolve(); var promise = Promise.resolve();
devices.forEach(function(encodedNumber) { devices.forEach(function(encodedNumber) {
promise = promise.then(function() { promise = promise.then(function() {
return store.putSession(encodedNumber, testRecord + encodedNumber) return store.storeSession(encodedNumber, testRecord + encodedNumber)
}); });
}); });
promise.then(function() { promise.then(function() {

View file

@ -21,19 +21,19 @@ describe("AxolotlStore", function() {
privKey: textsecure.crypto.getRandomBytes(32), privKey: textsecure.crypto.getRandomBytes(32),
}; };
it('retrieves my registration id', function(done) { it('retrieves my registration id', function(done) {
store.getMyRegistrationId().then(function(reg) { store.getLocalRegistrationId().then(function(reg) {
assert.strictEqual(reg, 1337); assert.strictEqual(reg, 1337);
}).then(done, done); }).then(done, done);
}); });
it('retrieves my identity key', function(done) { it('retrieves my identity key', function(done) {
store.getMyIdentityKey().then(function(key) { store.getIdentityKeyPair().then(function(key) {
assertEqualArrayBuffers(key.pubKey, identityKey.pubKey); assertEqualArrayBuffers(key.pubKey, identityKey.pubKey);
assertEqualArrayBuffers(key.privKey, identityKey.privKey); assertEqualArrayBuffers(key.privKey, identityKey.privKey);
}).then(done,done); }).then(done,done);
}); });
it('stores identity keys', function(done) { it('stores identity keys', function(done) {
store.putIdentityKey(identifier, testKey.pubKey).then(function() { store.putIdentityKey(identifier, testKey.pubKey).then(function() {
return store.getIdentityKey(identifier).then(function(key) { return store.loadIdentityKey(identifier).then(function(key) {
assertEqualArrayBuffers(key, testKey.pubKey); assertEqualArrayBuffers(key, testKey.pubKey);
}); });
}).then(done,done); }).then(done,done);
@ -50,8 +50,8 @@ describe("AxolotlStore", function() {
}); });
}); });
it('stores prekeys', function(done) { it('stores prekeys', function(done) {
store.putPreKey(1, testKey).then(function() { store.storePreKey(1, testKey).then(function() {
return store.getPreKey(1).then(function(key) { return store.loadPreKey(1).then(function(key) {
assertEqualArrayBuffers(key.pubKey, testKey.pubKey); assertEqualArrayBuffers(key.pubKey, testKey.pubKey);
assertEqualArrayBuffers(key.privKey, testKey.privKey); assertEqualArrayBuffers(key.privKey, testKey.privKey);
}); });
@ -59,17 +59,17 @@ describe("AxolotlStore", function() {
}); });
it('deletes prekeys', function(done) { it('deletes prekeys', function(done) {
before(function(done) { before(function(done) {
store.putPreKey(2, testKey).then(done); store.storePreKey(2, testKey).then(done);
}); });
store.removePreKey(2, testKey).then(function() { store.removePreKey(2, testKey).then(function() {
return store.getPreKey(2).then(function(key) { return store.loadPreKey(2).then(function(key) {
assert.isUndefined(key); assert.isUndefined(key);
}); });
}).then(done,done); }).then(done,done);
}); });
it('stores signed prekeys', function(done) { it('stores signed prekeys', function(done) {
store.putSignedPreKey(3, testKey).then(function() { store.storeSignedPreKey(3, testKey).then(function() {
return store.getSignedPreKey(3).then(function(key) { return store.loadSignedPreKey(3).then(function(key) {
assertEqualArrayBuffers(key.pubKey, testKey.pubKey); assertEqualArrayBuffers(key.pubKey, testKey.pubKey);
assertEqualArrayBuffers(key.privKey, testKey.privKey); assertEqualArrayBuffers(key.privKey, testKey.privKey);
}); });
@ -77,18 +77,18 @@ describe("AxolotlStore", function() {
}); });
it('deletes signed prekeys', function(done) { it('deletes signed prekeys', function(done) {
before(function(done) { before(function(done) {
store.putSignedPreKey(4, testKey).then(done); store.storeSignedPreKey(4, testKey).then(done);
}); });
store.removeSignedPreKey(4, testKey).then(function() { store.removeSignedPreKey(4, testKey).then(function() {
return store.getSignedPreKey(4).then(function(key) { return store.loadSignedPreKey(4).then(function(key) {
assert.isUndefined(key); assert.isUndefined(key);
}); });
}).then(done,done); }).then(done,done);
}); });
it('stores sessions', function(done) { it('stores sessions', function(done) {
var testRecord = "an opaque string"; var testRecord = "an opaque string";
store.putSession(identifier + '.1', testRecord).then(function() { store.storeSession(identifier + '.1', testRecord).then(function() {
return store.getSession(identifier + '.1').then(function(record) { return store.loadSession(identifier + '.1').then(function(record) {
assert.deepEqual(record, testRecord); assert.deepEqual(record, testRecord);
}); });
}).then(done,done); }).then(done,done);
@ -101,12 +101,12 @@ describe("AxolotlStore", function() {
var promise = Promise.resolve(); var promise = Promise.resolve();
devices.forEach(function(encodedNumber) { devices.forEach(function(encodedNumber) {
promise = promise.then(function() { promise = promise.then(function() {
return store.putSession(encodedNumber, testRecord + encodedNumber); return store.storeSession(encodedNumber, testRecord + encodedNumber);
}); });
}); });
promise.then(function() { promise.then(function() {
return store.removeAllSessions(identifier).then(function(record) { return store.removeAllSessions(identifier).then(function(record) {
return Promise.all(devices.map(store.getSession.bind(store))).then(function(records) { return Promise.all(devices.map(store.loadSession.bind(store))).then(function(records) {
for (var i in records) { for (var i in records) {
assert.isUndefined(records[i]); assert.isUndefined(records[i]);
}; };
@ -116,9 +116,9 @@ describe("AxolotlStore", function() {
}); });
it ('clears the session store', function(done) { it ('clears the session store', function(done) {
var testRecord = "an opaque string"; var testRecord = "an opaque string";
store.putSession(identifier + '.1', testRecord).then(function() { store.storeSession(identifier + '.1', testRecord).then(function() {
return store.clearSessionStore().then(function() { return store.clearSessionStore().then(function() {
return store.getSession(identifier + '.1').then(function(record) { return store.loadSession(identifier + '.1').then(function(record) {
assert.isUndefined(record); assert.isUndefined(record);
}); });
}); });
@ -133,7 +133,7 @@ describe("AxolotlStore", function() {
var promise = Promise.resolve(); var promise = Promise.resolve();
devices.forEach(function(encodedNumber) { devices.forEach(function(encodedNumber) {
promise = promise.then(function() { promise = promise.then(function() {
return store.putSession(encodedNumber, testRecord + encodedNumber); return store.storeSession(encodedNumber, testRecord + encodedNumber);
}); });
}); });
promise.then(function() { promise.then(function() {