(key api.CrossSigningKeyUpdate)
| 70 | } |
| 71 | |
| 72 | func (p *KeyChange) ProduceSigningKeyUpdate(key api.CrossSigningKeyUpdate) error { |
| 73 | output := &api.DeviceMessage{ |
| 74 | Type: api.TypeCrossSigningUpdate, |
| 75 | OutputCrossSigningKeyUpdate: &api.OutputCrossSigningKeyUpdate{ |
| 76 | CrossSigningKeyUpdate: key, |
| 77 | }, |
| 78 | } |
| 79 | |
| 80 | id, err := p.DB.StoreKeyChange(context.Background(), key.UserID) |
| 81 | if err != nil { |
| 82 | return err |
| 83 | } |
| 84 | output.DeviceChangeID = id |
| 85 | |
| 86 | value, err := json.Marshal(output) |
| 87 | if err != nil { |
| 88 | return err |
| 89 | } |
| 90 | |
| 91 | m := &nats.Msg{ |
| 92 | Subject: p.Topic, |
| 93 | Header: nats.Header{}, |
| 94 | } |
| 95 | m.Header.Set(jetstream.UserID, key.UserID) |
| 96 | m.Data = value |
| 97 | |
| 98 | _, err = p.JetStream.PublishMsg(m) |
| 99 | if err != nil { |
| 100 | return err |
| 101 | } |
| 102 | |
| 103 | logrus.WithFields(logrus.Fields{ |
| 104 | "user_id": key.UserID, |
| 105 | }).Tracef("Produced to cross-signing update topic '%s'", p.Topic) |
| 106 | return nil |
| 107 | } |
no test coverage detected