---
allOf:
  - $ref: core-event-schema/event.yaml

description: |-
  Begins a SAS key verification process using the ``m.sas.v1`` method. Typically sent as a `to-device`_ event.
properties:
  content:
    properties:
      from_device:
        type: string
        description: |-
          The device ID which is initiating the process.
      transaction_id:
        type: string
        description: |-
          An opaque identifier for the verification process. Must be unique
          with respect to the devices involved. Must be the same as the
          ``transaction_id`` given in the ``m.key.verification.request``
          if this process is originating from a request.
      method:
        type: string
        enum: ["m.sas.v1"]
        description: |-
          The verification method to use.
      key_agreement_protocols:
        type: array
        description: |-
          The key agreement protocols the sending device understands. Must
          include at least ``curve25519``.
        items:
          type: string
      hashes:
        type: array
        description: |-
          The hash methods the sending device understands. Must include at least
          ``sha256``.
        items:
          type: string
      message_authentication_codes:
        type: array
        description: |-
          The message authentication codes that the sending device understands.
          Must include at least ``hkdf-hmac-sha256``.
        items:
          type: string
      short_authentication_string:
        type: array
        description: |-
          The SAS methods the sending device (and the sending device's user)
          understands. Must include at least ``decimal``. Optionally can include
          ``emoji``.
        items:
          type: string
          enum: ["decimal", "emoji"]
    required:
      - from_device
      - transaction_id
      - method
      - key_agreement_protocols
      - hashes
      - message_authentication_codes
      - short_authentication_string
    type: object
  type:
    enum:
      - m.key.verification.start
    type: string
type: object
