UNPKG

matrix-react-sdk

Version:
76 lines (62 loc) 8.47 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.shieldStatusForRoom = shieldStatusForRoom; exports.E2EStatus = void 0; var _DMRoomMap = _interopRequireDefault(require("./DMRoomMap")); let E2EStatus; exports.E2EStatus = E2EStatus; (function (E2EStatus) { E2EStatus["Warning"] = "warning"; E2EStatus["Verified"] = "verified"; E2EStatus["Normal"] = "normal"; })(E2EStatus || (exports.E2EStatus = E2EStatus = {})); async function shieldStatusForRoom(client /*: Client*/ , room /*: Room*/ ) /*: Promise<E2EStatus>*/ { const members = (await room.getEncryptionTargetMembers()).map(({ userId }) => userId); const inDMMap = !!_DMRoomMap.default.shared().getUserIdForRoomId(room.roomId); const verified /*: string[]*/ = []; const unverified /*: string[]*/ = []; members.filter(userId => userId !== client.getUserId()).forEach(userId => { (client.checkUserTrust(userId).isCrossSigningVerified() ? verified : unverified).push(userId); }); /* Alarm if any unverified users were verified before. */ for (const userId of unverified) { if (client.checkUserTrust(userId).wasCrossSigningVerified()) { return E2EStatus.Warning; } } /* Check all verified user devices. */ /* Don't alarm if no other users are verified */ const includeUser = verified.length > 0 && // Don't alarm for self in rooms where nobody else is verified !inDMMap && // Don't alarm for self in DMs with other users members.length !== 2 || // Don't alarm for self in 1:1 chats with other users members.length === 1; // Do alarm for self if we're alone in a room const targets = includeUser ? [...verified, client.getUserId()] : verified; for (const userId of targets) { const devices = client.getStoredDevicesForUser(userId); const anyDeviceNotVerified = devices.some(({ deviceId }) => { return !client.checkDeviceTrust(userId, deviceId).isVerified(); }); if (anyDeviceNotVerified) { return E2EStatus.Warning; } } return unverified.length === 0 ? E2EStatus.Verified : E2EStatus.Normal; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9TaGllbGRVdGlscy50cyJdLCJuYW1lcyI6WyJFMkVTdGF0dXMiLCJzaGllbGRTdGF0dXNGb3JSb29tIiwiY2xpZW50Iiwicm9vbSIsIm1lbWJlcnMiLCJnZXRFbmNyeXB0aW9uVGFyZ2V0TWVtYmVycyIsIm1hcCIsInVzZXJJZCIsImluRE1NYXAiLCJETVJvb21NYXAiLCJzaGFyZWQiLCJnZXRVc2VySWRGb3JSb29tSWQiLCJyb29tSWQiLCJ2ZXJpZmllZCIsInVudmVyaWZpZWQiLCJmaWx0ZXIiLCJnZXRVc2VySWQiLCJmb3JFYWNoIiwiY2hlY2tVc2VyVHJ1c3QiLCJpc0Nyb3NzU2lnbmluZ1ZlcmlmaWVkIiwicHVzaCIsIndhc0Nyb3NzU2lnbmluZ1ZlcmlmaWVkIiwiV2FybmluZyIsImluY2x1ZGVVc2VyIiwibGVuZ3RoIiwidGFyZ2V0cyIsImRldmljZXMiLCJnZXRTdG9yZWREZXZpY2VzRm9yVXNlciIsImFueURldmljZU5vdFZlcmlmaWVkIiwic29tZSIsImRldmljZUlkIiwiY2hlY2tEZXZpY2VUcnVzdCIsImlzVmVyaWZpZWQiLCJWZXJpZmllZCIsIk5vcm1hbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOztJQW9CWUEsUzs7O1dBQUFBLFM7QUFBQUEsRUFBQUEsUztBQUFBQSxFQUFBQSxTO0FBQUFBLEVBQUFBLFM7R0FBQUEsUyx5QkFBQUEsUzs7QUFNTCxlQUFlQyxtQkFBZixDQUFtQ0M7QUFBbkM7QUFBQSxFQUFtREM7QUFBbkQ7QUFBQTtBQUFBO0FBQW1GO0FBQ3RGLFFBQU1DLE9BQU8sR0FBRyxDQUFDLE1BQU1ELElBQUksQ0FBQ0UsMEJBQUwsRUFBUCxFQUEwQ0MsR0FBMUMsQ0FBOEMsQ0FBQztBQUFDQyxJQUFBQTtBQUFELEdBQUQsS0FBY0EsTUFBNUQsQ0FBaEI7QUFDQSxRQUFNQyxPQUFPLEdBQUcsQ0FBQyxDQUFDQyxtQkFBVUMsTUFBVixHQUFtQkMsa0JBQW5CLENBQXNDUixJQUFJLENBQUNTLE1BQTNDLENBQWxCO0FBRUEsUUFBTUM7QUFBa0I7QUFBQSxJQUFHLEVBQTNCO0FBQ0EsUUFBTUM7QUFBb0I7QUFBQSxJQUFHLEVBQTdCO0FBQ0FWLEVBQUFBLE9BQU8sQ0FBQ1csTUFBUixDQUFnQlIsTUFBRCxJQUFZQSxNQUFNLEtBQUtMLE1BQU0sQ0FBQ2MsU0FBUCxFQUF0QyxFQUNLQyxPQURMLENBQ2NWLE1BQUQsSUFBWTtBQUNqQixLQUFDTCxNQUFNLENBQUNnQixjQUFQLENBQXNCWCxNQUF0QixFQUE4Qlksc0JBQTlCLEtBQ0dOLFFBREgsR0FDY0MsVUFEZixFQUMyQk0sSUFEM0IsQ0FDZ0NiLE1BRGhDO0FBRUgsR0FKTDtBQU1BOztBQUNBLE9BQUssTUFBTUEsTUFBWCxJQUFxQk8sVUFBckIsRUFBaUM7QUFDN0IsUUFBSVosTUFBTSxDQUFDZ0IsY0FBUCxDQUFzQlgsTUFBdEIsRUFBOEJjLHVCQUE5QixFQUFKLEVBQTZEO0FBQ3pELGFBQU9yQixTQUFTLENBQUNzQixPQUFqQjtBQUNIO0FBQ0o7QUFFRDs7QUFDQTs7O0FBQ0EsUUFBTUMsV0FBVyxHQUFJVixRQUFRLENBQUNXLE1BQVQsR0FBa0IsQ0FBbkIsSUFBNEI7QUFDNUIsR0FBQ2hCLE9BREQsSUFDNEI7QUFDM0JKLEVBQUFBLE9BQU8sQ0FBQ29CLE1BQVIsS0FBbUIsQ0FGcEIsSUFFNEI7QUFDM0JwQixFQUFBQSxPQUFPLENBQUNvQixNQUFSLEtBQW1CLENBSHhDLENBckJzRixDQXdCdEM7O0FBQ2hELFFBQU1DLE9BQU8sR0FBR0YsV0FBVyxHQUFHLENBQUMsR0FBR1YsUUFBSixFQUFjWCxNQUFNLENBQUNjLFNBQVAsRUFBZCxDQUFILEdBQXVDSCxRQUFsRTs7QUFDQSxPQUFLLE1BQU1OLE1BQVgsSUFBcUJrQixPQUFyQixFQUE4QjtBQUMxQixVQUFNQyxPQUFPLEdBQUd4QixNQUFNLENBQUN5Qix1QkFBUCxDQUErQnBCLE1BQS9CLENBQWhCO0FBQ0EsVUFBTXFCLG9CQUFvQixHQUFHRixPQUFPLENBQUNHLElBQVIsQ0FBYSxDQUFDO0FBQUNDLE1BQUFBO0FBQUQsS0FBRCxLQUFnQjtBQUN0RCxhQUFPLENBQUM1QixNQUFNLENBQUM2QixnQkFBUCxDQUF3QnhCLE1BQXhCLEVBQWdDdUIsUUFBaEMsRUFBMENFLFVBQTFDLEVBQVI7QUFDSCxLQUY0QixDQUE3Qjs7QUFHQSxRQUFJSixvQkFBSixFQUEwQjtBQUN0QixhQUFPNUIsU0FBUyxDQUFDc0IsT0FBakI7QUFDSDtBQUNKOztBQUVELFNBQU9SLFVBQVUsQ0FBQ1UsTUFBWCxLQUFzQixDQUF0QixHQUEwQnhCLFNBQVMsQ0FBQ2lDLFFBQXBDLEdBQStDakMsU0FBUyxDQUFDa0MsTUFBaEU7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBETVJvb21NYXAgZnJvbSAnLi9ETVJvb21NYXAnO1xuXG4vKiBGb3Igbm93LCBhIGN1dC1kb3duIHR5cGUgc3BlYyBmb3IgdGhlIGNsaWVudCAqL1xuaW50ZXJmYWNlIENsaWVudCB7XG4gICAgZ2V0VXNlcklkOiAoKSA9PiBzdHJpbmc7XG4gICAgY2hlY2tVc2VyVHJ1c3Q6ICh1c2VySWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBpc0Nyb3NzU2lnbmluZ1ZlcmlmaWVkOiAoKSA9PiBib29sZWFuXG4gICAgICAgIHdhc0Nyb3NzU2lnbmluZ1ZlcmlmaWVkOiAoKSA9PiBib29sZWFuXG4gICAgfTtcbiAgICBnZXRTdG9yZWREZXZpY2VzRm9yVXNlcjogKHVzZXJJZDogc3RyaW5nKSA9PiBbeyBkZXZpY2VJZDogc3RyaW5nIH1dO1xuICAgIGNoZWNrRGV2aWNlVHJ1c3Q6ICh1c2VySWQ6IHN0cmluZywgZGV2aWNlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBpc1ZlcmlmaWVkOiAoKSA9PiBib29sZWFuXG4gICAgfTtcbn1cblxuaW50ZXJmYWNlIFJvb20ge1xuICAgIGdldEVuY3J5cHRpb25UYXJnZXRNZW1iZXJzOiAoKSA9PiBQcm9taXNlPFt7dXNlcklkOiBzdHJpbmd9XT47XG4gICAgcm9vbUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIEUyRVN0YXR1cyB7XG4gICAgV2FybmluZyA9IFwid2FybmluZ1wiLFxuICAgIFZlcmlmaWVkID0gXCJ2ZXJpZmllZFwiLFxuICAgIE5vcm1hbCA9IFwibm9ybWFsXCJcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNoaWVsZFN0YXR1c0ZvclJvb20oY2xpZW50OiBDbGllbnQsIHJvb206IFJvb20pOiBQcm9taXNlPEUyRVN0YXR1cz4ge1xuICAgIGNvbnN0IG1lbWJlcnMgPSAoYXdhaXQgcm9vbS5nZXRFbmNyeXB0aW9uVGFyZ2V0TWVtYmVycygpKS5tYXAoKHt1c2VySWR9KSA9PiB1c2VySWQpO1xuICAgIGNvbnN0IGluRE1NYXAgPSAhIURNUm9vbU1hcC5zaGFyZWQoKS5nZXRVc2VySWRGb3JSb29tSWQocm9vbS5yb29tSWQpO1xuXG4gICAgY29uc3QgdmVyaWZpZWQ6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgdW52ZXJpZmllZDogc3RyaW5nW10gPSBbXTtcbiAgICBtZW1iZXJzLmZpbHRlcigodXNlcklkKSA9PiB1c2VySWQgIT09IGNsaWVudC5nZXRVc2VySWQoKSlcbiAgICAgICAgLmZvckVhY2goKHVzZXJJZCkgPT4ge1xuICAgICAgICAgICAgKGNsaWVudC5jaGVja1VzZXJUcnVzdCh1c2VySWQpLmlzQ3Jvc3NTaWduaW5nVmVyaWZpZWQoKSA/XG4gICAgICAgICAgICAgICAgdmVyaWZpZWQgOiB1bnZlcmlmaWVkKS5wdXNoKHVzZXJJZCk7XG4gICAgICAgIH0pO1xuXG4gICAgLyogQWxhcm0gaWYgYW55IHVudmVyaWZpZWQgdXNlcnMgd2VyZSB2ZXJpZmllZCBiZWZvcmUuICovXG4gICAgZm9yIChjb25zdCB1c2VySWQgb2YgdW52ZXJpZmllZCkge1xuICAgICAgICBpZiAoY2xpZW50LmNoZWNrVXNlclRydXN0KHVzZXJJZCkud2FzQ3Jvc3NTaWduaW5nVmVyaWZpZWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIEUyRVN0YXR1cy5XYXJuaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyogQ2hlY2sgYWxsIHZlcmlmaWVkIHVzZXIgZGV2aWNlcy4gKi9cbiAgICAvKiBEb24ndCBhbGFybSBpZiBubyBvdGhlciB1c2VycyBhcmUgdmVyaWZpZWQgICovXG4gICAgY29uc3QgaW5jbHVkZVVzZXIgPSAodmVyaWZpZWQubGVuZ3RoID4gMCkgJiYgICAgLy8gRG9uJ3QgYWxhcm0gZm9yIHNlbGYgaW4gcm9vbXMgd2hlcmUgbm9ib2R5IGVsc2UgaXMgdmVyaWZpZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICFpbkRNTWFwICYmICAgICAgICAgICAgICAgICAvLyBEb24ndCBhbGFybSBmb3Igc2VsZiBpbiBETXMgd2l0aCBvdGhlciB1c2Vyc1xuICAgICAgICAgICAgICAgICAgICAgICAgKG1lbWJlcnMubGVuZ3RoICE9PSAyKSB8fCAgIC8vIERvbid0IGFsYXJtIGZvciBzZWxmIGluIDE6MSBjaGF0cyB3aXRoIG90aGVyIHVzZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAobWVtYmVycy5sZW5ndGggPT09IDEpOyAgICAgLy8gRG8gYWxhcm0gZm9yIHNlbGYgaWYgd2UncmUgYWxvbmUgaW4gYSByb29tXG4gICAgY29uc3QgdGFyZ2V0cyA9IGluY2x1ZGVVc2VyID8gWy4uLnZlcmlmaWVkLCBjbGllbnQuZ2V0VXNlcklkKCldIDogdmVyaWZpZWQ7XG4gICAgZm9yIChjb25zdCB1c2VySWQgb2YgdGFyZ2V0cykge1xuICAgICAgICBjb25zdCBkZXZpY2VzID0gY2xpZW50LmdldFN0b3JlZERldmljZXNGb3JVc2VyKHVzZXJJZCk7XG4gICAgICAgIGNvbnN0IGFueURldmljZU5vdFZlcmlmaWVkID0gZGV2aWNlcy5zb21lKCh7ZGV2aWNlSWR9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWNsaWVudC5jaGVja0RldmljZVRydXN0KHVzZXJJZCwgZGV2aWNlSWQpLmlzVmVyaWZpZWQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChhbnlEZXZpY2VOb3RWZXJpZmllZCkge1xuICAgICAgICAgICAgcmV0dXJuIEUyRVN0YXR1cy5XYXJuaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHVudmVyaWZpZWQubGVuZ3RoID09PSAwID8gRTJFU3RhdHVzLlZlcmlmaWVkIDogRTJFU3RhdHVzLk5vcm1hbDtcbn1cbiJdfQ==