1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-28 05:03:59 +03:00

Make encryption asynchronous

We're going to need to send out a load of messages to distribute the megolm
keys; as a first step, deal with the asynchronicity this will require.
This commit is contained in:
Richard van der Hoff
2016-08-17 18:18:20 +01:00
parent e0bd05a8c4
commit 32fa51818b
8 changed files with 105 additions and 63 deletions

View File

@@ -20,6 +20,7 @@ limitations under the License.
*
* @module crypto-algorithms/base
*/
var q = require("q");
var utils = require("../utils");
@@ -43,6 +44,7 @@ module.exports.DECRYPTION_CLASSES = {};
* base type for encryption implementations
*
* @constructor
* @alias module:crypto-algorithms/base.EncryptionAlgorithm
*
* @param {object} params parameters
* @param {string} params.deviceId The identifier for this device.
@@ -50,22 +52,28 @@ module.exports.DECRYPTION_CLASSES = {};
* @param {module:OlmDevice} params.olmDevice olm.js wrapper
* @param {string} params.roomId The ID of the room we will be sending to
*/
module.exports.EncryptionAlgorithm = function(params) {
var EncryptionAlgorithm = function(params) {
this._deviceId = params.deviceId;
this._crypto = params.crypto;
this._olmDevice = params.olmDevice;
this._roomId = params.roomId;
};
/** */
module.exports.EncryptionAlgorithm = EncryptionAlgorithm;
/**
* Initialise this EncryptionAlgorithm instance for a particular room
* Initialise this EncryptionAlgorithm instance for a particular room.
*
* @method module:crypto-algorithms/base.EncryptionAlgorithm#initRoomEncryption
* @abstract
* <p>This will be called once per EncryptionAlgorithm, just after the
* constructor is called.
*
* @param {string[]} roomMembers list of currently-joined users in the room
* @return {module:client.Promise} Promise which resolves when setup is complete
*/
EncryptionAlgorithm.prototype.initRoomEncryption = function(roomMembers) {
return q();
};
/**
* Encrypt a message event
@@ -77,7 +85,7 @@ module.exports.EncryptionAlgorithm = function(params) {
* @param {string} eventType
* @param {object} plaintext event content
*
* @return {object} new event body
* @return {module:client.Promise} Promise which resolves to the new event body
*/