Convert secret storage key creation to object

This commit is contained in:
J. Ryan Stinnett 2020-03-31 10:45:53 +01:00
parent 690b5945d0
commit 24c09cc4c8

View file

@ -67,8 +67,6 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
constructor(props) { constructor(props) {
super(props); super(props);
this._keyInfo = null;
this._encodedRecoveryKey = null;
this._recoveryKey = null; this._recoveryKey = null;
this._recoveryKeyNode = null; this._recoveryKeyNode = null;
this._setZxcvbnResultTimeout = null; this._setZxcvbnResultTimeout = null;
@ -181,7 +179,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
} }
_onDownloadClick = () => { _onDownloadClick = () => {
const blob = new Blob([this._encodedRecoveryKey], { const blob = new Blob([this._recoveryKey.encodedPrivateKey], {
type: 'text/plain;charset=us-ascii', type: 'text/plain;charset=us-ascii',
}); });
FileSaver.saveAs(blob, 'recovery-key.txt'); FileSaver.saveAs(blob, 'recovery-key.txt');
@ -235,22 +233,14 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
if (force) { if (force) {
await cli.bootstrapSecretStorage({ await cli.bootstrapSecretStorage({
authUploadDeviceSigningKeys: this._doBootstrapUIAuth, authUploadDeviceSigningKeys: this._doBootstrapUIAuth,
createSecretStorageKey: async () => [ createSecretStorageKey: async () => this._recoveryKey,
this._keyInfo,
this._encodedRecoveryKey,
this._recoveryKey,
],
setupNewKeyBackup: true, setupNewKeyBackup: true,
setupNewSecretStorage: true, setupNewSecretStorage: true,
}); });
} else { } else {
await cli.bootstrapSecretStorage({ await cli.bootstrapSecretStorage({
authUploadDeviceSigningKeys: this._doBootstrapUIAuth, authUploadDeviceSigningKeys: this._doBootstrapUIAuth,
createSecretStorageKey: async () => [ createSecretStorageKey: async () => this._recoveryKey,
this._keyInfo,
this._encodedRecoveryKey,
this._recoveryKey,
],
keyBackupInfo: this.state.backupInfo, keyBackupInfo: this.state.backupInfo,
setupNewKeyBackup: !this.state.backupInfo && this.state.useKeyBackup, setupNewKeyBackup: !this.state.backupInfo && this.state.useKeyBackup,
getKeyBackupPassphrase: promptForBackupPassphrase, getKeyBackupPassphrase: promptForBackupPassphrase,
@ -308,11 +298,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
} }
_onSkipPassPhraseClick = async () => { _onSkipPassPhraseClick = async () => {
const [keyInfo, encodedRecoveryKey, recoveryKey] = this._recoveryKey =
await MatrixClientPeg.get().createRecoveryKeyFromPassphrase(); await MatrixClientPeg.get().createRecoveryKeyFromPassphrase();
this._keyInfo = keyInfo;
this._encodedRecoveryKey = encodedRecoveryKey;
this._recoveryKey = recoveryKey;
this.setState({ this.setState({
copied: false, copied: false,
downloaded: false, downloaded: false,
@ -345,11 +332,8 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
if (this.state.passPhrase !== this.state.passPhraseConfirm) return; if (this.state.passPhrase !== this.state.passPhraseConfirm) return;
const [keyInfo, encodedRecoveryKey, recoveryKey] = this._recoveryKey =
await MatrixClientPeg.get().createRecoveryKeyFromPassphrase(this.state.passPhrase); await MatrixClientPeg.get().createRecoveryKeyFromPassphrase(this.state.passPhrase);
this._keyInfo = keyInfo;
this._encodedRecoveryKey = encodedRecoveryKey;
this._recoveryKey = recoveryKey;
this.setState({ this.setState({
copied: false, copied: false,
downloaded: false, downloaded: false,
@ -624,7 +608,7 @@ export default class CreateSecretStorageDialog extends React.PureComponent {
</div> </div>
<div className="mx_CreateSecretStorageDialog_recoveryKeyContainer"> <div className="mx_CreateSecretStorageDialog_recoveryKeyContainer">
<div className="mx_CreateSecretStorageDialog_recoveryKey"> <div className="mx_CreateSecretStorageDialog_recoveryKey">
<code ref={this._collectRecoveryKeyNode}>{this._encodedRecoveryKey}</code> <code ref={this._collectRecoveryKeyNode}>{this._recoveryKey.encodedPrivateKey}</code>
</div> </div>
<div className="mx_CreateSecretStorageDialog_recoveryKeyButtons"> <div className="mx_CreateSecretStorageDialog_recoveryKeyButtons">
<AccessibleButton kind='primary' className="mx_Dialog_primary" onClick={this._onCopyClick}> <AccessibleButton kind='primary' className="mx_Dialog_primary" onClick={this._onCopyClick}>