Interface VerificationRequest

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

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

Hierarchy (view full)

Implemented by

Accessors

  • get cancellationCode(): null | string
  • If this request has been cancelled, the cancellation code (e.g m.user) which is responsible for cancelling this verification.

    Returns null | string

  • get cancellingUserId(): undefined | string
  • The id of the user that cancelled the request.

    Only defined when phase is Cancelled

    Returns undefined | string

  • 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(): undefined | string
  • For verifications via to-device messages: the ID of the other device. Otherwise, undefined.

    Returns undefined | string

  • 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(): undefined | string
  • For an in-room verification, the ID of the room.

    For to-device verifictions, undefined.

    Returns undefined | string

  • get timeout(): null | number
  • The remaining number of ms before the request will be automatically cancelled.

    null indicates that there is no timeout

    Returns null | number

  • get transactionId(): undefined | string
  • 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 undefined | string

Methods

  • Create a Verifier to do this verification via a particular method.

    If a verifier has already been created for this request, returns that verifier.

    This does not send the m.key.verification.start event - to do so, call Verifier.verify on the returned verifier.

    If no previous events have been sent, pass in targetDevice to set who to direct this request to.

    Parameters

    • method: string

      the name of the verification method to use.

    • OptionaltargetDevice: {
          deviceId?: string;
          userId?: string;
      }

      details of where to send the request to.

      • OptionaldeviceId?: string
      • OptionaluserId?: string

    Returns Verifier

    The verifier which will do the actual verification.

  • 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.

      • Optionalcode?: string
      • Optionalreason?: string

    Returns Promise<void>

    Promise which resolves when the event has been sent.

  • Synchronously calls each of the listeners registered for the event named event, in the order they were registered, passing the supplied arguments to each.

    Type Parameters

    Parameters

    Returns boolean

    true if the event had listeners, false otherwise.

  • Synchronously calls each of the listeners registered for the event namedeventName, in the order they were registered, passing the supplied arguments to each.

    Returns true if the event had listeners, false otherwise.

    import EventEmitter from 'node:events';
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener

    Type Parameters

    Parameters

    Returns boolean

    v0.1.26

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

    Only set after a .ready if the other party can scan a QR code, otherwise undefined.

    Returns undefined | Buffer

    Not supported in Rust Crypto. Use VerificationRequest#generateQRCode instead.

  • Adds the listener function to the end of the listeners array for the event named event.

    No checks are made to see if the listener has already been added. Multiple calls passing the same combination of event and listener will result in the listener being added, and called, multiple times.

    By default, event listeners are invoked in the order they are added. The prependListener method can be used as an alternative to add the event listener to the beginning of the listeners array.

    Type Parameters

    Parameters

    Returns this

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

  • Adds a one-time listener function for the event named event. The next time event is triggered, this listener is removed and then invoked.

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

    By default, event listeners are invoked in the order they are added. The prependOnceListener method can be used as an alternative to add the event listener to the beginning of the listeners array.

    Type Parameters

    Parameters

    Returns this

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

  • 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.

  • Start a QR code verification by providing a scanned QR code for this verification flow.

    Validates the QR code, and if it is ok, sends an m.key.verification.start event with method set to m.reciprocate.v1, to tell the other side the scan was successful.

    See also VerificationRequest#startVerification which can be used to start other verification methods.

    Parameters

    Returns Promise<Verifier>

    A verifier; call .verify() on it to wait for the other side to complete the verification flow.

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

    This is normally used when starting a verification via emojis (ie, method is set to m.sas.v1).

    Parameters

    • method: string

      the name of the verification method to use.

    Returns Promise<Verifier>

    The verifier which will do the actual verification.