Merge pull request #4268 from matrix-org/jryans/robust-secret-share
Log and display secret sharing cache state
This commit is contained in:
commit
d869ac9a69
3 changed files with 27 additions and 0 deletions
|
@ -149,9 +149,15 @@ const onSecretRequested = async function({
|
||||||
if (!callbacks.getCrossSigningKeyCache) return;
|
if (!callbacks.getCrossSigningKeyCache) return;
|
||||||
if (name === "m.cross_signing.self_signing") {
|
if (name === "m.cross_signing.self_signing") {
|
||||||
const key = await callbacks.getCrossSigningKeyCache("self_signing");
|
const key = await callbacks.getCrossSigningKeyCache("self_signing");
|
||||||
|
if (!key) {
|
||||||
|
console.log(`self_signing requested by ${deviceId}, but not found in cache`);
|
||||||
|
}
|
||||||
return key && encodeBase64(key);
|
return key && encodeBase64(key);
|
||||||
} else if (name === "m.cross_signing.user_signing") {
|
} else if (name === "m.cross_signing.user_signing") {
|
||||||
const key = await callbacks.getCrossSigningKeyCache("user_signing");
|
const key = await callbacks.getCrossSigningKeyCache("user_signing");
|
||||||
|
if (!key) {
|
||||||
|
console.log(`user_signing requested by ${deviceId}, but not found in cache`);
|
||||||
|
}
|
||||||
return key && encodeBase64(key);
|
return key && encodeBase64(key);
|
||||||
}
|
}
|
||||||
console.warn("onSecretRequested didn't recognise the secret named ", name);
|
console.warn("onSecretRequested didn't recognise the secret named ", name);
|
||||||
|
|
|
@ -32,6 +32,8 @@ export default class CrossSigningPanel extends React.PureComponent {
|
||||||
error: null,
|
error: null,
|
||||||
crossSigningPublicKeysOnDevice: false,
|
crossSigningPublicKeysOnDevice: false,
|
||||||
crossSigningPrivateKeysInStorage: false,
|
crossSigningPrivateKeysInStorage: false,
|
||||||
|
selfSigningPrivateKeyCached: false,
|
||||||
|
userSigningPrivateKeyCached: false,
|
||||||
secretStorageKeyInAccount: false,
|
secretStorageKeyInAccount: false,
|
||||||
secretStorageKeyNeedsUpgrade: null,
|
secretStorageKeyNeedsUpgrade: null,
|
||||||
};
|
};
|
||||||
|
@ -71,10 +73,13 @@ export default class CrossSigningPanel extends React.PureComponent {
|
||||||
|
|
||||||
async _getUpdatedStatus() {
|
async _getUpdatedStatus() {
|
||||||
const cli = MatrixClientPeg.get();
|
const cli = MatrixClientPeg.get();
|
||||||
|
const pkCache = cli.getCrossSigningCacheCallbacks();
|
||||||
const crossSigning = cli._crypto._crossSigningInfo;
|
const crossSigning = cli._crypto._crossSigningInfo;
|
||||||
const secretStorage = cli._crypto._secretStorage;
|
const secretStorage = cli._crypto._secretStorage;
|
||||||
const crossSigningPublicKeysOnDevice = crossSigning.getId();
|
const crossSigningPublicKeysOnDevice = crossSigning.getId();
|
||||||
const crossSigningPrivateKeysInStorage = await crossSigning.isStoredInSecretStorage(secretStorage);
|
const crossSigningPrivateKeysInStorage = await crossSigning.isStoredInSecretStorage(secretStorage);
|
||||||
|
const selfSigningPrivateKeyCached = !!(pkCache && await pkCache.getCrossSigningKeyCache("self_signing"));
|
||||||
|
const userSigningPrivateKeyCached = !!(pkCache && await pkCache.getCrossSigningKeyCache("user_signing"));
|
||||||
const secretStorageKeyInAccount = await secretStorage.hasKey();
|
const secretStorageKeyInAccount = await secretStorage.hasKey();
|
||||||
const homeserverSupportsCrossSigning =
|
const homeserverSupportsCrossSigning =
|
||||||
await cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing");
|
await cli.doesServerSupportUnstableFeature("org.matrix.e2e_cross_signing");
|
||||||
|
@ -84,6 +89,8 @@ export default class CrossSigningPanel extends React.PureComponent {
|
||||||
this.setState({
|
this.setState({
|
||||||
crossSigningPublicKeysOnDevice,
|
crossSigningPublicKeysOnDevice,
|
||||||
crossSigningPrivateKeysInStorage,
|
crossSigningPrivateKeysInStorage,
|
||||||
|
selfSigningPrivateKeyCached,
|
||||||
|
userSigningPrivateKeyCached,
|
||||||
secretStorageKeyInAccount,
|
secretStorageKeyInAccount,
|
||||||
homeserverSupportsCrossSigning,
|
homeserverSupportsCrossSigning,
|
||||||
crossSigningReady,
|
crossSigningReady,
|
||||||
|
@ -130,6 +137,8 @@ export default class CrossSigningPanel extends React.PureComponent {
|
||||||
error,
|
error,
|
||||||
crossSigningPublicKeysOnDevice,
|
crossSigningPublicKeysOnDevice,
|
||||||
crossSigningPrivateKeysInStorage,
|
crossSigningPrivateKeysInStorage,
|
||||||
|
selfSigningPrivateKeyCached,
|
||||||
|
userSigningPrivateKeyCached,
|
||||||
secretStorageKeyInAccount,
|
secretStorageKeyInAccount,
|
||||||
homeserverSupportsCrossSigning,
|
homeserverSupportsCrossSigning,
|
||||||
crossSigningReady,
|
crossSigningReady,
|
||||||
|
@ -209,6 +218,14 @@ export default class CrossSigningPanel extends React.PureComponent {
|
||||||
<td>{_t("Cross-signing private keys:")}</td>
|
<td>{_t("Cross-signing private keys:")}</td>
|
||||||
<td>{crossSigningPrivateKeysInStorage ? _t("in secret storage") : _t("not found")}</td>
|
<td>{crossSigningPrivateKeysInStorage ? _t("in secret storage") : _t("not found")}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{_t("Self signing private key:")}</td>
|
||||||
|
<td>{selfSigningPrivateKeyCached ? _t("cached locally") : _t("not found locally")}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{_t("User signing private key:")}</td>
|
||||||
|
<td>{userSigningPrivateKeyCached ? _t("cached locally") : _t("not found locally")}</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>{_t("Secret storage public key:")}</td>
|
<td>{_t("Secret storage public key:")}</td>
|
||||||
<td>{secretStorageKeyInAccount ? _t("in account data") : _t("not found")}</td>
|
<td>{secretStorageKeyInAccount ? _t("in account data") : _t("not found")}</td>
|
||||||
|
|
|
@ -582,6 +582,10 @@
|
||||||
"not found": "not found",
|
"not found": "not found",
|
||||||
"Cross-signing private keys:": "Cross-signing private keys:",
|
"Cross-signing private keys:": "Cross-signing private keys:",
|
||||||
"in secret storage": "in secret storage",
|
"in secret storage": "in secret storage",
|
||||||
|
"Self signing private key:": "Self signing private key:",
|
||||||
|
"cached locally": "cached locally",
|
||||||
|
"not found locally": "not found locally",
|
||||||
|
"User signing private key:": "User signing private key:",
|
||||||
"Secret storage public key:": "Secret storage public key:",
|
"Secret storage public key:": "Secret storage public key:",
|
||||||
"in account data": "in account data",
|
"in account data": "in account data",
|
||||||
"Homeserver feature support:": "Homeserver feature support:",
|
"Homeserver feature support:": "Homeserver feature support:",
|
||||||
|
|
Loading…
Reference in a new issue