MCPcopy Create free account
hub / github.com/daodst/chat / ProduceSigningKeyUpdate

Method ProduceSigningKeyUpdate

keyserver/producers/keychange.go:72–107  ·  view source on GitHub ↗
(key api.CrossSigningKeyUpdate)

Source from the content-addressed store, hash-verified

70}
71
72func (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}

Callers 2

Calls 3

PublishMsgMethod · 0.80
StoreKeyChangeMethod · 0.65
SetMethod · 0.65

Tested by

no test coverage detected