diff --git a/js/signal_protocol_store.js b/js/signal_protocol_store.js index 2bf658c5..9359d3fa 100644 --- a/js/signal_protocol_store.js +++ b/js/signal_protocol_store.js @@ -70,6 +70,11 @@ var Model = Backbone.Model.extend({ database: Whisper.Database }); var PreKey = Model.extend({ storeName: 'preKeys' }); var SignedPreKey = Model.extend({ storeName: 'signedPreKeys' }); + var SignedPreKeyCollection = Backbone.Collection.extend({ + storeName: 'signedPreKeys', + database: Whisper.Database, + model: SignedPreKey + }); var Session = Model.extend({ storeName: 'sessions' }); var SessionCollection = Backbone.Collection.extend({ storeName: 'sessions', @@ -156,6 +161,24 @@ }).fail(resolve); }); }, + loadSignedPreKeys: function() { + if (arguments.length > 0) { + return Promise.reject(new Error("loadSignedPreKeys takes no arguments")); + } + var signedPreKeys = new SignedPreKeyCollection(); + return new Promise(function(resolve) { + signedPreKeys.fetch().then(function() { + resolve(signedPreKeys.map(function(prekey) { + return { + pubKey : prekey.get('publicKey'), + privKey : prekey.get('privateKey'), + created_at : prekey.get('created_at'), + keyId : prekey.get('id') + }; + })); + }); + }); + }, storeSignedPreKey: function(keyId, keyPair) { var prekey = new SignedPreKey({ id : keyId,