Improve comments on key-setup dialogs (#11339)

* Remove outdated (I think) TODO

* Improve comments on key-setup dialogs
This commit is contained in:
Richard van der Hoff 2023-07-28 15:29:34 +01:00 committed by GitHub
parent 0647aafc3a
commit 1f3d99c25c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 12 deletions

View file

@ -45,9 +45,13 @@ interface IState {
error?: boolean; error?: boolean;
} }
/* /**
* Walks the user through the process of creating an e2e key backup * Walks the user through the process of setting up e2e key backups to a new backup, and storing the decryption key in
* on the server. * SSSS.
*
* Uses {@link accessSecretStorage}, which means that if 4S is not already configured, it will be bootstrapped (which
* involves displaying an {@link CreateSecretStorageDialog} so the user can enter a passphrase and/or download the 4S
* key).
*/ */
export default class CreateKeyBackupDialog extends React.PureComponent<IProps, IState> { export default class CreateKeyBackupDialog extends React.PureComponent<IProps, IState> {
public constructor(props: IProps) { public constructor(props: IProps) {
@ -75,6 +79,14 @@ export default class CreateKeyBackupDialog extends React.PureComponent<IProps, I
const cli = MatrixClientPeg.safeGet(); const cli = MatrixClientPeg.safeGet();
try { try {
await accessSecretStorage(async (): Promise<void> => { await accessSecretStorage(async (): Promise<void> => {
// `accessSecretStorage` will have bootstrapped secret storage if necessary, so we can now
// set up key backup.
//
// XXX: `bootstrapSecretStorage` also sets up key backup as a side effect, so there is a 90% chance
// this is actually redundant.
//
// The only time it would *not* be redundant would be if, for some reason, we had working 4S but no
// working key backup. (For example, if the user clicked "Delete Backup".)
info = await cli.prepareKeyBackupVersion(null /* random key */, { info = await cli.prepareKeyBackupVersion(null /* random key */, {
secureSecretStorage: true, secureSecretStorage: true,
}); });

View file

@ -94,9 +94,12 @@ interface IState {
error?: boolean; error?: boolean;
} }
/* /**
* Walks the user through the process of creating a passphrase to guard Secure * Walks the user through the process of creating a 4S passphrase and bootstrapping secret storage.
* Secret Storage in account data. *
* If the user already has a key backup, follows a "migration" flow (aka "Upgrade your encryption") which
* prompts the user to enter their backup decryption password (a Curve25519 private key, possibly derived
* from a passphrase), and uses that as the (AES) 4S encryption key.
*/ */
export default class CreateSecretStorageDialog extends React.PureComponent<IProps, IState> { export default class CreateSecretStorageDialog extends React.PureComponent<IProps, IState> {
public static defaultProps: Partial<IProps> = { public static defaultProps: Partial<IProps> = {
@ -576,12 +579,6 @@ export default class CreateSecretStorageDialog extends React.PureComponent<IProp
} }
private renderPhaseMigrate(): JSX.Element { private renderPhaseMigrate(): JSX.Element {
// TODO: This is a temporary screen so people who have the labs flag turned on and
// click the button are aware they're making a change to their account.
// Once we're confident enough in this (and it's supported enough) we can do
// it automatically.
// https://github.com/vector-im/element-web/issues/11696
let authPrompt; let authPrompt;
let nextCaption = _t("Next"); let nextCaption = _t("Next");
if (this.state.canUploadKeysWithPasswordOnly) { if (this.state.canUploadKeysWithPasswordOnly) {