From 0443daef0e6ae5dc7b3a5410857e6442a4048ec6 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sun, 30 Jun 2024 01:14:27 +0300 Subject: [PATCH] crypto: use exzerolog.ArrayOfStrs instead of custom function --- crypto/cross_sign_store.go | 4 +++- crypto/devicelist.go | 5 +++-- crypto/encryptmegolm.go | 15 ++++----------- crypto/machine.go | 17 +++++------------ 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/crypto/cross_sign_store.go b/crypto/cross_sign_store.go index 456ab6ed..968a52a1 100644 --- a/crypto/cross_sign_store.go +++ b/crypto/cross_sign_store.go @@ -10,6 +10,8 @@ package crypto import ( "context" + "go.mau.fi/util/exzerolog" + "maunium.net/go/mautrix" "maunium.net/go/mautrix/crypto/signatures" "maunium.net/go/mautrix/id" @@ -47,7 +49,7 @@ func (mach *OlmMachine) storeCrossSigningKeys(ctx context.Context, crossSigningK } for _, key := range userKeys.Keys { - log := log.With().Str("key", key.String()).Strs("usages", strishArray(userKeys.Usage)).Logger() + log := log.With().Str("key", key.String()).Array("usages", exzerolog.ArrayOfStrs(userKeys.Usage)).Logger() for _, usage := range userKeys.Usage { log.Debug().Str("usage", string(usage)).Msg("Storing cross-signing key") if err = mach.CryptoStore.PutCrossSigningKey(ctx, userID, usage, key); err != nil { diff --git a/crypto/devicelist.go b/crypto/devicelist.go index e98ba45a..de6c21f3 100644 --- a/crypto/devicelist.go +++ b/crypto/devicelist.go @@ -12,6 +12,7 @@ import ( "fmt" "github.com/rs/zerolog" + "go.mau.fi/util/exzerolog" "maunium.net/go/mautrix" "maunium.net/go/mautrix/crypto/signatures" @@ -115,7 +116,7 @@ func (mach *OlmMachine) FetchKeys(ctx context.Context, users []id.UserID, includ for _, userID := range users { req.DeviceKeys[userID] = mautrix.DeviceIDList{} } - log.Debug().Strs("users", strishArray(users)).Msg("Querying keys for users") + log.Debug().Array("users", exzerolog.ArrayOfStrs(users)).Msg("Querying keys for users") resp, err := mach.Client.QueryKeys(ctx, req) if err != nil { return nil, fmt.Errorf("failed to query keys: %w", err) @@ -181,7 +182,7 @@ func (mach *OlmMachine) FetchKeys(ctx context.Context, users []id.UserID, includ log.Err(err).Msg("Failed to redact megolm sessions from deleted device") } else { log.Info(). - Strs("session_ids", stringifyArray(sessionIDs)). + Array("session_ids", exzerolog.ArrayOfStrs(sessionIDs)). Msg("Redacted megolm sessions from deleted device") } } diff --git a/crypto/encryptmegolm.go b/crypto/encryptmegolm.go index fd7b8ea2..d8d5c7c9 100644 --- a/crypto/encryptmegolm.go +++ b/crypto/encryptmegolm.go @@ -15,6 +15,7 @@ import ( "fmt" "github.com/rs/zerolog" + "go.mau.fi/util/exzerolog" "maunium.net/go/mautrix" "maunium.net/go/mautrix/event" @@ -160,14 +161,6 @@ type deviceSessionWrapper struct { identity *id.Device } -func strishArray[T ~string](arr []T) []string { - out := make([]string, len(arr)) - for i, item := range arr { - out[i] = string(item) - } - return out -} - // ShareGroupSession shares a group session for a specific room with all the devices of the given user list. // // For devices with TrustStateBlacklisted, a m.room_key.withheld event with code=m.blacklisted is sent. @@ -193,7 +186,7 @@ func (mach *OlmMachine) ShareGroupSession(ctx context.Context, roomID id.RoomID, } log = log.With().Str("session_id", session.ID().String()).Logger() ctx = log.WithContext(ctx) - log.Debug().Strs("users", strishArray(users)).Msg("Sharing group session for room") + log.Debug().Array("users", exzerolog.ArrayOfStrs(users)).Msg("Sharing group session for room") withheldCount := 0 toDeviceWithheld := &mautrix.ReqSendToDevice{Messages: make(map[id.UserID]map[id.DeviceID]*event.Content)} @@ -235,10 +228,10 @@ func (mach *OlmMachine) ShareGroupSession(ctx context.Context, roomID id.RoomID, } if len(fetchKeysForUsers) > 0 { - log.Debug().Strs("users", strishArray(fetchKeysForUsers)).Msg("Fetching missing keys") + log.Debug().Array("users", exzerolog.ArrayOfStrs(fetchKeysForUsers)).Msg("Fetching missing keys") keys, err := mach.FetchKeys(ctx, fetchKeysForUsers, true) if err != nil { - log.Err(err).Strs("users", strishArray(fetchKeysForUsers)).Msg("Failed to fetch missing keys") + log.Err(err).Array("users", exzerolog.ArrayOfStrs(fetchKeysForUsers)).Msg("Failed to fetch missing keys") return fmt.Errorf("failed to fetch missing keys: %w", err) } for userID, devices := range keys { diff --git a/crypto/machine.go b/crypto/machine.go index 8e9a6c66..2477b9e1 100644 --- a/crypto/machine.go +++ b/crypto/machine.go @@ -15,11 +15,12 @@ import ( "github.com/rs/zerolog" - "maunium.net/go/mautrix/crypto/ssss" - "maunium.net/go/mautrix/id" + "go.mau.fi/util/exzerolog" "maunium.net/go/mautrix" + "maunium.net/go/mautrix/crypto/ssss" "maunium.net/go/mautrix/event" + "maunium.net/go/mautrix/id" ) // OlmMachine is the main struct for handling Matrix end-to-end encryption. @@ -575,14 +576,6 @@ func (mach *OlmMachine) WaitForSession(ctx context.Context, roomID id.RoomID, se } } -func stringifyArray[T ~string](arr []T) []string { - strs := make([]string, len(arr)) - for i, v := range arr { - strs[i] = string(v) - } - return strs -} - func (mach *OlmMachine) receiveRoomKey(ctx context.Context, evt *DecryptedOlmEvent, content *event.RoomKeyEventContent) { log := zerolog.Ctx(ctx).With(). Str("algorithm", string(content.Algorithm)). @@ -623,7 +616,7 @@ func (mach *OlmMachine) receiveRoomKey(ctx context.Context, evt *DecryptedOlmEve log.Err(err).Msg("Failed to redact previous megolm sessions") } else { log.Info(). - Strs("session_ids", stringifyArray(sessionIDs)). + Array("session_ids", exzerolog.ArrayOfStrs(sessionIDs)). Msg("Redacted previous megolm sessions") } } @@ -713,7 +706,7 @@ func (mach *OlmMachine) ExpiredKeyDeleteLoop(ctx context.Context) { if err != nil { log.Err(err).Msg("Failed to redact expired megolm sessions") } else if len(sessionIDs) > 0 { - log.Info().Strs("session_ids", stringifyArray(sessionIDs)).Msg("Redacted expired megolm sessions") + log.Info().Array("session_ids", exzerolog.ArrayOfStrs(sessionIDs)).Msg("Redacted expired megolm sessions") } else { log.Debug().Msg("Didn't find any expired megolm sessions") }