allow customising the source of dehydration key
This commit is contained in:
parent
dbf2394668
commit
625e03cde3
2 changed files with 15 additions and 1 deletions
|
@ -34,6 +34,7 @@ import * as StorageManager from './utils/StorageManager';
|
||||||
import IdentityAuthClient from './IdentityAuthClient';
|
import IdentityAuthClient from './IdentityAuthClient';
|
||||||
import { crossSigningCallbacks, tryToUnlockSecretStorageWithDehydrationKey } from './SecurityManager';
|
import { crossSigningCallbacks, tryToUnlockSecretStorageWithDehydrationKey } from './SecurityManager';
|
||||||
import {SHOW_QR_CODE_METHOD} from "matrix-js-sdk/src/crypto/verification/QRCode";
|
import {SHOW_QR_CODE_METHOD} from "matrix-js-sdk/src/crypto/verification/QRCode";
|
||||||
|
import SecurityCustomisations from "./customisations/Security";
|
||||||
|
|
||||||
export interface IMatrixClientCreds {
|
export interface IMatrixClientCreds {
|
||||||
homeserverUrl: string;
|
homeserverUrl: string;
|
||||||
|
@ -273,7 +274,10 @@ class _MatrixClientPeg implements IMatrixClientPeg {
|
||||||
// These are always installed regardless of the labs flag so that
|
// These are always installed regardless of the labs flag so that
|
||||||
// cross-signing features can toggle on without reloading and also be
|
// cross-signing features can toggle on without reloading and also be
|
||||||
// accessed immediately after login.
|
// accessed immediately after login.
|
||||||
Object.assign(opts.cryptoCallbacks, crossSigningCallbacks);
|
const customisatedCallbacks = {
|
||||||
|
getDehydrationKey: SecurityCustomisations.getDehydrationKey,
|
||||||
|
};
|
||||||
|
Object.assign(opts.cryptoCallbacks, crossSigningCallbacks, customisatedCallbacks);
|
||||||
|
|
||||||
this.matrixClient = createMatrixClient(opts);
|
this.matrixClient = createMatrixClient(opts);
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,13 @@ function getSecretStorageKey(): Uint8Array {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
||||||
|
function getDehydrationKey(
|
||||||
|
keyInfo: ISecretStorageKeyInfo,
|
||||||
|
): Promise<Uint8Array> {
|
||||||
|
return Promise.resolve(null);
|
||||||
|
}
|
||||||
|
|
||||||
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
|
||||||
function catchAccessSecretStorageError(e: Error): void {
|
function catchAccessSecretStorageError(e: Error): void {
|
||||||
// E.g. notify the user in some way
|
// E.g. notify the user in some way
|
||||||
|
@ -74,6 +81,9 @@ export interface ISecurityCustomisations {
|
||||||
setupEncryptionNeeded?: (
|
setupEncryptionNeeded?: (
|
||||||
kind: SetupEncryptionKind,
|
kind: SetupEncryptionKind,
|
||||||
) => boolean,
|
) => boolean,
|
||||||
|
getDehydrationKey?: (
|
||||||
|
keyInfo: ISecretStorageKeyInfo,
|
||||||
|
) => Promise<Uint8Array>,
|
||||||
}
|
}
|
||||||
|
|
||||||
// A real customisation module will define and export one or more of the
|
// A real customisation module will define and export one or more of the
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue