diff --git a/keyserver/internal/cross_signing.go b/keyserver/internal/cross_signing.go index 3f6560117..9a8592040 100644 --- a/keyserver/internal/cross_signing.go +++ b/keyserver/internal/cross_signing.go @@ -225,20 +225,22 @@ func (a *KeyInternalAPI) PerformUploadDeviceKeys(ctx context.Context, req *api.P } // Finally, generate a notification that we updated the keys. - update := eduserverAPI.SigningKeyUpdate{ - UserID: req.UserID, - } - if _, ok := toStore[gomatrixserverlib.CrossSigningKeyPurposeMaster]; ok { - update.MasterKey = &req.MasterKey - } - if _, ok := toStore[gomatrixserverlib.CrossSigningKeyPurposeSelfSigning]; ok { - update.SelfSigningKey = &req.SelfSigningKey - } - if err := a.CrossSigningProducer.ProduceSigningKeyUpdate(update); err != nil { - res.Error = &api.KeyError{ - Err: fmt.Sprintf("a.CrossSigningProducer.ProduceSigningKeyUpdate: %s", err), + if _, host, err := gomatrixserverlib.SplitID('@', req.UserID); err == nil && host == a.ThisServer { + update := eduserverAPI.SigningKeyUpdate{ + UserID: req.UserID, + } + if _, ok := toStore[gomatrixserverlib.CrossSigningKeyPurposeMaster]; ok { + update.MasterKey = &req.MasterKey + } + if _, ok := toStore[gomatrixserverlib.CrossSigningKeyPurposeSelfSigning]; ok { + update.SelfSigningKey = &req.SelfSigningKey + } + if err := a.CrossSigningProducer.ProduceSigningKeyUpdate(update); err != nil { + res.Error = &api.KeyError{ + Err: fmt.Sprintf("a.CrossSigningProducer.ProduceSigningKeyUpdate: %s", err), + } + return } - return } }