Uniform Chat
  • Uniform.Matrix
  • API
Search Results for

    Show / Hide Table of Contents
    • LiveKit.Proto
      • ActiveSpeakerUpdate
      • AddTrackRequest
      • AudioCodec
      • AudioTrackFeature
      • BackupCodecPolicy
      • CandidateProtocol
      • ChatMessage
      • ClientConfigSetting
      • ClientConfiguration
      • ClientInfo
      • ClientInfo.Types
      • ClientInfo.Types.Capability
      • ClientInfo.Types.SDK
      • Codec
      • ConnectionQuality
      • ConnectionQualityInfo
      • ConnectionQualityUpdate
      • ConnectionSettings
      • DataBlob
      • DataBlobKey
      • DataBlobKey.KeyOneofCase
      • DataChannelInfo
      • DataChannelReceiveState
      • DataPacket
      • DataPacket.Types
      • DataPacket.Types.Kind
      • DataPacket.ValueOneofCase
      • DataStream
      • DataStream.Types
      • DataStream.Types.ByteHeader
      • DataStream.Types.Chunk
      • DataStream.Types.CompressionType
      • DataStream.Types.Header
      • DataStream.Types.Header.ContentHeaderOneofCase
      • DataStream.Types.OperationType
      • DataStream.Types.TextHeader
      • DataStream.Types.Trailer
      • DataTrackExtensionID
      • DataTrackExtensionParticipantSid
      • DataTrackFrameEncoding
      • DataTrackFrameEncoding.Types
      • DataTrackFrameEncoding.Types.WellKnownFrameEncoding
      • DataTrackFrameEncoding.ValueOneofCase
      • DataTrackInfo
      • DataTrackSchemaEncoding
      • DataTrackSchemaEncoding.Types
      • DataTrackSchemaEncoding.Types.WellKnownSchemaEncoding
      • DataTrackSchemaEncoding.ValueOneofCase
      • DataTrackSchemaId
      • DataTrackSubscriberHandles
      • DataTrackSubscriberHandles.Types
      • DataTrackSubscriberHandles.Types.PublishedDataTrack
      • DataTrackSubscriptionOptions
      • DependencyDescriptorForwarderState
      • DisabledCodecs
      • DisconnectReason
      • EncryptedPacket
      • EncryptedPacketPayload
      • EncryptedPacketPayload.ValueOneofCase
      • Encryption
      • Encryption.Types
      • Encryption.Types.Type
      • EventMetric
      • FilterParams
      • GetDataBlobRequest
      • GetDataBlobResponse
      • ICEServer
      • ImageCodec
      • JoinRequest
      • JoinResponse
      • LeaveRequest
      • LeaveRequest.Types
      • LeaveRequest.Types.Action
      • ListUpdate
      • LivekitMetricsReflection
      • LivekitModelsReflection
      • LivekitRtcReflection
      • MediaSectionsRequirement
      • MetricLabel
      • MetricSample
      • MetricsBatch
      • MetricsRecordingHeader
      • MuteTrackRequest
      • NegotiatedDataChannelID
      • OptionsExtensions
      • OptionsReflection
      • PacketTrailerFeature
      • Pagination
      • ParticipantInfo
      • ParticipantInfo.Types
      • ParticipantInfo.Types.Kind
      • ParticipantInfo.Types.KindDetail
      • ParticipantInfo.Types.State
      • ParticipantPermission
      • ParticipantTracks
      • ParticipantUpdate
      • Ping
      • PlayoutDelay
      • Pong
      • PublishDataTrackRequest
      • PublishDataTrackResponse
      • RTCPSenderReportState
      • RTPDrift
      • RTPForwarderState
      • RTPForwarderState.CodecMungerOneofCase
      • RTPMungerState
      • RTPStats
      • ReconnectReason
      • ReconnectResponse
      • RegionInfo
      • RegionSettings
      • RequestResponse
      • RequestResponse.RequestOneofCase
      • RequestResponse.Types
      • RequestResponse.Types.Reason
      • Room
      • RoomEndReason
      • RoomMovedResponse
      • RoomUpdate
      • RpcAck
      • RpcError
      • RpcRequest
      • RpcResponse
      • RpcResponse.ValueOneofCase
      • Sensitivity
      • ServerInfo
      • ServerInfo.Types
      • ServerInfo.Types.Edition
      • SessionDescription
      • SignalRequest
      • SignalRequest.MessageOneofCase
      • SignalResponse
      • SignalResponse.MessageOneofCase
      • SignalTarget
      • SimulateScenario
      • SimulateScenario.ScenarioOneofCase
      • SimulcastCodec
      • SimulcastCodecInfo
      • SipDTMF
      • SpeakerInfo
      • SpeakersChanged
      • StoreDataBlobRequest
      • StoreDataBlobResponse
      • StreamState
      • StreamStateInfo
      • StreamStateUpdate
      • SubscribedAudioCodec
      • SubscribedAudioCodecUpdate
      • SubscribedCodec
      • SubscribedQuality
      • SubscribedQualityUpdate
      • SubscriptionError
      • SubscriptionPermission
      • SubscriptionPermissionUpdate
      • SubscriptionResponse
      • SyncState
      • TimeSeriesMetric
      • TimedVersion
      • TokenPagination
      • TrackInfo
      • TrackPermission
      • TrackPublishedResponse
      • TrackSource
      • TrackSubscribed
      • TrackType
      • TrackUnpublishedResponse
      • Transcription
      • TranscriptionSegment
      • TrickleRequest
      • UnpublishDataTrackRequest
      • UnpublishDataTrackResponse
      • UpdateDataSubscription
      • UpdateDataSubscription.Types
      • UpdateDataSubscription.Types.Update
      • UpdateLocalAudioTrack
      • UpdateLocalVideoTrack
      • UpdateParticipantMetadata
      • UpdateSubscription
      • UpdateTrackSettings
      • UpdateVideoLayers
      • UserPacket
      • VP8MungerState
      • VideoCodec
      • VideoConfiguration
      • VideoLayer
      • VideoLayer.Types
      • VideoLayer.Types.Mode
      • VideoQuality
      • WebhookConfig
      • WrappedJoinRequest
      • WrappedJoinRequest.Types
      • WrappedJoinRequest.Types.Compression
    • Uniform.Chat.Avalonia
      • App
      • ClipboardFile
      • GuiPlatform
    • Uniform.Chat.Avalonia.Services
      • AccountCreator
      • AccountMemory
      • AvaloniaUiDispatcher
      • ClientConnection
      • IAccountCreator
      • INotifier
      • IPushService
      • IUiDispatcher
      • PasswordRequiredException
      • PushDistributor
      • PushRegistration
      • ShareInbox
      • SharedContent
      • SharedFile
      • SignIn
    • Uniform.Chat.Avalonia.ViewModels
      • ActionSheetViewModel
      • AdminAccountItem
      • AdminReportItem
      • AdminSection
      • AdminTokenItem
      • AdminViewModel
      • AppTheme
      • AudioTestViewModel
      • CallViewModel
      • ChatViewModel
      • ConnectingViewModel
      • DeviceItem
      • DirectoryViewModel
      • LicenseEntry
      • LicensesViewModel
      • LogFileItem
      • LoginViewModel
      • LogsViewModel
      • MainViewModel
      • MemberItem
      • MessageKind
      • MessageList
      • MessageViewModel
      • PublicRoomItem
      • RoomItemViewModel
      • SecurityViewModel
      • SettingsViewModel
      • SheetAction
      • SheetDetail
      • StatusLine
      • VerificationViewModel
      • VideoFeed
      • ViewModelBase
    • Uniform.Chat.Avalonia.Views
      • ActionSheetView
      • AdminView
      • ChatView
      • ConnectingView
      • DirectoryView
      • LicensesView
      • LinkClickedEventArgs
      • LoginView
      • MainView
      • MainWindow
      • RichText
      • SecurityView
      • SenderColorConverter
      • SettingsView
      • TextScale
      • VerificationView
      • VideoView
    • Uniform.Chat.Desktop
      • Program
    • Uniform.Chat.Desktop.Cameras
      • EncodingCamera
      • MediaFoundationCamera
      • V4l2Camera
    • Uniform.Chat.Desktop.Notifications
      • FreeDesktopNotifier
    • Uniform.Chat.Server
      • ServerHostOptions
      • UiMode
    • Uniform.Chat.Server.Management
      • HttpServerAdmin
      • IServerAdmin
      • LocalServerAdmin
      • ServerSnapshot
    • Uniform.Chat.Server.Ui
      • AdminWindow<T>
      • DashboardOptions
      • ReportsWindow
      • RoomsWindow
      • ServerWindow
      • UsersWindow
    • Uniform.Chat.Terminal.Configuration
      • AudioOptions
      • UiOptions
    • Uniform.Chat.Terminal.Ui
      • ClientDialogs
      • DroppedFiles
      • EntryKind
      • MainWindow
      • MessageFormatter
      • TimelineEntry
      • TimelinePane
      • TuiCredentialPrompt
    • Uniform.Chat.Terminal.Ui.Images
      • AsciiArt
      • DecodedImage
      • ImagePreviewStyle
    • Uniform.LiveKit
      • FrameCryptor
      • FrameKind
      • LiveKitMedia
      • LiveKitRoom
      • LiveKitRoomOptions
      • LiveKitRoomService
      • LiveKitSignalClient
      • MatrixRtcAuthorizationClient
    • Uniform.LiveKit.Authorization
      • AuthorizationException
      • DelayedLeaveKeeper
      • FederationOpenIdVerifier
      • HomeserverDelayedEvents
      • IDelayedEvents
      • IOpenIdVerifier
      • IRoomMembership
      • LiveKitAuthorizer
      • LiveKitAuthorizerOptions
    • Uniform.LiveKit.Hosting
      • LiveKitHostingExtensions
      • LiveKitOptions
    • Uniform.LiveKit.Protocol
      • AccessToken
      • AuthorizationError
      • CallMember
      • DelayedLeave
      • LegacySfuRequest
      • MatrixRtcNames
      • OpenIdToken
      • SfuResponse
      • TokenRequest
      • VideoGrant
    • Uniform.Matrix.Audio
      • AlsaAudioDevices
      • AudioDevice
      • AudioDevices
      • IAudioDevices
      • MicrophoneFrames
      • RingTone
      • SpeakerFrames
      • VoiceDecoder
      • VoiceEncoder
      • VoiceFormat
      • VoiceLoopback
      • WasapiAudioDevices
    • Uniform.Matrix.Calls
      • CallEventSender
      • CallService
      • CallState
      • IVideoCamera
      • LegacyCall
      • RtcCall
      • VideoReceiver
      • VoiceCall
      • VoiceMedia
    • Uniform.Matrix.Client
      • ClientServiceExtensions
      • EncryptedMedia
      • MatrixKeyTransport
      • MimeTypes
    • Uniform.Matrix.Client.Configuration
      • AccountPaths
      • MatrixOptions
      • StorageOptions
    • Uniform.Matrix.Client.Formatting
      • EventText
      • HtmlText
      • MarkdownComposer
    • Uniform.Matrix.Client.Migrations
      • AddEventLines
      • InitialCreate
    • Uniform.Matrix.Client.Services
      • AccountRegistration
      • ClientSession
      • ConnectionState
      • ConnectionStatus
      • CryptoService
      • EncryptionUnavailableException
      • ICredentialPrompt
      • MatrixWorker
      • MediaCache
      • NetworkMonitor
      • OutboxSender
      • SyncProcessor
    • Uniform.Matrix.Client.State
      • Room
      • RoomMemberInfo
      • RoomStore
      • SyncChanges
      • TimelineBatch
    • Uniform.Matrix.Client.Storage
      • ClientDbContext
      • ClientStore
      • CryptoAccountRow
      • CryptoDeviceListRow
      • CryptoInboundGroupSessionRow
      • CryptoOlmSessionRow
      • CryptoOutboundGroupSessionRow
      • CryptoValueRow
      • DesignTimeClientDbContextFactory
      • EfCryptoStore
      • OutboxMessage
      • OutboxState
      • RoomLines
      • StoredAccount
      • StoredEvent
      • StoredMedia
    • Uniform.Matrix.Gui.Terminal
      • Dialogs
      • LogWindow
      • SettingsWindow
      • TextWrapper
    • Uniform.Matrix.Hosting
      • AppDirectories
      • AppVersion
      • AppliedConfigurationProvider
      • AppliedConfigurationSource
      • FileLoggerProvider
      • HostingExtensions
      • ISettingsStore
      • LogEntry
      • LogFileInfo
      • LogFiles
      • OptionCatalog
      • OptionChange
      • OptionInfo
      • OptionSection
      • RestartRequiredAttribute
      • SecretAttribute
      • SettingsEditor
      • SettingsStore
    • Uniform.Matrix.Protocol.Client
      • HomeserverDiscovery
      • MatrixClient
      • MatrixSession
      • MediaDownload
      • RegistrationRequirements
      • UserInteractiveAuthException
    • Uniform.Matrix.Protocol.Core
      • AdminAccount
      • AdminAccountsResponse
      • AdminRegistrationToken
      • AdminRegistrationTokensResponse
      • AdminReport
      • AdminReportsResponse
      • AdminRoomInfo
      • AdminRoomShutdown
      • AdminRoomsResponse
      • AuthFlow
      • AuthTypes
      • Base64
      • CallAnswerContent
      • CallCandidate
      • CallCandidatesContent
      • CallContent
      • CallEncryptionKeysContent
      • CallHangupContent
      • CallInviteContent
      • CallKeyMember
      • CallMediaKey
      • CallMemberContent
      • CallNegotiateContent
      • CallRejectContent
      • CallSelectAnswerContent
      • CallSessionDescription
      • CanonicalAliasContent
      • CanonicalJson
      • ClientEvent
      • ContextResponse
      • CreateContent
      • CreateMediaResponse
      • CreateRoomRequest
      • CrossSigningKey
      • CrossSigningUsages
      • DelayedEventResponse
      • Device
      • DeviceKeys
      • DeviceLists
      • DevicesResponse
      • DirectContent
      • Direction
      • EncryptedContent
      • EncryptedFile
      • EncryptionAlgorithms
      • EncryptionContent
      • ErrorCodes
      • ErrorResponse
      • EventFilter
      • EventIdResponse
      • EventList<T>
      • EventTypes
      • ExceptionText
      • Filter
      • FilterIdResponse
      • FullyReadContent
      • IgnoredUserListContent
      • InReplyTo
      • InitialStateEvent
      • InvitedRoom
      • JoinedMembersResponse
      • JoinedRoom
      • JoinedRoomsResponse
      • JsonWebKey
      • KeyBackupAlgorithms
      • KeyBackupData
      • KeyBackupVersion
      • KeysBackup
      • KeysClaimResponse
      • KeysQueryResponse
      • KeysUploadResponse
      • KnockedRoom
      • LeftRoom
      • LoginFlow
      • LoginFlowsResponse
      • LoginResponse
      • MatrixEvent
      • MatrixException
      • MatrixJson
      • MatrixLink
      • MediaInfo
      • MemberContent
      • MembersResponse
      • Memberships
      • Mentions
      • MessageContent
      • MessageFormats
      • MessageTypes
      • MessagesResponse
      • MxcUri
      • NameContent
      • OpenIdTokenResponse
      • PasswordLoginRequest
      • PowerLevelsContent
      • PresenceContent
      • PresenceEvent
      • PresenceStates
      • ProfileResponse
      • PublicRoom
      • PublicRoomsResponse
      • ReactionContent
      • ReceiptContent
      • ReceiptInfo
      • ReceiptTypes
      • RedactionContent
      • RegisterRequest
      • RegisterResponse
      • Relation
      • RelationTypes
      • RoomAliasResponse
      • RoomAliasesResponse
      • RoomAvatarContent
      • RoomEventFilter
      • RoomFilter
      • RoomIdResponse
      • RoomKeyBackup
      • RoomKeyContent
      • RoomMember
      • RoomPresets
      • RoomSummary
      • RoomTags
      • RtcDeclineContent
      • RtcFocusActive
      • RtcNotificationContent
      • RtcTransport
      • RtcTransportsResponse
      • StringOrNumberConverter
      • StrippedStateEvent
      • SyncResponse
      • SyncRooms
      • TagContent
      • TagInfo
      • TermsPolicy
      • Timeline
      • ToDeviceEvent
      • TopicContent
      • TurnServerResponse
      • TypingContent
      • UnreadNotificationCounts
      • UnsignedData
      • UploadResponse
      • UserDirectoryEntry
      • UserDirectoryResponse
      • UserId
      • UserIdentifier
      • UserInteractiveAuthResponse
      • VerificationRequestContent
      • VersionsResponse
      • WellKnownClient
      • WellKnownServer
      • WhoAmIResponse
      • WhoisConnection
      • WhoisDevice
      • WhoisResponse
      • WhoisSession
    • Uniform.Matrix.Protocol.Crypto
      • AccountRecord
      • AesCtr
      • AttachmentCrypto
      • AttachmentKeys
      • DecryptedToDeviceEvent
      • DecryptionStatus
      • DeviceInfo
      • DeviceListRecord
      • DeviceTrust
      • Ed25519
      • EncryptedAttachments
      • EncryptedSecret
      • EstablishedSas
      • ICryptoStore
      • IKeyTransport
      • IdentityKeys
      • InMemoryCryptoStore
      • InboundGroupSessionRecord
      • MegolmInboundSession
      • MegolmOutboundSession
      • MegolmPlaintext
      • OlmAccount
      • OlmException
      • OlmMachine
      • OlmMessage
      • OlmSession
      • OlmSessionRecord
      • OutboundGroupSessionRecord
      • PassphraseInfo
      • PkEncryption
      • PkMessage
      • RecoveryResult
      • RoomEventDecryption
      • Sas
      • SasEmoji
      • SecretNames
      • SecretStorage
      • SecretStorageCrypto
      • SecretStorageKeyDescription
      • SecurityStatus
      • UserIdentity
      • Verification
      • VerificationState
    • Uniform.Matrix.Protocol.Server
      • AuthEventTypes
      • AuthEvents
      • AuthRules
      • DnsSrv
      • EventFormat
      • FederationAuth
      • PowerLevels
      • PushContext
      • PushDecision
      • PushRules
      • RedactionRules
      • RoomVersion
      • ServerAcl
      • ServerNames
      • SrvRecord
      • StateResolution
      • XMatrixAuthorization
    • Uniform.Matrix.Server
      • ServerServiceExtensions
      • ServerStatus
    • Uniform.Matrix.Server.Accounts
      • AccountDataService
      • AccountDeactivation
      • AccountService
      • AdminDevice
      • AdminRoom
      • AdminService
      • AdminUser
      • AdminUserChange
      • AuthenticationRequiredException
      • LocalUserIds
      • OpenIdTokens
      • Optional<T>
      • PresenceService
      • ProfileService
      • PushNotifier
      • PushRuleService
      • PusherService
      • RegistrationToken
      • RegistrationTokens
      • Requester
      • RoomShutdown
      • ServerNotices
      • UserInteractiveAuth
    • Uniform.Matrix.Server.Configuration
      • CallOptions
      • FederationOptions
      • MediaOptions
      • PushOptions
      • RateLimitOptions
      • RegistrationMode
      • ServerOptions
      • ServerStorageOptions
      • TlsOptions
      • UrlPreviewOptions
    • Uniform.Matrix.Server.Encryption
      • DeviceKeyService
      • KeyBackupService
      • ToDeviceService
    • Uniform.Matrix.Server.Endpoints
      • AccountDataEndpoints
      • AccountEndpoints
      • ActivityEndpoints
      • AdminEndpoints
      • CallEndpoints
      • DeviceEndpoints
      • DirectoryEndpoints
      • DiscoveryEndpoints
      • FederationEndpoints
      • KeyBackupEndpoints
      • KeyEndpoints
      • ManagementEndpoints
      • MediaEndpoints
      • ProfileEndpoints
      • PushRuleEndpoints
      • PusherEndpoints
      • RoomEndpoints
      • SyncEndpoints
    • Uniform.Matrix.Server.Federation
      • FederationClient
      • FederationEndpoint
      • FederationQueue
      • FederationSender
      • RemoteActivity
      • RemoteDevices
      • RemoteEvents
      • RemoteInvites
      • RemoteJoins
      • RemoteServerKeys
      • RoomAcls
      • RoomHistory
      • ServerAddress
      • ServerAuthentication
      • ServerResolver
      • SrvLookup
    • Uniform.Matrix.Server.Http
      • AccessTokens
      • AdminSocket
      • LegacyPaths
      • MatrixErrorException
      • MatrixHttp
      • PublicAddresses
      • RateLimits
      • TlsCertificate
      • TlsCertificateException
    • Uniform.Matrix.Server.Keys
      • ServerKeys
    • Uniform.Matrix.Server.Media
      • MediaService
      • MediaService.StoredFile
      • Thumbnailer
      • UrlPreviewService
    • Uniform.Matrix.Server.Rooms
      • DelayedEvents
      • DirectoryService
      • EventDraft
      • EventSender
      • ReceiptService
      • Report
      • ReportService
      • RoomService
      • StateCache
      • TypingService
    • Uniform.Matrix.Server.Storage
      • AccessTokenRow
      • AccountDataRow
      • CounterRow
      • CrossSigningKeyRow
      • CurrentStateRow
      • DataDirectoryInUseException
      • DataDirectoryLock
      • DatabaseMigrator
      • DelayedEventRow
      • DesignTimeServerDbContextFactory
      • DeviceKeysRow
      • DeviceListChangeRow
      • DeviceRow
      • EventEdgeRow
      • EventRelationRow
      • EventRow
      • FallbackKeyRow
      • FederationOutboxRow
      • FederationProgressRow
      • FilterRow
      • ForgottenRoomRow
      • ForwardExtremityRow
      • KeyBackupVersionRow
      • KeySignatureRow
      • MediaRow
      • OneTimeKeyRow
      • ProfileRow
      • PusherRow
      • ReceiptRow
      • RegistrationTokenRow
      • RemoteInviteRow
      • RemoteMediaRow
      • ReportRow
      • RoomAliasRow
      • RoomKeyRow
      • RoomRow
      • ServerDbContext
      • ServerKeyResponseRow
      • StateGroupEntryRow
      • StateGroupRow
      • ThumbnailRow
      • ToDeviceRow
      • TransactionRow
      • UserRow
    • Uniform.Matrix.Server.Storage.Migrations
      • AddAdminControls
      • AddDelayedEvents
      • AddEventStatusRelationsAndReports
      • AddFederationOutbox
      • AddFederationProgress
      • AddPushers
      • AddRemoteInvites
      • AddRemoteMedia
      • AddServerKeyResponses
      • InitialCreate
      • ScopeTransactionsToRooms
    • Uniform.Matrix.Server.Sync
      • ServerStream
      • SlidingSyncService
      • SyncFilter
      • SyncService
    • Uniform.Matrix.Video
      • IVideoDecoder
      • VideoFrame
    • Uniform.Matrix.Video.Vp8
      • Vp8Decoder
      • Vp8Encoder
    • Uniform.Matrix.WebRtc
      • AudioPeerConnection
      • IMediaConnection
      • PeerConnectionOptions
      • PeerConnectionState
    • Uniform.Matrix.WebRtc.Dtls
      • DtlsCertificate
      • DtlsSrtp
    • Uniform.Matrix.WebRtc.Ice
      • IceAgent
      • IceCandidate
      • IceCandidateType
      • IceOptions
      • IceServer
      • IceState
    • Uniform.Matrix.WebRtc.Rtp
      • BandwidthEstimator
      • JitterBuffer
      • ReceiverStatistics
      • ReportBlock
      • Rtcp
      • RtpPacket
      • Vp8Depacketizer
      • Vp8EncodedFrame
      • Vp8Packetizer
    • Uniform.Matrix.WebRtc.Sdp
      • AudioSdp
      • LocalAudio
      • MediaDescription
      • RemoteAudio
      • RemoteTransport
      • RemoteVideo
      • SessionDescription
    • Uniform.Matrix.WebRtc.Srtp
      • SrtpSession
    • Uniform.Stun
      • DatagramSender
      • StunClient
      • StunDiscovery
      • TurnClient
    • Uniform.Stun.Hosting
      • PemCertificate
      • TurnHostingExtensions
      • TurnOptions
      • TurnServerHost
    • Uniform.Stun.Protocol
      • ChannelData
      • StunAddress
      • StunAttribute
      • StunAttributeTypes
      • StunClass
      • StunErrorCodes
      • StunMessage
      • StunMethod
      • TurnCredentials
    • Uniform.Turn
      • CombinedAuthenticator
      • ITurnAuthenticator
      • IpRange
      • SharedSecretAuthenticator
      • StaticUserAuthenticator
      • TurnServer
      • TurnServerOptions
      • TurnServerStatus
      • TurnTransport

    Class OlmMachine

    End-to-end encryption state machine of one device: keys, Olm sessions with other devices and Megolm sessions for rooms.

    Inheritance
    object
    OlmMachine
    Implements
    IDisposable
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: Uniform.Matrix.Protocol.Crypto
    Assembly: Uniform.Matrix.Protocol.Crypto.dll
    Syntax
    public sealed class OlmMachine : IDisposable
    Remarks

    Feed every sync to ReceiveSyncAsync(SyncResponse, CancellationToken), decrypt m.room.encrypted timeline events with DecryptRoomEventAsync(string, ClientEvent, CancellationToken), and encrypt outgoing events for encrypted rooms with EncryptRoomEventAsync(string, string, object, IReadOnlyCollection<string>, EncryptionContent?, CancellationToken). Calls are serialized, so it can be shared between threads. Split into partial files:

    • OlmMachine.cs: account, key upload and device lists.
    • OlmMachine.Olm.cs: Olm sessions and to-device messages, including received room keys.
    • OlmMachine.Megolm.cs: room message encryption, key sharing and decryption.
    • OlmMachine.CrossSigning.cs: cross-signing keys, trust and recovery from secret storage.
    • OlmMachine.Backup.cs: server-side key backup.
    • OlmMachine.KeyRequests.cs: room key and secret requests between the user's own devices.
    • OlmMachine.Verification.cs: SAS emoji verification of devices.
    Examples
    OlmMachine machine = await OlmMachine.CreateAsync(new MatrixKeyTransport(client), store, client.UserId!, client.DeviceId!, pickleKey);
    await foreach (SyncResponse sync in client.SyncLoopAsync())
    {
        await machine.ReceiveSyncAsync(sync);
        // decrypt timeline events with machine.DecryptRoomEventAsync(roomId, ev)
    }

    Fields

    | Edit this page View Source

    WedgedSessionRetry

    How long before a device whose message could not be decrypted gets another new session.

    Declaration
    public static readonly TimeSpan WedgedSessionRetry
    Field Value
    Type Description
    TimeSpan

    Properties

    | Edit this page View Source

    DeviceId

    This device.

    Declaration
    public string DeviceId { get; }
    Property Value
    Type Description
    string
    | Edit this page View Source

    IdentityKeys

    This device's public identity keys.

    Declaration
    public IdentityKeys IdentityKeys { get; }
    Property Value
    Type Description
    IdentityKeys
    | Edit this page View Source

    RoomEventSender

    Send a room event, encrypted in encrypted rooms: the room, the event type and content; set by the client, which owns the room's encryption. Without it, in-room verification requests are not answered.

    Declaration
    public Func<string, string, JsonObject, CancellationToken, Task>? RoomEventSender { get; set; }
    Property Value
    Type Description
    Func<string, string, JsonObject, CancellationToken, Task>
    | Edit this page View Source

    SasEmojiTable

    The SAS emoji table, by index.

    Declaration
    public static IReadOnlyList<SasEmoji> SasEmojiTable { get; }
    Property Value
    Type Description
    IReadOnlyList<SasEmoji>
    | Edit this page View Source

    UserId

    Logged-in user.

    Declaration
    public string UserId { get; }
    Property Value
    Type Description
    string
    | Edit this page View Source

    Verifications

    Verifications in progress, ours and incoming; safe to read from VerificationChanged.

    Declaration
    public IReadOnlyList<Verification> Verifications { get; }
    Property Value
    Type Description
    IReadOnlyList<Verification>

    Methods

    | Edit this page View Source

    AcceptVerificationAsync(Verification, CancellationToken)

    Accept an incoming request; the requester then starts the emoji exchange.

    Declaration
    public Task AcceptVerificationAsync(Verification verification, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    Verification verification
    CancellationToken cancellationToken
    Returns
    Type Description
    Task
    | Edit this page View Source

    BackUpRoomKeysAsync(CancellationToken)

    Upload room keys not yet in the backup; return how many. Does nothing without a backup whose private key this device holds.

    Declaration
    public Task<int> BackUpRoomKeysAsync(CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<int>
    | Edit this page View Source

    CancelVerificationAsync(Verification, string, CancellationToken)

    Cancel a verification, e.g. when the emoji do not match.

    Declaration
    public Task CancelVerificationAsync(Verification verification, string code = "m.user", CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    Verification verification

    Verification to cancel.

    string code

    Cancel code; m.user when the user declined, m.mismatched_sas when the emoji differ.

    CancellationToken cancellationToken

    Cancellation token.

    Returns
    Type Description
    Task
    | Edit this page View Source

    ConfirmVerificationAsync(Verification, CancellationToken)

    Confirm that the emoji match: sends our MACs, and finishes when theirs check out.

    Declaration
    public Task ConfirmVerificationAsync(Verification verification, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    Verification verification
    CancellationToken cancellationToken
    Returns
    Type Description
    Task
    | Edit this page View Source

    CreateAsync(IKeyTransport, ICryptoStore, string, string, byte[], TimeProvider?, CancellationToken)

    Load the device's account from store, or create one on first use.

    Declaration
    public static Task<OlmMachine> CreateAsync(IKeyTransport transport, ICryptoStore store, string userId, string deviceId, byte[] pickleKey, TimeProvider? time = null, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    IKeyTransport transport

    Network calls, usually MatrixKeyTransport in Uniform.Matrix.Client.

    ICryptoStore store

    Persistent state.

    string userId

    Logged-in user.

    string deviceId

    This device.

    byte[] pickleKey

    32-byte key encrypting stored pickles; keep it secret and stable.

    TimeProvider time

    Clock for session rotation; system clock when null.

    CancellationToken cancellationToken

    Cancellation token.

    Returns
    Type Description
    Task<OlmMachine>
    | Edit this page View Source

    DecryptRoomEventAsync(string, ClientEvent, CancellationToken)

    Decrypt a Megolm m.room.encrypted event of roomId; other events are returned unchanged.

    Declaration
    public Task<RoomEventDecryption> DecryptRoomEventAsync(string roomId, ClientEvent clientEvent, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string roomId
    ClientEvent clientEvent
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<RoomEventDecryption>
    | Edit this page View Source

    DiscardOutboundSessionAsync(string, CancellationToken)

    Forget the room's outbound session, so the next message starts a new one; e.g. after a member left.

    Declaration
    public Task DiscardOutboundSessionAsync(string roomId, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string roomId
    CancellationToken cancellationToken
    Returns
    Type Description
    Task
    | Edit this page View Source

    Dispose()

    Wipe key material in memory.

    Declaration
    public void Dispose()
    | Edit this page View Source

    EncryptRoomEventAsync(string, string, object, IReadOnlyCollection<string>, EncryptionContent?, CancellationToken)

    Encrypt an event for roomId, first sharing the room key with devices of memberIds that lack it; return the m.room.encrypted content to send.

    Declaration
    public Task<EncryptedContent> EncryptRoomEventAsync(string roomId, string eventType, object content, IReadOnlyCollection<string> memberIds, EncryptionContent? settings = null, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string roomId

    Encrypted room.

    string eventType

    Type of the event to encrypt, e.g. RoomMessage.

    object content

    Event content; serialized with Options.

    IReadOnlyCollection<string> memberIds

    Joined and invited members, whose devices get the key.

    EncryptionContent settings

    Room's m.room.encryption content, for rotation limits.

    CancellationToken cancellationToken

    Cancellation token.

    Returns
    Type Description
    Task<EncryptedContent>
    | Edit this page View Source

    GetDeviceTrust(DeviceInfo)

    Return how much device is trusted.

    Declaration
    public DeviceTrust GetDeviceTrust(DeviceInfo device)
    Parameters
    Type Name Description
    DeviceInfo device
    Returns
    Type Description
    DeviceTrust
    | Edit this page View Source

    GetDevices(string)

    Return known devices of userId; call TrackUsersAsync(IEnumerable<string>, CancellationToken) first to fetch them.

    Declaration
    public IReadOnlyList<DeviceInfo> GetDevices(string userId)
    Parameters
    Type Name Description
    string userId
    Returns
    Type Description
    IReadOnlyList<DeviceInfo>
    | Edit this page View Source

    GetIdentity(string)

    Return the known cross-signing keys of userId.

    Declaration
    public UserIdentity? GetIdentity(string userId)
    Parameters
    Type Name Description
    string userId
    Returns
    Type Description
    UserIdentity
    | Edit this page View Source

    GetSecurityStatusAsync(CancellationToken)

    Report cross-signing, backup and secret storage state, querying the server for current keys.

    Declaration
    public Task<SecurityStatus> GetSecurityStatusAsync(CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<SecurityStatus>
    | Edit this page View Source

    IsIdentityTrusted(UserIdentity)

    Return whether a user's cross-signing identity is trusted: verified directly, our own with its private key here, or signed by our trusted user-signing key.

    Declaration
    public bool IsIdentityTrusted(UserIdentity identity)
    Parameters
    Type Name Description
    UserIdentity identity
    Returns
    Type Description
    bool
    | Edit this page View Source

    IsSignedByIdentity(DeviceInfo)

    Return whether device is signed by its owner's current self-signing key, whether or not this device trusts that identity; such a device can vouch for others of the same account.

    Declaration
    public bool IsSignedByIdentity(DeviceInfo device)
    Parameters
    Type Name Description
    DeviceInfo device
    Returns
    Type Description
    bool
    | Edit this page View Source

    ReceiveRoomEventAsync(string, ClientEvent, CancellationToken)

    Handle an event of a room's timeline that belongs to an in-room verification: a request message to this user, or a later m.key.verification.* event that refers to one; other events, and this user's own, are skipped.

    Declaration
    public Task ReceiveRoomEventAsync(string roomId, ClientEvent clientEvent, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string roomId

    Room of the event.

    ClientEvent clientEvent

    The event, decrypted.

    CancellationToken cancellationToken

    Cancellation token.

    Returns
    Type Description
    Task
    | Edit this page View Source

    ReceiveSyncAsync(SyncResponse, CancellationToken)

    Process the encryption parts of a sync: device list changes, to-device messages and the one-time key count; return decrypted to-device events.

    Declaration
    public Task<IReadOnlyList<DecryptedToDeviceEvent>> ReceiveSyncAsync(SyncResponse sync, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    SyncResponse sync
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<IReadOnlyList<DecryptedToDeviceEvent>>
    | Edit this page View Source

    RecoverAsync(string, CancellationToken)

    Unlock secret storage with a recovery key or passphrase, restores cross-signing and the backup key, signs this device, and import backed-up room keys.

    Declaration
    public Task<RecoveryResult> RecoverAsync(string recoveryKeyOrPassphrase, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string recoveryKeyOrPassphrase
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<RecoveryResult>
    Remarks

    Throws CryptographicException for a wrong key, and InvalidOperationException when the account has no secret storage.

    | Edit this page View Source

    RequestVerificationAsync(string, string?, CancellationToken)

    Ask userId's devices, or one of them, to verify; for our own user, our other devices.

    Declaration
    public Task<Verification> RequestVerificationAsync(string userId, string? deviceId = null, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string userId
    string deviceId
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<Verification>
    | Edit this page View Source

    RequestVerificationInRoomAsync(string, string, Func<JsonObject, CancellationToken, Task<string>>, CancellationToken)

    Ask userId to verify in roomId, their direct chat, as other users are verified: sendRequest sends the request message, encrypted where the room is, and returns its event ID, which identifies the verification.

    Declaration
    public Task<Verification> RequestVerificationInRoomAsync(string roomId, string userId, Func<JsonObject, CancellationToken, Task<string>> sendRequest, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string roomId
    string userId
    Func<JsonObject, CancellationToken, Task<string>> sendRequest
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<Verification>
    | Edit this page View Source

    RestoreBackupAsync(CancellationToken)

    Download and import all keys of the current backup; return how many were new. Throws InvalidOperationException when this device lacks the backup key.

    Declaration
    public Task<int> RestoreBackupAsync(CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    CancellationToken cancellationToken
    Returns
    Type Description
    Task<int>
    | Edit this page View Source

    SendEncryptedToDevicesAsync(string, JsonObject, IReadOnlyCollection<(string UserId, string DeviceId)>, CancellationToken)

    Send a to-device event of type to each of devices, encrypted over Olm, as MatrixRTC sends its media keys; return how many devices it went to. Devices without keys, or whose Olm session could not be made, are left out.

    Declaration
    public Task<int> SendEncryptedToDevicesAsync(string type, JsonObject content, IReadOnlyCollection<(string UserId, string DeviceId)> devices, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string type

    Event type, e.g. io.element.call.encryption_keys.

    JsonObject content

    Event content.

    IReadOnlyCollection<(string UserId, string DeviceId)> devices

    Recipients, by user and device ID; this device is left out.

    CancellationToken cancellationToken

    Cancellation token.

    Returns
    Type Description
    Task<int>
    | Edit this page View Source

    SetUpRecoveryAsync(string?, CancellationToken)

    Set up cross-signing, a key backup and secret storage on an account without cross-signing; return the recovery key to show the user once.

    Declaration
    public Task<string> SetUpRecoveryAsync(string? password, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    string password

    Password, when the server asks for it; when null, UserInteractiveAuthException may be thrown.

    CancellationToken cancellationToken

    Cancellation token.

    Returns
    Type Description
    Task<string>
    Remarks

    Throws InvalidOperationException when the account already has cross-signing keys: replacing them would distrust every verified device, so use RecoverAsync(string, CancellationToken) instead.

    | Edit this page View Source

    TrackUsersAsync(IEnumerable<string>, CancellationToken)

    Fetch device lists of userIds that are unknown or outdated.

    Declaration
    public Task TrackUsersAsync(IEnumerable<string> userIds, CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    IEnumerable<string> userIds
    CancellationToken cancellationToken
    Returns
    Type Description
    Task
    | Edit this page View Source

    UploadInitialKeysAsync(CancellationToken)

    Upload keys now when they have never been uploaded, e.g. right after login.

    Declaration
    public Task UploadInitialKeysAsync(CancellationToken cancellationToken = default)
    Parameters
    Type Name Description
    CancellationToken cancellationToken
    Returns
    Type Description
    Task

    Events

    | Edit this page View Source

    RoomKeyReceived

    Raised with room and session ID when a room key arrives, so events that failed to decrypt can be retried.

    Declaration
    public event Action<string, string>? RoomKeyReceived
    Event Type
    Type Description
    Action<string, string>
    | Edit this page View Source

    SecretReceived

    Raised with the secret name when another of our devices sent a secret, e.g. after verification.

    Declaration
    public event Action<string>? SecretReceived
    Event Type
    Type Description
    Action<string>
    | Edit this page View Source

    ToDeviceDecryptionFailed

    Raised with the sender, its Curve25519 key and the reason when a to-device message could not be decrypted.

    Declaration
    public event Action<string, string, string>? ToDeviceDecryptionFailed
    Event Type
    Type Description
    Action<string, string, string>
    | Edit this page View Source

    VerificationChanged

    Raised when a verification starts, changes state or ends; handlers run inside the machine, so marshal UI work.

    Declaration
    public event Action<Verification>? VerificationChanged
    Event Type
    Type Description
    Action<Verification>
    | Edit this page View Source

    VerificationIgnored

    Raised when a verification message is dropped, with its sender, the sending device if known, and why; for logs, as the other side gets no answer.

    Declaration
    public event Action<string, string?, string>? VerificationIgnored
    Event Type
    Type Description
    Action<string, string, string>
    | Edit this page View Source

    WedgedSessionRecovered

    Raised with the sender, its device and whether the message went out, after starting a new Olm session with a device whose message could not be decrypted.

    Declaration
    public event Action<string, string, bool>? WedgedSessionRecovered
    Event Type
    Type Description
    Action<string, string, bool>

    Implements

    IDisposable
    • Edit this page
    • View Source
    In this article
    Back to top Uniform Chat