1
0
mirror of https://github.com/matrix-org/matrix-js-sdk.git synced 2025-11-26 17:03:12 +03:00

Merge pull request #954 from uhoreg/fix_verification_request

Key verification request fixes
This commit is contained in:
Hubert Chathi
2019-06-14 15:39:01 -04:00
committed by GitHub
2 changed files with 10 additions and 5 deletions

View File

@@ -734,19 +734,19 @@ async function _setDeviceVerification(
* Request a key verification from another user. * Request a key verification from another user.
* *
* @param {string} userId the user to request verification with * @param {string} userId the user to request verification with
* @param {Array} devices array of device IDs to send requests to. Defaults to
* all devices owned by the user
* @param {Array} methods array of verification methods to use. Defaults to * @param {Array} methods array of verification methods to use. Defaults to
* all known methods * all known methods
* @param {Array} devices array of device IDs to send requests to. Defaults to
* all devices owned by the user
* *
* @returns {Promise<module:crypto/verification/Base>} resolves to a verifier * @returns {Promise<module:crypto/verification/Base>} resolves to a verifier
* when the request is accepted by the other user * when the request is accepted by the other user
*/ */
MatrixClient.prototype.requestVerification = function(userId, devices, methods) { MatrixClient.prototype.requestVerification = function(userId, methods, devices) {
if (this._crypto === null) { if (this._crypto === null) {
throw new Error("End-to-end encryption disabled"); throw new Error("End-to-end encryption disabled");
} }
return this._crypto.requestVerification(userId, devices); return this._crypto.requestVerification(userId, methods, devices);
}; };
/** /**

View File

@@ -1667,6 +1667,11 @@ Crypto.prototype._onKeyVerificationRequest = function(event) {
} }
const sender = event.getSender(); const sender = event.getSender();
if (sender === this._userId && content.from_device === this._deviceId) {
// ignore requests from ourselves, because it doesn't make sense for a
// device to verify itself
return;
}
if (this._verificationTransactions.has(sender)) { if (this._verificationTransactions.has(sender)) {
if (this._verificationTransactions.get(sender).has(content.transaction_id)) { if (this._verificationTransactions.get(sender).has(content.transaction_id)) {
// transaction already exists: cancel it and drop the existing // transaction already exists: cancel it and drop the existing
@@ -1719,7 +1724,7 @@ Crypto.prototype._onKeyVerificationRequest = function(event) {
}, },
); );
} else { } else {
// notify the application that of the verification request, so it can // notify the application of the verification request, so it can
// decide what to do with it // decide what to do with it
const request = { const request = {
event: event, event: event,