Merge pull request #1456 from matrix-org/jryans/cross-signing-verif-errors

Handle missing cross-signing keys gracefully
This commit is contained in:
J. Ryan Stinnett
2020-09-02 15:07:27 +01:00
committed by GitHub
2 changed files with 15 additions and 3 deletions
+3
View File
@@ -202,6 +202,9 @@ export class CrossSigningInfo extends EventEmitter {
*/
static async getFromSecretStorage(type, secretStorage) {
const encodedKey = await secretStorage.get(`m.cross_signing.${type}`);
if (!encodedKey) {
return null;
}
return decodeBase64(encodedKey);
}
+12 -3
View File
@@ -2122,9 +2122,18 @@ Crypto.prototype.setDeviceVerification = async function(
// do cross-signing
if (verified && userId === this._userId) {
logger.info("Own device " + deviceId + " marked verified: signing");
const device = await this._crossSigningInfo.signDevice(
userId, DeviceInfo.fromStorage(dev, deviceId),
);
// Signing only needed if other device not already signed
let device;
const deviceTrust = this.checkDeviceTrust(userId, deviceId);
if (deviceTrust.isCrossSigningVerified()) {
logger.log(`Own device ${deviceId} already cross-signing verified`);
} else {
device = await this._crossSigningInfo.signDevice(
userId, DeviceInfo.fromStorage(dev, deviceId),
);
}
if (device) {
const upload = async ({shouldEmit}) => {
logger.info("Uploading signature for " + deviceId);