refactor(crypto): add areLocalSecretsAvailable method
This commit is contained in:
30
src/utils/crypto/areLocalSecretsAvailable.ts
Normal file
30
src/utils/crypto/areLocalSecretsAvailable.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* Copyright 2025 New Vector Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
import { MatrixClient } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
/**
|
||||
* This function checks if:
|
||||
* - the cross-signing private keys are cached locally
|
||||
* - the backup decryption key is also available locally
|
||||
*
|
||||
* @param matrixClient
|
||||
* @returns true if the secrets are cached and the backup decryption key is available, false otherwise
|
||||
*/
|
||||
export async function areLocalSecretsAvailable(matrixClient: MatrixClient): Promise<boolean> {
|
||||
const crypto = matrixClient.getCrypto();
|
||||
if (!crypto) return false;
|
||||
|
||||
// Check if the secrets are cached
|
||||
const cachedSecrets = (await crypto.getCrossSigningStatus()).privateKeysCachedLocally;
|
||||
const secretsOk = cachedSecrets.masterKey && cachedSecrets.selfSigningKey && cachedSecrets.userSigningKey;
|
||||
|
||||
// Check if the user has access to the backup decryption key
|
||||
const backupDecryptionKeyOk = Boolean(await matrixClient.secretStorage.get("m.megolm_backup.v1"));
|
||||
|
||||
return secretsOk && backupDecryptionKeyOk;
|
||||
}
|
||||
Reference in New Issue
Block a user