You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-07-31 15:24:23 +03:00
Add CryptoApi.getCrossSigningKeyId
(#3360)
This commit is contained in:
committed by
GitHub
parent
fcbc195fbe
commit
72f3c360b6
@ -98,6 +98,11 @@ describe("RustCrypto", () => {
|
|||||||
await expect(rustCrypto.isCrossSigningReady()).resolves.toBe(false);
|
await expect(rustCrypto.isCrossSigningReady()).resolves.toBe(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("getCrossSigningKeyId", async () => {
|
||||||
|
const rustCrypto = await makeTestRustCrypto();
|
||||||
|
await expect(rustCrypto.getCrossSigningKeyId()).resolves.toBe(null);
|
||||||
|
});
|
||||||
|
|
||||||
it("bootstrapCrossSigning", async () => {
|
it("bootstrapCrossSigning", async () => {
|
||||||
const rustCrypto = await makeTestRustCrypto();
|
const rustCrypto = await makeTestRustCrypto();
|
||||||
await rustCrypto.bootstrapCrossSigning({});
|
await rustCrypto.bootstrapCrossSigning({});
|
||||||
|
@ -2571,14 +2571,13 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the user's cross-signing key ID.
|
* Get the ID of one of the user's cross-signing keys
|
||||||
*
|
|
||||||
* The cross-signing API is currently UNSTABLE and may change without notice.
|
|
||||||
*
|
*
|
||||||
* @param type - The type of key to get the ID of. One of
|
* @param type - The type of key to get the ID of. One of
|
||||||
* "master", "self_signing", or "user_signing". Defaults to "master".
|
* "master", "self_signing", or "user_signing". Defaults to "master".
|
||||||
*
|
*
|
||||||
* @returns the key ID
|
* @returns the key ID
|
||||||
|
* @deprecated prefer {@link CryptoApi#getCrossSigningKeyId}
|
||||||
*/
|
*/
|
||||||
public getCrossSigningId(type: CrossSigningKey | string = CrossSigningKey.Master): string | null {
|
public getCrossSigningId(type: CrossSigningKey | string = CrossSigningKey.Master): string | null {
|
||||||
if (!this.crypto) {
|
if (!this.crypto) {
|
||||||
|
@ -19,6 +19,13 @@ import { Room } from "./models/room";
|
|||||||
import { DeviceMap } from "./models/device";
|
import { DeviceMap } from "./models/device";
|
||||||
import { UIAuthCallback } from "./interactive-auth";
|
import { UIAuthCallback } from "./interactive-auth";
|
||||||
|
|
||||||
|
/** Types of cross-signing key */
|
||||||
|
export enum CrossSigningKey {
|
||||||
|
Master = "master",
|
||||||
|
SelfSigning = "self_signing",
|
||||||
|
UserSigning = "user_signing",
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Public interface to the cryptography parts of the js-sdk
|
* Public interface to the cryptography parts of the js-sdk
|
||||||
*
|
*
|
||||||
@ -137,6 +144,16 @@ export interface CryptoApi {
|
|||||||
*/
|
*/
|
||||||
isCrossSigningReady(): Promise<boolean>;
|
isCrossSigningReady(): Promise<boolean>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the ID of one of the user's cross-signing keys.
|
||||||
|
*
|
||||||
|
* @param type - The type of key to get the ID of. One of `CrossSigningKey.Master`, `CrossSigngingKey.SelfSigning`,
|
||||||
|
* or `CrossSigningKey.UserSigning`. Defaults to `CrossSigningKey.Master`.
|
||||||
|
*
|
||||||
|
* @returns If cross-signing has been initialised on this device, the ID of the given key. Otherwise, null
|
||||||
|
*/
|
||||||
|
getCrossSigningKeyId(type?: CrossSigningKey): Promise<string | null>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bootstrap cross-signing by creating keys if needed.
|
* Bootstrap cross-signing by creating keys if needed.
|
||||||
*
|
*
|
||||||
|
@ -19,6 +19,7 @@ import { IKeyBackupInfo } from "./keybackup";
|
|||||||
import type { AddSecretStorageKeyOpts } from "../secret-storage";
|
import type { AddSecretStorageKeyOpts } from "../secret-storage";
|
||||||
|
|
||||||
/* re-exports for backwards compatibility. */
|
/* re-exports for backwards compatibility. */
|
||||||
|
export { CrossSigningKey } from "../crypto-api";
|
||||||
export type {
|
export type {
|
||||||
AddSecretStorageKeyOpts as IAddSecretStorageKeyOpts,
|
AddSecretStorageKeyOpts as IAddSecretStorageKeyOpts,
|
||||||
PassphraseInfo as IPassphraseInfo,
|
PassphraseInfo as IPassphraseInfo,
|
||||||
@ -27,12 +28,6 @@ export type {
|
|||||||
|
|
||||||
// TODO: Merge this with crypto.js once converted
|
// TODO: Merge this with crypto.js once converted
|
||||||
|
|
||||||
export enum CrossSigningKey {
|
|
||||||
Master = "master",
|
|
||||||
SelfSigning = "self_signing",
|
|
||||||
UserSigning = "user_signing",
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IEncryptedEventInfo {
|
export interface IEncryptedEventInfo {
|
||||||
/**
|
/**
|
||||||
* whether the event is encrypted (if not encrypted, some of the other properties may not be set)
|
* whether the event is encrypted (if not encrypted, some of the other properties may not be set)
|
||||||
|
@ -35,7 +35,13 @@ import * as algorithms from "./algorithms";
|
|||||||
import { createCryptoStoreCacheCallbacks, CrossSigningInfo, DeviceTrustLevel, UserTrustLevel } from "./CrossSigning";
|
import { createCryptoStoreCacheCallbacks, CrossSigningInfo, DeviceTrustLevel, UserTrustLevel } from "./CrossSigning";
|
||||||
import { EncryptionSetupBuilder } from "./EncryptionSetup";
|
import { EncryptionSetupBuilder } from "./EncryptionSetup";
|
||||||
import { SecretStorage as LegacySecretStorage } from "./SecretStorage";
|
import { SecretStorage as LegacySecretStorage } from "./SecretStorage";
|
||||||
import { ICreateSecretStorageOpts, IEncryptedEventInfo, IImportRoomKeysOpts, IRecoveryKey } from "./api";
|
import {
|
||||||
|
CrossSigningKey,
|
||||||
|
ICreateSecretStorageOpts,
|
||||||
|
IEncryptedEventInfo,
|
||||||
|
IImportRoomKeysOpts,
|
||||||
|
IRecoveryKey,
|
||||||
|
} from "./api";
|
||||||
import { OutgoingRoomKeyRequestManager } from "./OutgoingRoomKeyRequestManager";
|
import { OutgoingRoomKeyRequestManager } from "./OutgoingRoomKeyRequestManager";
|
||||||
import { IndexedDBCryptoStore } from "./store/indexeddb-crypto-store";
|
import { IndexedDBCryptoStore } from "./store/indexeddb-crypto-store";
|
||||||
import { VerificationBase } from "./verification/Base";
|
import { VerificationBase } from "./verification/Base";
|
||||||
@ -45,7 +51,7 @@ import { keyFromPassphrase } from "./key_passphrase";
|
|||||||
import { decodeRecoveryKey, encodeRecoveryKey } from "./recoverykey";
|
import { decodeRecoveryKey, encodeRecoveryKey } from "./recoverykey";
|
||||||
import { VerificationRequest } from "./verification/request/VerificationRequest";
|
import { VerificationRequest } from "./verification/request/VerificationRequest";
|
||||||
import { InRoomChannel, InRoomRequests } from "./verification/request/InRoomChannel";
|
import { InRoomChannel, InRoomRequests } from "./verification/request/InRoomChannel";
|
||||||
import { ToDeviceChannel, ToDeviceRequests, Request } from "./verification/request/ToDeviceChannel";
|
import { Request, ToDeviceChannel, ToDeviceRequests } from "./verification/request/ToDeviceChannel";
|
||||||
import { IllegalMethod } from "./verification/IllegalMethod";
|
import { IllegalMethod } from "./verification/IllegalMethod";
|
||||||
import { KeySignatureUploadError } from "../errors";
|
import { KeySignatureUploadError } from "../errors";
|
||||||
import { calculateKeyCheck, decryptAES, encryptAES } from "./aes";
|
import { calculateKeyCheck, decryptAES, encryptAES } from "./aes";
|
||||||
@ -54,7 +60,7 @@ import { BackupManager } from "./backup";
|
|||||||
import { IStore } from "../store";
|
import { IStore } from "../store";
|
||||||
import { Room, RoomEvent } from "../models/room";
|
import { Room, RoomEvent } from "../models/room";
|
||||||
import { RoomMember, RoomMemberEvent } from "../models/room-member";
|
import { RoomMember, RoomMemberEvent } from "../models/room-member";
|
||||||
import { EventStatus, IEvent, MatrixEvent, MatrixEventEvent } from "../models/event";
|
import { EventStatus, IContent, IEvent, MatrixEvent, MatrixEventEvent } from "../models/event";
|
||||||
import { ToDeviceBatch } from "../models/ToDeviceMessage";
|
import { ToDeviceBatch } from "../models/ToDeviceMessage";
|
||||||
import {
|
import {
|
||||||
ClientEvent,
|
ClientEvent,
|
||||||
@ -70,7 +76,6 @@ import { ISyncStateData } from "../sync";
|
|||||||
import { CryptoStore } from "./store/base";
|
import { CryptoStore } from "./store/base";
|
||||||
import { IVerificationChannel } from "./verification/request/Channel";
|
import { IVerificationChannel } from "./verification/request/Channel";
|
||||||
import { TypedEventEmitter } from "../models/typed-event-emitter";
|
import { TypedEventEmitter } from "../models/typed-event-emitter";
|
||||||
import { IContent } from "../models/event";
|
|
||||||
import { IDeviceLists, ISyncResponse, IToDeviceEvent } from "../sync-accumulator";
|
import { IDeviceLists, ISyncResponse, IToDeviceEvent } from "../sync-accumulator";
|
||||||
import { ISignatures } from "../@types/signed";
|
import { ISignatures } from "../@types/signed";
|
||||||
import { IMessage } from "./algorithms/olm";
|
import { IMessage } from "./algorithms/olm";
|
||||||
@ -80,11 +85,11 @@ import { MapWithDefault, recursiveMapToObject } from "../utils";
|
|||||||
import {
|
import {
|
||||||
AccountDataClient,
|
AccountDataClient,
|
||||||
AddSecretStorageKeyOpts,
|
AddSecretStorageKeyOpts,
|
||||||
|
SECRET_STORAGE_ALGORITHM_V1_AES,
|
||||||
|
SecretStorageCallbacks,
|
||||||
SecretStorageKeyDescription,
|
SecretStorageKeyDescription,
|
||||||
SecretStorageKeyObject,
|
SecretStorageKeyObject,
|
||||||
SecretStorageKeyTuple,
|
SecretStorageKeyTuple,
|
||||||
SECRET_STORAGE_ALGORITHM_V1_AES,
|
|
||||||
SecretStorageCallbacks,
|
|
||||||
ServerSideSecretStorageImpl,
|
ServerSideSecretStorageImpl,
|
||||||
} from "../secret-storage";
|
} from "../secret-storage";
|
||||||
import { ISecretRequest } from "./SecretSharing";
|
import { ISecretRequest } from "./SecretSharing";
|
||||||
@ -1415,6 +1420,11 @@ export class Crypto extends TypedEventEmitter<CryptoEvent, CryptoEventHandlerMap
|
|||||||
*
|
*
|
||||||
* @returns the key ID
|
* @returns the key ID
|
||||||
*/
|
*/
|
||||||
|
public getCrossSigningKeyId(type: CrossSigningKey = CrossSigningKey.Master): Promise<string | null> {
|
||||||
|
return Promise.resolve(this.getCrossSigningId(type));
|
||||||
|
}
|
||||||
|
|
||||||
|
// old name, for backwards compatibility
|
||||||
public getCrossSigningId(type: string): string | null {
|
public getCrossSigningId(type: string): string | null {
|
||||||
return this.crossSigningInfo.getId(type);
|
return this.crossSigningInfo.getId(type);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ import { deviceKeysToDeviceMap, rustDeviceToJsDevice } from "./device-converter"
|
|||||||
import { IDownloadKeyResult, IQueryKeysRequest } from "../client";
|
import { IDownloadKeyResult, IQueryKeysRequest } from "../client";
|
||||||
import { Device, DeviceMap } from "../models/device";
|
import { Device, DeviceMap } from "../models/device";
|
||||||
import { ServerSideSecretStorage } from "../secret-storage";
|
import { ServerSideSecretStorage } from "../secret-storage";
|
||||||
|
import { CrossSigningKey } from "../crypto/api";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An implementation of {@link CryptoBackend} using the Rust matrix-sdk-crypto.
|
* An implementation of {@link CryptoBackend} using the Rust matrix-sdk-crypto.
|
||||||
@ -324,6 +325,14 @@ export class RustCrypto implements CryptoBackend {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of {@link CryptoApi#getCrossSigningKeyId}
|
||||||
|
*/
|
||||||
|
public async getCrossSigningKeyId(type: CrossSigningKey = CrossSigningKey.Master): Promise<string | null> {
|
||||||
|
// TODO
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of {@link CryptoApi#boostrapCrossSigning}
|
* Implementation of {@link CryptoApi#boostrapCrossSigning}
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user