updated deps; updated healthchecks.io integration
This commit is contained in:
24
vendor/maunium.net/go/mautrix/event/beeper.go
generated
vendored
24
vendor/maunium.net/go/mautrix/event/beeper.go
generated
vendored
@@ -61,3 +61,27 @@ type BeeperRoomKeyAckEventContent struct {
|
||||
SessionID id.SessionID `json:"session_id"`
|
||||
FirstMessageIndex int `json:"first_message_index"`
|
||||
}
|
||||
|
||||
type LinkPreview struct {
|
||||
CanonicalURL string `json:"og:url,omitempty"`
|
||||
Title string `json:"og:title,omitempty"`
|
||||
Type string `json:"og:type,omitempty"`
|
||||
Description string `json:"og:description,omitempty"`
|
||||
|
||||
ImageURL id.ContentURIString `json:"og:image,omitempty"`
|
||||
|
||||
ImageSize int `json:"matrix:image:size,omitempty"`
|
||||
ImageWidth int `json:"og:image:width,omitempty"`
|
||||
ImageHeight int `json:"og:image:height,omitempty"`
|
||||
ImageType string `json:"og:image:type,omitempty"`
|
||||
}
|
||||
|
||||
// BeeperLinkPreview contains the data for a bundled URL preview as specified in MSC4095
|
||||
//
|
||||
// https://github.com/matrix-org/matrix-spec-proposals/pull/4095
|
||||
type BeeperLinkPreview struct {
|
||||
LinkPreview
|
||||
|
||||
MatchedURL string `json:"matched_url,omitempty"`
|
||||
ImageEncryption *EncryptedFileInfo `json:"beeper:image:encryption,omitempty"`
|
||||
}
|
||||
|
||||
79
vendor/maunium.net/go/mautrix/event/content.go
generated
vendored
79
vendor/maunium.net/go/mautrix/event/content.go
generated
vendored
@@ -57,26 +57,33 @@ var TypeMap = map[Type]reflect.Type{
|
||||
EphemeralEventReceipt: reflect.TypeOf(ReceiptEventContent{}),
|
||||
EphemeralEventPresence: reflect.TypeOf(PresenceEventContent{}),
|
||||
|
||||
InRoomVerificationStart: reflect.TypeOf(VerificationStartEventContent{}),
|
||||
InRoomVerificationReady: reflect.TypeOf(VerificationReadyEventContent{}),
|
||||
InRoomVerificationStart: reflect.TypeOf(VerificationStartEventContent{}),
|
||||
InRoomVerificationDone: reflect.TypeOf(VerificationDoneEventContent{}),
|
||||
InRoomVerificationCancel: reflect.TypeOf(VerificationCancelEventContent{}),
|
||||
|
||||
InRoomVerificationAccept: reflect.TypeOf(VerificationAcceptEventContent{}),
|
||||
InRoomVerificationKey: reflect.TypeOf(VerificationKeyEventContent{}),
|
||||
InRoomVerificationMAC: reflect.TypeOf(VerificationMacEventContent{}),
|
||||
InRoomVerificationCancel: reflect.TypeOf(VerificationCancelEventContent{}),
|
||||
InRoomVerificationMAC: reflect.TypeOf(VerificationMACEventContent{}),
|
||||
|
||||
ToDeviceRoomKey: reflect.TypeOf(RoomKeyEventContent{}),
|
||||
ToDeviceForwardedRoomKey: reflect.TypeOf(ForwardedRoomKeyEventContent{}),
|
||||
ToDeviceRoomKeyRequest: reflect.TypeOf(RoomKeyRequestEventContent{}),
|
||||
ToDeviceEncrypted: reflect.TypeOf(EncryptedEventContent{}),
|
||||
ToDeviceRoomKeyWithheld: reflect.TypeOf(RoomKeyWithheldEventContent{}),
|
||||
ToDeviceSecretRequest: reflect.TypeOf(SecretRequestEventContent{}),
|
||||
ToDeviceSecretSend: reflect.TypeOf(SecretSendEventContent{}),
|
||||
ToDeviceDummy: reflect.TypeOf(DummyEventContent{}),
|
||||
|
||||
ToDeviceVerificationStart: reflect.TypeOf(VerificationStartEventContent{}),
|
||||
ToDeviceVerificationAccept: reflect.TypeOf(VerificationAcceptEventContent{}),
|
||||
ToDeviceVerificationKey: reflect.TypeOf(VerificationKeyEventContent{}),
|
||||
ToDeviceVerificationMAC: reflect.TypeOf(VerificationMacEventContent{}),
|
||||
ToDeviceVerificationCancel: reflect.TypeOf(VerificationCancelEventContent{}),
|
||||
ToDeviceVerificationRequest: reflect.TypeOf(VerificationRequestEventContent{}),
|
||||
ToDeviceVerificationReady: reflect.TypeOf(VerificationReadyEventContent{}),
|
||||
ToDeviceVerificationStart: reflect.TypeOf(VerificationStartEventContent{}),
|
||||
ToDeviceVerificationDone: reflect.TypeOf(VerificationDoneEventContent{}),
|
||||
ToDeviceVerificationCancel: reflect.TypeOf(VerificationCancelEventContent{}),
|
||||
|
||||
ToDeviceVerificationAccept: reflect.TypeOf(VerificationAcceptEventContent{}),
|
||||
ToDeviceVerificationKey: reflect.TypeOf(VerificationKeyEventContent{}),
|
||||
ToDeviceVerificationMAC: reflect.TypeOf(VerificationMACEventContent{}),
|
||||
|
||||
ToDeviceOrgMatrixRoomKeyWithheld: reflect.TypeOf(RoomKeyWithheldEventContent{}),
|
||||
|
||||
@@ -506,3 +513,59 @@ func (content *Content) AsModPolicy() *ModPolicyContent {
|
||||
}
|
||||
return casted
|
||||
}
|
||||
func (content *Content) AsVerificationRequest() *VerificationRequestEventContent {
|
||||
casted, ok := content.Parsed.(*VerificationRequestEventContent)
|
||||
if !ok {
|
||||
return &VerificationRequestEventContent{}
|
||||
}
|
||||
return casted
|
||||
}
|
||||
func (content *Content) AsVerificationReady() *VerificationReadyEventContent {
|
||||
casted, ok := content.Parsed.(*VerificationReadyEventContent)
|
||||
if !ok {
|
||||
return &VerificationReadyEventContent{}
|
||||
}
|
||||
return casted
|
||||
}
|
||||
func (content *Content) AsVerificationStart() *VerificationStartEventContent {
|
||||
casted, ok := content.Parsed.(*VerificationStartEventContent)
|
||||
if !ok {
|
||||
return &VerificationStartEventContent{}
|
||||
}
|
||||
return casted
|
||||
}
|
||||
func (content *Content) AsVerificationDone() *VerificationDoneEventContent {
|
||||
casted, ok := content.Parsed.(*VerificationDoneEventContent)
|
||||
if !ok {
|
||||
return &VerificationDoneEventContent{}
|
||||
}
|
||||
return casted
|
||||
}
|
||||
func (content *Content) AsVerificationCancel() *VerificationCancelEventContent {
|
||||
casted, ok := content.Parsed.(*VerificationCancelEventContent)
|
||||
if !ok {
|
||||
return &VerificationCancelEventContent{}
|
||||
}
|
||||
return casted
|
||||
}
|
||||
func (content *Content) AsVerificationAccept() *VerificationAcceptEventContent {
|
||||
casted, ok := content.Parsed.(*VerificationAcceptEventContent)
|
||||
if !ok {
|
||||
return &VerificationAcceptEventContent{}
|
||||
}
|
||||
return casted
|
||||
}
|
||||
func (content *Content) AsVerificationKey() *VerificationKeyEventContent {
|
||||
casted, ok := content.Parsed.(*VerificationKeyEventContent)
|
||||
if !ok {
|
||||
return &VerificationKeyEventContent{}
|
||||
}
|
||||
return casted
|
||||
}
|
||||
func (content *Content) AsVerificationMAC() *VerificationMACEventContent {
|
||||
casted, ok := content.Parsed.(*VerificationMACEventContent)
|
||||
if !ok {
|
||||
return &VerificationMACEventContent{}
|
||||
}
|
||||
return casted
|
||||
}
|
||||
|
||||
23
vendor/maunium.net/go/mautrix/event/encryption.go
generated
vendored
23
vendor/maunium.net/go/mautrix/event/encryption.go
generated
vendored
@@ -176,4 +176,27 @@ func (withheld *RoomKeyWithheldEventContent) Is(other error) bool {
|
||||
return withheld.Code == "" || otherWithheld.Code == "" || withheld.Code == otherWithheld.Code
|
||||
}
|
||||
|
||||
type SecretRequestAction string
|
||||
|
||||
func (a SecretRequestAction) String() string {
|
||||
return string(a)
|
||||
}
|
||||
|
||||
const (
|
||||
SecretRequestRequest = "request"
|
||||
SecretRequestCancellation = "request_cancellation"
|
||||
)
|
||||
|
||||
type SecretRequestEventContent struct {
|
||||
Name id.Secret `json:"name,omitempty"`
|
||||
Action SecretRequestAction `json:"action"`
|
||||
RequestingDeviceID id.DeviceID `json:"requesting_device_id"`
|
||||
RequestID string `json:"request_id"`
|
||||
}
|
||||
|
||||
type SecretSendEventContent struct {
|
||||
RequestID string `json:"request_id"`
|
||||
Secret string `json:"secret"`
|
||||
}
|
||||
|
||||
type DummyEventContent struct{}
|
||||
|
||||
2
vendor/maunium.net/go/mautrix/event/message.go
generated
vendored
2
vendor/maunium.net/go/mautrix/event/message.go
generated
vendored
@@ -116,6 +116,8 @@ type MessageEventContent struct {
|
||||
BeeperGalleryImages []*MessageEventContent `json:"com.beeper.gallery.images,omitempty"`
|
||||
BeeperGalleryCaption string `json:"com.beeper.gallery.caption,omitempty"`
|
||||
BeeperGalleryCaptionHTML string `json:"com.beeper.gallery.caption_html,omitempty"`
|
||||
|
||||
BeeperLinkPreviews []*BeeperLinkPreview `json:"com.beeper.linkpreviews,omitempty"`
|
||||
}
|
||||
|
||||
func (content *MessageEventContent) GetRelatesTo() *RelatesTo {
|
||||
|
||||
44
vendor/maunium.net/go/mautrix/event/type.go
generated
vendored
44
vendor/maunium.net/go/mautrix/event/type.go
generated
vendored
@@ -10,6 +10,8 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"maunium.net/go/mautrix/id"
|
||||
)
|
||||
|
||||
type RoomType string
|
||||
@@ -116,7 +118,8 @@ func (et *Type) GuessClass() TypeClass {
|
||||
return EphemeralEventType
|
||||
case AccountDataDirectChats.Type, AccountDataPushRules.Type, AccountDataRoomTags.Type,
|
||||
AccountDataSecretStorageKey.Type, AccountDataSecretStorageDefaultKey.Type,
|
||||
AccountDataCrossSigningMaster.Type, AccountDataCrossSigningSelf.Type, AccountDataCrossSigningUser.Type:
|
||||
AccountDataCrossSigningMaster.Type, AccountDataCrossSigningSelf.Type, AccountDataCrossSigningUser.Type,
|
||||
AccountDataFullyRead.Type, AccountDataMegolmBackupKey.Type:
|
||||
return AccountDataEventType
|
||||
case EventRedaction.Type, EventMessage.Type, EventEncrypted.Type, EventReaction.Type, EventSticker.Type,
|
||||
InRoomVerificationStart.Type, InRoomVerificationReady.Type, InRoomVerificationAccept.Type,
|
||||
@@ -200,12 +203,15 @@ var (
|
||||
EventReaction = Type{"m.reaction", MessageEventType}
|
||||
EventSticker = Type{"m.sticker", MessageEventType}
|
||||
|
||||
InRoomVerificationStart = Type{"m.key.verification.start", MessageEventType}
|
||||
InRoomVerificationReady = Type{"m.key.verification.ready", MessageEventType}
|
||||
InRoomVerificationStart = Type{"m.key.verification.start", MessageEventType}
|
||||
InRoomVerificationDone = Type{"m.key.verification.done", MessageEventType}
|
||||
InRoomVerificationCancel = Type{"m.key.verification.cancel", MessageEventType}
|
||||
|
||||
// SAS Verification Events
|
||||
InRoomVerificationAccept = Type{"m.key.verification.accept", MessageEventType}
|
||||
InRoomVerificationKey = Type{"m.key.verification.key", MessageEventType}
|
||||
InRoomVerificationMAC = Type{"m.key.verification.mac", MessageEventType}
|
||||
InRoomVerificationCancel = Type{"m.key.verification.cancel", MessageEventType}
|
||||
|
||||
CallInvite = Type{"m.call.invite", MessageEventType}
|
||||
CallCandidates = Type{"m.call.candidates", MessageEventType}
|
||||
@@ -235,26 +241,34 @@ var (
|
||||
|
||||
AccountDataSecretStorageDefaultKey = Type{"m.secret_storage.default_key", AccountDataEventType}
|
||||
AccountDataSecretStorageKey = Type{"m.secret_storage.key", AccountDataEventType}
|
||||
AccountDataCrossSigningMaster = Type{"m.cross_signing.master", AccountDataEventType}
|
||||
AccountDataCrossSigningUser = Type{"m.cross_signing.user_signing", AccountDataEventType}
|
||||
AccountDataCrossSigningSelf = Type{"m.cross_signing.self_signing", AccountDataEventType}
|
||||
AccountDataCrossSigningMaster = Type{string(id.SecretXSMaster), AccountDataEventType}
|
||||
AccountDataCrossSigningUser = Type{string(id.SecretXSUserSigning), AccountDataEventType}
|
||||
AccountDataCrossSigningSelf = Type{string(id.SecretXSSelfSigning), AccountDataEventType}
|
||||
AccountDataMegolmBackupKey = Type{"m.megolm_backup.v1", AccountDataEventType}
|
||||
)
|
||||
|
||||
// Device-to-device events
|
||||
var (
|
||||
ToDeviceRoomKey = Type{"m.room_key", ToDeviceEventType}
|
||||
ToDeviceRoomKeyRequest = Type{"m.room_key_request", ToDeviceEventType}
|
||||
ToDeviceForwardedRoomKey = Type{"m.forwarded_room_key", ToDeviceEventType}
|
||||
ToDeviceEncrypted = Type{"m.room.encrypted", ToDeviceEventType}
|
||||
ToDeviceRoomKeyWithheld = Type{"m.room_key.withheld", ToDeviceEventType}
|
||||
ToDeviceDummy = Type{"m.dummy", ToDeviceEventType}
|
||||
ToDeviceRoomKey = Type{"m.room_key", ToDeviceEventType}
|
||||
ToDeviceRoomKeyRequest = Type{"m.room_key_request", ToDeviceEventType}
|
||||
ToDeviceForwardedRoomKey = Type{"m.forwarded_room_key", ToDeviceEventType}
|
||||
ToDeviceEncrypted = Type{"m.room.encrypted", ToDeviceEventType}
|
||||
ToDeviceRoomKeyWithheld = Type{"m.room_key.withheld", ToDeviceEventType}
|
||||
ToDeviceSecretRequest = Type{"m.secret.request", ToDeviceEventType}
|
||||
ToDeviceSecretSend = Type{"m.secret.send", ToDeviceEventType}
|
||||
ToDeviceDummy = Type{"m.dummy", ToDeviceEventType}
|
||||
|
||||
ToDeviceVerificationRequest = Type{"m.key.verification.request", ToDeviceEventType}
|
||||
ToDeviceVerificationReady = Type{"m.key.verification.ready", ToDeviceEventType}
|
||||
ToDeviceVerificationStart = Type{"m.key.verification.start", ToDeviceEventType}
|
||||
ToDeviceVerificationAccept = Type{"m.key.verification.accept", ToDeviceEventType}
|
||||
ToDeviceVerificationKey = Type{"m.key.verification.key", ToDeviceEventType}
|
||||
ToDeviceVerificationMAC = Type{"m.key.verification.mac", ToDeviceEventType}
|
||||
ToDeviceVerificationDone = Type{"m.key.verification.done", ToDeviceEventType}
|
||||
ToDeviceVerificationCancel = Type{"m.key.verification.cancel", ToDeviceEventType}
|
||||
|
||||
// SAS Verification Events
|
||||
ToDeviceVerificationAccept = Type{"m.key.verification.accept", ToDeviceEventType}
|
||||
ToDeviceVerificationKey = Type{"m.key.verification.key", ToDeviceEventType}
|
||||
ToDeviceVerificationMAC = Type{"m.key.verification.mac", ToDeviceEventType}
|
||||
|
||||
ToDeviceOrgMatrixRoomKeyWithheld = Type{"org.matrix.room_key.withheld", ToDeviceEventType}
|
||||
|
||||
ToDeviceBeeperRoomKeyAck = Type{"com.beeper.room_key.ack", ToDeviceEventType}
|
||||
|
||||
491
vendor/maunium.net/go/mautrix/event/verification.go
generated
vendored
491
vendor/maunium.net/go/mautrix/event/verification.go
generated
vendored
@@ -7,301 +7,298 @@
|
||||
package event
|
||||
|
||||
import (
|
||||
"go.mau.fi/util/jsonbytes"
|
||||
"go.mau.fi/util/jsontime"
|
||||
|
||||
"maunium.net/go/mautrix/id"
|
||||
)
|
||||
|
||||
type VerificationMethod string
|
||||
|
||||
const VerificationMethodSAS VerificationMethod = "m.sas.v1"
|
||||
const (
|
||||
VerificationMethodSAS VerificationMethod = "m.sas.v1"
|
||||
|
||||
// VerificationRequestEventContent represents the content of a m.key.verification.request to_device event.
|
||||
// https://spec.matrix.org/v1.2/client-server-api/#mkeyverificationrequest
|
||||
type VerificationRequestEventContent struct {
|
||||
// The device ID which is initiating the request.
|
||||
FromDevice id.DeviceID `json:"from_device"`
|
||||
// An opaque identifier for the verification request. Must be unique with respect to the devices involved.
|
||||
TransactionID string `json:"transaction_id,omitempty"`
|
||||
// The verification methods supported by the sender.
|
||||
Methods []VerificationMethod `json:"methods"`
|
||||
// The POSIX timestamp in milliseconds for when the request was made.
|
||||
Timestamp int64 `json:"timestamp,omitempty"`
|
||||
// The user that the event is sent to for in-room verification.
|
||||
To id.UserID `json:"to,omitempty"`
|
||||
// Original event ID for in-room verification.
|
||||
VerificationMethodReciprocate VerificationMethod = "m.reciprocate.v1"
|
||||
VerificationMethodQRCodeShow VerificationMethod = "m.qr_code.show.v1"
|
||||
VerificationMethodQRCodeScan VerificationMethod = "m.qr_code.scan.v1"
|
||||
)
|
||||
|
||||
type VerificationTransactionable interface {
|
||||
GetTransactionID() id.VerificationTransactionID
|
||||
SetTransactionID(id.VerificationTransactionID)
|
||||
}
|
||||
|
||||
// ToDeviceVerificationEvent contains the fields common to all to-device
|
||||
// verification events.
|
||||
type ToDeviceVerificationEvent struct {
|
||||
// TransactionID is an opaque identifier for the verification request. Must
|
||||
// be unique with respect to the devices involved.
|
||||
TransactionID id.VerificationTransactionID `json:"transaction_id,omitempty"`
|
||||
}
|
||||
|
||||
var _ VerificationTransactionable = (*ToDeviceVerificationEvent)(nil)
|
||||
|
||||
func (ve *ToDeviceVerificationEvent) GetTransactionID() id.VerificationTransactionID {
|
||||
return ve.TransactionID
|
||||
}
|
||||
|
||||
func (ve *ToDeviceVerificationEvent) SetTransactionID(id id.VerificationTransactionID) {
|
||||
ve.TransactionID = id
|
||||
}
|
||||
|
||||
// InRoomVerificationEvent contains the fields common to all in-room
|
||||
// verification events.
|
||||
type InRoomVerificationEvent struct {
|
||||
// RelatesTo indicates the m.key.verification.request that this message is
|
||||
// related to. Note that for encrypted messages, this property should be in
|
||||
// the unencrypted portion of the event.
|
||||
RelatesTo *RelatesTo `json:"m.relates_to,omitempty"`
|
||||
}
|
||||
|
||||
func (vrec *VerificationRequestEventContent) SupportsVerificationMethod(meth VerificationMethod) bool {
|
||||
for _, supportedMeth := range vrec.Methods {
|
||||
if supportedMeth == meth {
|
||||
return true
|
||||
}
|
||||
var _ Relatable = (*InRoomVerificationEvent)(nil)
|
||||
|
||||
func (ve *InRoomVerificationEvent) GetRelatesTo() *RelatesTo {
|
||||
if ve.RelatesTo == nil {
|
||||
ve.RelatesTo = &RelatesTo{}
|
||||
}
|
||||
return false
|
||||
return ve.RelatesTo
|
||||
}
|
||||
|
||||
func (ve *InRoomVerificationEvent) OptionalGetRelatesTo() *RelatesTo {
|
||||
return ve.RelatesTo
|
||||
}
|
||||
|
||||
func (ve *InRoomVerificationEvent) SetRelatesTo(rel *RelatesTo) {
|
||||
ve.RelatesTo = rel
|
||||
}
|
||||
|
||||
// VerificationRequestEventContent represents the content of an
|
||||
// [m.key.verification.request] to-device event as described in [Section
|
||||
// 11.12.2.1] of the Spec.
|
||||
//
|
||||
// For the in-room version, use a standard [MessageEventContent] struct.
|
||||
//
|
||||
// [m.key.verification.request]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationrequest
|
||||
// [Section 11.12.2.1]: https://spec.matrix.org/v1.9/client-server-api/#key-verification-framework
|
||||
type VerificationRequestEventContent struct {
|
||||
ToDeviceVerificationEvent
|
||||
// FromDevice is the device ID which is initiating the request.
|
||||
FromDevice id.DeviceID `json:"from_device"`
|
||||
// Methods is a list of the verification methods supported by the sender.
|
||||
Methods []VerificationMethod `json:"methods"`
|
||||
// Timestamp is the time at which the request was made.
|
||||
Timestamp jsontime.UnixMilli `json:"timestamp,omitempty"`
|
||||
}
|
||||
|
||||
// VerificationRequestEventContentFromMessage converts an in-room verification
|
||||
// request message event to a [VerificationRequestEventContent].
|
||||
func VerificationRequestEventContentFromMessage(evt *Event) *VerificationRequestEventContent {
|
||||
content := evt.Content.AsMessage()
|
||||
return &VerificationRequestEventContent{
|
||||
ToDeviceVerificationEvent: ToDeviceVerificationEvent{
|
||||
TransactionID: id.VerificationTransactionID(evt.ID),
|
||||
},
|
||||
Timestamp: jsontime.UMInt(evt.Timestamp),
|
||||
FromDevice: content.FromDevice,
|
||||
Methods: content.Methods,
|
||||
}
|
||||
}
|
||||
|
||||
// VerificationReadyEventContent represents the content of an
|
||||
// [m.key.verification.ready] event (both the to-device and the in-room
|
||||
// version) as described in [Section 11.12.2.1] of the Spec.
|
||||
//
|
||||
// [m.key.verification.ready]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationready
|
||||
// [Section 11.12.2.1]: https://spec.matrix.org/v1.9/client-server-api/#key-verification-framework
|
||||
type VerificationReadyEventContent struct {
|
||||
ToDeviceVerificationEvent
|
||||
InRoomVerificationEvent
|
||||
|
||||
// FromDevice is the device ID which is initiating the request.
|
||||
FromDevice id.DeviceID `json:"from_device"`
|
||||
// Methods is a list of the verification methods supported by the sender.
|
||||
Methods []VerificationMethod `json:"methods"`
|
||||
}
|
||||
|
||||
type KeyAgreementProtocol string
|
||||
|
||||
const (
|
||||
KeyAgreementCurve25519 KeyAgreementProtocol = "curve25519"
|
||||
KeyAgreementCurve25519HKDFSHA256 KeyAgreementProtocol = "curve25519-hkdf-sha256"
|
||||
KeyAgreementProtocolCurve25519 KeyAgreementProtocol = "curve25519"
|
||||
KeyAgreementProtocolCurve25519HKDFSHA256 KeyAgreementProtocol = "curve25519-hkdf-sha256"
|
||||
)
|
||||
|
||||
type VerificationHashMethod string
|
||||
|
||||
const VerificationHashSHA256 VerificationHashMethod = "sha256"
|
||||
const VerificationHashMethodSHA256 VerificationHashMethod = "sha256"
|
||||
|
||||
type MACMethod string
|
||||
|
||||
const HKDFHMACSHA256 MACMethod = "hkdf-hmac-sha256"
|
||||
const (
|
||||
MACMethodHKDFHMACSHA256 MACMethod = "hkdf-hmac-sha256"
|
||||
MACMethodHKDFHMACSHA256V2 MACMethod = "hkdf-hmac-sha256.v2"
|
||||
)
|
||||
|
||||
type SASMethod string
|
||||
|
||||
const (
|
||||
SASDecimal SASMethod = "decimal"
|
||||
SASEmoji SASMethod = "emoji"
|
||||
SASMethodDecimal SASMethod = "decimal"
|
||||
SASMethodEmoji SASMethod = "emoji"
|
||||
)
|
||||
|
||||
// VerificationStartEventContent represents the content of a m.key.verification.start to_device event.
|
||||
// https://spec.matrix.org/v1.2/client-server-api/#mkeyverificationstartmsasv1
|
||||
// VerificationStartEventContent represents the content of an
|
||||
// [m.key.verification.start] event (both the to-device and the in-room
|
||||
// version) as described in [Section 11.12.2.1] of the Spec.
|
||||
//
|
||||
// This struct also contains the fields for an [m.key.verification.start] event
|
||||
// using the [VerificationMethodSAS] method as described in [Section
|
||||
// 11.12.2.2.2] and an [m.key.verification.start] using
|
||||
// [VerificationMethodReciprocate] as described in [Section 11.12.2.4.2].
|
||||
//
|
||||
// [m.key.verification.start]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationstart
|
||||
// [Section 11.12.2.1]: https://spec.matrix.org/v1.9/client-server-api/#key-verification-framework
|
||||
// [Section 11.12.2.2.2]: https://spec.matrix.org/v1.9/client-server-api/#verification-messages-specific-to-sas
|
||||
// [Section 11.12.2.4.2]: https://spec.matrix.org/v1.9/client-server-api/#verification-messages-specific-to-qr-codes
|
||||
type VerificationStartEventContent struct {
|
||||
// The device ID which is initiating the process.
|
||||
ToDeviceVerificationEvent
|
||||
InRoomVerificationEvent
|
||||
|
||||
// FromDevice is the device ID which is initiating the request.
|
||||
FromDevice id.DeviceID `json:"from_device"`
|
||||
// An opaque identifier for the verification process. Must be unique with respect to the devices involved.
|
||||
TransactionID string `json:"transaction_id,omitempty"`
|
||||
// The verification method to use.
|
||||
// Method is the verification method to use.
|
||||
Method VerificationMethod `json:"method"`
|
||||
// The key agreement protocols the sending device understands.
|
||||
KeyAgreementProtocols []KeyAgreementProtocol `json:"key_agreement_protocols"`
|
||||
// The hash methods the sending device understands.
|
||||
Hashes []VerificationHashMethod `json:"hashes"`
|
||||
// The message authentication codes that the sending device understands.
|
||||
// NextMethod is an optional method to use to verify the other user's key.
|
||||
// Applicable when the method chosen only verifies one user’s key. This
|
||||
// field will never be present if the method verifies keys both ways.
|
||||
NextMethod VerificationMethod `json:"next_method,omitempty"`
|
||||
|
||||
// Hashes are the hash methods the sending device understands. This field
|
||||
// is only applicable when the method is m.sas.v1.
|
||||
Hashes []VerificationHashMethod `json:"hashes,omitempty"`
|
||||
// KeyAgreementProtocols is the list of key agreement protocols the sending
|
||||
// device understands. This field is only applicable when the method is
|
||||
// m.sas.v1.
|
||||
KeyAgreementProtocols []KeyAgreementProtocol `json:"key_agreement_protocols,omitempty"`
|
||||
// MessageAuthenticationCodes is a list of the MAC methods that the sending
|
||||
// device understands. This field is only applicable when the method is
|
||||
// m.sas.v1.
|
||||
MessageAuthenticationCodes []MACMethod `json:"message_authentication_codes"`
|
||||
// The SAS methods the sending device (and the sending device's user) understands.
|
||||
// ShortAuthenticationString is a list of SAS methods the sending device
|
||||
// (and the sending device's user) understands. This field is only
|
||||
// applicable when the method is m.sas.v1.
|
||||
ShortAuthenticationString []SASMethod `json:"short_authentication_string"`
|
||||
// The user that the event is sent to for in-room verification.
|
||||
To id.UserID `json:"to,omitempty"`
|
||||
// Original event ID for in-room verification.
|
||||
RelatesTo *RelatesTo `json:"m.relates_to,omitempty"`
|
||||
|
||||
// Secret is the shared secret from the QR code. This field is only
|
||||
// applicable when the method is m.reciprocate.v1.
|
||||
Secret jsonbytes.UnpaddedBytes `json:"secret,omitempty"`
|
||||
}
|
||||
|
||||
func (vsec *VerificationStartEventContent) SupportsKeyAgreementProtocol(proto KeyAgreementProtocol) bool {
|
||||
for _, supportedProto := range vsec.KeyAgreementProtocols {
|
||||
if supportedProto == proto {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (vsec *VerificationStartEventContent) SupportsHashMethod(alg VerificationHashMethod) bool {
|
||||
for _, supportedAlg := range vsec.Hashes {
|
||||
if supportedAlg == alg {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (vsec *VerificationStartEventContent) SupportsMACMethod(meth MACMethod) bool {
|
||||
for _, supportedMeth := range vsec.MessageAuthenticationCodes {
|
||||
if supportedMeth == meth {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (vsec *VerificationStartEventContent) SupportsSASMethod(meth SASMethod) bool {
|
||||
for _, supportedMeth := range vsec.ShortAuthenticationString {
|
||||
if supportedMeth == meth {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (vsec *VerificationStartEventContent) GetRelatesTo() *RelatesTo {
|
||||
if vsec.RelatesTo == nil {
|
||||
vsec.RelatesTo = &RelatesTo{}
|
||||
}
|
||||
return vsec.RelatesTo
|
||||
}
|
||||
|
||||
func (vsec *VerificationStartEventContent) OptionalGetRelatesTo() *RelatesTo {
|
||||
return vsec.RelatesTo
|
||||
}
|
||||
|
||||
func (vsec *VerificationStartEventContent) SetRelatesTo(rel *RelatesTo) {
|
||||
vsec.RelatesTo = rel
|
||||
}
|
||||
|
||||
// VerificationReadyEventContent represents the content of a m.key.verification.ready event.
|
||||
// https://spec.matrix.org/v1.2/client-server-api/#mkeyverificationready
|
||||
type VerificationReadyEventContent struct {
|
||||
// The device ID which accepted the process.
|
||||
FromDevice id.DeviceID `json:"from_device"`
|
||||
// The verification methods supported by the sender.
|
||||
Methods []VerificationMethod `json:"methods"`
|
||||
// Original event ID for in-room verification.
|
||||
RelatesTo *RelatesTo `json:"m.relates_to,omitempty"`
|
||||
}
|
||||
|
||||
var _ Relatable = (*VerificationReadyEventContent)(nil)
|
||||
|
||||
func (vrec *VerificationReadyEventContent) GetRelatesTo() *RelatesTo {
|
||||
if vrec.RelatesTo == nil {
|
||||
vrec.RelatesTo = &RelatesTo{}
|
||||
}
|
||||
return vrec.RelatesTo
|
||||
}
|
||||
|
||||
func (vrec *VerificationReadyEventContent) OptionalGetRelatesTo() *RelatesTo {
|
||||
return vrec.RelatesTo
|
||||
}
|
||||
|
||||
func (vrec *VerificationReadyEventContent) SetRelatesTo(rel *RelatesTo) {
|
||||
vrec.RelatesTo = rel
|
||||
}
|
||||
|
||||
// VerificationAcceptEventContent represents the content of a m.key.verification.accept to_device event.
|
||||
// https://spec.matrix.org/v1.2/client-server-api/#mkeyverificationaccept
|
||||
type VerificationAcceptEventContent struct {
|
||||
// An opaque identifier for the verification process. Must be the same as the one used for the m.key.verification.start message.
|
||||
TransactionID string `json:"transaction_id,omitempty"`
|
||||
// The verification method to use.
|
||||
Method VerificationMethod `json:"method"`
|
||||
// The key agreement protocol the device is choosing to use, out of the options in the m.key.verification.start message.
|
||||
KeyAgreementProtocol KeyAgreementProtocol `json:"key_agreement_protocol"`
|
||||
// The hash method the device is choosing to use, out of the options in the m.key.verification.start message.
|
||||
Hash VerificationHashMethod `json:"hash"`
|
||||
// The message authentication code the device is choosing to use, out of the options in the m.key.verification.start message.
|
||||
MessageAuthenticationCode MACMethod `json:"message_authentication_code"`
|
||||
// The SAS methods both devices involved in the verification process understand. Must be a subset of the options in the m.key.verification.start message.
|
||||
ShortAuthenticationString []SASMethod `json:"short_authentication_string"`
|
||||
// The hash (encoded as unpadded base64) of the concatenation of the device's ephemeral public key (encoded as unpadded base64) and the canonical JSON representation of the m.key.verification.start message.
|
||||
Commitment string `json:"commitment"`
|
||||
// The user that the event is sent to for in-room verification.
|
||||
To id.UserID `json:"to,omitempty"`
|
||||
// Original event ID for in-room verification.
|
||||
RelatesTo *RelatesTo `json:"m.relates_to,omitempty"`
|
||||
}
|
||||
|
||||
func (vaec *VerificationAcceptEventContent) GetRelatesTo() *RelatesTo {
|
||||
if vaec.RelatesTo == nil {
|
||||
vaec.RelatesTo = &RelatesTo{}
|
||||
}
|
||||
return vaec.RelatesTo
|
||||
}
|
||||
|
||||
func (vaec *VerificationAcceptEventContent) OptionalGetRelatesTo() *RelatesTo {
|
||||
return vaec.RelatesTo
|
||||
}
|
||||
|
||||
func (vaec *VerificationAcceptEventContent) SetRelatesTo(rel *RelatesTo) {
|
||||
vaec.RelatesTo = rel
|
||||
}
|
||||
|
||||
// VerificationKeyEventContent represents the content of a m.key.verification.key to_device event.
|
||||
// https://spec.matrix.org/v1.2/client-server-api/#mkeyverificationkey
|
||||
type VerificationKeyEventContent struct {
|
||||
// An opaque identifier for the verification process. Must be the same as the one used for the m.key.verification.start message.
|
||||
TransactionID string `json:"transaction_id,omitempty"`
|
||||
// The device's ephemeral public key, encoded as unpadded base64.
|
||||
Key string `json:"key"`
|
||||
// The user that the event is sent to for in-room verification.
|
||||
To id.UserID `json:"to,omitempty"`
|
||||
// Original event ID for in-room verification.
|
||||
RelatesTo *RelatesTo `json:"m.relates_to,omitempty"`
|
||||
}
|
||||
|
||||
func (vkec *VerificationKeyEventContent) GetRelatesTo() *RelatesTo {
|
||||
if vkec.RelatesTo == nil {
|
||||
vkec.RelatesTo = &RelatesTo{}
|
||||
}
|
||||
return vkec.RelatesTo
|
||||
}
|
||||
|
||||
func (vkec *VerificationKeyEventContent) OptionalGetRelatesTo() *RelatesTo {
|
||||
return vkec.RelatesTo
|
||||
}
|
||||
|
||||
func (vkec *VerificationKeyEventContent) SetRelatesTo(rel *RelatesTo) {
|
||||
vkec.RelatesTo = rel
|
||||
}
|
||||
|
||||
// VerificationMacEventContent represents the content of a m.key.verification.mac to_device event.
|
||||
// https://spec.matrix.org/v1.2/client-server-api/#mkeyverificationmac
|
||||
type VerificationMacEventContent struct {
|
||||
// An opaque identifier for the verification process. Must be the same as the one used for the m.key.verification.start message.
|
||||
TransactionID string `json:"transaction_id,omitempty"`
|
||||
// A map of the key ID to the MAC of the key, using the algorithm in the verification process. The MAC is encoded as unpadded base64.
|
||||
Mac map[id.KeyID]string `json:"mac"`
|
||||
// The MAC of the comma-separated, sorted, list of key IDs given in the mac property, encoded as unpadded base64.
|
||||
Keys string `json:"keys"`
|
||||
// The user that the event is sent to for in-room verification.
|
||||
To id.UserID `json:"to,omitempty"`
|
||||
// Original event ID for in-room verification.
|
||||
RelatesTo *RelatesTo `json:"m.relates_to,omitempty"`
|
||||
}
|
||||
|
||||
func (vmec *VerificationMacEventContent) GetRelatesTo() *RelatesTo {
|
||||
if vmec.RelatesTo == nil {
|
||||
vmec.RelatesTo = &RelatesTo{}
|
||||
}
|
||||
return vmec.RelatesTo
|
||||
}
|
||||
|
||||
func (vmec *VerificationMacEventContent) OptionalGetRelatesTo() *RelatesTo {
|
||||
return vmec.RelatesTo
|
||||
}
|
||||
|
||||
func (vmec *VerificationMacEventContent) SetRelatesTo(rel *RelatesTo) {
|
||||
vmec.RelatesTo = rel
|
||||
// VerificationDoneEventContent represents the content of an
|
||||
// [m.key.verification.done] event (both the to-device and the in-room version)
|
||||
// as described in [Section 11.12.2.1] of the Spec.
|
||||
//
|
||||
// This type is an alias for [VerificationRelatable] since there are no
|
||||
// additional fields defined by the spec.
|
||||
//
|
||||
// [m.key.verification.done]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationdone
|
||||
// [Section 11.12.2.1]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationdone
|
||||
type VerificationDoneEventContent struct {
|
||||
ToDeviceVerificationEvent
|
||||
InRoomVerificationEvent
|
||||
}
|
||||
|
||||
type VerificationCancelCode string
|
||||
|
||||
const (
|
||||
VerificationCancelByUser VerificationCancelCode = "m.user"
|
||||
VerificationCancelByTimeout VerificationCancelCode = "m.timeout"
|
||||
VerificationCancelUnknownTransaction VerificationCancelCode = "m.unknown_transaction"
|
||||
VerificationCancelUnknownMethod VerificationCancelCode = "m.unknown_method"
|
||||
VerificationCancelUnexpectedMessage VerificationCancelCode = "m.unexpected_message"
|
||||
VerificationCancelKeyMismatch VerificationCancelCode = "m.key_mismatch"
|
||||
VerificationCancelUserMismatch VerificationCancelCode = "m.user_mismatch"
|
||||
VerificationCancelInvalidMessage VerificationCancelCode = "m.invalid_message"
|
||||
VerificationCancelAccepted VerificationCancelCode = "m.accepted"
|
||||
VerificationCancelSASMismatch VerificationCancelCode = "m.mismatched_sas"
|
||||
VerificationCancelCommitmentMismatch VerificationCancelCode = "m.mismatched_commitment"
|
||||
VerificationCancelCodeUser VerificationCancelCode = "m.user"
|
||||
VerificationCancelCodeTimeout VerificationCancelCode = "m.timeout"
|
||||
VerificationCancelCodeUnknownTransaction VerificationCancelCode = "m.unknown_transaction"
|
||||
VerificationCancelCodeUnknownMethod VerificationCancelCode = "m.unknown_method"
|
||||
VerificationCancelCodeUnexpectedMessage VerificationCancelCode = "m.unexpected_message"
|
||||
VerificationCancelCodeKeyMismatch VerificationCancelCode = "m.key_mismatch"
|
||||
VerificationCancelCodeUserMismatch VerificationCancelCode = "m.user_mismatch"
|
||||
VerificationCancelCodeInvalidMessage VerificationCancelCode = "m.invalid_message"
|
||||
VerificationCancelCodeAccepted VerificationCancelCode = "m.accepted"
|
||||
VerificationCancelCodeSASMismatch VerificationCancelCode = "m.mismatched_sas"
|
||||
VerificationCancelCodeCommitmentMismatch VerificationCancelCode = "m.mismatched_commitment"
|
||||
)
|
||||
|
||||
// VerificationCancelEventContent represents the content of a m.key.verification.cancel to_device event.
|
||||
// https://spec.matrix.org/v1.2/client-server-api/#mkeyverificationcancel
|
||||
// VerificationCancelEventContent represents the content of an
|
||||
// [m.key.verification.cancel] event (both the to-device and the in-room
|
||||
// version) as described in [Section 11.12.2.1] of the Spec.
|
||||
//
|
||||
// [m.key.verification.cancel]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationcancel
|
||||
// [Section 11.12.2.1]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationdone
|
||||
type VerificationCancelEventContent struct {
|
||||
// The opaque identifier for the verification process/request.
|
||||
TransactionID string `json:"transaction_id,omitempty"`
|
||||
// A human readable description of the code. The client should only rely on this string if it does not understand the code.
|
||||
Reason string `json:"reason"`
|
||||
// The error code for why the process/request was cancelled by the user.
|
||||
ToDeviceVerificationEvent
|
||||
InRoomVerificationEvent
|
||||
|
||||
// Code is the error code for why the process/request was cancelled by the
|
||||
// user.
|
||||
Code VerificationCancelCode `json:"code"`
|
||||
// The user that the event is sent to for in-room verification.
|
||||
To id.UserID `json:"to,omitempty"`
|
||||
// Original event ID for in-room verification.
|
||||
RelatesTo *RelatesTo `json:"m.relates_to,omitempty"`
|
||||
// Reason is a human readable description of the code. The client should
|
||||
// only rely on this string if it does not understand the code.
|
||||
Reason string `json:"reason"`
|
||||
}
|
||||
|
||||
func (vcec *VerificationCancelEventContent) GetRelatesTo() *RelatesTo {
|
||||
if vcec.RelatesTo == nil {
|
||||
vcec.RelatesTo = &RelatesTo{}
|
||||
}
|
||||
return vcec.RelatesTo
|
||||
// VerificationAcceptEventContent represents the content of an
|
||||
// [m.key.verification.accept] event (both the to-device and the in-room
|
||||
// version) as described in [Section 11.12.2.2.2] of the Spec.
|
||||
//
|
||||
// [m.key.verification.accept]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationaccept
|
||||
// [Section 11.12.2.2.2]: https://spec.matrix.org/v1.9/client-server-api/#verification-messages-specific-to-sas
|
||||
type VerificationAcceptEventContent struct {
|
||||
ToDeviceVerificationEvent
|
||||
InRoomVerificationEvent
|
||||
|
||||
// Commitment is the hash of the concatenation of the device's ephemeral
|
||||
// public key (encoded as unpadded base64) and the canonical JSON
|
||||
// representation of the m.key.verification.start message.
|
||||
Commitment jsonbytes.UnpaddedBytes `json:"commitment"`
|
||||
// Hash is the hash method the device is choosing to use, out of the
|
||||
// options in the m.key.verification.start message.
|
||||
Hash VerificationHashMethod `json:"hash"`
|
||||
// KeyAgreementProtocol is the key agreement protocol the device is
|
||||
// choosing to use, out of the options in the m.key.verification.start
|
||||
// message.
|
||||
KeyAgreementProtocol KeyAgreementProtocol `json:"key_agreement_protocol"`
|
||||
// MessageAuthenticationCode is the message authentication code the device
|
||||
// is choosing to use, out of the options in the m.key.verification.start
|
||||
// message.
|
||||
MessageAuthenticationCode MACMethod `json:"message_authentication_code"`
|
||||
// ShortAuthenticationString is a list of SAS methods both devices involved
|
||||
// in the verification process understand. Must be a subset of the options
|
||||
// in the m.key.verification.start message.
|
||||
ShortAuthenticationString []SASMethod `json:"short_authentication_string"`
|
||||
}
|
||||
|
||||
func (vcec *VerificationCancelEventContent) OptionalGetRelatesTo() *RelatesTo {
|
||||
return vcec.RelatesTo
|
||||
// VerificationKeyEventContent represents the content of an
|
||||
// [m.key.verification.key] event (both the to-device and the in-room version)
|
||||
// as described in [Section 11.12.2.2.2] of the Spec.
|
||||
//
|
||||
// [m.key.verification.key]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationkey
|
||||
// [Section 11.12.2.2.2]: https://spec.matrix.org/v1.9/client-server-api/#verification-messages-specific-to-sas
|
||||
type VerificationKeyEventContent struct {
|
||||
ToDeviceVerificationEvent
|
||||
InRoomVerificationEvent
|
||||
|
||||
// Key is the device’s ephemeral public key.
|
||||
Key jsonbytes.UnpaddedBytes `json:"key"`
|
||||
}
|
||||
|
||||
func (vcec *VerificationCancelEventContent) SetRelatesTo(rel *RelatesTo) {
|
||||
vcec.RelatesTo = rel
|
||||
// VerificationMACEventContent represents the content of an
|
||||
// [m.key.verification.mac] event (both the to-device and the in-room version)
|
||||
// as described in [Section 11.12.2.2.2] of the Spec.
|
||||
//
|
||||
// [m.key.verification.mac]: https://spec.matrix.org/v1.9/client-server-api/#mkeyverificationmac
|
||||
// [Section 11.12.2.2.2]: https://spec.matrix.org/v1.9/client-server-api/#verification-messages-specific-to-sas
|
||||
type VerificationMACEventContent struct {
|
||||
ToDeviceVerificationEvent
|
||||
InRoomVerificationEvent
|
||||
|
||||
// Keys is the MAC of the comma-separated, sorted, list of key IDs given in
|
||||
// the MAC property.
|
||||
Keys jsonbytes.UnpaddedBytes `json:"keys"`
|
||||
// MAC is a map of the key ID to the MAC of the key, using the algorithm in
|
||||
// the verification process.
|
||||
MAC map[id.KeyID]jsonbytes.UnpaddedBytes `json:"mac"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user