mirror of
https://mau.dev/mautrix/go.git
synced 2026-03-14 14:25:53 +01:00
Stop using github.com/pkg/errors
This commit is contained in:
parent
8c3d0bb2c1
commit
72fc4c1643
15 changed files with 65 additions and 69 deletions
|
|
@ -8,8 +8,8 @@ package crypto
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"maunium.net/go/mautrix/event"
|
||||
"maunium.net/go/mautrix/id"
|
||||
|
|
@ -39,14 +39,14 @@ func (mach *OlmMachine) DecryptMegolmEvent(evt *event.Event) (*event.Event, erro
|
|||
}
|
||||
sess, err := mach.CryptoStore.GetGroupSession(evt.RoomID, content.SenderKey, content.SessionID)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to get group session")
|
||||
return nil, fmt.Errorf("failed to get group session: %w", err)
|
||||
} else if sess == nil {
|
||||
mach.checkIfWedged(evt)
|
||||
return nil, NoSessionFound
|
||||
}
|
||||
plaintext, messageIndex, err := sess.Internal.Decrypt(content.MegolmCiphertext)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to decrypt megolm event")
|
||||
return nil, fmt.Errorf("failed to decrypt megolm event: %w", err)
|
||||
} else if !mach.CryptoStore.ValidateMessageIndex(content.SenderKey, content.SessionID, evt.ID, messageIndex, evt.Timestamp) {
|
||||
return nil, DuplicateMessageIndex
|
||||
}
|
||||
|
|
@ -72,13 +72,13 @@ func (mach *OlmMachine) DecryptMegolmEvent(evt *event.Event) (*event.Event, erro
|
|||
megolmEvt := &megolmEvent{}
|
||||
err = json.Unmarshal(plaintext, &megolmEvt)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to parse megolm payload")
|
||||
return nil, fmt.Errorf("failed to parse megolm payload: %w", err)
|
||||
} else if megolmEvt.RoomID != evt.RoomID {
|
||||
return nil, WrongRoom
|
||||
}
|
||||
err = megolmEvt.Content.ParseRaw(megolmEvt.Type)
|
||||
if err != nil && !event.IsUnsupportedContentType(err) {
|
||||
return nil, errors.Wrap(err, "failed to parse content of megolm payload event")
|
||||
return nil, fmt.Errorf("failed to parse content of megolm payload event: %w", err)
|
||||
}
|
||||
relatable, ok := megolmEvt.Content.Parsed.(event.Relatable)
|
||||
if ok && content.RelatesTo != nil && relatable.OptionalGetRelatesTo() == nil {
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ package crypto
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"maunium.net/go/mautrix/event"
|
||||
"maunium.net/go/mautrix/id"
|
||||
|
|
@ -76,7 +76,7 @@ func (mach *OlmMachine) decryptOlmCiphertext(sender id.UserID, deviceID id.Devic
|
|||
mach.Log.Warn("Found matching session yet decryption failed for sender %s with key %s", sender, senderKey)
|
||||
mach.markDeviceForUnwedging(sender, senderKey)
|
||||
}
|
||||
return nil, errors.Wrap(err, "failed to decrypt olm event")
|
||||
return nil, fmt.Errorf("failed to decrypt olm event: %w", err)
|
||||
}
|
||||
|
||||
// Decryption failed with every known session or no known sessions, let's try to create a new session.
|
||||
|
|
@ -92,13 +92,13 @@ func (mach *OlmMachine) decryptOlmCiphertext(sender id.UserID, deviceID id.Devic
|
|||
session, err := mach.createInboundSession(senderKey, ciphertext)
|
||||
if err != nil {
|
||||
mach.markDeviceForUnwedging(sender, senderKey)
|
||||
return nil, errors.Wrap(err, "failed to create new session from prekey message")
|
||||
return nil, fmt.Errorf("failed to create new session from prekey message: %w", err)
|
||||
}
|
||||
mach.Log.Trace("Created inbound session %s for %s/%s (sender key: %s)", session.ID(), sender, deviceID, senderKey)
|
||||
|
||||
plaintext, err = session.Decrypt(ciphertext, olmType)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to decrypt olm event with session created from prekey message")
|
||||
return nil, fmt.Errorf("failed to decrypt olm event with session created from prekey message: %w", err)
|
||||
}
|
||||
|
||||
err = mach.CryptoStore.UpdateSession(senderKey, session)
|
||||
|
|
@ -110,7 +110,7 @@ func (mach *OlmMachine) decryptOlmCiphertext(sender id.UserID, deviceID id.Devic
|
|||
var olmEvt DecryptedOlmEvent
|
||||
err = json.Unmarshal(plaintext, &olmEvt)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to parse olm payload")
|
||||
return nil, fmt.Errorf("failed to parse olm payload: %w", err)
|
||||
}
|
||||
if sender != olmEvt.Sender {
|
||||
return nil, SenderMismatch
|
||||
|
|
@ -122,7 +122,7 @@ func (mach *OlmMachine) decryptOlmCiphertext(sender id.UserID, deviceID id.Devic
|
|||
|
||||
err = olmEvt.Content.ParseRaw(olmEvt.Type)
|
||||
if err != nil && !event.IsUnsupportedContentType(err) {
|
||||
return nil, errors.Wrap(err, "failed to parse content of olm payload event")
|
||||
return nil, fmt.Errorf("failed to parse content of olm payload event: %w", err)
|
||||
}
|
||||
|
||||
olmEvt.SenderKey = senderKey
|
||||
|
|
@ -133,13 +133,13 @@ func (mach *OlmMachine) decryptOlmCiphertext(sender id.UserID, deviceID id.Devic
|
|||
func (mach *OlmMachine) tryDecryptOlmCiphertext(senderKey id.SenderKey, olmType id.OlmMsgType, ciphertext string) ([]byte, error) {
|
||||
sessions, err := mach.CryptoStore.GetSessions(senderKey)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to get session for %s", senderKey)
|
||||
return nil, fmt.Errorf("failed to get session for %s: %w", senderKey, err)
|
||||
}
|
||||
for _, session := range sessions {
|
||||
if olmType == id.OlmMsgTypePreKey {
|
||||
matches, err := session.Internal.MatchesInboundSession(ciphertext)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to check if ciphertext matches inbound session")
|
||||
return nil, fmt.Errorf("failed to check if ciphertext matches inbound session: %w", err)
|
||||
} else if !matches {
|
||||
continue
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@
|
|||
package crypto
|
||||
|
||||
import (
|
||||
"github.com/pkg/errors"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/mautrix/crypto/olm"
|
||||
|
|
@ -131,7 +132,7 @@ func (mach *OlmMachine) validateDevice(userID id.UserID, deviceID id.DeviceID, d
|
|||
|
||||
ok, err := olm.VerifySignatureJSON(deviceKeys, userID, deviceID, signingKey)
|
||||
if err != nil {
|
||||
return existing, errors.Wrap(err, "failed to verify signature")
|
||||
return existing, fmt.Errorf("failed to verify signature: %w", err)
|
||||
} else if !ok {
|
||||
return existing, InvalidKeySignature
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ package crypto
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/mautrix/event"
|
||||
|
|
@ -34,8 +34,8 @@ func getRelatesTo(content interface{}) *event.RelatesTo {
|
|||
}
|
||||
|
||||
type rawMegolmEvent struct {
|
||||
RoomID id.RoomID `json:"room_id"`
|
||||
Type event.Type `json:"type"`
|
||||
RoomID id.RoomID `json:"room_id"`
|
||||
Type event.Type `json:"type"`
|
||||
Content interface{} `json:"content"`
|
||||
}
|
||||
|
||||
|
|
@ -52,7 +52,7 @@ func (mach *OlmMachine) EncryptMegolmEvent(roomID id.RoomID, evtType event.Type,
|
|||
mach.Log.Trace("Encrypting event of type %s for %s", evtType.Type, roomID)
|
||||
session, err := mach.CryptoStore.GetOutboundGroupSession(roomID)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to get outbound group session")
|
||||
return nil, fmt.Errorf("failed to get outbound group session: %w", err)
|
||||
} else if session == nil {
|
||||
return nil, NoGroupSession
|
||||
}
|
||||
|
|
@ -97,7 +97,7 @@ func (mach *OlmMachine) ShareGroupSession(roomID id.RoomID, users []id.UserID) e
|
|||
mach.Log.Debug("Sharing group session for room %s to %v", roomID, users)
|
||||
session, err := mach.CryptoStore.GetOutboundGroupSession(roomID)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to get previous outbound group session")
|
||||
return fmt.Errorf("failed to get previous outbound group session: %w", err)
|
||||
} else if session != nil && session.Shared && !session.Expired() {
|
||||
return AlreadyShared
|
||||
}
|
||||
|
|
@ -180,7 +180,7 @@ func (mach *OlmMachine) ShareGroupSession(roomID id.RoomID, users []id.UserID) e
|
|||
mach.Log.Trace("Sending to-device to %d users to share group session for %s", len(toDevice.Messages), roomID)
|
||||
_, err = mach.Client.SendToDevice(event.ToDeviceEncrypted, toDevice)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to share group session")
|
||||
return fmt.Errorf("failed to share group session: %w", err)
|
||||
}
|
||||
|
||||
mach.Log.Trace("Sending to-device messages to %d users to report withheld keys in %s", len(toDeviceWithheld.Messages), roomID)
|
||||
|
|
|
|||
|
|
@ -8,8 +8,7 @@ package crypto
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"fmt"
|
||||
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/mautrix/crypto/olm"
|
||||
|
|
@ -69,7 +68,7 @@ func (mach *OlmMachine) createOutboundSessions(input map[id.UserID]map[id.Device
|
|||
Timeout: 10 * 1000,
|
||||
})
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to claim keys")
|
||||
return fmt.Errorf("failed to claim keys: %w", err)
|
||||
}
|
||||
for userID, user := range resp.OneTimeKeys {
|
||||
for deviceID, oneTimeKeys := range user {
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ import (
|
|||
"fmt"
|
||||
"math"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"golang.org/x/crypto/pbkdf2"
|
||||
|
||||
"maunium.net/go/mautrix/crypto/olm"
|
||||
|
|
@ -91,7 +90,7 @@ func exportSessions(sessions []*InboundGroupSession) ([]ExportedSession, error)
|
|||
for i, session := range sessions {
|
||||
key, err := session.Internal.Export(session.Internal.FirstKnownIndex())
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to export session")
|
||||
return nil, fmt.Errorf("failed to export session: %w", err)
|
||||
}
|
||||
export[i] = ExportedSession{
|
||||
Algorithm: id.AlgorithmMegolmV1,
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ import (
|
|||
"encoding/base64"
|
||||
"encoding/binary"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"maunium.net/go/mautrix/crypto/olm"
|
||||
"maunium.net/go/mautrix/id"
|
||||
|
|
@ -85,7 +85,7 @@ func decryptKeyExport(passphrase string, exportData []byte) ([]ExportedSession,
|
|||
var sessionsJSON []ExportedSession
|
||||
err := json.Unmarshal(unencryptedData, &sessionsJSON)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "invalid export json")
|
||||
return nil, fmt.Errorf("invalid export json: %w", err)
|
||||
}
|
||||
return sessionsJSON, nil
|
||||
}
|
||||
|
|
@ -97,7 +97,7 @@ func (mach *OlmMachine) importExportedRoomKey(session ExportedSession) (bool, er
|
|||
|
||||
igsInternal, err := olm.InboundGroupSessionImport([]byte(session.SessionKey))
|
||||
if err != nil {
|
||||
return false, errors.Wrap(err, "failed to import session")
|
||||
return false, fmt.Errorf("failed to import session: %w", err)
|
||||
} else if igsInternal.ID() != session.SessionID {
|
||||
return false, ErrMismatchingExportedSessionID
|
||||
}
|
||||
|
|
@ -116,7 +116,7 @@ func (mach *OlmMachine) importExportedRoomKey(session ExportedSession) (bool, er
|
|||
}
|
||||
err = mach.CryptoStore.PutGroupSession(igs.RoomID, igs.SenderKey, igs.ID(), igs)
|
||||
if err != nil {
|
||||
return false, errors.Wrap(err, "failed to store imported session")
|
||||
return false, fmt.Errorf("failed to store imported session: %w", err)
|
||||
}
|
||||
mach.markSessionReceived(igs.ID())
|
||||
return true, nil
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
package crypto
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"maunium.net/go/mautrix/crypto/olm"
|
||||
"maunium.net/go/mautrix/id"
|
||||
|
||||
|
|
@ -50,7 +50,7 @@ type OlmMachine struct {
|
|||
roomKeyRequestFilled *sync.Map
|
||||
keyVerificationTransactionState *sync.Map
|
||||
|
||||
keyWaiters map[id.SessionID]chan struct{}
|
||||
keyWaiters map[id.SessionID]chan struct{}
|
||||
keyWaitersLock sync.Mutex
|
||||
}
|
||||
|
||||
|
|
@ -251,7 +251,7 @@ func (mach *OlmMachine) GetOrFetchDevice(userID id.UserID, deviceID id.DeviceID)
|
|||
// get device identity
|
||||
device, err := mach.CryptoStore.GetDevice(userID, deviceID)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "failed to get sender device from store")
|
||||
return nil, fmt.Errorf("failed to get sender device from store: %w", err)
|
||||
} else if device != nil {
|
||||
return device, nil
|
||||
}
|
||||
|
|
@ -261,9 +261,9 @@ func (mach *OlmMachine) GetOrFetchDevice(userID id.UserID, deviceID id.DeviceID)
|
|||
if device, ok = devices[deviceID]; ok {
|
||||
return device, nil
|
||||
}
|
||||
return nil, errors.Errorf("Failed to get identity for device %v", deviceID)
|
||||
return nil, fmt.Errorf("didn't get identity for device %s of %s", deviceID, userID)
|
||||
}
|
||||
return nil, errors.Errorf("Error fetching devices for user %v", userID)
|
||||
return nil, fmt.Errorf("didn't get any devices for %s", userID)
|
||||
}
|
||||
|
||||
// SendEncryptedToDevice sends an Olm-encrypted event to the given user device.
|
||||
|
|
@ -283,7 +283,7 @@ func (mach *OlmMachine) SendEncryptedToDevice(device *DeviceIdentity, content ev
|
|||
return err
|
||||
}
|
||||
if olmSess == nil {
|
||||
return errors.Errorf("Did not find created outbound session for device %v", device.DeviceID)
|
||||
return fmt.Errorf("didn't find created outbound session for device %s of %s", device.DeviceID, device.UserID)
|
||||
}
|
||||
|
||||
encrypted := mach.encryptOlmEvent(olmSess, device, event.ToDeviceForwardedRoomKey, content)
|
||||
|
|
|
|||
|
|
@ -7,11 +7,10 @@
|
|||
package crypto
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"maunium.net/go/mautrix/crypto/olm"
|
||||
"maunium.net/go/mautrix/event"
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ import (
|
|||
"strings"
|
||||
|
||||
"github.com/lib/pq"
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"maunium.net/go/mautrix/crypto/olm"
|
||||
"maunium.net/go/mautrix/crypto/sql_store_upgrade"
|
||||
|
|
@ -183,7 +182,7 @@ func (store *SQLCryptoStore) AddSession(key id.SenderKey, session *OlmSession) e
|
|||
}
|
||||
|
||||
// UpdateSession replaces the Olm session for a sender in the database.
|
||||
func (store *SQLCryptoStore) UpdateSession(key id.SenderKey, session *OlmSession) error {
|
||||
func (store *SQLCryptoStore) UpdateSession(_ id.SenderKey, session *OlmSession) error {
|
||||
sessionBytes := session.Internal.Pickle(store.PickleKey)
|
||||
_, err := store.DB.Exec("UPDATE crypto_olm_session SET session=$1, last_used=$2 WHERE session_id=$3 AND account_id=$4",
|
||||
sessionBytes, session.UseTime, session.ID(), store.AccountID)
|
||||
|
|
@ -492,18 +491,18 @@ func (store *SQLCryptoStore) PutDevices(userID id.UserID, devices map[id.DeviceI
|
|||
err = fmt.Errorf("unsupported dialect %s", store.Dialect)
|
||||
}
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to add user to tracked users list")
|
||||
return fmt.Errorf("failed to add user to tracked users list: %w", err)
|
||||
}
|
||||
|
||||
_, err = tx.Exec("DELETE FROM crypto_device WHERE user_id=$1", userID)
|
||||
if err != nil {
|
||||
_ = tx.Rollback()
|
||||
return errors.Wrap(err, "failed to delete old devices")
|
||||
return fmt.Errorf("failed to delete old devices: %w", err)
|
||||
}
|
||||
if len(devices) == 0 {
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to commit changes (no devices added)")
|
||||
return fmt.Errorf("failed to commit changes (no devices added): %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
@ -533,12 +532,12 @@ func (store *SQLCryptoStore) PutDevices(userID id.UserID, devices map[id.DeviceI
|
|||
_, err = tx.Exec("INSERT INTO crypto_device (user_id, device_id, identity_key, signing_key, trust, deleted, name) VALUES "+valueString, values...)
|
||||
if err != nil {
|
||||
_ = tx.Rollback()
|
||||
return errors.Wrap(err, "failed to insert new devices")
|
||||
return fmt.Errorf("failed to insert new devices: %w", err)
|
||||
}
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to commit changes")
|
||||
return fmt.Errorf("failed to commit changes: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,14 +2,15 @@ package sql_store_upgrade
|
|||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
type upgradeFunc func(*sql.Tx, string) error
|
||||
|
||||
var ErrUnknownDialect = errors.New("unknown dialect")
|
||||
|
||||
var Upgrades = [...]upgradeFunc{
|
||||
func(tx *sql.Tx, _ string) error {
|
||||
for _, query := range []string{
|
||||
|
|
@ -153,7 +154,7 @@ var Upgrades = [...]upgradeFunc{
|
|||
}
|
||||
}
|
||||
} else {
|
||||
return errors.New("unknown dialect: " + dialect)
|
||||
return fmt.Errorf("%w (%s)", ErrUnknownDialect, dialect)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
|
|
@ -203,7 +204,7 @@ var Upgrades = [...]upgradeFunc{
|
|||
return err
|
||||
}
|
||||
} else {
|
||||
return errors.New("unknown dialect: " + dialect)
|
||||
return fmt.Errorf("%w (%s)", ErrUnknownDialect, dialect)
|
||||
}
|
||||
return nil
|
||||
},
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ package crypto
|
|||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"sort"
|
||||
|
|
@ -19,8 +20,6 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/mautrix/crypto/canonicaljson"
|
||||
"maunium.net/go/mautrix/crypto/olm"
|
||||
|
|
@ -28,11 +27,14 @@ import (
|
|||
"maunium.net/go/mautrix/id"
|
||||
)
|
||||
|
||||
// ErrUnknownTransaction is returned when a key verification message is received with an unknown transaction ID.
|
||||
var ErrUnknownTransaction = errors.New("Unknown transaction")
|
||||
|
||||
// ErrUnknownVerificationMethod is returned when the verification method in a received m.key.verification.start is unknown.
|
||||
var ErrUnknownVerificationMethod = errors.New("Unknown verification method")
|
||||
var (
|
||||
ErrUnknownUserForTransaction = errors.New("unknown user for transaction")
|
||||
ErrTransactionAlreadyExists = errors.New("transaction already exists")
|
||||
// ErrUnknownTransaction is returned when a key verification message is received with an unknown transaction ID.
|
||||
ErrUnknownTransaction = errors.New("unknown transaction")
|
||||
// ErrUnknownVerificationMethod is returned when the verification method in a received m.key.verification.start is unknown.
|
||||
ErrUnknownVerificationMethod = errors.New("unknown verification method")
|
||||
)
|
||||
|
||||
type VerificationHooks interface {
|
||||
// VerifySASMatch receives the generated SAS and its method, as well as the device that is being verified.
|
||||
|
|
@ -130,7 +132,7 @@ func (mach *OlmMachine) getTransactionState(transactionID string, userID id.User
|
|||
reason := fmt.Sprintf("Unknown user for transaction %v: %v", transactionID, userID)
|
||||
_ = mach.SendSASVerificationCancel(userID, id.DeviceID("*"), transactionID, reason, event.VerificationCancelUserMismatch)
|
||||
mach.keyVerificationTransactionState.Delete(userID.String() + ":" + transactionID)
|
||||
return nil, errors.New(reason)
|
||||
return nil, fmt.Errorf("%w %s: %s", ErrUnknownUserForTransaction, transactionID, userID)
|
||||
}
|
||||
return verState, nil
|
||||
}
|
||||
|
|
@ -544,7 +546,7 @@ func (mach *OlmMachine) NewSASVerificationWith(device *DeviceIdentity, hooks Ver
|
|||
verState.startEventCanonical = string(canonical)
|
||||
_, loaded := mach.keyVerificationTransactionState.LoadOrStore(device.UserID.String()+":"+transactionID, verState)
|
||||
if loaded {
|
||||
return "", errors.New("Transaction already exists")
|
||||
return "", ErrTransactionAlreadyExists
|
||||
}
|
||||
|
||||
mach.timeoutAfter(verState, transactionID, timeout)
|
||||
|
|
|
|||
|
|
@ -9,11 +9,10 @@ package event
|
|||
import (
|
||||
"encoding/gob"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// TypeMap is a mapping from event type to the content struct type.
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ package event
|
|||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"maunium.net/go/mautrix/id"
|
||||
)
|
||||
|
||||
|
|
@ -58,7 +56,7 @@ func (content *EncryptedEventContent) UnmarshalJSON(data []byte) error {
|
|||
return json.Unmarshal(content.Ciphertext, &content.OlmCiphertext)
|
||||
case id.AlgorithmMegolmV1:
|
||||
if len(content.Ciphertext) == 0 || content.Ciphertext[0] != '"' || content.Ciphertext[len(content.Ciphertext)-1] != '"' {
|
||||
return errors.New("input doesn't look like a JSON string")
|
||||
return id.InputNotJSONString
|
||||
}
|
||||
content.MegolmCiphertext = content.Ciphertext[1 : len(content.Ciphertext)-1]
|
||||
}
|
||||
|
|
|
|||
1
go.mod
1
go.mod
|
|
@ -6,7 +6,6 @@ require (
|
|||
github.com/gorilla/mux v1.7.4
|
||||
github.com/lib/pq v1.7.0
|
||||
github.com/mattn/go-sqlite3 v1.14.0
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/russross/blackfriday/v2 v2.0.1
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
|
||||
github.com/stretchr/testify v1.6.1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue