summaryrefslogtreecommitdiffstats
path: root/vendor/maunium.net/go/mautrix/event/verification.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/maunium.net/go/mautrix/event/verification.go')
-rw-r--r--vendor/maunium.net/go/mautrix/event/verification.go307
1 files changed, 307 insertions, 0 deletions
diff --git a/vendor/maunium.net/go/mautrix/event/verification.go b/vendor/maunium.net/go/mautrix/event/verification.go
new file mode 100644
index 00000000..8410904d
--- /dev/null
+++ b/vendor/maunium.net/go/mautrix/event/verification.go
@@ -0,0 +1,307 @@
+// Copyright (c) 2020 Nikos Filippakis
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package event
+
+import (
+ "maunium.net/go/mautrix/id"
+)
+
+type VerificationMethod string
+
+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.
+ RelatesTo *RelatesTo `json:"m.relates_to,omitempty"`
+}
+
+func (vrec *VerificationRequestEventContent) SupportsVerificationMethod(meth VerificationMethod) bool {
+ for _, supportedMeth := range vrec.Methods {
+ if supportedMeth == meth {
+ return true
+ }
+ }
+ return false
+}
+
+type KeyAgreementProtocol string
+
+const (
+ KeyAgreementCurve25519 KeyAgreementProtocol = "curve25519"
+ KeyAgreementCurve25519HKDFSHA256 KeyAgreementProtocol = "curve25519-hkdf-sha256"
+)
+
+type VerificationHashMethod string
+
+const VerificationHashSHA256 VerificationHashMethod = "sha256"
+
+type MACMethod string
+
+const HKDFHMACSHA256 MACMethod = "hkdf-hmac-sha256"
+
+type SASMethod string
+
+const (
+ SASDecimal SASMethod = "decimal"
+ SASEmoji 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
+type VerificationStartEventContent struct {
+ // The device ID which is initiating the process.
+ 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 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.
+ MessageAuthenticationCodes []MACMethod `json:"message_authentication_codes"`
+ // The SAS methods the sending device (and the sending device's user) understands.
+ 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"`
+}
+
+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
+}
+
+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"
+)
+
+// VerificationCancelEventContent represents the content of a m.key.verification.cancel to_device event.
+// https://spec.matrix.org/v1.2/client-server-api/#mkeyverificationcancel
+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.
+ 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"`
+}
+
+func (vcec *VerificationCancelEventContent) GetRelatesTo() *RelatesTo {
+ if vcec.RelatesTo == nil {
+ vcec.RelatesTo = &RelatesTo{}
+ }
+ return vcec.RelatesTo
+}
+
+func (vcec *VerificationCancelEventContent) OptionalGetRelatesTo() *RelatesTo {
+ return vcec.RelatesTo
+}
+
+func (vcec *VerificationCancelEventContent) SetRelatesTo(rel *RelatesTo) {
+ vcec.RelatesTo = rel
+}