matrix-js-sdk
Version:
Matrix Client-Server SDK for Javascript
81 lines • 3.3 kB
TypeScript
import * as RustSdkCryptoJs from "@matrix-org/matrix-sdk-crypto-wasm";
import { Logger } from "../logger";
import { CryptoStore } from "../crypto/store/base";
import { IHttpOpts, MatrixHttpApi } from "../http-api";
import { RustCrypto } from "./rust-crypto";
/**
* Determine if any data needs migrating from the legacy store, and do so.
*
* This migrates the base account data, and olm and megolm sessions. It does *not* migrate the room list, which should
* happen after an `OlmMachine` is created, via {@link migrateRoomSettingsFromLegacyCrypto}.
*
* @param args - Arguments object.
*/
export declare function migrateFromLegacyCrypto(args: {
/** A `Logger` instance that will be used for debug output. */
logger: Logger;
/**
* Low-level HTTP interface: used to make outgoing requests required by the rust SDK.
* We expect it to set the access token, etc.
*/
http: MatrixHttpApi<IHttpOpts & {
onlyData: true;
}>;
/** Store to migrate data from. */
legacyStore: CryptoStore;
/** Pickle key for `legacyStore`. */
legacyPickleKey?: string;
/** Local user's User ID. */
userId: string;
/** Local user's Device ID. */
deviceId: string;
/** Rust crypto store to migrate data into. */
storeHandle: RustSdkCryptoJs.StoreHandle;
/**
* A callback which will receive progress updates on migration from `legacyStore`.
*
* Called with (-1, -1) to mark the end of migration.
*/
legacyMigrationProgressListener?: (progress: number, total: number) => void;
}): Promise<void>;
/**
* Determine if any room settings need migrating from the legacy store, and do so.
*
* @param args - Arguments object.
*/
export declare function migrateRoomSettingsFromLegacyCrypto({ logger, legacyStore, olmMachine, }: {
/** A `Logger` instance that will be used for debug output. */
logger: Logger;
/** Store to migrate data from. */
legacyStore: CryptoStore;
/** OlmMachine to store the new data on. */
olmMachine: RustSdkCryptoJs.OlmMachine;
}): Promise<void>;
/**
* Check if the user's published identity (ie, public cross-signing keys) was trusted by the legacy session,
* and if so mark it as trusted in the Rust session if needed.
*
* By default, if the legacy session didn't have the private MSK, the migrated session will revert to unverified,
* even if the user has verified the session in the past.
*
* This only occurs if the private MSK was not cached in the crypto store (USK and SSK private keys won't help
* to establish trust: the trust is rooted in the MSK).
*
* Rust crypto will only consider the current session as trusted if we import the private MSK itself.
*
* We could prompt the user to verify the session again, but it's probably better to just mark the user identity
* as locally verified if it was before.
*
* See https://github.com/element-hq/element-web/issues/27079
*
* @param args - Argument object.
*/
export declare function migrateLegacyLocalTrustIfNeeded(args: {
/** The legacy crypto store that is migrated. */
legacyCryptoStore: CryptoStore;
/** The migrated rust crypto stack. */
rustCrypto: RustCrypto;
/** The logger to use */
logger: Logger;
}): Promise<void>;
//# sourceMappingURL=libolm_migration.d.ts.map