matrix-js-sdk
    Preparing search index...

    Interface VerificationRequest

    An incoming, or outgoing, request to verify a user or a device via cross-signing.

    interface VerificationRequest {
        get accepting(): boolean;
        get cancellationCode(): string | null;
        get cancellingUserId(): string | undefined;
        get chosenMethod(): string | null;
        get declining(): boolean;
        get initiatedByMe(): boolean;
        get isSelfVerification(): boolean;
        get methods(): string[];
        get otherDeviceId(): string | undefined;
        get otherUserId(): string;
        get pending(): boolean;
        get phase(): VerificationPhase;
        get roomId(): string | undefined;
        get timeout(): number | null;
        get transactionId(): string | undefined;
        get verifier(): Verifier | undefined;
        accept(): Promise<void>;
        addListener<T extends EventEmitterEvents | Change>(
            event: T,
            listener: Listener<Change, VerificationRequestEventHandlerMap, T>,
        ): this;
        cancel(params?: { code?: string; reason?: string }): Promise<void>;
        emit<T extends Change>(
            event: T,
            ...args: Parameters<VerificationRequestEventHandlerMap[T]>,
        ): boolean;
        emit<T extends Change>(
            event: T,
            ...args: Parameters<VerificationRequestEventHandlerMap[T]>,
        ): boolean;
        emitPromised<T extends Change>(
            event: T,
            ...args: Parameters<VerificationRequestEventHandlerMap[T]>,
        ): Promise<boolean>;
        emitPromised<T extends Change>(
            event: T,
            ...args: Parameters<VerificationRequestEventHandlerMap[T]>,
        ): Promise<boolean>;
        generateQRCode(): Promise<Uint8ClampedArray<ArrayBufferLike> | undefined>;
        listenerCount(event: EventEmitterEvents | Change): number;
        listeners(event: EventEmitterEvents | Change): Function[];
        off<T extends EventEmitterEvents | Change>(
            event: T,
            listener: Listener<Change, VerificationRequestEventHandlerMap, T>,
        ): this;
        on<T extends EventEmitterEvents | Change>(
            event: T,
            listener: Listener<Change, VerificationRequestEventHandlerMap, T>,
        ): this;
        once<T extends EventEmitterEvents | Change>(
            event: T,
            listener: Listener<Change, VerificationRequestEventHandlerMap, T>,
        ): this;
        otherPartySupportsMethod(method: string): boolean;
        prependListener<T extends EventEmitterEvents | Change>(
            event: T,
            listener: Listener<Change, VerificationRequestEventHandlerMap, T>,
        ): this;
        prependOnceListener<T extends EventEmitterEvents | Change>(
            event: T,
            listener: Listener<Change, VerificationRequestEventHandlerMap, T>,
        ): this;
        rawListeners(event: EventEmitterEvents | Change): Function[];
        removeAllListeners(event?: EventEmitterEvents | Change): this;
        removeListener<T extends EventEmitterEvents | Change>(
            event: T,
            listener: Listener<Change, VerificationRequestEventHandlerMap, T>,
        ): this;
        scanQRCode(qrCodeData: Uint8ClampedArray): Promise<Verifier>;
        startVerification(method: string): Promise<Verifier>;
    }

    Hierarchy (View Summary)

    Index
    • get cancellationCode(): string | null

      If this request has been cancelled, the cancellation code (e.g m.user) which is responsible for cancelling this verification.

      Returns string | null

    • get cancellingUserId(): string | undefined

      The id of the user that cancelled the request.

      Only defined when phase is Cancelled

      Returns string | undefined

    • get initiatedByMe(): boolean

      True if this request was initiated by the local client.

      For in-room verifications, the initiator is who sent the m.key.verification.request event. For to-device verifications, the initiator is who sent the m.key.verification.start event.

      Returns boolean

    • get isSelfVerification(): boolean

      True if the other party in this request is one of this user's own devices.

      Returns boolean

    • get methods(): string[]

      once the phase is Started (and !initiatedByMe) or Ready: common methods supported by both sides

      Returns string[]

    • get otherDeviceId(): string | undefined

      For verifications via to-device messages: the ID of the other device. Otherwise, undefined.

      Returns string | undefined

    • get pending(): boolean

      True if the request has sent its initial event and needs more events to complete (ie it is in phase Requested, Ready or Started).

      Returns boolean

    • get roomId(): string | undefined

      For an in-room verification, the ID of the room.

      For to-device verifictions, undefined.

      Returns string | undefined

    • get timeout(): number | null

      The remaining number of ms before the request will be automatically cancelled.

      null indicates that there is no timeout

      Returns number | null

    • get transactionId(): string | undefined

      Unique ID for this verification request.

      An ID isn't assigned until the first message is sent, so this may be undefined in the early phases.

      Returns string | undefined

    • Cancels the request, sending a cancellation to the other party

      Parameters

      • Optionalparams: { code?: string; reason?: string }

        Details for the cancellation, including reason (defaults to "User declined"), and code (defaults to m.user). Deprecated: this parameter is ignored by the Rust cryptography implementation.

      Returns Promise<void>

      Promise which resolves when the event has been sent.

    • Generate the data for a QR code allowing the other device to verify this one, if it supports it.

      Returns the QR code data only when all of the following hold; otherwise it returns undefined:

      • phase is VerificationPhase.Ready;
      • the other party advertises support for scanning a QR code (ie, otherPartySupportsMethod("m.qr_code.scan.v1") is true); and
      • this device has its cross-signing keys available locally. A frequent cause of an unexpected undefined is that cross-signing has not been set up or the keys have not yet been fetched, so the QR code cannot be constructed even though the phase and method checks pass.

      On success, display the returned bytes as a QR code for the other device to scan; if the other side scans it and confirms, there is nothing further to do on this side.

      Returns Promise<Uint8ClampedArray<ArrayBufferLike> | undefined>

    • Checks whether the other party supports a given verification method. This is useful when setting up the QR code UI, as it is somewhat asymmetrical: if the other party supports SCAN_QR, we should show a QR code in the UI, and vice versa. For methods that need to be supported by both ends, use the methods property.

      Parameters

      • method: string

        the method to check

      Returns boolean

      true if the other party said they supported the method

    • Removes all listeners, or those of the specified event.

      It is bad practice to remove listeners added elsewhere in the code, particularly when the EventEmitter instance was created by some other component or module (e.g. sockets or file streams).

      Parameters

      Returns this

      a reference to the EventEmitter, so that calls can be chained.

    • Send an m.key.verification.start event to start verification via a particular method.

      This is used for SAS (emoji) verification: method should be set to m.sas.v1. It does not start QR-code verification, and passing a QR-code method (such as m.reciprocate.v1, m.qr_code.scan.v1, or m.qr_code.show.v1) will be rejected with an "Unsupported verification method" error.

      For QR-code verification, use VerificationRequest#generateQRCode to display a QR code to the other device, or VerificationRequest#scanQRCode to consume a QR code scanned from it. This is only possible once the phase is VerificationPhase.Ready; when it is, a client can typically offer the user any of three options: show a QR code, scan the other party's QR code, or fall back to emoji (SAS) verification via this method.

      Parameters

      • method: string

        the name of the verification method to use.

      Returns Promise<Verifier>

      The verifier which will do the actual verification.