1
0
Fork 0
mirror of https://github.com/mautrix/signal.git synced 2026-07-07 14:53:17 -04:00

Compare commits

..

No commits in common. "main" and "v0.2605.0" have entirely different histories.

36 changed files with 680 additions and 977 deletions

View file

@ -1,9 +1,3 @@
# v26.06
* Updated libsignal to v0.94.4
* Updated mrenclave to fix looking up phone numbers.
* Changed knock accept handling to auto-join the ghost user afterwards.
# v26.05 # v26.05
* Updated libsignal to v0.93.2. * Updated libsignal to v0.93.2.

View file

@ -37,7 +37,7 @@ var m = mxmain.BridgeMain{
Name: "mautrix-signal", Name: "mautrix-signal",
URL: "https://github.com/mautrix/signal", URL: "https://github.com/mautrix/signal",
Description: "A Matrix-Signal puppeting bridge.", Description: "A Matrix-Signal puppeting bridge.",
Version: "26.06", Version: "26.05",
SemCalVer: true, SemCalVer: true,
Connector: &connector.SignalConnector{}, Connector: &connector.SignalConnector{},

24
go.mod
View file

@ -2,26 +2,26 @@ module go.mau.fi/mautrix-signal
go 1.25.0 go 1.25.0
toolchain go1.26.4 toolchain go1.26.3
tool go.mau.fi/util/cmd/maubuild tool go.mau.fi/util/cmd/maubuild
require ( require (
github.com/coder/websocket v1.8.15 github.com/coder/websocket v1.8.14
github.com/emersion/go-vcard v0.0.0-20241024213814-c9703dde27ff github.com/emersion/go-vcard v0.0.0-20241024213814-c9703dde27ff
github.com/google/uuid v1.6.0 github.com/google/uuid v1.6.0
github.com/mattn/go-pointer v0.0.1 github.com/mattn/go-pointer v0.0.1
github.com/rs/zerolog v1.35.1 github.com/rs/zerolog v1.35.1
github.com/stretchr/testify v1.11.1 github.com/stretchr/testify v1.11.1
github.com/tidwall/gjson v1.19.0 github.com/tidwall/gjson v1.19.0
go.mau.fi/util v0.9.10 go.mau.fi/util v0.9.9
golang.org/x/crypto v0.53.0 golang.org/x/crypto v0.51.0
golang.org/x/exp v0.0.0-20260611194520-c48552f49976 golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a
golang.org/x/net v0.56.0 golang.org/x/net v0.54.0
golang.org/x/sync v0.21.0 golang.org/x/sync v0.20.0
google.golang.org/protobuf v1.36.11 google.golang.org/protobuf v1.36.11
gopkg.in/yaml.v3 v3.0.1 gopkg.in/yaml.v3 v3.0.1
maunium.net/go/mautrix v0.28.1 maunium.net/go/mautrix v0.28.0
) )
require ( require (
@ -32,7 +32,7 @@ require (
github.com/lib/pq v1.12.3 // indirect github.com/lib/pq v1.12.3 // indirect
github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-colorable v0.1.14 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-sqlite3 v1.14.45 // indirect github.com/mattn/go-sqlite3 v1.14.44 // indirect
github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81 // indirect github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect
@ -43,9 +43,9 @@ require (
github.com/tidwall/sjson v1.2.5 // indirect github.com/tidwall/sjson v1.2.5 // indirect
github.com/yuin/goldmark v1.8.2 // indirect github.com/yuin/goldmark v1.8.2 // indirect
go.mau.fi/zeroconfig v0.2.0 // indirect go.mau.fi/zeroconfig v0.2.0 // indirect
golang.org/x/mod v0.37.0 // indirect golang.org/x/mod v0.36.0 // indirect
golang.org/x/sys v0.46.0 // indirect golang.org/x/sys v0.44.0 // indirect
golang.org/x/text v0.38.0 // indirect golang.org/x/text v0.37.0 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
maunium.net/go/mauflag v1.0.0 // indirect maunium.net/go/mauflag v1.0.0 // indirect

44
go.sum
View file

@ -2,8 +2,8 @@ filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=
filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc= filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc=
github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU=
github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU=
github.com/coder/websocket v1.8.15 h1:6B2JPeOGlpff2Uz6vOEH1Vzpi0iUz20A+lPVhPHtNUA= github.com/coder/websocket v1.8.14 h1:9L0p0iKiNOibykf283eHkKUHHrpG7f65OE3BhhO7v9g=
github.com/coder/websocket v1.8.15/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= github.com/coder/websocket v1.8.14/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg=
github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA= github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA=
github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w= github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@ -30,8 +30,8 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0= github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0=
github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc=
github.com/mattn/go-sqlite3 v1.14.45 h1:6KA/spDguL3KV8rnybG7ezSaE4SeMR3KC9VbUoAQaIk= github.com/mattn/go-sqlite3 v1.14.44 h1:3VSe+xafpbzsLbdr2AWlAZk9yRHiBhTBakioXaCKTF8=
github.com/mattn/go-sqlite3 v1.14.45/go.mod h1:pjEuOr8IwzLJP2MfGeTb0A35jauH+C2kbHKBr7yXKVQ= github.com/mattn/go-sqlite3 v1.14.44/go.mod h1:pjEuOr8IwzLJP2MfGeTb0A35jauH+C2kbHKBr7yXKVQ=
github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81 h1:WDsQxOJDy0N1VRAjXLpi8sCEZRSGarLWQevDxpTBRrM= github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81 h1:WDsQxOJDy0N1VRAjXLpi8sCEZRSGarLWQevDxpTBRrM=
github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@ -61,25 +61,25 @@ github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
github.com/yuin/goldmark v1.8.2 h1:kEGpgqJXdgbkhcOgBxkC0X0PmoPG1ZyoZ117rDVp4zE= github.com/yuin/goldmark v1.8.2 h1:kEGpgqJXdgbkhcOgBxkC0X0PmoPG1ZyoZ117rDVp4zE=
github.com/yuin/goldmark v1.8.2/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= github.com/yuin/goldmark v1.8.2/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
go.mau.fi/util v0.9.10 h1:wzvz5iDHyqDXB8vgisD4d3SzucLXNM3iNY+1O1RoHtg= go.mau.fi/util v0.9.9 h1:ujDeXCo07HBor5oQLyO1tHklupmqVmPgasc53d7q/NE=
go.mau.fi/util v0.9.10/go.mod h1:YQOxySn+ZE3qSYqNxvyX7Yi3suA8YK17PS6QqBREW7A= go.mau.fi/util v0.9.9/go.mod h1:pqt4Vcrt+5gcH/CgrHZg11qSx+b34o6mknGzOEA6waY=
go.mau.fi/zeroconfig v0.2.0 h1:e/OGEERqVRRKlgaro7E6bh8xXiKFSXB3eNNIud7FUjU= go.mau.fi/zeroconfig v0.2.0 h1:e/OGEERqVRRKlgaro7E6bh8xXiKFSXB3eNNIud7FUjU=
go.mau.fi/zeroconfig v0.2.0/go.mod h1:J0Vn0prHNOm493oZoQ84kq83ZaNCYZnq+noI1b1eN8w= go.mau.fi/zeroconfig v0.2.0/go.mod h1:J0Vn0prHNOm493oZoQ84kq83ZaNCYZnq+noI1b1eN8w=
golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
golang.org/x/exp v0.0.0-20260611194520-c48552f49976 h1:X8Hz2ImujgbmetVuW+w2YkyZChE3cBpZi2P158rTG9M= golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a h1:+3jdDGGB8NGb1Zktc737jlt3/A5f6UlwSzmvqUuufxw=
golang.org/x/exp v0.0.0-20260611194520-c48552f49976/go.mod h1:vnf4pv9iKZXY58sQE1L86zmNWJ4159e1RkcWiLCkeEY= golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw=
golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ= golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0= golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o= golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec= golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@ -91,5 +91,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M= maunium.net/go/mauflag v1.0.0 h1:YiaRc0tEI3toYtJMRIfjP+jklH45uDHtT80nUamyD4M=
maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA= maunium.net/go/mauflag v1.0.0/go.mod h1:nLivPOpTpHnpzEh8jEdSL9UqO9+/KBJFmNRlwKfkPeA=
maunium.net/go/mautrix v0.28.1 h1:Hic3oDMPbLbQu1fhboTRAKZcORMjzzkjxsa+SGk60b0= maunium.net/go/mautrix v0.28.0 h1:vBakLzf8MAdfED3NzAKiMeKQbc3AQ4EAS03NC+TVMXQ=
maunium.net/go/mautrix v0.28.1/go.mod h1:mWXQNmOlrq4VTDU9f1HO03BSIswdUIyyY4wUKHqwzzY= maunium.net/go/mautrix v0.28.0/go.mod h1:/a9A7LGaqb9B3nho4tLd28n0EPcCdwpm2dxkxkLLgh0=

View file

@ -151,10 +151,7 @@ func (s *SignalClient) syncChats(ctx context.Context, cancel context.CancelFunc)
groupID := types.GroupIdentifier(base64.StdEncoding.EncodeToString(rawGroupID[:])) groupID := types.GroupIdentifier(base64.StdEncoding.EncodeToString(rawGroupID[:]))
groupInfo, err := s.getGroupInfo(ctx, groupID, dest.Group.GetSnapshot().GetVersion(), chat) groupInfo, err := s.getGroupInfo(ctx, groupID, dest.Group.GetSnapshot().GetVersion(), chat)
if err != nil { if err != nil {
zerolog.Ctx(ctx).Err(err). zerolog.Ctx(ctx).Err(err).Msg("Failed to get full group info")
Uint64("recipient_id", recipient.Id).
Stringer("group_id", groupID).
Msg("Failed to get full group info")
continue continue
} }
resyncEvt.PortalKey = s.makePortalKey(string(groupID)) resyncEvt.PortalKey = s.makePortalKey(string(groupID))

View file

@ -538,7 +538,7 @@ func (s *SignalClient) HandleMatrixMembership(ctx context.Context, msg *bridgev2
if err != nil { if err != nil {
return nil, err return nil, err
} }
if (msg.Type == bridgev2.Invite || msg.Type == bridgev2.AcceptKnock) && targetSignalID.Type != libsignalgo.ServiceIDTypePNI { if msg.Type == bridgev2.Invite && targetSignalID.Type != libsignalgo.ServiceIDTypePNI {
err = targetIntent.EnsureJoined(ctx, msg.Portal.MXID) err = targetIntent.EnsureJoined(ctx, msg.Portal.MXID)
if err != nil { if err != nil {
return nil, err return nil, err

View file

@ -81,7 +81,7 @@ func (pa *Address) CancelFinalizer() {
} }
func (pa *Address) Name() (string, error) { func (pa *Address) Name() (string, error) {
var name C.SignalCStringPtr var name *C.char
signalFfiError := C.signal_address_get_name(&name, pa.constPtr()) signalFfiError := C.signal_address_get_name(&name, pa.constPtr())
runtime.KeepAlive(pa) runtime.KeepAlive(pa)
if signalFfiError != nil { if signalFfiError != nil {

View file

@ -22,7 +22,7 @@ package libsignalgo
import "C" import "C"
import "unsafe" import "unsafe"
func CopyCStringToString(cString C.SignalCStringPtr) (s string) { func CopyCStringToString(cString *C.char) (s string) {
s = C.GoString(cString) s = C.GoString(cString)
C.signal_free_string(cString) C.signal_free_string(cString)
return return

View file

@ -152,7 +152,7 @@ func wrapError(signalError *C.SignalFfiError) error {
} }
func wrapSignalError(signalError *C.SignalFfiError, errorType C.uint32_t) error { func wrapSignalError(signalError *C.SignalFfiError, errorType C.uint32_t) error {
var messageBytes C.SignalCStringPtr var messageBytes *C.char
getMessageError := C.signal_error_get_message(&messageBytes, signalError) getMessageError := C.signal_error_get_message(&messageBytes, signalError)
if getMessageError != nil { if getMessageError != nil {
// Ignore any errors from this, it will just end up being an empty string. // Ignore any errors from this, it will just end up being an empty string.

View file

@ -92,7 +92,7 @@ func (f *Fingerprint) ScannableEncoding() ([]byte, error) {
} }
func (f *Fingerprint) DisplayString() (string, error) { func (f *Fingerprint) DisplayString() (string, error) {
var displayString C.SignalCStringPtr var displayString *C.char
signalFfiError := C.signal_fingerprint_display_string(&displayString, f.constPtr()) signalFfiError := C.signal_fingerprint_display_string(&displayString, f.constPtr())
runtime.KeepAlive(f) runtime.KeepAlive(f)
if signalFfiError != nil { if signalFfiError != nil {

@ -1 +1 @@
Subproject commit 38428a7bb70509910d72b3f78208c1daf33774d8 Subproject commit bbc16886cae2feab1cd1fe271ccc651e8860ce96

View file

@ -29,14 +29,6 @@ SPDX-License-Identifier: AGPL-3.0-only
#define SignalBackupId_LEN 16 #define SignalBackupId_LEN 16
#define SignalAes256GcmEncryption_TAG_SIZE SignalTAG_SIZE
#define SignalAes256GcmEncryption_NONCE_SIZE SignalNONCE_SIZE
#define SignalAes256GcmDecryption_TAG_SIZE SignalTAG_SIZE
#define SignalAes256GcmDecryption_NONCE_SIZE SignalNONCE_SIZE
#define SignalCallLinkSecretParams_ROOT_KEY_MAX_BYTES_FOR_SHO 16 #define SignalCallLinkSecretParams_ROOT_KEY_MAX_BYTES_FOR_SHO 16
#define SignalNUM_AUTH_CRED_ATTRIBUTES 3 #define SignalNUM_AUTH_CRED_ATTRIBUTES 3
@ -135,31 +127,12 @@ SPDX-License-Identifier: AGPL-3.0-only
*/ */
#define SignalFourCC_ENCODED_LEN 4 #define SignalFourCC_ENCODED_LEN 4
typedef enum {
SignalLogLevelError = 1,
SignalLogLevelWarn,
SignalLogLevelInfo,
SignalLogLevelDebug,
SignalLogLevelTrace,
} SignalLogLevel;
enum SignalFfiPublicKeyType {
SignalFfiPublicKeyTypeECC,
SignalFfiPublicKeyTypeKyber,
};
typedef uint8_t SignalFfiPublicKeyType;
enum SignalChallengeOption { enum SignalChallengeOption {
SignalChallengeOptionPushChallenge, SignalChallengeOptionPushChallenge,
SignalChallengeOptionCaptcha, SignalChallengeOptionCaptcha,
}; };
typedef uint8_t SignalChallengeOption; typedef uint8_t SignalChallengeOption;
typedef enum {
SignalDirectionSending = 0,
SignalDirectionReceiving = 1,
} SignalDirection;
typedef enum { typedef enum {
SignalCiphertextMessageTypeWhisper = 2, SignalCiphertextMessageTypeWhisper = 2,
SignalCiphertextMessageTypePreKey = 3, SignalCiphertextMessageTypePreKey = 3,
@ -173,6 +146,17 @@ typedef enum {
SignalContentHintImplicit = 2, SignalContentHintImplicit = 2,
} SignalContentHint; } SignalContentHint;
typedef enum {
SignalDirectionSending = 0,
SignalDirectionReceiving = 1,
} SignalDirection;
enum SignalFfiPublicKeyType {
SignalFfiPublicKeyTypeECC,
SignalFfiPublicKeyTypeKyber,
};
typedef uint8_t SignalFfiPublicKeyType;
/** /**
* The result of saving a new identity key for a protocol address. * The result of saving a new identity key for a protocol address.
*/ */
@ -187,6 +171,14 @@ typedef enum {
SignalIdentityChangeReplacedExisting, SignalIdentityChangeReplacedExisting,
} SignalIdentityChange; } SignalIdentityChange;
typedef enum {
SignalLogLevelError = 1,
SignalLogLevelWarn,
SignalLogLevelInfo,
SignalLogLevelDebug,
SignalLogLevelTrace,
} SignalLogLevel;
typedef enum { typedef enum {
SignalErrorCodeUnknownError = 1, SignalErrorCodeUnknownError = 1,
SignalErrorCodeInvalidState = 2, SignalErrorCodeInvalidState = 2,
@ -413,12 +405,6 @@ typedef struct SignalUnidentifiedSenderMessageContent SignalUnidentifiedSenderMe
typedef struct SignalValidatingMac SignalValidatingMac; typedef struct SignalValidatingMac SignalValidatingMac;
/**
* A type alias to be used with [`OwnedBufferOf`], so that `OwnedBufferOf<c_char>` and
* `OwnedBufferOf<*const c_char>` get distinct names.
*/
typedef const char *SignalCStringPtr;
typedef struct { typedef struct {
SignalProtocolAddress *raw; SignalProtocolAddress *raw;
} SignalMutPointerProtocolAddress; } SignalMutPointerProtocolAddress;
@ -526,6 +512,12 @@ typedef struct {
const SignalAuthenticatedChatConnection *raw; const SignalAuthenticatedChatConnection *raw;
} SignalConstPointerAuthenticatedChatConnection; } SignalConstPointerAuthenticatedChatConnection;
/**
* A type alias to be used with [`OwnedBufferOf`], so that `OwnedBufferOf<c_char>` and
* `OwnedBufferOf<*const c_char>` get distinct names.
*/
typedef const char *SignalCStringPtr;
/** /**
* A representation of a array allocated on the Rust heap for use in C code. * A representation of a array allocated on the Rust heap for use in C code.
*/ */
@ -658,21 +650,6 @@ typedef struct {
size_t length; size_t length;
} SignalBorrowedSliceOfConstPointerCiphertextMessage; } SignalBorrowedSliceOfConstPointerCiphertextMessage;
/**
* A C callback used to report the results of Rust futures.
*
* cbindgen will produce independent C types like `SignalCPromisei32` and
* `SignalCPromiseProtocolAddress`.
*
* This derives Copy because it behaves like a C type; nevertheless, a promise should still only be
* completed once.
*/
typedef struct {
void (*complete)(SignalFfiError *error, const SignalOwnedBuffer *result, const void *context);
const void *context;
SignalCancellationId cancellation_id;
} SignalCPromiseOwnedBufferOfc_uchar;
/** /**
* A wrapper type for raw UUIDs, because C treats arrays specially in argument position. * A wrapper type for raw UUIDs, because C treats arrays specially in argument position.
*/ */
@ -948,23 +925,15 @@ typedef struct {
const SignalDecryptionErrorMessage *raw; const SignalDecryptionErrorMessage *raw;
} SignalConstPointerDecryptionErrorMessage; } SignalConstPointerDecryptionErrorMessage;
typedef struct {
const SignalServerSecretParams *raw;
} SignalConstPointerServerSecretParams;
typedef struct {
const SignalServerPublicParams *raw;
} SignalConstPointerServerPublicParams;
/** /**
* Like [`std::panic::AssertUnwindSafe`], but FFI-compatible. * Like [`std::panic::AssertUnwindSafe`], but FFI-compatible.
*/ */
typedef const SignalFfiError *SignalUnwindSafeArgSignalFfiError; typedef const SignalFfiError *SignalUnwindSafeArgSignalFfiError;
typedef struct { typedef struct {
SignalCStringPtr first; const char *first;
uint32_t second; uint32_t second;
} SignalPairOfCStringPtru32; } SignalPairOfc_charu32;
/** /**
* A representation of a array allocated on the Rust heap for use in C code. * A representation of a array allocated on the Rust heap for use in C code.
@ -996,19 +965,19 @@ typedef struct {
} SignalOwnedBufferOfFfiMismatchedDevicesError; } SignalOwnedBufferOfFfiMismatchedDevicesError;
typedef struct { typedef struct {
SignalCStringPtr first; const char *first;
SignalOwnedBuffer second; SignalOwnedBuffer second;
} SignalPairOfCStringPtrOwnedBufferOfc_uchar; } SignalPairOfc_charOwnedBufferOfc_uchar;
typedef struct { typedef struct {
SignalPairOfCStringPtrOwnedBufferOfc_uchar first; SignalPairOfc_charOwnedBufferOfc_uchar first;
int64_t second; int64_t second;
} SignalPairOfPairOfCStringPtrOwnedBufferOfc_uchari64; } SignalPairOfPairOfc_charOwnedBufferOfc_uchari64;
typedef struct { typedef struct {
SignalCStringPtr first; const char *first;
bool second; bool second;
} SignalPairOfCStringPtrbool; } SignalPairOfc_charbool;
typedef struct { typedef struct {
SignalFingerprint *raw; SignalFingerprint *raw;
@ -1095,11 +1064,19 @@ typedef struct {
const SignalSenderKeyStore *raw; const SignalSenderKeyStore *raw;
} SignalConstPointerFfiSenderKeyStoreStruct; } SignalConstPointerFfiSenderKeyStoreStruct;
typedef struct {
const SignalServerSecretParams *raw;
} SignalConstPointerServerSecretParams;
typedef struct { typedef struct {
const SignalBorrowedBuffer *base; const SignalBorrowedBuffer *base;
size_t length; size_t length;
} SignalBorrowedSliceOfBuffers; } SignalBorrowedSliceOfBuffers;
typedef struct {
const SignalServerPublicParams *raw;
} SignalConstPointerServerPublicParams;
typedef struct { typedef struct {
SignalHsmEnclaveClient *raw; SignalHsmEnclaveClient *raw;
} SignalMutPointerHsmEnclaveClient; } SignalMutPointerHsmEnclaveClient;
@ -1125,7 +1102,7 @@ typedef struct {
SignalIncrementalMac *raw; SignalIncrementalMac *raw;
} SignalMutPointerIncrementalMac; } SignalMutPointerIncrementalMac;
typedef int (*SignalFfiLoggerLog)(void *ctx, SignalLogLevel level, SignalCStringPtr file, uint32_t line, SignalCStringPtr message); typedef int (*SignalFfiLoggerLog)(void *ctx, SignalLogLevel level, const char *file, uint32_t line, const char *message);
typedef int (*SignalFfiLoggerFlush)(void *ctx); typedef int (*SignalFfiLoggerFlush)(void *ctx);
@ -1226,20 +1203,18 @@ typedef struct {
const SignalMessageBackupValidationOutcome *raw; const SignalMessageBackupValidationOutcome *raw;
} SignalConstPointerMessageBackupValidationOutcome; } SignalConstPointerMessageBackupValidationOutcome;
typedef int (*SignalFfiSyncInputStreamRead)(void *ctx, size_t *out, SignalBorrowedMutableBuffer buf); typedef int (*SignalFfiInputStreamRead)(void *ctx, size_t *out, SignalBorrowedMutableBuffer buf);
typedef int (*SignalFfiSyncInputStreamSkip)(void *ctx, uint64_t amount); typedef int (*SignalFfiInputStreamSkip)(void *ctx, uint64_t amount);
typedef void (*SignalFfiSyncInputStreamDestroy)(void *ctx); typedef void (*SignalFfiInputStreamDestroy)(void *ctx);
typedef struct { typedef struct {
void *ctx; void *ctx;
SignalFfiSyncInputStreamRead read; SignalFfiInputStreamRead read;
SignalFfiSyncInputStreamSkip skip; SignalFfiInputStreamSkip skip;
SignalFfiSyncInputStreamDestroy destroy; SignalFfiInputStreamDestroy destroy;
} SignalSyncInputStream; } SignalInputStream;
typedef SignalSyncInputStream SignalInputStream;
typedef struct { typedef struct {
const SignalInputStream *raw; const SignalInputStream *raw;
@ -1308,7 +1283,7 @@ typedef struct {
const SignalProvisioningChatConnection *raw; const SignalProvisioningChatConnection *raw;
} SignalConstPointerProvisioningChatConnection; } SignalConstPointerProvisioningChatConnection;
typedef int (*SignalFfiProvisioningListenerReceivedAddress)(void *ctx, SignalCStringPtr address, SignalMutPointerServerMessageAck send_ack); typedef int (*SignalFfiProvisioningListenerReceivedAddress)(void *ctx, const char *address, SignalMutPointerServerMessageAck send_ack);
typedef int (*SignalFfiProvisioningListenerReceivedEnvelope)(void *ctx, SignalOwnedBuffer envelope, SignalMutPointerServerMessageAck send_ack); typedef int (*SignalFfiProvisioningListenerReceivedEnvelope)(void *ctx, SignalOwnedBuffer envelope, SignalMutPointerServerMessageAck send_ack);
@ -1579,46 +1554,6 @@ typedef struct {
SignalTokioAsyncContext *raw; SignalTokioAsyncContext *raw;
} SignalMutPointerTokioAsyncContext; } SignalMutPointerTokioAsyncContext;
typedef struct {
SignalOwnedBufferOfCStringPtr first;
SignalOwnedBufferOfCStringPtr second;
} SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr;
/**
* A C callback used to report the results of Rust futures.
*
* cbindgen will produce independent C types like `SignalCPromisei32` and
* `SignalCPromiseProtocolAddress`.
*
* This derives Copy because it behaves like a C type; nevertheless, a promise should still only be
* completed once.
*/
typedef struct {
void (*complete)(SignalFfiError *error, const SignalPairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr *result, const void *context);
const void *context;
SignalCancellationId cancellation_id;
} SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr;
typedef struct {
SignalCStringPtr first;
SignalCStringPtr second;
} SignalPairOfCStringPtrCStringPtr;
/**
* A C callback used to report the results of Rust futures.
*
* cbindgen will produce independent C types like `SignalCPromisei32` and
* `SignalCPromiseProtocolAddress`.
*
* This derives Copy because it behaves like a C type; nevertheless, a promise should still only be
* completed once.
*/
typedef struct {
void (*complete)(SignalFfiError *error, const SignalPairOfCStringPtrCStringPtr *result, const void *context);
const void *context;
SignalCancellationId cancellation_id;
} SignalCPromisePairOfCStringPtrCStringPtr;
typedef struct { typedef struct {
SignalUnauthenticatedChatConnection *raw; SignalUnauthenticatedChatConnection *raw;
} SignalMutPointerUnauthenticatedChatConnection; } SignalMutPointerUnauthenticatedChatConnection;
@ -1675,9 +1610,9 @@ typedef struct {
typedef struct { typedef struct {
bool present; bool present;
SignalCStringPtr first; const char *first;
uint8_t second[32]; uint8_t second[32];
} SignalOptionalPairOfCStringPtru832; } SignalOptionalPairOfc_charu832;
/** /**
* A C callback used to report the results of Rust futures. * A C callback used to report the results of Rust futures.
@ -1689,10 +1624,10 @@ typedef struct {
* completed once. * completed once.
*/ */
typedef struct { typedef struct {
void (*complete)(SignalFfiError *error, const SignalOptionalPairOfCStringPtru832 *result, const void *context); void (*complete)(SignalFfiError *error, const SignalOptionalPairOfc_charu832 *result, const void *context);
const void *context; const void *context;
SignalCancellationId cancellation_id; SignalCancellationId cancellation_id;
} SignalCPromiseOptionalPairOfCStringPtru832; } SignalCPromiseOptionalPairOfc_charu832;
/** /**
* A C callback used to report the results of Rust futures. * A C callback used to report the results of Rust futures.
@ -1713,6 +1648,8 @@ typedef struct {
SignalValidatingMac *raw; SignalValidatingMac *raw;
} SignalMutPointerValidatingMac; } SignalMutPointerValidatingMac;
typedef SignalInputStream SignalSyncInputStream;
typedef struct { typedef struct {
const SignalSyncInputStream *raw; const SignalSyncInputStream *raw;
} SignalConstPointerFfiSyncInputStreamStruct; } SignalConstPointerFfiSyncInputStreamStruct;
@ -1727,7 +1664,7 @@ SignalFfiError *signal_account_entropy_pool_derive_backup_key(uint8_t (*out)[Sig
SignalFfiError *signal_account_entropy_pool_derive_svr_key(uint8_t (*out)[SignalSVR_KEY_LEN], const char *account_entropy); SignalFfiError *signal_account_entropy_pool_derive_svr_key(uint8_t (*out)[SignalSVR_KEY_LEN], const char *account_entropy);
SignalFfiError *signal_account_entropy_pool_generate(SignalCStringPtr *out); SignalFfiError *signal_account_entropy_pool_generate(const char **out);
SignalFfiError *signal_account_entropy_pool_is_valid(bool *out, const char *account_entropy); SignalFfiError *signal_account_entropy_pool_is_valid(bool *out, const char *account_entropy);
@ -1737,7 +1674,7 @@ SignalFfiError *signal_address_destroy(SignalMutPointerProtocolAddress p);
SignalFfiError *signal_address_get_device_id(uint32_t *out, SignalConstPointerProtocolAddress obj); SignalFfiError *signal_address_get_device_id(uint32_t *out, SignalConstPointerProtocolAddress obj);
SignalFfiError *signal_address_get_name(SignalCStringPtr *out, SignalConstPointerProtocolAddress obj); SignalFfiError *signal_address_get_name(const char **out, SignalConstPointerProtocolAddress obj);
SignalFfiError *signal_address_new(SignalMutPointerProtocolAddress *out, const char *name, uint32_t device_id); SignalFfiError *signal_address_new(SignalMutPointerProtocolAddress *out, const char *name, uint32_t device_id);
@ -1801,40 +1738,8 @@ SignalFfiError *signal_authenticated_chat_connection_send(SignalCPromiseFfiChatR
SignalFfiError *signal_authenticated_chat_connection_send_message(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat, const SignalServiceIdFixedWidthBinaryBytes *destination, uint64_t timestamp, SignalBorrowedSliceOfu32 device_ids, SignalBorrowedSliceOfu32 registration_ids, SignalBorrowedSliceOfConstPointerCiphertextMessage contents, bool online_only, bool is_urgent); SignalFfiError *signal_authenticated_chat_connection_send_message(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat, const SignalServiceIdFixedWidthBinaryBytes *destination, uint64_t timestamp, SignalBorrowedSliceOfu32 device_ids, SignalBorrowedSliceOfu32 registration_ids, SignalBorrowedSliceOfConstPointerCiphertextMessage contents, bool online_only, bool is_urgent);
SignalFfiError *signal_authenticated_chat_connection_send_raw_grpc(SignalCPromiseOwnedBufferOfc_uchar *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat, const char *service, const char *method, SignalBorrowedBuffer payload);
SignalFfiError *signal_authenticated_chat_connection_send_sync_message(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat, uint64_t timestamp, SignalBorrowedSliceOfu32 device_ids, SignalBorrowedSliceOfu32 registration_ids, SignalBorrowedSliceOfConstPointerCiphertextMessage contents, bool is_urgent); SignalFfiError *signal_authenticated_chat_connection_send_sync_message(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerAuthenticatedChatConnection chat, uint64_t timestamp, SignalBorrowedSliceOfu32 device_ids, SignalBorrowedSliceOfu32 registration_ids, SignalBorrowedSliceOfConstPointerCiphertextMessage contents, bool is_urgent);
SignalFfiError *signal_avatar_upload_credential_check_valid_contents(SignalBorrowedBuffer credential_bytes);
SignalFfiError *signal_avatar_upload_credential_get_cm(uint8_t (*out)[32], SignalBorrowedBuffer credential_bytes);
SignalFfiError *signal_avatar_upload_credential_get_redemption_time(uint64_t *out, SignalBorrowedBuffer credential_bytes);
SignalFfiError *signal_avatar_upload_credential_present_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer credential_bytes, SignalBorrowedBuffer server_params_bytes, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]);
SignalFfiError *signal_avatar_upload_credential_presentation_check_valid_contents(SignalBorrowedBuffer presentation_bytes);
SignalFfiError *signal_avatar_upload_credential_presentation_get_cm(uint8_t (*out)[32], SignalBorrowedBuffer presentation_bytes);
SignalFfiError *signal_avatar_upload_credential_presentation_get_redemption_time(uint64_t *out, SignalBorrowedBuffer presentation_bytes);
SignalFfiError *signal_avatar_upload_credential_presentation_verify(SignalBorrowedBuffer presentation_bytes, uint64_t current_time, SignalBorrowedBuffer server_params_bytes);
SignalFfiError *signal_avatar_upload_credential_request_check_valid_contents(SignalBorrowedBuffer request_bytes);
SignalFfiError *signal_avatar_upload_credential_request_context_check_valid_contents(SignalBorrowedBuffer context_bytes);
SignalFfiError *signal_avatar_upload_credential_request_context_get_request(SignalOwnedBuffer *out, SignalBorrowedBuffer context_bytes);
SignalFfiError *signal_avatar_upload_credential_request_context_new(SignalOwnedBuffer *out, const SignalServiceIdFixedWidthBinaryBytes *aci, SignalBorrowedBuffer zk_credential_key_pair_bytes, uint64_t rotation_id, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]);
SignalFfiError *signal_avatar_upload_credential_request_context_receive_response(SignalOwnedBuffer *out, SignalBorrowedBuffer context_bytes, SignalBorrowedBuffer response_bytes, uint64_t current_time, SignalBorrowedBuffer params_bytes);
SignalFfiError *signal_avatar_upload_credential_request_issue_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer request_bytes, const SignalServiceIdFixedWidthBinaryBytes *aci, SignalBorrowedBuffer zk_credential_key_pub_bytes, uint64_t rotation_id, uint64_t redemption_time, SignalBorrowedBuffer params_bytes, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]);
SignalFfiError *signal_avatar_upload_credential_response_check_valid_contents(SignalBorrowedBuffer response_bytes);
SignalFfiError *signal_backup_auth_credential_check_valid_contents(SignalBorrowedBuffer params_bytes); SignalFfiError *signal_backup_auth_credential_check_valid_contents(SignalBorrowedBuffer params_bytes);
SignalFfiError *signal_backup_auth_credential_get_backup_id(uint8_t (*out)[16], SignalBorrowedBuffer credential_bytes); SignalFfiError *signal_backup_auth_credential_get_backup_id(uint8_t (*out)[16], SignalBorrowedBuffer credential_bytes);
@ -1935,7 +1840,7 @@ SignalFfiError *signal_cdsi_lookup_new(SignalCPromiseMutPointerCdsiLookup *promi
SignalFfiError *signal_cdsi_lookup_token(SignalOwnedBuffer *out, SignalConstPointerCdsiLookup lookup); SignalFfiError *signal_cdsi_lookup_token(SignalOwnedBuffer *out, SignalConstPointerCdsiLookup lookup);
SignalFfiError *signal_chat_connection_info_description(SignalCStringPtr *out, SignalConstPointerChatConnectionInfo connection_info); SignalFfiError *signal_chat_connection_info_description(const char **out, SignalConstPointerChatConnectionInfo connection_info);
SignalFfiError *signal_chat_connection_info_ip_version(uint8_t *out, SignalConstPointerChatConnectionInfo connection_info); SignalFfiError *signal_chat_connection_info_ip_version(uint8_t *out, SignalConstPointerChatConnectionInfo connection_info);
@ -2023,55 +1928,23 @@ SignalFfiError *signal_device_transfer_generate_private_key(SignalOwnedBuffer *o
SignalFfiError *signal_device_transfer_generate_private_key_with_format(SignalOwnedBuffer *out, uint8_t key_format); SignalFfiError *signal_device_transfer_generate_private_key_with_format(SignalOwnedBuffer *out, uint8_t key_format);
SignalFfiError *signal_donation_permit_check_valid_contents(SignalBorrowedBuffer buffer);
SignalFfiError *signal_donation_permit_derived_key_pair_check_valid_contents(SignalBorrowedBuffer buffer);
SignalFfiError *signal_donation_permit_derived_key_pair_for_expiration(SignalOwnedBuffer *out, uint64_t timestamp, SignalConstPointerServerSecretParams root);
SignalFfiError *signal_donation_permit_expiration(uint64_t *out, SignalBorrowedBuffer donation_permit);
SignalFfiError *signal_donation_permit_request_check_valid_contents(SignalBorrowedBuffer buffer);
SignalFfiError *signal_donation_permit_request_context_check_valid_contents(SignalBorrowedBuffer buffer);
SignalFfiError *signal_donation_permit_request_context_new_deterministic(SignalOwnedBuffer *out, int32_t count, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]);
SignalFfiError *signal_donation_permit_request_context_receive(SignalBytestringArray *out, SignalBorrowedBuffer context, SignalBorrowedBuffer response, SignalConstPointerServerPublicParams public_params, uint64_t now);
SignalFfiError *signal_donation_permit_request_context_request(SignalOwnedBuffer *out, SignalBorrowedBuffer ctx);
SignalFfiError *signal_donation_permit_request_len(int32_t *out, SignalBorrowedBuffer donation_permit_request);
SignalFfiError *signal_donation_permit_response_check_valid_contents(SignalBorrowedBuffer buffer);
SignalFfiError *signal_donation_permit_response_default_expiration(uint64_t *out, uint64_t current_time);
SignalFfiError *signal_donation_permit_response_get_expiration(uint64_t *out, SignalBorrowedBuffer response);
SignalFfiError *signal_donation_permit_response_issue_deterministic(SignalOwnedBuffer *out, SignalBorrowedBuffer request, SignalBorrowedBuffer key_pair, const uint8_t (*seed)[SignalRANDOMNESS_LEN]);
SignalFfiError *signal_donation_permit_spend_id(SignalOwnedBuffer *out, SignalBorrowedBuffer donation_permit);
SignalFfiError *signal_donation_permit_verify(SignalBorrowedBuffer permit, uint64_t now, SignalBorrowedBuffer key_pair);
SignalFfiError *signal_encrypt_message(SignalMutPointerCiphertextMessage *out, SignalBorrowedBuffer ptext, SignalConstPointerProtocolAddress protocol_address, SignalConstPointerProtocolAddress local_address, SignalConstPointerFfiSessionStoreStruct session_store, SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store, uint64_t now); SignalFfiError *signal_encrypt_message(SignalMutPointerCiphertextMessage *out, SignalBorrowedBuffer ptext, SignalConstPointerProtocolAddress protocol_address, SignalConstPointerProtocolAddress local_address, SignalConstPointerFfiSessionStoreStruct session_store, SignalConstPointerFfiIdentityKeyStoreStruct identity_key_store, uint64_t now);
void signal_error_free(SignalFfiError *err); void signal_error_free(SignalFfiError *err);
SignalFfiError *signal_error_get_address(SignalMutPointerProtocolAddress *out, SignalUnwindSafeArgSignalFfiError err); SignalFfiError *signal_error_get_address(SignalMutPointerProtocolAddress *out, SignalUnwindSafeArgSignalFfiError err);
SignalFfiError *signal_error_get_invalid_protocol_address(SignalPairOfCStringPtru32 *out, SignalUnwindSafeArgSignalFfiError err); SignalFfiError *signal_error_get_invalid_protocol_address(SignalPairOfc_charu32 *out, SignalUnwindSafeArgSignalFfiError err);
SignalFfiError *signal_error_get_message(SignalCStringPtr *out, SignalUnwindSafeArgSignalFfiError err); SignalFfiError *signal_error_get_message(const char **out, SignalUnwindSafeArgSignalFfiError err);
SignalFfiError *signal_error_get_mismatched_device_errors(SignalOwnedBufferOfFfiMismatchedDevicesError *out, SignalUnwindSafeArgSignalFfiError err); SignalFfiError *signal_error_get_mismatched_device_errors(SignalOwnedBufferOfFfiMismatchedDevicesError *out, SignalUnwindSafeArgSignalFfiError err);
SignalFfiError *signal_error_get_our_fingerprint_version(uint32_t *out, SignalUnwindSafeArgSignalFfiError err); SignalFfiError *signal_error_get_our_fingerprint_version(uint32_t *out, SignalUnwindSafeArgSignalFfiError err);
SignalFfiError *signal_error_get_rate_limit_challenge(SignalPairOfPairOfCStringPtrOwnedBufferOfc_uchari64 *out, SignalUnwindSafeArgSignalFfiError err); SignalFfiError *signal_error_get_rate_limit_challenge(SignalPairOfPairOfc_charOwnedBufferOfc_uchari64 *out, SignalUnwindSafeArgSignalFfiError err);
SignalFfiError *signal_error_get_registration_error_not_deliverable(SignalPairOfCStringPtrbool *out, SignalUnwindSafeArgSignalFfiError err); SignalFfiError *signal_error_get_registration_error_not_deliverable(SignalPairOfc_charbool *out, SignalUnwindSafeArgSignalFfiError err);
SignalFfiError *signal_error_get_registration_lock(uint64_t *out_time_remaining_seconds, const char **out_svr2_username, const char **out_svr2_password, const SignalFfiError *err); SignalFfiError *signal_error_get_registration_lock(uint64_t *out_time_remaining_seconds, const char **out_svr2_username, const char **out_svr2_password, const SignalFfiError *err);
@ -2099,7 +1972,7 @@ SignalFfiError *signal_fingerprint_compare(bool *out, SignalBorrowedBuffer fprin
SignalFfiError *signal_fingerprint_destroy(SignalMutPointerFingerprint p); SignalFfiError *signal_fingerprint_destroy(SignalMutPointerFingerprint p);
SignalFfiError *signal_fingerprint_display_string(SignalCStringPtr *out, SignalConstPointerFingerprint obj); SignalFfiError *signal_fingerprint_display_string(const char **out, SignalConstPointerFingerprint obj);
SignalFfiError *signal_fingerprint_new(SignalMutPointerFingerprint *out, uint32_t iterations, uint32_t version, SignalBorrowedBuffer local_identifier, SignalConstPointerPublicKey local_key, SignalBorrowedBuffer remote_identifier, SignalConstPointerPublicKey remote_key); SignalFfiError *signal_fingerprint_new(SignalMutPointerFingerprint *out, uint32_t iterations, uint32_t version, SignalBorrowedBuffer local_identifier, SignalConstPointerPublicKey local_key, SignalBorrowedBuffer remote_identifier, SignalConstPointerPublicKey remote_key);
@ -2252,8 +2125,6 @@ SignalFfiError *signal_key_transparency_check(SignalCPromisePairOfOwnedBufferOfc
SignalFfiError *signal_key_transparency_e164_search_key(SignalOwnedBuffer *out, const char *e164); SignalFfiError *signal_key_transparency_e164_search_key(SignalOwnedBuffer *out, const char *e164);
SignalFfiError *signal_key_transparency_reset_data_field(SignalOwnedBuffer *out, SignalBorrowedBuffer account_data, uint8_t field);
SignalFfiError *signal_key_transparency_username_hash_search_key(SignalOwnedBuffer *out, SignalBorrowedBuffer hash); SignalFfiError *signal_key_transparency_username_hash_search_key(SignalOwnedBuffer *out, SignalBorrowedBuffer hash);
SignalFfiError *signal_kyber_key_pair_clone(SignalMutPointerKyberKeyPair *new_obj, SignalConstPointerKyberKeyPair obj); SignalFfiError *signal_kyber_key_pair_clone(SignalMutPointerKyberKeyPair *new_obj, SignalConstPointerKyberKeyPair obj);
@ -2330,7 +2201,7 @@ SignalFfiError *signal_message_backup_key_get_hmac_key(uint8_t (*out)[32], Signa
SignalFfiError *signal_message_backup_validation_outcome_destroy(SignalMutPointerMessageBackupValidationOutcome p); SignalFfiError *signal_message_backup_validation_outcome_destroy(SignalMutPointerMessageBackupValidationOutcome p);
SignalFfiError *signal_message_backup_validation_outcome_get_error_message(SignalCStringPtr *out, SignalConstPointerMessageBackupValidationOutcome outcome); SignalFfiError *signal_message_backup_validation_outcome_get_error_message(const char **out, SignalConstPointerMessageBackupValidationOutcome outcome);
SignalFfiError *signal_message_backup_validation_outcome_get_unknown_fields(SignalStringArray *out, SignalConstPointerMessageBackupValidationOutcome outcome); SignalFfiError *signal_message_backup_validation_outcome_get_unknown_fields(SignalStringArray *out, SignalConstPointerMessageBackupValidationOutcome outcome);
@ -2356,6 +2227,8 @@ SignalFfiError *signal_message_get_serialized(SignalOwnedBuffer *out, SignalCons
SignalFfiError *signal_message_new(SignalMutPointerSignalMessage *out, uint8_t message_version, SignalBorrowedBuffer mac_key, SignalConstPointerPublicKey sender_ratchet_key, uint32_t counter, uint32_t previous_counter, SignalBorrowedBuffer ciphertext, SignalConstPointerPublicKey sender_identity_key, SignalConstPointerPublicKey receiver_identity_key, SignalBorrowedBuffer pq_ratchet); SignalFfiError *signal_message_new(SignalMutPointerSignalMessage *out, uint8_t message_version, SignalBorrowedBuffer mac_key, SignalConstPointerPublicKey sender_ratchet_key, uint32_t counter, uint32_t previous_counter, SignalBorrowedBuffer ciphertext, SignalConstPointerPublicKey sender_identity_key, SignalConstPointerPublicKey receiver_identity_key, SignalBorrowedBuffer pq_ratchet);
SignalFfiError *signal_message_verify_mac(bool *out, SignalConstPointerSignalMessage msg, SignalConstPointerPublicKey sender_identity_key, SignalConstPointerPublicKey receiver_identity_key, SignalBorrowedBuffer mac_key);
SignalFfiError *signal_mp4_sanitizer_sanitize(SignalMutPointerSanitizedMetadata *out, SignalConstPointerFfiInputStreamStruct input, uint64_t len); SignalFfiError *signal_mp4_sanitizer_sanitize(SignalMutPointerSanitizedMetadata *out, SignalConstPointerFfiInputStreamStruct input, uint64_t len);
SignalFfiError *signal_online_backup_validator_add_frame(SignalMutPointerOnlineBackupValidator backup, SignalBorrowedBuffer frame); SignalFfiError *signal_online_backup_validator_add_frame(SignalMutPointerOnlineBackupValidator backup, SignalBorrowedBuffer frame);
@ -2378,7 +2251,7 @@ SignalFfiError *signal_pin_hash_from_salt(SignalMutPointerPinHash *out, SignalBo
SignalFfiError *signal_pin_hash_from_username_mrenclave(SignalMutPointerPinHash *out, SignalBorrowedBuffer pin, const char *username, SignalBorrowedBuffer mrenclave); SignalFfiError *signal_pin_hash_from_username_mrenclave(SignalMutPointerPinHash *out, SignalBorrowedBuffer pin, const char *username, SignalBorrowedBuffer mrenclave);
SignalFfiError *signal_pin_local_hash(SignalCStringPtr *out, SignalBorrowedBuffer pin); SignalFfiError *signal_pin_local_hash(const char **out, SignalBorrowedBuffer pin);
SignalFfiError *signal_pin_verify_local_hash(bool *out, const char *encoded_hash, SignalBorrowedBuffer pin); SignalFfiError *signal_pin_verify_local_hash(bool *out, const char *encoded_hash, SignalBorrowedBuffer pin);
@ -2584,7 +2457,7 @@ SignalFfiError *signal_register_account_response_get_entitlement_badges(SignalOw
SignalFfiError *signal_register_account_response_get_identity(SignalServiceIdFixedWidthBinaryBytes *out, SignalConstPointerRegisterAccountResponse response, uint8_t identity_type); SignalFfiError *signal_register_account_response_get_identity(SignalServiceIdFixedWidthBinaryBytes *out, SignalConstPointerRegisterAccountResponse response, uint8_t identity_type);
SignalFfiError *signal_register_account_response_get_number(SignalCStringPtr *out, SignalConstPointerRegisterAccountResponse response); SignalFfiError *signal_register_account_response_get_number(const char **out, SignalConstPointerRegisterAccountResponse response);
SignalFfiError *signal_register_account_response_get_reregistration(bool *out, SignalConstPointerRegisterAccountResponse response); SignalFfiError *signal_register_account_response_get_reregistration(bool *out, SignalConstPointerRegisterAccountResponse response);
@ -2616,7 +2489,7 @@ SignalFfiError *signal_registration_service_reregister_account(SignalCPromiseMut
SignalFfiError *signal_registration_service_resume_session(SignalCPromiseMutPointerRegistrationService *promise, SignalConstPointerTokioAsyncContext async_runtime, const char *session_id, const char *number, SignalConstPointerFfiConnectChatBridgeStruct connect_chat); SignalFfiError *signal_registration_service_resume_session(SignalCPromiseMutPointerRegistrationService *promise, SignalConstPointerTokioAsyncContext async_runtime, const char *session_id, const char *number, SignalConstPointerFfiConnectChatBridgeStruct connect_chat);
SignalFfiError *signal_registration_service_session_id(SignalCStringPtr *out, SignalConstPointerRegistrationService service); SignalFfiError *signal_registration_service_session_id(const char **out, SignalConstPointerRegistrationService service);
SignalFfiError *signal_registration_service_submit_captcha(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, const char *captcha_value); SignalFfiError *signal_registration_service_submit_captcha(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerRegistrationService service, const char *captcha_value);
@ -2678,9 +2551,9 @@ SignalFfiError *signal_sender_certificate_get_expiration(uint64_t *out, SignalCo
SignalFfiError *signal_sender_certificate_get_key(SignalMutPointerPublicKey *out, SignalConstPointerSenderCertificate obj); SignalFfiError *signal_sender_certificate_get_key(SignalMutPointerPublicKey *out, SignalConstPointerSenderCertificate obj);
SignalFfiError *signal_sender_certificate_get_sender_e164(SignalCStringPtr *out, SignalConstPointerSenderCertificate obj); SignalFfiError *signal_sender_certificate_get_sender_e164(const char **out, SignalConstPointerSenderCertificate obj);
SignalFfiError *signal_sender_certificate_get_sender_uuid(SignalCStringPtr *out, SignalConstPointerSenderCertificate obj); SignalFfiError *signal_sender_certificate_get_sender_uuid(const char **out, SignalConstPointerSenderCertificate obj);
SignalFfiError *signal_sender_certificate_get_serialized(SignalOwnedBuffer *out, SignalConstPointerSenderCertificate obj); SignalFfiError *signal_sender_certificate_get_serialized(SignalOwnedBuffer *out, SignalConstPointerSenderCertificate obj);
@ -2820,9 +2693,9 @@ SignalFfiError *signal_service_id_parse_from_service_id_string(SignalServiceIdFi
SignalFfiError *signal_service_id_service_id_binary(SignalOwnedBuffer *out, const SignalServiceIdFixedWidthBinaryBytes *value); SignalFfiError *signal_service_id_service_id_binary(SignalOwnedBuffer *out, const SignalServiceIdFixedWidthBinaryBytes *value);
SignalFfiError *signal_service_id_service_id_log(SignalCStringPtr *out, const SignalServiceIdFixedWidthBinaryBytes *value); SignalFfiError *signal_service_id_service_id_log(const char **out, const SignalServiceIdFixedWidthBinaryBytes *value);
SignalFfiError *signal_service_id_service_id_string(SignalCStringPtr *out, const SignalServiceIdFixedWidthBinaryBytes *value); SignalFfiError *signal_service_id_service_id_string(const char **out, const SignalServiceIdFixedWidthBinaryBytes *value);
SignalFfiError *signal_session_record_archive_current_state(SignalMutPointerSessionRecord session_record); SignalFfiError *signal_session_record_archive_current_state(SignalMutPointerSessionRecord session_record);
@ -2838,7 +2711,7 @@ SignalFfiError *signal_session_record_get_local_registration_id(uint32_t *out, S
SignalFfiError *signal_session_record_get_remote_registration_id(uint32_t *out, SignalConstPointerSessionRecord obj); SignalFfiError *signal_session_record_get_remote_registration_id(uint32_t *out, SignalConstPointerSessionRecord obj);
SignalFfiError *signal_session_record_has_usable_sender_chain(bool *out, SignalConstPointerSessionRecord s, double require_pq_ratio, uint64_t now); SignalFfiError *signal_session_record_has_usable_sender_chain(bool *out, SignalConstPointerSessionRecord s, uint64_t now);
SignalFfiError *signal_session_record_serialize(SignalOwnedBuffer *out, SignalConstPointerSessionRecord obj); SignalFfiError *signal_session_record_serialize(SignalOwnedBuffer *out, SignalConstPointerSessionRecord obj);
@ -2884,20 +2757,10 @@ SignalFfiError *signal_tokio_async_context_new(SignalMutPointerTokioAsyncContext
SignalFfiError *signal_unauthenticated_chat_connection_account_exists(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, const SignalServiceIdFixedWidthBinaryBytes *account); SignalFfiError *signal_unauthenticated_chat_connection_account_exists(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, const SignalServiceIdFixedWidthBinaryBytes *account);
SignalFfiError *signal_unauthenticated_chat_connection_backup_delete_all(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, int64_t rng);
SignalFfiError *signal_unauthenticated_chat_connection_backup_get_cdn_credentials(SignalCPromisePairOfOwnedBufferOfCStringPtrOwnedBufferOfCStringPtr *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, int32_t cdn, int64_t rng);
SignalFfiError *signal_unauthenticated_chat_connection_backup_get_media_upload_form(SignalCPromiseFfiUploadForm *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, uint64_t upload_size, int64_t rng); SignalFfiError *signal_unauthenticated_chat_connection_backup_get_media_upload_form(SignalCPromiseFfiUploadForm *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, uint64_t upload_size, int64_t rng);
SignalFfiError *signal_unauthenticated_chat_connection_backup_get_svrb_credentials(SignalCPromisePairOfCStringPtrCStringPtr *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, int64_t rng);
SignalFfiError *signal_unauthenticated_chat_connection_backup_get_upload_form(SignalCPromiseFfiUploadForm *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, uint64_t upload_size, int64_t rng); SignalFfiError *signal_unauthenticated_chat_connection_backup_get_upload_form(SignalCPromiseFfiUploadForm *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, uint64_t upload_size, int64_t rng);
SignalFfiError *signal_unauthenticated_chat_connection_backup_refresh(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, int64_t rng);
SignalFfiError *signal_unauthenticated_chat_connection_backup_set_public_key(SignalCPromisebool *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer credential, SignalBorrowedBuffer server_keys, SignalConstPointerPrivateKey signing_key, int64_t rng);
SignalFfiError *signal_unauthenticated_chat_connection_connect(SignalCPromiseMutPointerUnauthenticatedChatConnection *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerConnectionManager connection_manager, SignalBorrowedBytestringArray languages); SignalFfiError *signal_unauthenticated_chat_connection_connect(SignalCPromiseMutPointerUnauthenticatedChatConnection *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerConnectionManager connection_manager, SignalBorrowedBytestringArray languages);
SignalFfiError *signal_unauthenticated_chat_connection_destroy(SignalMutPointerUnauthenticatedChatConnection p); SignalFfiError *signal_unauthenticated_chat_connection_destroy(SignalMutPointerUnauthenticatedChatConnection p);
@ -2916,7 +2779,7 @@ SignalFfiError *signal_unauthenticated_chat_connection_init_listener(SignalConst
SignalFfiError *signal_unauthenticated_chat_connection_look_up_username_hash(SignalCPromiseOptionalUuid *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer hash); SignalFfiError *signal_unauthenticated_chat_connection_look_up_username_hash(SignalCPromiseOptionalUuid *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer hash);
SignalFfiError *signal_unauthenticated_chat_connection_look_up_username_link(SignalCPromiseOptionalPairOfCStringPtru832 *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalUuid uuid, SignalBorrowedBuffer entropy); SignalFfiError *signal_unauthenticated_chat_connection_look_up_username_link(SignalCPromiseOptionalPairOfc_charu832 *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalUuid uuid, SignalBorrowedBuffer entropy);
SignalFfiError *signal_unauthenticated_chat_connection_send(SignalCPromiseFfiChatResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalConstPointerHttpRequest http_request, uint32_t timeout_millis); SignalFfiError *signal_unauthenticated_chat_connection_send(SignalCPromiseFfiChatResponse *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalConstPointerHttpRequest http_request, uint32_t timeout_millis);
@ -2924,8 +2787,6 @@ SignalFfiError *signal_unauthenticated_chat_connection_send_message(SignalCPromi
SignalFfiError *signal_unauthenticated_chat_connection_send_multi_recipient_message(SignalCPromiseOwnedBufferOfServiceIdFixedWidthBinaryBytes *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer payload, uint64_t timestamp, SignalBorrowedBuffer auth, bool online_only, bool is_urgent); SignalFfiError *signal_unauthenticated_chat_connection_send_multi_recipient_message(SignalCPromiseOwnedBufferOfServiceIdFixedWidthBinaryBytes *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, SignalBorrowedBuffer payload, uint64_t timestamp, SignalBorrowedBuffer auth, bool online_only, bool is_urgent);
SignalFfiError *signal_unauthenticated_chat_connection_send_raw_grpc(SignalCPromiseOwnedBufferOfc_uchar *promise, SignalConstPointerTokioAsyncContext async_runtime, SignalConstPointerUnauthenticatedChatConnection chat, const char *service, const char *method, SignalBorrowedBuffer payload);
SignalFfiError *signal_unidentified_sender_message_content_deserialize(SignalMutPointerUnidentifiedSenderMessageContent *out, SignalBorrowedBuffer data); SignalFfiError *signal_unidentified_sender_message_content_deserialize(SignalMutPointerUnidentifiedSenderMessageContent *out, SignalBorrowedBuffer data);
SignalFfiError *signal_unidentified_sender_message_content_destroy(SignalMutPointerUnidentifiedSenderMessageContent p); SignalFfiError *signal_unidentified_sender_message_content_destroy(SignalMutPointerUnidentifiedSenderMessageContent p);
@ -2954,7 +2815,7 @@ SignalFfiError *signal_username_hash_from_parts(uint8_t (*out)[32], const char *
SignalFfiError *signal_username_link_create(SignalOwnedBuffer *out, const char *username, SignalBorrowedBuffer entropy); SignalFfiError *signal_username_link_create(SignalOwnedBuffer *out, const char *username, SignalBorrowedBuffer entropy);
SignalFfiError *signal_username_link_decrypt_username(SignalCStringPtr *out, SignalBorrowedBuffer entropy, SignalBorrowedBuffer encrypted_username); SignalFfiError *signal_username_link_decrypt_username(const char **out, SignalBorrowedBuffer entropy, SignalBorrowedBuffer encrypted_username);
SignalFfiError *signal_username_proof(SignalOwnedBuffer *out, const char *username, const uint8_t (*randomness)[32]); SignalFfiError *signal_username_proof(SignalOwnedBuffer *out, const char *username, const uint8_t (*randomness)[32]);
@ -2972,12 +2833,4 @@ SignalFfiError *signal_validating_mac_update(int32_t *out, SignalMutPointerValid
SignalFfiError *signal_webp_sanitizer_sanitize(SignalConstPointerFfiSyncInputStreamStruct input); SignalFfiError *signal_webp_sanitizer_sanitize(SignalConstPointerFfiSyncInputStreamStruct input);
SignalFfiError *signal_zk_credential_key_pair_check_valid_contents(SignalBorrowedBuffer key_pair_bytes);
SignalFfiError *signal_zk_credential_key_pair_generate_deterministic(SignalOwnedBuffer *out, const uint8_t (*randomness)[SignalRANDOMNESS_LEN]);
SignalFfiError *signal_zk_credential_key_pair_get_public_key(SignalOwnedBuffer *out, SignalBorrowedBuffer key_pair_bytes);
SignalFfiError *signal_zk_credential_public_key_check_valid_contents(SignalBorrowedBuffer public_key_bytes);
#endif /* SIGNAL_FFI_H_ */ #endif /* SIGNAL_FFI_H_ */

View file

@ -19,7 +19,7 @@ package libsignalgo
/* /*
#include <./libsignal-ffi.h> #include <./libsignal-ffi.h>
extern void signal_log_callback(void *ctx, SignalLogLevel level, SignalCStringPtr file, uint32_t line, SignalCStringPtr message); extern void signal_log_callback(void *ctx, SignalLogLevel level, char *file, uint32_t line, char *message);
extern void signal_log_flush_callback(void *ctx); extern void signal_log_flush_callback(void *ctx);
extern void signal_log_destroy_callback(void *ctx); extern void signal_log_destroy_callback(void *ctx);
*/ */
@ -32,7 +32,7 @@ import (
var ffiLogger Logger var ffiLogger Logger
//export signal_log_callback //export signal_log_callback
func signal_log_callback(ctx unsafe.Pointer, level C.SignalLogLevel, file C.SignalCStringPtr, line C.uint32_t, message C.SignalCStringPtr) { func signal_log_callback(ctx unsafe.Pointer, level C.SignalLogLevel, file *C.char, line C.uint32_t, message *C.char) {
ffiLogger.Log(LogLevel(int(level)), C.GoString(file), uint(line), C.GoString(message)) ffiLogger.Log(LogLevel(int(level)), C.GoString(file), uint(line), C.GoString(message))
} }

View file

@ -156,3 +156,22 @@ func (m *Message) GetCounter() (uint32, error) {
} }
return uint32(counter), nil return uint32(counter), nil
} }
func (m *Message) VerifyMAC(sender, receiver *PublicKey, macKey []byte) (bool, error) {
var result C.bool
signalFfiError := C.signal_message_verify_mac(
&result,
m.constPtr(),
sender.constPtr(),
receiver.constPtr(),
BytesToBuffer(macKey),
)
runtime.KeepAlive(m)
runtime.KeepAlive(sender)
runtime.KeepAlive(receiver)
runtime.KeepAlive(macKey)
if signalFfiError != nil {
return false, wrapError(signalFfiError)
}
return bool(result), nil
}

View file

@ -135,7 +135,7 @@ func (sc *SenderCertificate) GetSignature() ([]byte, error) {
} }
func (sc *SenderCertificate) GetSenderUUID() (uuid.UUID, error) { func (sc *SenderCertificate) GetSenderUUID() (uuid.UUID, error) {
var rawUUID C.SignalCStringPtr var rawUUID *C.char
signalFfiError := C.signal_sender_certificate_get_sender_uuid(&rawUUID, sc.constPtr()) signalFfiError := C.signal_sender_certificate_get_sender_uuid(&rawUUID, sc.constPtr())
runtime.KeepAlive(sc) runtime.KeepAlive(sc)
if signalFfiError != nil { if signalFfiError != nil {
@ -145,7 +145,7 @@ func (sc *SenderCertificate) GetSenderUUID() (uuid.UUID, error) {
} }
func (sc *SenderCertificate) GetSenderE164() (string, error) { func (sc *SenderCertificate) GetSenderE164() (string, error) {
var e164 C.SignalCStringPtr var e164 *C.char
signalFfiError := C.signal_sender_certificate_get_sender_e164(&e164, sc.constPtr()) signalFfiError := C.signal_sender_certificate_get_sender_e164(&e164, sc.constPtr())
runtime.KeepAlive(sc) runtime.KeepAlive(sc)
if signalFfiError != nil { if signalFfiError != nil {

View file

@ -105,7 +105,6 @@ func (sr *SessionRecord) HasCurrentState() (bool, error) {
signalFfiError := C.signal_session_record_has_usable_sender_chain( signalFfiError := C.signal_session_record_has_usable_sender_chain(
&result, &result,
sr.constPtr(), sr.constPtr(),
C.double(0.0),
C.uint64_t(time.Now().Unix()), C.uint64_t(time.Now().Unix()),
) )
runtime.KeepAlive(sr) runtime.KeepAlive(sr)

View file

@ -2,4 +2,4 @@
package libsignalgo package libsignalgo
const Version = "v0.96.2" const Version = "v0.93.2"

View file

@ -35,14 +35,12 @@ import (
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/proto"
"go.mau.fi/mautrix-signal/pkg/libsignalgo" "go.mau.fi/mautrix-signal/pkg/libsignalgo"
"go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf/cds2pb" signalpb "go.mau.fi/mautrix-signal/pkg/signalmeow/protobuf"
"go.mau.fi/mautrix-signal/pkg/signalmeow/web" "go.mau.fi/mautrix-signal/pkg/signalmeow/web"
) )
// ProdContactDiscoveryMrenclave should always match ENCLAVE_ID_CDSI_PROD from libsignal
// https://github.com/signalapp/libsignal/blob/main/rust/attest/src/constants.rs#L69
const ProdContactDiscoveryMrenclave = "15637fa1e54fe655176d3df1a9f94b87c01ed377acaa570682dc5d72c95ef07b"
const ProdContactDiscoveryServer = "cdsi.signal.org" const ProdContactDiscoveryServer = "cdsi.signal.org"
const ProdContactDiscoveryMrenclave = "ee9503070127120074612b6688e593b67e486b1541449f54d71e387484eb40a3"
const ContactDiscoveryAuthTTL = 23 * time.Hour const ContactDiscoveryAuthTTL = 23 * time.Hour
const rateLimitCloseCode = websocket.StatusCode(4008) const rateLimitCloseCode = websocket.StatusCode(4008)
@ -83,7 +81,7 @@ func (cli *Client) LookupPhone(ctx context.Context, e164s ...uint64) (ContactDis
} }
ctx, cancel := context.WithTimeout(ctx, 20*time.Second) ctx, cancel := context.WithTimeout(ctx, 20*time.Second)
defer cancel() defer cancel()
resp, token, err := cli.doContactDiscovery(ctx, &cds2pb.ClientRequest{ resp, token, err := cli.doContactDiscovery(ctx, &signalpb.CDSClientRequest{
// TODO figure out if tokens are useful // TODO figure out if tokens are useful
// (it's meant for old_e164s) // (it's meant for old_e164s)
//Token: cli.cdToken, //Token: cli.cdToken,
@ -95,7 +93,7 @@ func (cli *Client) LookupPhone(ctx context.Context, e164s ...uint64) (ContactDis
return resp, err return resp, err
} }
func (cli *Client) doContactDiscovery(ctx context.Context, req *cds2pb.ClientRequest) (ContactDiscoveryResponse, []byte, error) { func (cli *Client) doContactDiscovery(ctx context.Context, req *signalpb.CDSClientRequest) (ContactDiscoveryResponse, []byte, error) {
creds, err := cli.getContactDiscoveryCredentials(ctx) creds, err := cli.getContactDiscoveryCredentials(ctx)
if err != nil { if err != nil {
return nil, nil, fmt.Errorf("failed to fetch contact discovery auth: %w", err) return nil, nil, fmt.Errorf("failed to fetch contact discovery auth: %w", err)
@ -187,7 +185,7 @@ func (cdc *ContactDiscoveryClient) Handshake(ctx context.Context) error {
return nil return nil
} }
func (cdc *ContactDiscoveryClient) SendRequest(ctx context.Context, req *cds2pb.ClientRequest) error { func (cdc *ContactDiscoveryClient) SendRequest(ctx context.Context, req *signalpb.CDSClientRequest) error {
plaintext, err := proto.Marshal(req) plaintext, err := proto.Marshal(req)
if err != nil { if err != nil {
return fmt.Errorf("failed to marshal request: %w", err) return fmt.Errorf("failed to marshal request: %w", err)
@ -224,15 +222,15 @@ func (cdc *ContactDiscoveryClient) handleResponse(ctx context.Context, msg []byt
if err != nil { if err != nil {
return fmt.Errorf("failed to decrypt message: %w", err) return fmt.Errorf("failed to decrypt message: %w", err)
} }
var cdsClientResp cds2pb.ClientResponse var cdsClientResp signalpb.CDSClientResponse
err = proto.Unmarshal(decrypted, &cdsClientResp) err = proto.Unmarshal(decrypted, &cdsClientResp)
if err != nil { if err != nil {
return fmt.Errorf("failed to unmarshal message: %w", err) return fmt.Errorf("failed to unmarshal message: %w", err)
} }
if cdsClientResp.Token != nil { if cdsClientResp.Token != nil {
cdc.Token = cdsClientResp.Token cdc.Token = cdsClientResp.Token
err = cdc.SendRequest(ctx, &cds2pb.ClientRequest{ err = cdc.SendRequest(ctx, &signalpb.CDSClientRequest{
TokenAck: true, TokenAck: proto.Bool(true),
}) })
if err != nil { if err != nil {
return fmt.Errorf("failed to send token ack request: %w", err) return fmt.Errorf("failed to send token ack request: %w", err)

View file

@ -641,7 +641,7 @@ func (cli *Client) fetchGroupWithMasterKey(ctx context.Context, groupMasterKey t
return nil, err return nil, err
} }
if response.StatusCode != 200 { if response.StatusCode != 200 {
return nil, fmt.Errorf("unexpected response status: %d", response.StatusCode) return nil, fmt.Errorf("fetchGroupByID SendHTTPRequest bad status: %d", response.StatusCode)
} }
return cli.parseGroupResponse(ctx, response, groupMasterKey) return cli.parseGroupResponse(ctx, response, groupMasterKey)
} }
@ -1780,7 +1780,7 @@ func (cli *Client) GetGroupHistoryPage(ctx context.Context, gid types.GroupIdent
return nil, err return nil, err
} }
if response.StatusCode != 200 { if response.StatusCode != 200 {
return nil, fmt.Errorf("unexpected response status: %d", response.StatusCode) return nil, fmt.Errorf("fetchGroupByID SendHTTPRequest bad status: %d", response.StatusCode)
} }
var encryptedGroupChanges signalpb.GroupChanges var encryptedGroupChanges signalpb.GroupChanges
groupChangesBytes, err := io.ReadAll(response.Body) groupChangesBytes, err := io.ReadAll(response.Body)

View file

@ -0,0 +1,272 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc v7.34.1
// source: ContactDiscovery.proto
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
package signalpb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type CDSClientRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Each ACI/UAK pair is a 32-byte buffer, containing the 16-byte ACI followed
// by its 16-byte UAK.
AciUakPairs []byte `protobuf:"bytes,1,opt,name=aci_uak_pairs,json=aciUakPairs" json:"aci_uak_pairs,omitempty"`
// Each E164 is an 8-byte big-endian number, as 8 bytes.
PrevE164S []byte `protobuf:"bytes,2,opt,name=prev_e164s,json=prevE164s" json:"prev_e164s,omitempty"`
NewE164S []byte `protobuf:"bytes,3,opt,name=new_e164s,json=newE164s" json:"new_e164s,omitempty"`
DiscardE164S []byte `protobuf:"bytes,4,opt,name=discard_e164s,json=discardE164s" json:"discard_e164s,omitempty"`
// If true, the client has more pairs or e164s to send. If false or unset,
// this is the client's last request, and processing should commence.
HasMore *bool `protobuf:"varint,5,opt,name=has_more,json=hasMore" json:"has_more,omitempty"`
// If set, a token which allows rate limiting to discount the e164s in
// the request's prev_e164s, only counting new_e164s. If not set, then
// rate limiting considers both prev_e164s' and new_e164s' size.
Token []byte `protobuf:"bytes,6,opt,name=token" json:"token,omitempty"`
// After receiving a new token from the server, send back a message just
// containing a token_ack.
TokenAck *bool `protobuf:"varint,7,opt,name=token_ack,json=tokenAck" json:"token_ack,omitempty"`
// Request that, if the server allows, both ACI and PNI be returned even
// if the aci_uak_pairs don't match.
ReturnAcisWithoutUaks *bool `protobuf:"varint,8,opt,name=return_acis_without_uaks,json=returnAcisWithoutUaks" json:"return_acis_without_uaks,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CDSClientRequest) Reset() {
*x = CDSClientRequest{}
mi := &file_ContactDiscovery_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CDSClientRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CDSClientRequest) ProtoMessage() {}
func (x *CDSClientRequest) ProtoReflect() protoreflect.Message {
mi := &file_ContactDiscovery_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CDSClientRequest.ProtoReflect.Descriptor instead.
func (*CDSClientRequest) Descriptor() ([]byte, []int) {
return file_ContactDiscovery_proto_rawDescGZIP(), []int{0}
}
func (x *CDSClientRequest) GetAciUakPairs() []byte {
if x != nil {
return x.AciUakPairs
}
return nil
}
func (x *CDSClientRequest) GetPrevE164S() []byte {
if x != nil {
return x.PrevE164S
}
return nil
}
func (x *CDSClientRequest) GetNewE164S() []byte {
if x != nil {
return x.NewE164S
}
return nil
}
func (x *CDSClientRequest) GetDiscardE164S() []byte {
if x != nil {
return x.DiscardE164S
}
return nil
}
func (x *CDSClientRequest) GetHasMore() bool {
if x != nil && x.HasMore != nil {
return *x.HasMore
}
return false
}
func (x *CDSClientRequest) GetToken() []byte {
if x != nil {
return x.Token
}
return nil
}
func (x *CDSClientRequest) GetTokenAck() bool {
if x != nil && x.TokenAck != nil {
return *x.TokenAck
}
return false
}
func (x *CDSClientRequest) GetReturnAcisWithoutUaks() bool {
if x != nil && x.ReturnAcisWithoutUaks != nil {
return *x.ReturnAcisWithoutUaks
}
return false
}
type CDSClientResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Each triple is an 8-byte e164, a 16-byte PNI, and a 16-byte ACI.
// If the e164 was not found, PNI and ACI are all zeros. If the PNI
// was found but the ACI was not, the PNI will be non-zero and the ACI
// will be all zeros. ACI will be returned if one of the returned
// PNIs has an ACI/UAK pair that matches.
//
// Should the request be successful (IE: a successful status returned),
// |e164_pni_aci_triple| will always equal |e164| of the request,
// so the entire marshalled size of the response will be (2+32)*|e164|,
// where the additional 2 bytes are the id/type/length additions of the
// protobuf marshaling added to each byte array. This avoids any data
// leakage based on the size of the encrypted output.
E164PniAciTriples []byte `protobuf:"bytes,1,opt,name=e164_pni_aci_triples,json=e164PniAciTriples" json:"e164_pni_aci_triples,omitempty"`
// A token which allows subsequent calls' rate limiting to discount the
// e164s sent up in this request, only counting those in the next
// request's new_e164s.
Token []byte `protobuf:"bytes,3,opt,name=token" json:"token,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CDSClientResponse) Reset() {
*x = CDSClientResponse{}
mi := &file_ContactDiscovery_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CDSClientResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CDSClientResponse) ProtoMessage() {}
func (x *CDSClientResponse) ProtoReflect() protoreflect.Message {
mi := &file_ContactDiscovery_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use CDSClientResponse.ProtoReflect.Descriptor instead.
func (*CDSClientResponse) Descriptor() ([]byte, []int) {
return file_ContactDiscovery_proto_rawDescGZIP(), []int{1}
}
func (x *CDSClientResponse) GetE164PniAciTriples() []byte {
if x != nil {
return x.E164PniAciTriples
}
return nil
}
func (x *CDSClientResponse) GetToken() []byte {
if x != nil {
return x.Token
}
return nil
}
var File_ContactDiscovery_proto protoreflect.FileDescriptor
const file_ContactDiscovery_proto_rawDesc = "" +
"\n" +
"\x16ContactDiscovery.proto\x12\rsignalservice\"\x9e\x02\n" +
"\x10CDSClientRequest\x12\"\n" +
"\raci_uak_pairs\x18\x01 \x01(\fR\vaciUakPairs\x12\x1d\n" +
"\n" +
"prev_e164s\x18\x02 \x01(\fR\tprevE164s\x12\x1b\n" +
"\tnew_e164s\x18\x03 \x01(\fR\bnewE164s\x12#\n" +
"\rdiscard_e164s\x18\x04 \x01(\fR\fdiscardE164s\x12\x19\n" +
"\bhas_more\x18\x05 \x01(\bR\ahasMore\x12\x14\n" +
"\x05token\x18\x06 \x01(\fR\x05token\x12\x1b\n" +
"\ttoken_ack\x18\a \x01(\bR\btokenAck\x127\n" +
"\x18return_acis_without_uaks\x18\b \x01(\bR\x15returnAcisWithoutUaks\"Z\n" +
"\x11CDSClientResponse\x12/\n" +
"\x14e164_pni_aci_triples\x18\x01 \x01(\fR\x11e164PniAciTriples\x12\x14\n" +
"\x05token\x18\x03 \x01(\fR\x05token"
var (
file_ContactDiscovery_proto_rawDescOnce sync.Once
file_ContactDiscovery_proto_rawDescData []byte
)
func file_ContactDiscovery_proto_rawDescGZIP() []byte {
file_ContactDiscovery_proto_rawDescOnce.Do(func() {
file_ContactDiscovery_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ContactDiscovery_proto_rawDesc), len(file_ContactDiscovery_proto_rawDesc)))
})
return file_ContactDiscovery_proto_rawDescData
}
var file_ContactDiscovery_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_ContactDiscovery_proto_goTypes = []any{
(*CDSClientRequest)(nil), // 0: signalservice.CDSClientRequest
(*CDSClientResponse)(nil), // 1: signalservice.CDSClientResponse
}
var file_ContactDiscovery_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_ContactDiscovery_proto_init() }
func file_ContactDiscovery_proto_init() {
if File_ContactDiscovery_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_ContactDiscovery_proto_rawDesc), len(file_ContactDiscovery_proto_rawDesc)),
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_ContactDiscovery_proto_goTypes,
DependencyIndexes: file_ContactDiscovery_proto_depIdxs,
MessageInfos: file_ContactDiscovery_proto_msgTypes,
}.Build()
File_ContactDiscovery_proto = out.File
file_ContactDiscovery_proto_goTypes = nil
file_ContactDiscovery_proto_depIdxs = nil
}

View file

@ -1,36 +1,37 @@
syntax = "proto3"; // Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
package org.signal.cdsi; package signalservice;
message ClientRequest { message CDSClientRequest {
// Each ACI/UAK pair is a 32-byte buffer, containing the 16-byte ACI followed // Each ACI/UAK pair is a 32-byte buffer, containing the 16-byte ACI followed
// by its 16-byte UAK. // by its 16-byte UAK.
bytes aci_uak_pairs = 1; optional bytes aci_uak_pairs = 1;
// Each E164 is an 8-byte big-endian number, as 8 bytes. // Each E164 is an 8-byte big-endian number, as 8 bytes.
bytes prev_e164s = 2; optional bytes prev_e164s = 2;
bytes new_e164s = 3; optional bytes new_e164s = 3;
bytes discard_e164s = 4; optional bytes discard_e164s = 4;
// If true, the client has more pairs or e164s to send. If false or unset, // If true, the client has more pairs or e164s to send. If false or unset,
// this is the client's last request, and processing should commence. // this is the client's last request, and processing should commence.
// bool has_more = 5; optional bool has_more = 5;
reserved 5;
// If set, a token which allows rate limiting to discount the e164s in // If set, a token which allows rate limiting to discount the e164s in
// the request's prev_e164s, only counting new_e164s. If not set, then // the request's prev_e164s, only counting new_e164s. If not set, then
// rate limiting considers both prev_e164s' and new_e164s' size. // rate limiting considers both prev_e164s' and new_e164s' size.
bytes token = 6; optional bytes token = 6;
// After receiving a new token from the server, send back a message just // After receiving a new token from the server, send back a message just
// containing a token_ack. // containing a token_ack.
bool token_ack = 7; optional bool token_ack = 7;
// [deprecated] bool return_acis_without_uaks = 8 // Request that, if the server allows, both ACI and PNI be returned even
reserved 8; // if the aci_uak_pairs don't match.
optional bool return_acis_without_uaks = 8;
} }
message ClientResponse { message CDSClientResponse {
// Each triple is an 8-byte e164, a 16-byte PNI, and a 16-byte ACI. // Each triple is an 8-byte e164, a 16-byte PNI, and a 16-byte ACI.
// If the e164 was not found, PNI and ACI are all zeros. If the PNI // If the e164 was not found, PNI and ACI are all zeros. If the PNI
// was found but the ACI was not, the PNI will be non-zero and the ACI // was found but the ACI was not, the PNI will be non-zero and the ACI
@ -43,18 +44,10 @@ message ClientResponse {
// where the additional 2 bytes are the id/type/length additions of the // where the additional 2 bytes are the id/type/length additions of the
// protobuf marshaling added to each byte array. This avoids any data // protobuf marshaling added to each byte array. This avoids any data
// leakage based on the size of the encrypted output. // leakage based on the size of the encrypted output.
bytes e164_pni_aci_triples = 1; optional bytes e164_pni_aci_triples = 1;
// int32 retry_after_secs = 2 [deprecated]
reserved 2;
// A token which allows subsequent calls' rate limiting to discount the // A token which allows subsequent calls' rate limiting to discount the
// e164s sent up in this request, only counting those in the next // e164s sent up in this request, only counting those in the next
// request's new_e164s. // request's new_e164s.
bytes token = 3; optional bytes token = 3;
// On a successful response to a token_ack request, the number of permits
// that were deducted from the user's rate-limit in order to process the
// request
int32 debug_permits_used = 4;
} }

View file

@ -314,6 +314,7 @@ func (CallMessage_Opaque_Urgency) EnumDescriptor() ([]byte, []int) {
type DataMessage_Flags int32 type DataMessage_Flags int32
const ( const (
DataMessage_END_SESSION DataMessage_Flags = 1
DataMessage_EXPIRATION_TIMER_UPDATE DataMessage_Flags = 2 DataMessage_EXPIRATION_TIMER_UPDATE DataMessage_Flags = 2
DataMessage_PROFILE_KEY_UPDATE DataMessage_Flags = 4 DataMessage_PROFILE_KEY_UPDATE DataMessage_Flags = 4
DataMessage_FORWARD DataMessage_Flags = 8 DataMessage_FORWARD DataMessage_Flags = 8
@ -322,11 +323,13 @@ const (
// Enum value maps for DataMessage_Flags. // Enum value maps for DataMessage_Flags.
var ( var (
DataMessage_Flags_name = map[int32]string{ DataMessage_Flags_name = map[int32]string{
1: "END_SESSION",
2: "EXPIRATION_TIMER_UPDATE", 2: "EXPIRATION_TIMER_UPDATE",
4: "PROFILE_KEY_UPDATE", 4: "PROFILE_KEY_UPDATE",
8: "FORWARD", 8: "FORWARD",
} }
DataMessage_Flags_value = map[string]int32{ DataMessage_Flags_value = map[string]int32{
"END_SESSION": 1,
"EXPIRATION_TIMER_UPDATE": 2, "EXPIRATION_TIMER_UPDATE": 2,
"PROFILE_KEY_UPDATE": 4, "PROFILE_KEY_UPDATE": 4,
"FORWARD": 8, "FORWARD": 8,
@ -3082,7 +3085,6 @@ type SyncMessage struct {
// *SyncMessage_DeviceNameChange_ // *SyncMessage_DeviceNameChange_
// *SyncMessage_AttachmentBackfillRequest_ // *SyncMessage_AttachmentBackfillRequest_
// *SyncMessage_AttachmentBackfillResponse_ // *SyncMessage_AttachmentBackfillResponse_
// *SyncMessage_UsernameChange_
Content isSyncMessage_Content `protobuf_oneof:"content"` Content isSyncMessage_Content `protobuf_oneof:"content"`
// Protobufs don't allow `repeated` fields to be inside of `oneof` so while // Protobufs don't allow `repeated` fields to be inside of `oneof` so while
// the fields below are mutually exclusive with the rest of the values above // the fields below are mutually exclusive with the rest of the values above
@ -3303,15 +3305,6 @@ func (x *SyncMessage) GetAttachmentBackfillResponse() *SyncMessage_AttachmentBac
return nil return nil
} }
func (x *SyncMessage) GetUsernameChange() *SyncMessage_UsernameChange {
if x != nil {
if x, ok := x.Content.(*SyncMessage_UsernameChange_); ok {
return x.UsernameChange
}
}
return nil
}
func (x *SyncMessage) GetRead() []*SyncMessage_Read { func (x *SyncMessage) GetRead() []*SyncMessage_Read {
if x != nil { if x != nil {
return x.Read return x.Read
@ -3420,10 +3413,6 @@ type SyncMessage_AttachmentBackfillResponse_ struct {
AttachmentBackfillResponse *SyncMessage_AttachmentBackfillResponse `protobuf:"bytes,25,opt,name=attachmentBackfillResponse,oneof"` AttachmentBackfillResponse *SyncMessage_AttachmentBackfillResponse `protobuf:"bytes,25,opt,name=attachmentBackfillResponse,oneof"`
} }
type SyncMessage_UsernameChange_ struct {
UsernameChange *SyncMessage_UsernameChange `protobuf:"bytes,26,opt,name=usernameChange,oneof"`
}
func (*SyncMessage_Sent_) isSyncMessage_Content() {} func (*SyncMessage_Sent_) isSyncMessage_Content() {}
func (*SyncMessage_Contacts_) isSyncMessage_Content() {} func (*SyncMessage_Contacts_) isSyncMessage_Content() {}
@ -3462,8 +3451,6 @@ func (*SyncMessage_AttachmentBackfillRequest_) isSyncMessage_Content() {}
func (*SyncMessage_AttachmentBackfillResponse_) isSyncMessage_Content() {} func (*SyncMessage_AttachmentBackfillResponse_) isSyncMessage_Content() {}
func (*SyncMessage_UsernameChange_) isSyncMessage_Content() {}
type AttachmentPointer struct { type AttachmentPointer struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
// Types that are valid to be assigned to AttachmentIdentifier: // Types that are valid to be assigned to AttachmentIdentifier:
@ -7938,42 +7925,6 @@ func (*SyncMessage_AttachmentBackfillResponse_Attachments) isSyncMessage_Attachm
func (*SyncMessage_AttachmentBackfillResponse_Error_) isSyncMessage_AttachmentBackfillResponse_Data() { func (*SyncMessage_AttachmentBackfillResponse_Error_) isSyncMessage_AttachmentBackfillResponse_Data() {
} }
type SyncMessage_UsernameChange struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *SyncMessage_UsernameChange) Reset() {
*x = SyncMessage_UsernameChange{}
mi := &file_SignalService_proto_msgTypes[77]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *SyncMessage_UsernameChange) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SyncMessage_UsernameChange) ProtoMessage() {}
func (x *SyncMessage_UsernameChange) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[77]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SyncMessage_UsernameChange.ProtoReflect.Descriptor instead.
func (*SyncMessage_UsernameChange) Descriptor() ([]byte, []int) {
return file_SignalService_proto_rawDescGZIP(), []int{11, 22}
}
type SyncMessage_Sent_UnidentifiedDeliveryStatus struct { type SyncMessage_Sent_UnidentifiedDeliveryStatus struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
DestinationServiceId *string `protobuf:"bytes,3,opt,name=destinationServiceId" json:"destinationServiceId,omitempty"` DestinationServiceId *string `protobuf:"bytes,3,opt,name=destinationServiceId" json:"destinationServiceId,omitempty"`
@ -7986,7 +7937,7 @@ type SyncMessage_Sent_UnidentifiedDeliveryStatus struct {
func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) Reset() { func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) Reset() {
*x = SyncMessage_Sent_UnidentifiedDeliveryStatus{} *x = SyncMessage_Sent_UnidentifiedDeliveryStatus{}
mi := &file_SignalService_proto_msgTypes[78] mi := &file_SignalService_proto_msgTypes[77]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -7998,7 +7949,7 @@ func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) String() string {
func (*SyncMessage_Sent_UnidentifiedDeliveryStatus) ProtoMessage() {} func (*SyncMessage_Sent_UnidentifiedDeliveryStatus) ProtoMessage() {}
func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) ProtoReflect() protoreflect.Message { func (x *SyncMessage_Sent_UnidentifiedDeliveryStatus) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[78] mi := &file_SignalService_proto_msgTypes[77]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8054,7 +8005,7 @@ type SyncMessage_Sent_StoryMessageRecipient struct {
func (x *SyncMessage_Sent_StoryMessageRecipient) Reset() { func (x *SyncMessage_Sent_StoryMessageRecipient) Reset() {
*x = SyncMessage_Sent_StoryMessageRecipient{} *x = SyncMessage_Sent_StoryMessageRecipient{}
mi := &file_SignalService_proto_msgTypes[79] mi := &file_SignalService_proto_msgTypes[78]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8066,7 +8017,7 @@ func (x *SyncMessage_Sent_StoryMessageRecipient) String() string {
func (*SyncMessage_Sent_StoryMessageRecipient) ProtoMessage() {} func (*SyncMessage_Sent_StoryMessageRecipient) ProtoMessage() {}
func (x *SyncMessage_Sent_StoryMessageRecipient) ProtoReflect() protoreflect.Message { func (x *SyncMessage_Sent_StoryMessageRecipient) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[79] mi := &file_SignalService_proto_msgTypes[78]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8126,7 +8077,7 @@ type SyncMessage_OutgoingPayment_MobileCoin struct {
func (x *SyncMessage_OutgoingPayment_MobileCoin) Reset() { func (x *SyncMessage_OutgoingPayment_MobileCoin) Reset() {
*x = SyncMessage_OutgoingPayment_MobileCoin{} *x = SyncMessage_OutgoingPayment_MobileCoin{}
mi := &file_SignalService_proto_msgTypes[80] mi := &file_SignalService_proto_msgTypes[79]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8138,7 +8089,7 @@ func (x *SyncMessage_OutgoingPayment_MobileCoin) String() string {
func (*SyncMessage_OutgoingPayment_MobileCoin) ProtoMessage() {} func (*SyncMessage_OutgoingPayment_MobileCoin) ProtoMessage() {}
func (x *SyncMessage_OutgoingPayment_MobileCoin) ProtoReflect() protoreflect.Message { func (x *SyncMessage_OutgoingPayment_MobileCoin) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[80] mi := &file_SignalService_proto_msgTypes[79]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8220,7 +8171,7 @@ type SyncMessage_DeleteForMe_MessageDeletes struct {
func (x *SyncMessage_DeleteForMe_MessageDeletes) Reset() { func (x *SyncMessage_DeleteForMe_MessageDeletes) Reset() {
*x = SyncMessage_DeleteForMe_MessageDeletes{} *x = SyncMessage_DeleteForMe_MessageDeletes{}
mi := &file_SignalService_proto_msgTypes[81] mi := &file_SignalService_proto_msgTypes[80]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8232,7 +8183,7 @@ func (x *SyncMessage_DeleteForMe_MessageDeletes) String() string {
func (*SyncMessage_DeleteForMe_MessageDeletes) ProtoMessage() {} func (*SyncMessage_DeleteForMe_MessageDeletes) ProtoMessage() {}
func (x *SyncMessage_DeleteForMe_MessageDeletes) ProtoReflect() protoreflect.Message { func (x *SyncMessage_DeleteForMe_MessageDeletes) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[81] mi := &file_SignalService_proto_msgTypes[80]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8278,7 +8229,7 @@ type SyncMessage_DeleteForMe_AttachmentDelete struct {
func (x *SyncMessage_DeleteForMe_AttachmentDelete) Reset() { func (x *SyncMessage_DeleteForMe_AttachmentDelete) Reset() {
*x = SyncMessage_DeleteForMe_AttachmentDelete{} *x = SyncMessage_DeleteForMe_AttachmentDelete{}
mi := &file_SignalService_proto_msgTypes[82] mi := &file_SignalService_proto_msgTypes[81]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8290,7 +8241,7 @@ func (x *SyncMessage_DeleteForMe_AttachmentDelete) String() string {
func (*SyncMessage_DeleteForMe_AttachmentDelete) ProtoMessage() {} func (*SyncMessage_DeleteForMe_AttachmentDelete) ProtoMessage() {}
func (x *SyncMessage_DeleteForMe_AttachmentDelete) ProtoReflect() protoreflect.Message { func (x *SyncMessage_DeleteForMe_AttachmentDelete) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[82] mi := &file_SignalService_proto_msgTypes[81]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8353,7 +8304,7 @@ type SyncMessage_DeleteForMe_ConversationDelete struct {
func (x *SyncMessage_DeleteForMe_ConversationDelete) Reset() { func (x *SyncMessage_DeleteForMe_ConversationDelete) Reset() {
*x = SyncMessage_DeleteForMe_ConversationDelete{} *x = SyncMessage_DeleteForMe_ConversationDelete{}
mi := &file_SignalService_proto_msgTypes[83] mi := &file_SignalService_proto_msgTypes[82]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8365,7 +8316,7 @@ func (x *SyncMessage_DeleteForMe_ConversationDelete) String() string {
func (*SyncMessage_DeleteForMe_ConversationDelete) ProtoMessage() {} func (*SyncMessage_DeleteForMe_ConversationDelete) ProtoMessage() {}
func (x *SyncMessage_DeleteForMe_ConversationDelete) ProtoReflect() protoreflect.Message { func (x *SyncMessage_DeleteForMe_ConversationDelete) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[83] mi := &file_SignalService_proto_msgTypes[82]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8418,7 +8369,7 @@ type SyncMessage_DeleteForMe_LocalOnlyConversationDelete struct {
func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) Reset() { func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) Reset() {
*x = SyncMessage_DeleteForMe_LocalOnlyConversationDelete{} *x = SyncMessage_DeleteForMe_LocalOnlyConversationDelete{}
mi := &file_SignalService_proto_msgTypes[84] mi := &file_SignalService_proto_msgTypes[83]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8430,7 +8381,7 @@ func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) String() string {
func (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete) ProtoMessage() {} func (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete) ProtoMessage() {}
func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) ProtoReflect() protoreflect.Message { func (x *SyncMessage_DeleteForMe_LocalOnlyConversationDelete) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[84] mi := &file_SignalService_proto_msgTypes[83]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8466,7 +8417,7 @@ type SyncMessage_AttachmentBackfillResponse_AttachmentData struct {
func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) Reset() { func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) Reset() {
*x = SyncMessage_AttachmentBackfillResponse_AttachmentData{} *x = SyncMessage_AttachmentBackfillResponse_AttachmentData{}
mi := &file_SignalService_proto_msgTypes[85] mi := &file_SignalService_proto_msgTypes[84]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8478,7 +8429,7 @@ func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) String() string
func (*SyncMessage_AttachmentBackfillResponse_AttachmentData) ProtoMessage() {} func (*SyncMessage_AttachmentBackfillResponse_AttachmentData) ProtoMessage() {}
func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) ProtoReflect() protoreflect.Message { func (x *SyncMessage_AttachmentBackfillResponse_AttachmentData) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[85] mi := &file_SignalService_proto_msgTypes[84]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8547,7 +8498,7 @@ type SyncMessage_AttachmentBackfillResponse_AttachmentDataList struct {
func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) Reset() { func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) Reset() {
*x = SyncMessage_AttachmentBackfillResponse_AttachmentDataList{} *x = SyncMessage_AttachmentBackfillResponse_AttachmentDataList{}
mi := &file_SignalService_proto_msgTypes[86] mi := &file_SignalService_proto_msgTypes[85]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8559,7 +8510,7 @@ func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) String() str
func (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList) ProtoMessage() {} func (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList) ProtoMessage() {}
func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) ProtoReflect() protoreflect.Message { func (x *SyncMessage_AttachmentBackfillResponse_AttachmentDataList) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[86] mi := &file_SignalService_proto_msgTypes[85]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8599,7 +8550,7 @@ type ContactDetails_Avatar struct {
func (x *ContactDetails_Avatar) Reset() { func (x *ContactDetails_Avatar) Reset() {
*x = ContactDetails_Avatar{} *x = ContactDetails_Avatar{}
mi := &file_SignalService_proto_msgTypes[87] mi := &file_SignalService_proto_msgTypes[86]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8611,7 +8562,7 @@ func (x *ContactDetails_Avatar) String() string {
func (*ContactDetails_Avatar) ProtoMessage() {} func (*ContactDetails_Avatar) ProtoMessage() {}
func (x *ContactDetails_Avatar) ProtoReflect() protoreflect.Message { func (x *ContactDetails_Avatar) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[87] mi := &file_SignalService_proto_msgTypes[86]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8651,7 +8602,7 @@ type PaymentAddress_MobileCoin struct {
func (x *PaymentAddress_MobileCoin) Reset() { func (x *PaymentAddress_MobileCoin) Reset() {
*x = PaymentAddress_MobileCoin{} *x = PaymentAddress_MobileCoin{}
mi := &file_SignalService_proto_msgTypes[88] mi := &file_SignalService_proto_msgTypes[87]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -8663,7 +8614,7 @@ func (x *PaymentAddress_MobileCoin) String() string {
func (*PaymentAddress_MobileCoin) ProtoMessage() {} func (*PaymentAddress_MobileCoin) ProtoMessage() {}
func (x *PaymentAddress_MobileCoin) ProtoReflect() protoreflect.Message { func (x *PaymentAddress_MobileCoin) ProtoReflect() protoreflect.Message {
mi := &file_SignalService_proto_msgTypes[88] mi := &file_SignalService_proto_msgTypes[87]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -8781,7 +8732,7 @@ const file_SignalService_proto_rawDesc = "" +
"\aurgency\x18\x02 \x01(\x0e2).signalservice.CallMessage.Opaque.UrgencyR\aurgency\"0\n" + "\aurgency\x18\x02 \x01(\x0e2).signalservice.CallMessage.Opaque.UrgencyR\aurgency\"0\n" +
"\aUrgency\x12\r\n" + "\aUrgency\x12\r\n" +
"\tDROPPABLE\x10\x00\x12\x16\n" + "\tDROPPABLE\x10\x00\x12\x16\n" +
"\x12HANDLE_IMMEDIATELY\x10\x01J\x04\b\x04\x10\x05J\x04\b\x06\x10\aJ\x04\b\b\x10\t\"\x80.\n" + "\x12HANDLE_IMMEDIATELY\x10\x01J\x04\b\x04\x10\x05J\x04\b\x06\x10\aJ\x04\b\b\x10\t\"\x8b.\n" +
"\vDataMessage\x12\x12\n" + "\vDataMessage\x12\x12\n" +
"\x04body\x18\x01 \x01(\tR\x04body\x12B\n" + "\x04body\x18\x01 \x01(\tR\x04body\x12B\n" +
"\vattachments\x18\x02 \x03(\v2 .signalservice.AttachmentPointerR\vattachments\x127\n" + "\vattachments\x18\x02 \x03(\v2 .signalservice.AttachmentPointerR\vattachments\x127\n" +
@ -8975,11 +8926,12 @@ const file_SignalService_proto_rawDesc = "" +
"\x13targetSentTimestamp\x18\x02 \x01(\x04R\x13targetSentTimestamp\x1au\n" + "\x13targetSentTimestamp\x18\x02 \x01(\x04R\x13targetSentTimestamp\x1au\n" +
"\vAdminDelete\x124\n" + "\vAdminDelete\x124\n" +
"\x15targetAuthorAciBinary\x18\x01 \x01(\fR\x15targetAuthorAciBinary\x120\n" + "\x15targetAuthorAciBinary\x18\x01 \x01(\fR\x15targetAuthorAciBinary\x120\n" +
"\x13targetSentTimestamp\x18\x02 \x01(\x04R\x13targetSentTimestamp\"O\n" + "\x13targetSentTimestamp\x18\x02 \x01(\x04R\x13targetSentTimestamp\"Z\n" +
"\x05Flags\x12\x1b\n" + "\x05Flags\x12\x0f\n" +
"\vEND_SESSION\x10\x01\x12\x1b\n" +
"\x17EXPIRATION_TIMER_UPDATE\x10\x02\x12\x16\n" + "\x17EXPIRATION_TIMER_UPDATE\x10\x02\x12\x16\n" +
"\x12PROFILE_KEY_UPDATE\x10\x04\x12\v\n" + "\x12PROFILE_KEY_UPDATE\x10\x04\x12\v\n" +
"\aFORWARD\x10\b\"\x04\b\x01\x10\x01\"\xbb\x01\n" + "\aFORWARD\x10\b\"\xbb\x01\n" +
"\x0fProtocolVersion\x12\v\n" + "\x0fProtocolVersion\x12\v\n" +
"\aINITIAL\x10\x00\x12\x12\n" + "\aINITIAL\x10\x00\x12\x12\n" +
"\x0eMESSAGE_TIMERS\x10\x01\x12\r\n" + "\x0eMESSAGE_TIMERS\x10\x01\x12\r\n" +
@ -9063,7 +9015,7 @@ const file_SignalService_proto_rawDesc = "" +
"\aDEFAULT\x10\x00\x12\f\n" + "\aDEFAULT\x10\x00\x12\f\n" +
"\bVERIFIED\x10\x01\x12\x0e\n" + "\bVERIFIED\x10\x01\x12\x0e\n" +
"\n" + "\n" +
"UNVERIFIED\x10\x02J\x04\b\x01\x10\x02\"\xd8G\n" + "UNVERIFIED\x10\x02J\x04\b\x01\x10\x02\"\xf1F\n" +
"\vSyncMessage\x125\n" + "\vSyncMessage\x125\n" +
"\x04sent\x18\x01 \x01(\v2\x1f.signalservice.SyncMessage.SentH\x00R\x04sent\x12A\n" + "\x04sent\x18\x01 \x01(\v2\x1f.signalservice.SyncMessage.SentH\x00R\x04sent\x12A\n" +
"\bcontacts\x18\x02 \x01(\v2#.signalservice.SyncMessage.ContactsH\x00R\bcontacts\x12>\n" + "\bcontacts\x18\x02 \x01(\v2#.signalservice.SyncMessage.ContactsH\x00R\bcontacts\x12>\n" +
@ -9083,8 +9035,7 @@ const file_SignalService_proto_rawDesc = "" +
"\vdeleteForMe\x18\x16 \x01(\v2&.signalservice.SyncMessage.DeleteForMeH\x00R\vdeleteForMe\x12Y\n" + "\vdeleteForMe\x18\x16 \x01(\v2&.signalservice.SyncMessage.DeleteForMeH\x00R\vdeleteForMe\x12Y\n" +
"\x10deviceNameChange\x18\x17 \x01(\v2+.signalservice.SyncMessage.DeviceNameChangeH\x00R\x10deviceNameChange\x12t\n" + "\x10deviceNameChange\x18\x17 \x01(\v2+.signalservice.SyncMessage.DeviceNameChangeH\x00R\x10deviceNameChange\x12t\n" +
"\x19attachmentBackfillRequest\x18\x18 \x01(\v24.signalservice.SyncMessage.AttachmentBackfillRequestH\x00R\x19attachmentBackfillRequest\x12w\n" + "\x19attachmentBackfillRequest\x18\x18 \x01(\v24.signalservice.SyncMessage.AttachmentBackfillRequestH\x00R\x19attachmentBackfillRequest\x12w\n" +
"\x1aattachmentBackfillResponse\x18\x19 \x01(\v25.signalservice.SyncMessage.AttachmentBackfillResponseH\x00R\x1aattachmentBackfillResponse\x12S\n" + "\x1aattachmentBackfillResponse\x18\x19 \x01(\v25.signalservice.SyncMessage.AttachmentBackfillResponseH\x00R\x1aattachmentBackfillResponse\x123\n" +
"\x0eusernameChange\x18\x1a \x01(\v2).signalservice.SyncMessage.UsernameChangeH\x00R\x0eusernameChange\x123\n" +
"\x04read\x18\x05 \x03(\v2\x1f.signalservice.SyncMessage.ReadR\x04read\x12c\n" + "\x04read\x18\x05 \x03(\v2\x1f.signalservice.SyncMessage.ReadR\x04read\x12c\n" +
"\x14stickerPackOperation\x18\n" + "\x14stickerPackOperation\x18\n" +
" \x03(\v2/.signalservice.SyncMessage.StickerPackOperationR\x14stickerPackOperation\x129\n" + " \x03(\v2/.signalservice.SyncMessage.StickerPackOperationR\x14stickerPackOperation\x129\n" +
@ -9303,8 +9254,7 @@ const file_SignalService_proto_rawDesc = "" +
"\blongText\x18\x02 \x01(\v2D.signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataR\blongText\"\x1e\n" + "\blongText\x18\x02 \x01(\v2D.signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataR\blongText\"\x1e\n" +
"\x05Error\x12\x15\n" + "\x05Error\x12\x15\n" +
"\x11MESSAGE_NOT_FOUND\x10\x00B\x06\n" + "\x11MESSAGE_NOT_FOUND\x10\x00B\x06\n" +
"\x04data\x1a\x10\n" + "\x04dataB\t\n" +
"\x0eUsernameChangeB\t\n" +
"\acontentJ\x04\b\x03\x10\x04J\x04\b\x11\x10\x12\"\xe7\x04\n" + "\acontentJ\x04\b\x03\x10\x04J\x04\b\x11\x10\x12\"\xe7\x04\n" +
"\x11AttachmentPointer\x12\x16\n" + "\x11AttachmentPointer\x12\x16\n" +
"\x05cdnId\x18\x01 \x01(\x06H\x00R\x05cdnId\x12\x18\n" + "\x05cdnId\x18\x01 \x01(\x06H\x00R\x05cdnId\x12\x18\n" +
@ -9421,7 +9371,7 @@ func file_SignalService_proto_rawDescGZIP() []byte {
} }
var file_SignalService_proto_enumTypes = make([]protoimpl.EnumInfo, 28) var file_SignalService_proto_enumTypes = make([]protoimpl.EnumInfo, 28)
var file_SignalService_proto_msgTypes = make([]protoimpl.MessageInfo, 89) var file_SignalService_proto_msgTypes = make([]protoimpl.MessageInfo, 88)
var file_SignalService_proto_goTypes = []any{ var file_SignalService_proto_goTypes = []any{
(Envelope_Type)(0), // 0: signalservice.Envelope.Type (Envelope_Type)(0), // 0: signalservice.Envelope.Type
(CallMessage_Offer_Type)(0), // 1: signalservice.CallMessage.Offer.Type (CallMessage_Offer_Type)(0), // 1: signalservice.CallMessage.Offer.Type
@ -9528,18 +9478,17 @@ var file_SignalService_proto_goTypes = []any{
(*SyncMessage_DeviceNameChange)(nil), // 102: signalservice.SyncMessage.DeviceNameChange (*SyncMessage_DeviceNameChange)(nil), // 102: signalservice.SyncMessage.DeviceNameChange
(*SyncMessage_AttachmentBackfillRequest)(nil), // 103: signalservice.SyncMessage.AttachmentBackfillRequest (*SyncMessage_AttachmentBackfillRequest)(nil), // 103: signalservice.SyncMessage.AttachmentBackfillRequest
(*SyncMessage_AttachmentBackfillResponse)(nil), // 104: signalservice.SyncMessage.AttachmentBackfillResponse (*SyncMessage_AttachmentBackfillResponse)(nil), // 104: signalservice.SyncMessage.AttachmentBackfillResponse
(*SyncMessage_UsernameChange)(nil), // 105: signalservice.SyncMessage.UsernameChange (*SyncMessage_Sent_UnidentifiedDeliveryStatus)(nil), // 105: signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus
(*SyncMessage_Sent_UnidentifiedDeliveryStatus)(nil), // 106: signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus (*SyncMessage_Sent_StoryMessageRecipient)(nil), // 106: signalservice.SyncMessage.Sent.StoryMessageRecipient
(*SyncMessage_Sent_StoryMessageRecipient)(nil), // 107: signalservice.SyncMessage.Sent.StoryMessageRecipient (*SyncMessage_OutgoingPayment_MobileCoin)(nil), // 107: signalservice.SyncMessage.OutgoingPayment.MobileCoin
(*SyncMessage_OutgoingPayment_MobileCoin)(nil), // 108: signalservice.SyncMessage.OutgoingPayment.MobileCoin (*SyncMessage_DeleteForMe_MessageDeletes)(nil), // 108: signalservice.SyncMessage.DeleteForMe.MessageDeletes
(*SyncMessage_DeleteForMe_MessageDeletes)(nil), // 109: signalservice.SyncMessage.DeleteForMe.MessageDeletes (*SyncMessage_DeleteForMe_AttachmentDelete)(nil), // 109: signalservice.SyncMessage.DeleteForMe.AttachmentDelete
(*SyncMessage_DeleteForMe_AttachmentDelete)(nil), // 110: signalservice.SyncMessage.DeleteForMe.AttachmentDelete (*SyncMessage_DeleteForMe_ConversationDelete)(nil), // 110: signalservice.SyncMessage.DeleteForMe.ConversationDelete
(*SyncMessage_DeleteForMe_ConversationDelete)(nil), // 111: signalservice.SyncMessage.DeleteForMe.ConversationDelete (*SyncMessage_DeleteForMe_LocalOnlyConversationDelete)(nil), // 111: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete
(*SyncMessage_DeleteForMe_LocalOnlyConversationDelete)(nil), // 112: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete (*SyncMessage_AttachmentBackfillResponse_AttachmentData)(nil), // 112: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData
(*SyncMessage_AttachmentBackfillResponse_AttachmentData)(nil), // 113: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData (*SyncMessage_AttachmentBackfillResponse_AttachmentDataList)(nil), // 113: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList
(*SyncMessage_AttachmentBackfillResponse_AttachmentDataList)(nil), // 114: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList (*ContactDetails_Avatar)(nil), // 114: signalservice.ContactDetails.Avatar
(*ContactDetails_Avatar)(nil), // 115: signalservice.ContactDetails.Avatar (*PaymentAddress_MobileCoin)(nil), // 115: signalservice.PaymentAddress.MobileCoin
(*PaymentAddress_MobileCoin)(nil), // 116: signalservice.PaymentAddress.MobileCoin
} }
var file_SignalService_proto_depIdxs = []int32{ var file_SignalService_proto_depIdxs = []int32{
0, // 0: signalservice.Envelope.type:type_name -> signalservice.Envelope.Type 0, // 0: signalservice.Envelope.type:type_name -> signalservice.Envelope.Type
@ -9607,79 +9556,78 @@ var file_SignalService_proto_depIdxs = []int32{
102, // 62: signalservice.SyncMessage.deviceNameChange:type_name -> signalservice.SyncMessage.DeviceNameChange 102, // 62: signalservice.SyncMessage.deviceNameChange:type_name -> signalservice.SyncMessage.DeviceNameChange
103, // 63: signalservice.SyncMessage.attachmentBackfillRequest:type_name -> signalservice.SyncMessage.AttachmentBackfillRequest 103, // 63: signalservice.SyncMessage.attachmentBackfillRequest:type_name -> signalservice.SyncMessage.AttachmentBackfillRequest
104, // 64: signalservice.SyncMessage.attachmentBackfillResponse:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse 104, // 64: signalservice.SyncMessage.attachmentBackfillResponse:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse
105, // 65: signalservice.SyncMessage.usernameChange:type_name -> signalservice.SyncMessage.UsernameChange 87, // 65: signalservice.SyncMessage.read:type_name -> signalservice.SyncMessage.Read
87, // 66: signalservice.SyncMessage.read:type_name -> signalservice.SyncMessage.Read 90, // 66: signalservice.SyncMessage.stickerPackOperation:type_name -> signalservice.SyncMessage.StickerPackOperation
90, // 67: signalservice.SyncMessage.stickerPackOperation:type_name -> signalservice.SyncMessage.StickerPackOperation 88, // 67: signalservice.SyncMessage.viewed:type_name -> signalservice.SyncMessage.Viewed
88, // 68: signalservice.SyncMessage.viewed:type_name -> signalservice.SyncMessage.Viewed 114, // 68: signalservice.ContactDetails.avatar:type_name -> signalservice.ContactDetails.Avatar
115, // 69: signalservice.ContactDetails.avatar:type_name -> signalservice.ContactDetails.Avatar 115, // 69: signalservice.PaymentAddress.mobileCoin:type_name -> signalservice.PaymentAddress.MobileCoin
116, // 70: signalservice.PaymentAddress.mobileCoin:type_name -> signalservice.PaymentAddress.MobileCoin 31, // 70: signalservice.EditMessage.dataMessage:type_name -> signalservice.DataMessage
31, // 71: signalservice.EditMessage.dataMessage:type_name -> signalservice.DataMessage 27, // 71: signalservice.BodyRange.style:type_name -> signalservice.BodyRange.Style
27, // 72: signalservice.BodyRange.style:type_name -> signalservice.BodyRange.Style 1, // 72: signalservice.CallMessage.Offer.type:type_name -> signalservice.CallMessage.Offer.Type
1, // 73: signalservice.CallMessage.Offer.type:type_name -> signalservice.CallMessage.Offer.Type 2, // 73: signalservice.CallMessage.Hangup.type:type_name -> signalservice.CallMessage.Hangup.Type
2, // 74: signalservice.CallMessage.Hangup.type:type_name -> signalservice.CallMessage.Hangup.Type 3, // 74: signalservice.CallMessage.Opaque.urgency:type_name -> signalservice.CallMessage.Opaque.Urgency
3, // 75: signalservice.CallMessage.Opaque.urgency:type_name -> signalservice.CallMessage.Opaque.Urgency 72, // 75: signalservice.DataMessage.Payment.notification:type_name -> signalservice.DataMessage.Payment.Notification
72, // 76: signalservice.DataMessage.Payment.notification:type_name -> signalservice.DataMessage.Payment.Notification 73, // 76: signalservice.DataMessage.Payment.activation:type_name -> signalservice.DataMessage.Payment.Activation
73, // 77: signalservice.DataMessage.Payment.activation:type_name -> signalservice.DataMessage.Payment.Activation 76, // 77: signalservice.DataMessage.Quote.attachments:type_name -> signalservice.DataMessage.Quote.QuotedAttachment
76, // 78: signalservice.DataMessage.Quote.attachments:type_name -> signalservice.DataMessage.Quote.QuotedAttachment 47, // 78: signalservice.DataMessage.Quote.bodyRanges:type_name -> signalservice.BodyRange
47, // 79: signalservice.DataMessage.Quote.bodyRanges:type_name -> signalservice.BodyRange 7, // 79: signalservice.DataMessage.Quote.type:type_name -> signalservice.DataMessage.Quote.Type
7, // 80: signalservice.DataMessage.Quote.type:type_name -> signalservice.DataMessage.Quote.Type 77, // 80: signalservice.DataMessage.Contact.name:type_name -> signalservice.DataMessage.Contact.Name
77, // 81: signalservice.DataMessage.Contact.name:type_name -> signalservice.DataMessage.Contact.Name 78, // 81: signalservice.DataMessage.Contact.number:type_name -> signalservice.DataMessage.Contact.Phone
78, // 82: signalservice.DataMessage.Contact.number:type_name -> signalservice.DataMessage.Contact.Phone 79, // 82: signalservice.DataMessage.Contact.email:type_name -> signalservice.DataMessage.Contact.Email
79, // 83: signalservice.DataMessage.Contact.email:type_name -> signalservice.DataMessage.Contact.Email 80, // 83: signalservice.DataMessage.Contact.address:type_name -> signalservice.DataMessage.Contact.PostalAddress
80, // 84: signalservice.DataMessage.Contact.address:type_name -> signalservice.DataMessage.Contact.PostalAddress 81, // 84: signalservice.DataMessage.Contact.avatar:type_name -> signalservice.DataMessage.Contact.Avatar
81, // 85: signalservice.DataMessage.Contact.avatar:type_name -> signalservice.DataMessage.Contact.Avatar 40, // 85: signalservice.DataMessage.Sticker.data:type_name -> signalservice.AttachmentPointer
40, // 86: signalservice.DataMessage.Sticker.data:type_name -> signalservice.AttachmentPointer 74, // 86: signalservice.DataMessage.Payment.Amount.mobileCoin:type_name -> signalservice.DataMessage.Payment.Amount.MobileCoin
74, // 87: signalservice.DataMessage.Payment.Amount.mobileCoin:type_name -> signalservice.DataMessage.Payment.Amount.MobileCoin 75, // 87: signalservice.DataMessage.Payment.Notification.mobileCoin:type_name -> signalservice.DataMessage.Payment.Notification.MobileCoin
75, // 88: signalservice.DataMessage.Payment.Notification.mobileCoin:type_name -> signalservice.DataMessage.Payment.Notification.MobileCoin 6, // 88: signalservice.DataMessage.Payment.Activation.type:type_name -> signalservice.DataMessage.Payment.Activation.Type
6, // 89: signalservice.DataMessage.Payment.Activation.type:type_name -> signalservice.DataMessage.Payment.Activation.Type 40, // 89: signalservice.DataMessage.Quote.QuotedAttachment.thumbnail:type_name -> signalservice.AttachmentPointer
40, // 90: signalservice.DataMessage.Quote.QuotedAttachment.thumbnail:type_name -> signalservice.AttachmentPointer 8, // 90: signalservice.DataMessage.Contact.Phone.type:type_name -> signalservice.DataMessage.Contact.Phone.Type
8, // 91: signalservice.DataMessage.Contact.Phone.type:type_name -> signalservice.DataMessage.Contact.Phone.Type 9, // 91: signalservice.DataMessage.Contact.Email.type:type_name -> signalservice.DataMessage.Contact.Email.Type
9, // 92: signalservice.DataMessage.Contact.Email.type:type_name -> signalservice.DataMessage.Contact.Email.Type 10, // 92: signalservice.DataMessage.Contact.PostalAddress.type:type_name -> signalservice.DataMessage.Contact.PostalAddress.Type
10, // 93: signalservice.DataMessage.Contact.PostalAddress.type:type_name -> signalservice.DataMessage.Contact.PostalAddress.Type 40, // 93: signalservice.DataMessage.Contact.Avatar.avatar:type_name -> signalservice.AttachmentPointer
40, // 94: signalservice.DataMessage.Contact.Avatar.avatar:type_name -> signalservice.AttachmentPointer 31, // 94: signalservice.SyncMessage.Sent.message:type_name -> signalservice.DataMessage
31, // 95: signalservice.SyncMessage.Sent.message:type_name -> signalservice.DataMessage 105, // 95: signalservice.SyncMessage.Sent.unidentifiedStatus:type_name -> signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus
106, // 96: signalservice.SyncMessage.Sent.unidentifiedStatus:type_name -> signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus 35, // 96: signalservice.SyncMessage.Sent.storyMessage:type_name -> signalservice.StoryMessage
35, // 97: signalservice.SyncMessage.Sent.storyMessage:type_name -> signalservice.StoryMessage 106, // 97: signalservice.SyncMessage.Sent.storyMessageRecipients:type_name -> signalservice.SyncMessage.Sent.StoryMessageRecipient
107, // 98: signalservice.SyncMessage.Sent.storyMessageRecipients:type_name -> signalservice.SyncMessage.Sent.StoryMessageRecipient 46, // 98: signalservice.SyncMessage.Sent.editMessage:type_name -> signalservice.EditMessage
46, // 99: signalservice.SyncMessage.Sent.editMessage:type_name -> signalservice.EditMessage 40, // 99: signalservice.SyncMessage.Contacts.blob:type_name -> signalservice.AttachmentPointer
40, // 100: signalservice.SyncMessage.Contacts.blob:type_name -> signalservice.AttachmentPointer 15, // 100: signalservice.SyncMessage.Request.type:type_name -> signalservice.SyncMessage.Request.Type
15, // 101: signalservice.SyncMessage.Request.type:type_name -> signalservice.SyncMessage.Request.Type 16, // 101: signalservice.SyncMessage.StickerPackOperation.type:type_name -> signalservice.SyncMessage.StickerPackOperation.Type
16, // 102: signalservice.SyncMessage.StickerPackOperation.type:type_name -> signalservice.SyncMessage.StickerPackOperation.Type 17, // 102: signalservice.SyncMessage.FetchLatest.type:type_name -> signalservice.SyncMessage.FetchLatest.Type
17, // 103: signalservice.SyncMessage.FetchLatest.type:type_name -> signalservice.SyncMessage.FetchLatest.Type 18, // 103: signalservice.SyncMessage.MessageRequestResponse.type:type_name -> signalservice.SyncMessage.MessageRequestResponse.Type
18, // 104: signalservice.SyncMessage.MessageRequestResponse.type:type_name -> signalservice.SyncMessage.MessageRequestResponse.Type 107, // 104: signalservice.SyncMessage.OutgoingPayment.mobileCoin:type_name -> signalservice.SyncMessage.OutgoingPayment.MobileCoin
108, // 105: signalservice.SyncMessage.OutgoingPayment.mobileCoin:type_name -> signalservice.SyncMessage.OutgoingPayment.MobileCoin 19, // 105: signalservice.SyncMessage.CallEvent.type:type_name -> signalservice.SyncMessage.CallEvent.Type
19, // 106: signalservice.SyncMessage.CallEvent.type:type_name -> signalservice.SyncMessage.CallEvent.Type 20, // 106: signalservice.SyncMessage.CallEvent.direction:type_name -> signalservice.SyncMessage.CallEvent.Direction
20, // 107: signalservice.SyncMessage.CallEvent.direction:type_name -> signalservice.SyncMessage.CallEvent.Direction 21, // 107: signalservice.SyncMessage.CallEvent.event:type_name -> signalservice.SyncMessage.CallEvent.Event
21, // 108: signalservice.SyncMessage.CallEvent.event:type_name -> signalservice.SyncMessage.CallEvent.Event 22, // 108: signalservice.SyncMessage.CallLinkUpdate.type:type_name -> signalservice.SyncMessage.CallLinkUpdate.Type
22, // 109: signalservice.SyncMessage.CallLinkUpdate.type:type_name -> signalservice.SyncMessage.CallLinkUpdate.Type 23, // 109: signalservice.SyncMessage.CallLogEvent.type:type_name -> signalservice.SyncMessage.CallLogEvent.Type
23, // 110: signalservice.SyncMessage.CallLogEvent.type:type_name -> signalservice.SyncMessage.CallLogEvent.Type 108, // 110: signalservice.SyncMessage.DeleteForMe.messageDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.MessageDeletes
109, // 111: signalservice.SyncMessage.DeleteForMe.messageDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.MessageDeletes 110, // 111: signalservice.SyncMessage.DeleteForMe.conversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.ConversationDelete
111, // 112: signalservice.SyncMessage.DeleteForMe.conversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.ConversationDelete 111, // 112: signalservice.SyncMessage.DeleteForMe.localOnlyConversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete
112, // 113: signalservice.SyncMessage.DeleteForMe.localOnlyConversationDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete 109, // 113: signalservice.SyncMessage.DeleteForMe.attachmentDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.AttachmentDelete
110, // 114: signalservice.SyncMessage.DeleteForMe.attachmentDeletes:type_name -> signalservice.SyncMessage.DeleteForMe.AttachmentDelete 48, // 114: signalservice.SyncMessage.AttachmentBackfillRequest.targetMessage:type_name -> signalservice.AddressableMessage
48, // 115: signalservice.SyncMessage.AttachmentBackfillRequest.targetMessage:type_name -> signalservice.AddressableMessage 49, // 115: signalservice.SyncMessage.AttachmentBackfillRequest.targetConversation:type_name -> signalservice.ConversationIdentifier
49, // 116: signalservice.SyncMessage.AttachmentBackfillRequest.targetConversation:type_name -> signalservice.ConversationIdentifier 48, // 116: signalservice.SyncMessage.AttachmentBackfillResponse.targetMessage:type_name -> signalservice.AddressableMessage
48, // 117: signalservice.SyncMessage.AttachmentBackfillResponse.targetMessage:type_name -> signalservice.AddressableMessage 49, // 117: signalservice.SyncMessage.AttachmentBackfillResponse.targetConversation:type_name -> signalservice.ConversationIdentifier
49, // 118: signalservice.SyncMessage.AttachmentBackfillResponse.targetConversation:type_name -> signalservice.ConversationIdentifier 113, // 118: signalservice.SyncMessage.AttachmentBackfillResponse.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList
114, // 119: signalservice.SyncMessage.AttachmentBackfillResponse.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList 24, // 119: signalservice.SyncMessage.AttachmentBackfillResponse.error:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.Error
24, // 120: signalservice.SyncMessage.AttachmentBackfillResponse.error:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.Error 49, // 120: signalservice.SyncMessage.DeleteForMe.MessageDeletes.conversation:type_name -> signalservice.ConversationIdentifier
49, // 121: signalservice.SyncMessage.DeleteForMe.MessageDeletes.conversation:type_name -> signalservice.ConversationIdentifier 48, // 121: signalservice.SyncMessage.DeleteForMe.MessageDeletes.messages:type_name -> signalservice.AddressableMessage
48, // 122: signalservice.SyncMessage.DeleteForMe.MessageDeletes.messages:type_name -> signalservice.AddressableMessage 49, // 122: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.conversation:type_name -> signalservice.ConversationIdentifier
49, // 123: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.conversation:type_name -> signalservice.ConversationIdentifier 48, // 123: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.targetMessage:type_name -> signalservice.AddressableMessage
48, // 124: signalservice.SyncMessage.DeleteForMe.AttachmentDelete.targetMessage:type_name -> signalservice.AddressableMessage 49, // 124: signalservice.SyncMessage.DeleteForMe.ConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier
49, // 125: signalservice.SyncMessage.DeleteForMe.ConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier 48, // 125: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentMessages:type_name -> signalservice.AddressableMessage
48, // 126: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentMessages:type_name -> signalservice.AddressableMessage 48, // 126: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentNonExpiringMessages:type_name -> signalservice.AddressableMessage
48, // 127: signalservice.SyncMessage.DeleteForMe.ConversationDelete.mostRecentNonExpiringMessages:type_name -> signalservice.AddressableMessage 49, // 127: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier
49, // 128: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete.conversation:type_name -> signalservice.ConversationIdentifier 40, // 128: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.attachment:type_name -> signalservice.AttachmentPointer
40, // 129: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.attachment:type_name -> signalservice.AttachmentPointer 25, // 129: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.status:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.Status
25, // 130: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.status:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.Status 112, // 130: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData
113, // 131: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.attachments:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData 112, // 131: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.longText:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData
113, // 132: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.longText:type_name -> signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData 132, // [132:132] is the sub-list for method output_type
133, // [133:133] is the sub-list for method output_type 132, // [132:132] is the sub-list for method input_type
133, // [133:133] is the sub-list for method input_type 132, // [132:132] is the sub-list for extension type_name
133, // [133:133] is the sub-list for extension type_name 132, // [132:132] is the sub-list for extension extendee
133, // [133:133] is the sub-list for extension extendee 0, // [0:132] is the sub-list for field type_name
0, // [0:133] is the sub-list for field type_name
} }
func init() { file_SignalService_proto_init() } func init() { file_SignalService_proto_init() }
@ -9726,7 +9674,6 @@ func file_SignalService_proto_init() {
(*SyncMessage_DeviceNameChange_)(nil), (*SyncMessage_DeviceNameChange_)(nil),
(*SyncMessage_AttachmentBackfillRequest_)(nil), (*SyncMessage_AttachmentBackfillRequest_)(nil),
(*SyncMessage_AttachmentBackfillResponse_)(nil), (*SyncMessage_AttachmentBackfillResponse_)(nil),
(*SyncMessage_UsernameChange_)(nil),
} }
file_SignalService_proto_msgTypes[12].OneofWrappers = []any{ file_SignalService_proto_msgTypes[12].OneofWrappers = []any{
(*AttachmentPointer_CdnId)(nil), (*AttachmentPointer_CdnId)(nil),
@ -9772,7 +9719,7 @@ func file_SignalService_proto_init() {
(*SyncMessage_AttachmentBackfillResponse_Attachments)(nil), (*SyncMessage_AttachmentBackfillResponse_Attachments)(nil),
(*SyncMessage_AttachmentBackfillResponse_Error_)(nil), (*SyncMessage_AttachmentBackfillResponse_Error_)(nil),
} }
file_SignalService_proto_msgTypes[85].OneofWrappers = []any{ file_SignalService_proto_msgTypes[84].OneofWrappers = []any{
(*SyncMessage_AttachmentBackfillResponse_AttachmentData_Attachment)(nil), (*SyncMessage_AttachmentBackfillResponse_AttachmentData_Attachment)(nil),
(*SyncMessage_AttachmentBackfillResponse_AttachmentData_Status_)(nil), (*SyncMessage_AttachmentBackfillResponse_AttachmentData_Status_)(nil),
} }
@ -9782,7 +9729,7 @@ func file_SignalService_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_SignalService_proto_rawDesc), len(file_SignalService_proto_rawDesc)), RawDescriptor: unsafe.Slice(unsafe.StringData(file_SignalService_proto_rawDesc), len(file_SignalService_proto_rawDesc)),
NumEnums: 28, NumEnums: 28,
NumMessages: 89, NumMessages: 88,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View file

@ -187,7 +187,7 @@ message CallMessage {
message DataMessage { message DataMessage {
enum Flags { enum Flags {
reserved /*END_SESSION*/ 1; END_SESSION = 1;
EXPIRATION_TIMER_UPDATE = 2; EXPIRATION_TIMER_UPDATE = 2;
PROFILE_KEY_UPDATE = 4; PROFILE_KEY_UPDATE = 4;
FORWARD = 8; FORWARD = 8;
@ -850,8 +850,6 @@ message SyncMessage {
} }
} }
message UsernameChange {}
oneof content { oneof content {
Sent sent = 1; Sent sent = 1;
Contacts contacts = 2; Contacts contacts = 2;
@ -872,7 +870,6 @@ message SyncMessage {
DeviceNameChange deviceNameChange = 23; DeviceNameChange deviceNameChange = 23;
AttachmentBackfillRequest attachmentBackfillRequest = 24; AttachmentBackfillRequest attachmentBackfillRequest = 24;
AttachmentBackfillResponse attachmentBackfillResponse = 25; AttachmentBackfillResponse attachmentBackfillResponse = 25;
UsernameChange usernameChange = 26;
} }
reserved /*groups*/ 3; reserved /*groups*/ 3;

View file

@ -1598,6 +1598,7 @@ type AccountRecord struct {
Username string `protobuf:"bytes,33,opt,name=username,proto3" json:"username,omitempty"` Username string `protobuf:"bytes,33,opt,name=username,proto3" json:"username,omitempty"`
HasCompletedUsernameOnboarding bool `protobuf:"varint,34,opt,name=hasCompletedUsernameOnboarding,proto3" json:"hasCompletedUsernameOnboarding,omitempty"` HasCompletedUsernameOnboarding bool `protobuf:"varint,34,opt,name=hasCompletedUsernameOnboarding,proto3" json:"hasCompletedUsernameOnboarding,omitempty"`
UsernameLink *AccountRecord_UsernameLink `protobuf:"bytes,35,opt,name=usernameLink,proto3" json:"usernameLink,omitempty"` UsernameLink *AccountRecord_UsernameLink `protobuf:"bytes,35,opt,name=usernameLink,proto3" json:"usernameLink,omitempty"`
HasBackup *bool `protobuf:"varint,39,opt,name=hasBackup,proto3,oneof" json:"hasBackup,omitempty"` // Set to true after backups are enabled and one is uploaded.
BackupTier *uint64 `protobuf:"varint,40,opt,name=backupTier,proto3,oneof" json:"backupTier,omitempty"` // See zkgroup for integer particular values. Unset if backups are not enabled. BackupTier *uint64 `protobuf:"varint,40,opt,name=backupTier,proto3,oneof" json:"backupTier,omitempty"` // See zkgroup for integer particular values. Unset if backups are not enabled.
BackupSubscriberData *AccountRecord_IAPSubscriberData `protobuf:"bytes,41,opt,name=backupSubscriberData,proto3" json:"backupSubscriberData,omitempty"` BackupSubscriberData *AccountRecord_IAPSubscriberData `protobuf:"bytes,41,opt,name=backupSubscriberData,proto3" json:"backupSubscriberData,omitempty"`
AvatarColor *AvatarColor `protobuf:"varint,42,opt,name=avatarColor,proto3,enum=signalservice.AvatarColor,oneof" json:"avatarColor,omitempty"` AvatarColor *AvatarColor `protobuf:"varint,42,opt,name=avatarColor,proto3,enum=signalservice.AvatarColor,oneof" json:"avatarColor,omitempty"`
@ -1606,10 +1607,6 @@ type AccountRecord struct {
NotificationProfileSyncDisabled bool `protobuf:"varint,45,opt,name=notificationProfileSyncDisabled,proto3" json:"notificationProfileSyncDisabled,omitempty"` NotificationProfileSyncDisabled bool `protobuf:"varint,45,opt,name=notificationProfileSyncDisabled,proto3" json:"notificationProfileSyncDisabled,omitempty"`
AutomaticKeyVerificationDisabled bool `protobuf:"varint,46,opt,name=automaticKeyVerificationDisabled,proto3" json:"automaticKeyVerificationDisabled,omitempty"` AutomaticKeyVerificationDisabled bool `protobuf:"varint,46,opt,name=automaticKeyVerificationDisabled,proto3" json:"automaticKeyVerificationDisabled,omitempty"`
HasSeenAdminDeleteEducationDialog bool `protobuf:"varint,47,opt,name=hasSeenAdminDeleteEducationDialog,proto3" json:"hasSeenAdminDeleteEducationDialog,omitempty"` HasSeenAdminDeleteEducationDialog bool `protobuf:"varint,47,opt,name=hasSeenAdminDeleteEducationDialog,proto3" json:"hasSeenAdminDeleteEducationDialog,omitempty"`
ReleaseNotesChatArchived *bool `protobuf:"varint,48,opt,name=releaseNotesChatArchived,proto3,oneof" json:"releaseNotesChatArchived,omitempty"`
ReleaseNotesChatMutedUntilTimestamp *uint64 `protobuf:"varint,49,opt,name=releaseNotesChatMutedUntilTimestamp,proto3,oneof" json:"releaseNotesChatMutedUntilTimestamp,omitempty"`
ReleaseNotesChatBlocked *bool `protobuf:"varint,50,opt,name=releaseNotesChatBlocked,proto3,oneof" json:"releaseNotesChatBlocked,omitempty"`
ReleaseNotesChatMarkedUnread *bool `protobuf:"varint,51,opt,name=releaseNotesChatMarkedUnread,proto3,oneof" json:"releaseNotesChatMarkedUnread,omitempty"`
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
} }
@ -1861,6 +1858,13 @@ func (x *AccountRecord) GetUsernameLink() *AccountRecord_UsernameLink {
return nil return nil
} }
func (x *AccountRecord) GetHasBackup() bool {
if x != nil && x.HasBackup != nil {
return *x.HasBackup
}
return false
}
func (x *AccountRecord) GetBackupTier() uint64 { func (x *AccountRecord) GetBackupTier() uint64 {
if x != nil && x.BackupTier != nil { if x != nil && x.BackupTier != nil {
return *x.BackupTier return *x.BackupTier
@ -1917,34 +1921,6 @@ func (x *AccountRecord) GetHasSeenAdminDeleteEducationDialog() bool {
return false return false
} }
func (x *AccountRecord) GetReleaseNotesChatArchived() bool {
if x != nil && x.ReleaseNotesChatArchived != nil {
return *x.ReleaseNotesChatArchived
}
return false
}
func (x *AccountRecord) GetReleaseNotesChatMutedUntilTimestamp() uint64 {
if x != nil && x.ReleaseNotesChatMutedUntilTimestamp != nil {
return *x.ReleaseNotesChatMutedUntilTimestamp
}
return 0
}
func (x *AccountRecord) GetReleaseNotesChatBlocked() bool {
if x != nil && x.ReleaseNotesChatBlocked != nil {
return *x.ReleaseNotesChatBlocked
}
return false
}
func (x *AccountRecord) GetReleaseNotesChatMarkedUnread() bool {
if x != nil && x.ReleaseNotesChatMarkedUnread != nil {
return *x.ReleaseNotesChatMarkedUnread
}
return false
}
type StoryDistributionListRecord struct { type StoryDistributionListRecord struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
Identifier []byte `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"` Identifier []byte `protobuf:"bytes,1,opt,name=identifier,proto3" json:"identifier,omitempty"`
@ -2570,7 +2546,6 @@ type AccountRecord_PinnedConversation struct {
// *AccountRecord_PinnedConversation_Contact_ // *AccountRecord_PinnedConversation_Contact_
// *AccountRecord_PinnedConversation_LegacyGroupId // *AccountRecord_PinnedConversation_LegacyGroupId
// *AccountRecord_PinnedConversation_GroupMasterKey // *AccountRecord_PinnedConversation_GroupMasterKey
// *AccountRecord_PinnedConversation_ReleaseNotes_
Identifier isAccountRecord_PinnedConversation_Identifier `protobuf_oneof:"identifier"` Identifier isAccountRecord_PinnedConversation_Identifier `protobuf_oneof:"identifier"`
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
@ -2640,15 +2615,6 @@ func (x *AccountRecord_PinnedConversation) GetGroupMasterKey() []byte {
return nil return nil
} }
func (x *AccountRecord_PinnedConversation) GetReleaseNotes() *AccountRecord_PinnedConversation_ReleaseNotes {
if x != nil {
if x, ok := x.Identifier.(*AccountRecord_PinnedConversation_ReleaseNotes_); ok {
return x.ReleaseNotes
}
}
return nil
}
type isAccountRecord_PinnedConversation_Identifier interface { type isAccountRecord_PinnedConversation_Identifier interface {
isAccountRecord_PinnedConversation_Identifier() isAccountRecord_PinnedConversation_Identifier()
} }
@ -2665,10 +2631,6 @@ type AccountRecord_PinnedConversation_GroupMasterKey struct {
GroupMasterKey []byte `protobuf:"bytes,4,opt,name=groupMasterKey,proto3,oneof"` GroupMasterKey []byte `protobuf:"bytes,4,opt,name=groupMasterKey,proto3,oneof"`
} }
type AccountRecord_PinnedConversation_ReleaseNotes_ struct {
ReleaseNotes *AccountRecord_PinnedConversation_ReleaseNotes `protobuf:"bytes,5,opt,name=releaseNotes,proto3,oneof"`
}
func (*AccountRecord_PinnedConversation_Contact_) isAccountRecord_PinnedConversation_Identifier() {} func (*AccountRecord_PinnedConversation_Contact_) isAccountRecord_PinnedConversation_Identifier() {}
func (*AccountRecord_PinnedConversation_LegacyGroupId) isAccountRecord_PinnedConversation_Identifier() { func (*AccountRecord_PinnedConversation_LegacyGroupId) isAccountRecord_PinnedConversation_Identifier() {
@ -2677,9 +2639,6 @@ func (*AccountRecord_PinnedConversation_LegacyGroupId) isAccountRecord_PinnedCon
func (*AccountRecord_PinnedConversation_GroupMasterKey) isAccountRecord_PinnedConversation_Identifier() { func (*AccountRecord_PinnedConversation_GroupMasterKey) isAccountRecord_PinnedConversation_Identifier() {
} }
func (*AccountRecord_PinnedConversation_ReleaseNotes_) isAccountRecord_PinnedConversation_Identifier() {
}
type AccountRecord_UsernameLink struct { type AccountRecord_UsernameLink struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
Entropy []byte `protobuf:"bytes,1,opt,name=entropy,proto3" json:"entropy,omitempty"` // 32 bytes of entropy used for encryption Entropy []byte `protobuf:"bytes,1,opt,name=entropy,proto3" json:"entropy,omitempty"` // 32 bytes of entropy used for encryption
@ -3031,42 +2990,6 @@ func (x *AccountRecord_PinnedConversation_Contact) GetServiceIdBinary() []byte {
return nil return nil
} }
type AccountRecord_PinnedConversation_ReleaseNotes struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *AccountRecord_PinnedConversation_ReleaseNotes) Reset() {
*x = AccountRecord_PinnedConversation_ReleaseNotes{}
mi := &file_StorageService_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AccountRecord_PinnedConversation_ReleaseNotes) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AccountRecord_PinnedConversation_ReleaseNotes) ProtoMessage() {}
func (x *AccountRecord_PinnedConversation_ReleaseNotes) ProtoReflect() protoreflect.Message {
mi := &file_StorageService_proto_msgTypes[25]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AccountRecord_PinnedConversation_ReleaseNotes.ProtoReflect.Descriptor instead.
func (*AccountRecord_PinnedConversation_ReleaseNotes) Descriptor() ([]byte, []int) {
return file_StorageService_proto_rawDescGZIP(), []int{11, 0, 1}
}
type AccountRecord_NotificationProfileManualOverride_ManuallyEnabled struct { type AccountRecord_NotificationProfileManualOverride_ManuallyEnabled struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Id []byte `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
@ -3078,7 +3001,7 @@ type AccountRecord_NotificationProfileManualOverride_ManuallyEnabled struct {
func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) Reset() { func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) Reset() {
*x = AccountRecord_NotificationProfileManualOverride_ManuallyEnabled{} *x = AccountRecord_NotificationProfileManualOverride_ManuallyEnabled{}
mi := &file_StorageService_proto_msgTypes[26] mi := &file_StorageService_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3090,7 +3013,7 @@ func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) String
func (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) ProtoMessage() {} func (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) ProtoMessage() {}
func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) ProtoReflect() protoreflect.Message { func (x *AccountRecord_NotificationProfileManualOverride_ManuallyEnabled) ProtoReflect() protoreflect.Message {
mi := &file_StorageService_proto_msgTypes[26] mi := &file_StorageService_proto_msgTypes[25]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -3131,7 +3054,7 @@ type Recipient_Contact struct {
func (x *Recipient_Contact) Reset() { func (x *Recipient_Contact) Reset() {
*x = Recipient_Contact{} *x = Recipient_Contact{}
mi := &file_StorageService_proto_msgTypes[27] mi := &file_StorageService_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi) ms.StoreMessageInfo(mi)
} }
@ -3143,7 +3066,7 @@ func (x *Recipient_Contact) String() string {
func (*Recipient_Contact) ProtoMessage() {} func (*Recipient_Contact) ProtoMessage() {}
func (x *Recipient_Contact) ProtoReflect() protoreflect.Message { func (x *Recipient_Contact) ProtoReflect() protoreflect.Message {
mi := &file_StorageService_proto_msgTypes[27] mi := &file_StorageService_proto_msgTypes[26]
if x != nil { if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil { if ms.LoadMessageInfo() == nil {
@ -3302,7 +3225,7 @@ const file_StorageService_proto_rawDesc = "" +
"\">\n" + "\">\n" +
"\bPayments\x12\x18\n" + "\bPayments\x12\x18\n" +
"\aenabled\x18\x01 \x01(\bR\aenabled\x12\x18\n" + "\aenabled\x18\x01 \x01(\bR\aenabled\x12\x18\n" +
"\aentropy\x18\x02 \x01(\fR\aentropy\"\x84!\n" + "\aentropy\x18\x02 \x01(\fR\aentropy\"\x99\x1d\n" +
"\rAccountRecord\x12\x1e\n" + "\rAccountRecord\x12\x1e\n" +
"\n" + "\n" +
"profileKey\x18\x01 \x01(\fR\n" + "profileKey\x18\x01 \x01(\fR\n" +
@ -3339,31 +3262,26 @@ const file_StorageService_proto_rawDesc = "" +
"\x1fhasSeenGroupStoryEducationSheet\x18 \x01(\bR\x1fhasSeenGroupStoryEducationSheet\x12\x1a\n" + "\x1fhasSeenGroupStoryEducationSheet\x18 \x01(\bR\x1fhasSeenGroupStoryEducationSheet\x12\x1a\n" +
"\busername\x18! \x01(\tR\busername\x12F\n" + "\busername\x18! \x01(\tR\busername\x12F\n" +
"\x1ehasCompletedUsernameOnboarding\x18\" \x01(\bR\x1ehasCompletedUsernameOnboarding\x12M\n" + "\x1ehasCompletedUsernameOnboarding\x18\" \x01(\bR\x1ehasCompletedUsernameOnboarding\x12M\n" +
"\fusernameLink\x18# \x01(\v2).signalservice.AccountRecord.UsernameLinkR\fusernameLink\x12#\n" + "\fusernameLink\x18# \x01(\v2).signalservice.AccountRecord.UsernameLinkR\fusernameLink\x12!\n" +
"\thasBackup\x18' \x01(\bH\x00R\thasBackup\x88\x01\x01\x12#\n" +
"\n" + "\n" +
"backupTier\x18( \x01(\x04H\x00R\n" + "backupTier\x18( \x01(\x04H\x01R\n" +
"backupTier\x88\x01\x01\x12b\n" + "backupTier\x88\x01\x01\x12b\n" +
"\x14backupSubscriberData\x18) \x01(\v2..signalservice.AccountRecord.IAPSubscriberDataR\x14backupSubscriberData\x12A\n" + "\x14backupSubscriberData\x18) \x01(\v2..signalservice.AccountRecord.IAPSubscriberDataR\x14backupSubscriberData\x12A\n" +
"\vavatarColor\x18* \x01(\x0e2\x1a.signalservice.AvatarColorH\x01R\vavatarColor\x88\x01\x01\x12\\\n" + "\vavatarColor\x18* \x01(\x0e2\x1a.signalservice.AvatarColorH\x02R\vavatarColor\x88\x01\x01\x12\\\n" +
"\x11backupTierHistory\x18+ \x01(\v2..signalservice.AccountRecord.BackupTierHistoryR\x11backupTierHistory\x12\x8c\x01\n" + "\x11backupTierHistory\x18+ \x01(\v2..signalservice.AccountRecord.BackupTierHistoryR\x11backupTierHistory\x12\x8c\x01\n" +
"!notificationProfileManualOverride\x18, \x01(\v2>.signalservice.AccountRecord.NotificationProfileManualOverrideR!notificationProfileManualOverride\x12H\n" + "!notificationProfileManualOverride\x18, \x01(\v2>.signalservice.AccountRecord.NotificationProfileManualOverrideR!notificationProfileManualOverride\x12H\n" +
"\x1fnotificationProfileSyncDisabled\x18- \x01(\bR\x1fnotificationProfileSyncDisabled\x12J\n" + "\x1fnotificationProfileSyncDisabled\x18- \x01(\bR\x1fnotificationProfileSyncDisabled\x12J\n" +
" automaticKeyVerificationDisabled\x18. \x01(\bR automaticKeyVerificationDisabled\x12L\n" + " automaticKeyVerificationDisabled\x18. \x01(\bR automaticKeyVerificationDisabled\x12L\n" +
"!hasSeenAdminDeleteEducationDialog\x18/ \x01(\bR!hasSeenAdminDeleteEducationDialog\x12?\n" + "!hasSeenAdminDeleteEducationDialog\x18/ \x01(\bR!hasSeenAdminDeleteEducationDialog\x1a\xb0\x02\n" +
"\x18releaseNotesChatArchived\x180 \x01(\bH\x02R\x18releaseNotesChatArchived\x88\x01\x01\x12U\n" +
"#releaseNotesChatMutedUntilTimestamp\x181 \x01(\x04H\x03R#releaseNotesChatMutedUntilTimestamp\x88\x01\x01\x12=\n" +
"\x17releaseNotesChatBlocked\x182 \x01(\bH\x04R\x17releaseNotesChatBlocked\x88\x01\x01\x12G\n" +
"\x1creleaseNotesChatMarkedUnread\x183 \x01(\bH\x05R\x1creleaseNotesChatMarkedUnread\x88\x01\x01\x1a\xa4\x03\n" +
"\x12PinnedConversation\x12S\n" + "\x12PinnedConversation\x12S\n" +
"\acontact\x18\x01 \x01(\v27.signalservice.AccountRecord.PinnedConversation.ContactH\x00R\acontact\x12&\n" + "\acontact\x18\x01 \x01(\v27.signalservice.AccountRecord.PinnedConversation.ContactH\x00R\acontact\x12&\n" +
"\rlegacyGroupId\x18\x03 \x01(\fH\x00R\rlegacyGroupId\x12(\n" + "\rlegacyGroupId\x18\x03 \x01(\fH\x00R\rlegacyGroupId\x12(\n" +
"\x0egroupMasterKey\x18\x04 \x01(\fH\x00R\x0egroupMasterKey\x12b\n" + "\x0egroupMasterKey\x18\x04 \x01(\fH\x00R\x0egroupMasterKey\x1ae\n" +
"\freleaseNotes\x18\x05 \x01(\v2<.signalservice.AccountRecord.PinnedConversation.ReleaseNotesH\x00R\freleaseNotes\x1ae\n" +
"\aContact\x12\x1c\n" + "\aContact\x12\x1c\n" +
"\tserviceId\x18\x01 \x01(\tR\tserviceId\x12\x12\n" + "\tserviceId\x18\x01 \x01(\tR\tserviceId\x12\x12\n" +
"\x04e164\x18\x02 \x01(\tR\x04e164\x12(\n" + "\x04e164\x18\x02 \x01(\tR\x04e164\x12(\n" +
"\x0fserviceIdBinary\x18\x03 \x01(\fR\x0fserviceIdBinary\x1a\x0e\n" + "\x0fserviceIdBinary\x18\x03 \x01(\fR\x0fserviceIdBinaryB\f\n" +
"\fReleaseNotesB\f\n" +
"\n" + "\n" +
"identifier\x1a\xf8\x01\n" + "identifier\x1a\xf8\x01\n" +
"\fUsernameLink\x12\x18\n" + "\fUsernameLink\x12\x18\n" +
@ -3406,14 +3324,12 @@ const file_StorageService_proto_rawDesc = "" +
"\aUNKNOWN\x10\x00\x12\r\n" + "\aUNKNOWN\x10\x00\x12\r\n" +
"\tEVERYBODY\x10\x01\x12\n" + "\tEVERYBODY\x10\x01\x12\n" +
"\n" + "\n" +
"\x06NOBODY\x10\x02B\r\n" + "\x06NOBODY\x10\x02B\f\n" +
"\n" +
"_hasBackupB\r\n" +
"\v_backupTierB\x0e\n" + "\v_backupTierB\x0e\n" +
"\f_avatarColorB\x1b\n" + "\f_avatarColorJ\x04\b\t\x10\n" +
"\x19_releaseNotesChatArchivedB&\n" + "J\x04\b\x13\x10\x14J\x04\b\x1c\x10\x1dJ\x04\b\x1f\x10 J\x04\b$\x10%J\x04\b%\x10&J\x04\b&\x10'\"\xb9\x02\n" +
"$_releaseNotesChatMutedUntilTimestampB\x1a\n" +
"\x18_releaseNotesChatBlockedB\x1f\n" +
"\x1d_releaseNotesChatMarkedUnreadJ\x04\b\t\x10\n" +
"J\x04\b\x13\x10\x14J\x04\b\x1c\x10\x1dJ\x04\b\x1f\x10 J\x04\b$\x10%J\x04\b%\x10&J\x04\b&\x10'J\x04\b'\x10(\"\xb9\x02\n" +
"\x1bStoryDistributionListRecord\x12\x1e\n" + "\x1bStoryDistributionListRecord\x12\x1e\n" +
"\n" + "\n" +
"identifier\x18\x01 \x01(\fR\n" + "identifier\x18\x01 \x01(\fR\n" +
@ -3522,7 +3438,7 @@ func file_StorageService_proto_rawDescGZIP() []byte {
} }
var file_StorageService_proto_enumTypes = make([]protoimpl.EnumInfo, 9) var file_StorageService_proto_enumTypes = make([]protoimpl.EnumInfo, 9)
var file_StorageService_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_StorageService_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
var file_StorageService_proto_goTypes = []any{ var file_StorageService_proto_goTypes = []any{
(OptionalBool)(0), // 0: signalservice.OptionalBool (OptionalBool)(0), // 0: signalservice.OptionalBool
(AvatarColor)(0), // 1: signalservice.AvatarColor (AvatarColor)(0), // 1: signalservice.AvatarColor
@ -3558,9 +3474,8 @@ var file_StorageService_proto_goTypes = []any{
(*AccountRecord_BackupTierHistory)(nil), // 31: signalservice.AccountRecord.BackupTierHistory (*AccountRecord_BackupTierHistory)(nil), // 31: signalservice.AccountRecord.BackupTierHistory
(*AccountRecord_NotificationProfileManualOverride)(nil), // 32: signalservice.AccountRecord.NotificationProfileManualOverride (*AccountRecord_NotificationProfileManualOverride)(nil), // 32: signalservice.AccountRecord.NotificationProfileManualOverride
(*AccountRecord_PinnedConversation_Contact)(nil), // 33: signalservice.AccountRecord.PinnedConversation.Contact (*AccountRecord_PinnedConversation_Contact)(nil), // 33: signalservice.AccountRecord.PinnedConversation.Contact
(*AccountRecord_PinnedConversation_ReleaseNotes)(nil), // 34: signalservice.AccountRecord.PinnedConversation.ReleaseNotes (*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled)(nil), // 34: signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled
(*AccountRecord_NotificationProfileManualOverride_ManuallyEnabled)(nil), // 35: signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled (*Recipient_Contact)(nil), // 35: signalservice.Recipient.Contact
(*Recipient_Contact)(nil), // 36: signalservice.Recipient.Contact
} }
var file_StorageService_proto_depIdxs = []int32{ var file_StorageService_proto_depIdxs = []int32{
10, // 0: signalservice.StorageItems.items:type_name -> signalservice.StorageItem 10, // 0: signalservice.StorageItems.items:type_name -> signalservice.StorageItem
@ -3589,7 +3504,7 @@ var file_StorageService_proto_depIdxs = []int32{
1, // 23: signalservice.AccountRecord.avatarColor:type_name -> signalservice.AvatarColor 1, // 23: signalservice.AccountRecord.avatarColor:type_name -> signalservice.AvatarColor
31, // 24: signalservice.AccountRecord.backupTierHistory:type_name -> signalservice.AccountRecord.BackupTierHistory 31, // 24: signalservice.AccountRecord.backupTierHistory:type_name -> signalservice.AccountRecord.BackupTierHistory
32, // 25: signalservice.AccountRecord.notificationProfileManualOverride:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride 32, // 25: signalservice.AccountRecord.notificationProfileManualOverride:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride
36, // 26: signalservice.Recipient.contact:type_name -> signalservice.Recipient.Contact 35, // 26: signalservice.Recipient.contact:type_name -> signalservice.Recipient.Contact
7, // 27: signalservice.ChatFolderRecord.folderType:type_name -> signalservice.ChatFolderRecord.FolderType 7, // 27: signalservice.ChatFolderRecord.folderType:type_name -> signalservice.ChatFolderRecord.FolderType
23, // 28: signalservice.ChatFolderRecord.includedRecipients:type_name -> signalservice.Recipient 23, // 28: signalservice.ChatFolderRecord.includedRecipients:type_name -> signalservice.Recipient
23, // 29: signalservice.ChatFolderRecord.excludedRecipients:type_name -> signalservice.Recipient 23, // 29: signalservice.ChatFolderRecord.excludedRecipients:type_name -> signalservice.Recipient
@ -3597,14 +3512,13 @@ var file_StorageService_proto_depIdxs = []int32{
8, // 31: signalservice.NotificationProfile.scheduleDaysEnabled:type_name -> signalservice.NotificationProfile.DayOfWeek 8, // 31: signalservice.NotificationProfile.scheduleDaysEnabled:type_name -> signalservice.NotificationProfile.DayOfWeek
2, // 32: signalservice.ManifestRecord.Identifier.type:type_name -> signalservice.ManifestRecord.Identifier.Type 2, // 32: signalservice.ManifestRecord.Identifier.type:type_name -> signalservice.ManifestRecord.Identifier.Type
33, // 33: signalservice.AccountRecord.PinnedConversation.contact:type_name -> signalservice.AccountRecord.PinnedConversation.Contact 33, // 33: signalservice.AccountRecord.PinnedConversation.contact:type_name -> signalservice.AccountRecord.PinnedConversation.Contact
34, // 34: signalservice.AccountRecord.PinnedConversation.releaseNotes:type_name -> signalservice.AccountRecord.PinnedConversation.ReleaseNotes 6, // 34: signalservice.AccountRecord.UsernameLink.color:type_name -> signalservice.AccountRecord.UsernameLink.Color
6, // 35: signalservice.AccountRecord.UsernameLink.color:type_name -> signalservice.AccountRecord.UsernameLink.Color 34, // 35: signalservice.AccountRecord.NotificationProfileManualOverride.enabled:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled
35, // 36: signalservice.AccountRecord.NotificationProfileManualOverride.enabled:type_name -> signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled 36, // [36:36] is the sub-list for method output_type
37, // [37:37] is the sub-list for method output_type 36, // [36:36] is the sub-list for method input_type
37, // [37:37] is the sub-list for method input_type 36, // [36:36] is the sub-list for extension type_name
37, // [37:37] is the sub-list for extension type_name 36, // [36:36] is the sub-list for extension extendee
37, // [37:37] is the sub-list for extension extendee 0, // [0:36] is the sub-list for field type_name
0, // [0:37] is the sub-list for field type_name
} }
func init() { file_StorageService_proto_init() } func init() { file_StorageService_proto_init() }
@ -3635,7 +3549,6 @@ func file_StorageService_proto_init() {
(*AccountRecord_PinnedConversation_Contact_)(nil), (*AccountRecord_PinnedConversation_Contact_)(nil),
(*AccountRecord_PinnedConversation_LegacyGroupId)(nil), (*AccountRecord_PinnedConversation_LegacyGroupId)(nil),
(*AccountRecord_PinnedConversation_GroupMasterKey)(nil), (*AccountRecord_PinnedConversation_GroupMasterKey)(nil),
(*AccountRecord_PinnedConversation_ReleaseNotes_)(nil),
} }
file_StorageService_proto_msgTypes[21].OneofWrappers = []any{ file_StorageService_proto_msgTypes[21].OneofWrappers = []any{
(*AccountRecord_IAPSubscriberData_PurchaseToken)(nil), (*AccountRecord_IAPSubscriberData_PurchaseToken)(nil),
@ -3652,7 +3565,7 @@ func file_StorageService_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(), GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_StorageService_proto_rawDesc), len(file_StorageService_proto_rawDesc)), RawDescriptor: unsafe.Slice(unsafe.StringData(file_StorageService_proto_rawDesc), len(file_StorageService_proto_rawDesc)),
NumEnums: 9, NumEnums: 9,
NumMessages: 28, NumMessages: 27,
NumExtensions: 0, NumExtensions: 0,
NumServices: 0, NumServices: 0,
}, },

View file

@ -195,13 +195,10 @@ message AccountRecord {
bytes serviceIdBinary = 3; // service ID binary (i.e. 16 byte UUID for ACI, 1 byte prefix + 16 byte UUID for PNI) bytes serviceIdBinary = 3; // service ID binary (i.e. 16 byte UUID for ACI, 1 byte prefix + 16 byte UUID for PNI)
} }
message ReleaseNotes {}
oneof identifier { oneof identifier {
Contact contact = 1; Contact contact = 1;
bytes legacyGroupId = 3; bytes legacyGroupId = 3;
bytes groupMasterKey = 4; bytes groupMasterKey = 4;
ReleaseNotes releaseNotes = 5;
} }
} }
@ -292,7 +289,7 @@ message AccountRecord {
reserved /* backupsSubscriberId */ 36; reserved /* backupsSubscriberId */ 36;
reserved /* backupsSubscriberCurrencyCode */ 37; reserved /* backupsSubscriberCurrencyCode */ 37;
reserved /* backupsSubscriptionManuallyCancelled */ 38; reserved /* backupsSubscriptionManuallyCancelled */ 38;
reserved /* hasBackup */ 39; optional bool hasBackup = 39; // Set to true after backups are enabled and one is uploaded.
optional uint64 backupTier = 40; // See zkgroup for integer particular values. Unset if backups are not enabled. optional uint64 backupTier = 40; // See zkgroup for integer particular values. Unset if backups are not enabled.
IAPSubscriberData backupSubscriberData = 41; IAPSubscriberData backupSubscriberData = 41;
optional AvatarColor avatarColor = 42; optional AvatarColor avatarColor = 42;
@ -301,10 +298,6 @@ message AccountRecord {
bool notificationProfileSyncDisabled = 45; bool notificationProfileSyncDisabled = 45;
bool automaticKeyVerificationDisabled = 46; bool automaticKeyVerificationDisabled = 46;
bool hasSeenAdminDeleteEducationDialog = 47; bool hasSeenAdminDeleteEducationDialog = 47;
optional bool releaseNotesChatArchived = 48;
optional uint64 releaseNotesChatMutedUntilTimestamp = 49;
optional bool releaseNotesChatBlocked = 50;
optional bool releaseNotesChatMarkedUnread = 51;
} }
message StoryDistributionListRecord { message StoryDistributionListRecord {

View file

@ -321,8 +321,8 @@ const file_WebSocketResources_proto_rawDesc = "" +
"\x04Type\x12\v\n" + "\x04Type\x12\v\n" +
"\aUNKNOWN\x10\x00\x12\v\n" + "\aUNKNOWN\x10\x00\x12\v\n" +
"\aREQUEST\x10\x01\x12\f\n" + "\aREQUEST\x10\x01\x12\f\n" +
"\bRESPONSE\x10\x02B/\n" + "\bRESPONSE\x10\x02BF\n" +
"\x1corg.signal.network.websocketB\x0fWebSocketProtos" "3org.whispersystems.signalservice.internal.websocketB\x0fWebSocketProtos"
var ( var (
file_WebSocketResources_proto_rawDescOnce sync.Once file_WebSocketResources_proto_rawDescOnce sync.Once

View file

@ -7,7 +7,7 @@ syntax = "proto2";
package signalservice; package signalservice;
option java_package = "org.signal.network.websocket"; option java_package = "org.whispersystems.signalservice.internal.websocket";
option java_outer_classname = "WebSocketProtos"; option java_outer_classname = "WebSocketProtos";
message WebSocketRequestMessage { message WebSocketRequestMessage {

View file

@ -2406,6 +2406,7 @@ type AccountData struct {
AndroidSpecificSettings *AccountData_AndroidSpecificSettings `protobuf:"bytes,12,opt,name=androidSpecificSettings,proto3" json:"androidSpecificSettings,omitempty"` AndroidSpecificSettings *AccountData_AndroidSpecificSettings `protobuf:"bytes,12,opt,name=androidSpecificSettings,proto3" json:"androidSpecificSettings,omitempty"`
BioText string `protobuf:"bytes,13,opt,name=bioText,proto3" json:"bioText,omitempty"` BioText string `protobuf:"bytes,13,opt,name=bioText,proto3" json:"bioText,omitempty"`
BioEmoji string `protobuf:"bytes,14,opt,name=bioEmoji,proto3" json:"bioEmoji,omitempty"` BioEmoji string `protobuf:"bytes,14,opt,name=bioEmoji,proto3" json:"bioEmoji,omitempty"`
KeyTransparencyData []byte `protobuf:"bytes,15,opt,name=keyTransparencyData,proto3,oneof" json:"keyTransparencyData,omitempty"`
unknownFields protoimpl.UnknownFields unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache sizeCache protoimpl.SizeCache
} }
@ -2531,6 +2532,13 @@ func (x *AccountData) GetBioEmoji() string {
return "" return ""
} }
func (x *AccountData) GetKeyTransparencyData() []byte {
if x != nil {
return x.KeyTransparencyData
}
return nil
}
type Recipient struct { type Recipient struct {
state protoimpl.MessageState `protogen:"open.v1"` state protoimpl.MessageState `protogen:"open.v1"`
Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // generated id for reference only within this file Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` // generated id for reference only within this file
@ -12256,7 +12264,7 @@ const file_backuppb_Backup_proto_rawDesc = "" +
"\n" + "\n" +
"chatFolder\x18\b \x01(\v2\x19.signal.backup.ChatFolderH\x00R\n" + "chatFolder\x18\b \x01(\v2\x19.signal.backup.ChatFolderH\x00R\n" +
"chatFolderB\x06\n" + "chatFolderB\x06\n" +
"\x04item\"\xfe\"\n" + "\x04item\"\xc7#\n" +
"\vAccountData\x12\x1e\n" + "\vAccountData\x12\x1e\n" +
"\n" + "\n" +
"profileKey\x18\x01 \x01(\fR\n" + "profileKey\x18\x01 \x01(\fR\n" +
@ -12275,7 +12283,8 @@ const file_backuppb_Backup_proto_rawDesc = "" +
"\x06svrPin\x18\v \x01(\tR\x06svrPin\x12l\n" + "\x06svrPin\x18\v \x01(\tR\x06svrPin\x12l\n" +
"\x17androidSpecificSettings\x18\f \x01(\v22.signal.backup.AccountData.AndroidSpecificSettingsR\x17androidSpecificSettings\x12\x18\n" + "\x17androidSpecificSettings\x18\f \x01(\v22.signal.backup.AccountData.AndroidSpecificSettingsR\x17androidSpecificSettings\x12\x18\n" +
"\abioText\x18\r \x01(\tR\abioText\x12\x1a\n" + "\abioText\x18\r \x01(\tR\abioText\x12\x1a\n" +
"\bbioEmoji\x18\x0e \x01(\tR\bbioEmoji\x1a\xf6\x01\n" + "\bbioEmoji\x18\x0e \x01(\tR\bbioEmoji\x125\n" +
"\x13keyTransparencyData\x18\x0f \x01(\fH\x01R\x13keyTransparencyData\x88\x01\x01\x1a\xf6\x01\n" +
"\fUsernameLink\x12\x18\n" + "\fUsernameLink\x12\x18\n" +
"\aentropy\x18\x01 \x01(\fR\aentropy\x12\x1a\n" + "\aentropy\x18\x01 \x01(\fR\aentropy\x12\x1a\n" +
"\bserverId\x18\x02 \x01(\fR\bserverId\x12C\n" + "\bserverId\x18\x02 \x01(\fR\bserverId\x12C\n" +
@ -12378,7 +12387,8 @@ const file_backuppb_Backup_proto_rawDesc = "" +
"\x05NEVER\x10\x01\x12\x14\n" + "\x05NEVER\x10\x01\x12\x14\n" +
"\x10MOBILE_DATA_ONLY\x10\x02\x12\x18\n" + "\x10MOBILE_DATA_ONLY\x10\x02\x12\x18\n" +
"\x14WIFI_AND_MOBILE_DATA\x10\x03B\v\n" + "\x14WIFI_AND_MOBILE_DATA\x10\x03B\v\n" +
"\t_usernameJ\x04\b\b\x10\tJ\x04\b\x0f\x10\x10\"\x84\x03\n" + "\t_usernameB\x16\n" +
"\x14_keyTransparencyDataJ\x04\b\b\x10\t\"\x84\x03\n" +
"\tRecipient\x12\x0e\n" + "\tRecipient\x12\x0e\n" +
"\x02id\x18\x01 \x01(\x04R\x02id\x122\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x122\n" +
"\acontact\x18\x02 \x01(\v2\x16.signal.backup.ContactH\x00R\acontact\x12,\n" + "\acontact\x18\x02 \x01(\v2\x16.signal.backup.ContactH\x00R\acontact\x12,\n" +

View file

@ -182,7 +182,7 @@ message AccountData {
AndroidSpecificSettings androidSpecificSettings = 12; AndroidSpecificSettings androidSpecificSettings = 12;
string bioText = 13; string bioText = 13;
string bioEmoji = 14; string bioEmoji = 14;
reserved /*keyTransparencyData*/ 15; // No longer want to persist self-KT data optional bytes keyTransparencyData = 15;
} }
message Recipient { message Recipient {

View file

@ -12,8 +12,4 @@ protoc --go_out=. \
--go_opt=Mbackuppb/Backup.proto=$PKG_IMPORT_PATH/backuppb \ --go_opt=Mbackuppb/Backup.proto=$PKG_IMPORT_PATH/backuppb \
--go_opt=paths=source_relative \ --go_opt=paths=source_relative \
backuppb/Backup.proto backuppb/Backup.proto
protoc --go_out=. \
--go_opt=Mcds2pb/cds2.proto=$PKG_IMPORT_PATH/cds2pb \
--go_opt=paths=source_relative \
cds2pb/cds2.proto
pre-commit run -a pre-commit run -a

View file

@ -1,259 +0,0 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc v7.34.1
// source: cds2pb/cds2.proto
package cds2pb
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type ClientRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Each ACI/UAK pair is a 32-byte buffer, containing the 16-byte ACI followed
// by its 16-byte UAK.
AciUakPairs []byte `protobuf:"bytes,1,opt,name=aci_uak_pairs,json=aciUakPairs,proto3" json:"aci_uak_pairs,omitempty"`
// Each E164 is an 8-byte big-endian number, as 8 bytes.
PrevE164S []byte `protobuf:"bytes,2,opt,name=prev_e164s,json=prevE164s,proto3" json:"prev_e164s,omitempty"`
NewE164S []byte `protobuf:"bytes,3,opt,name=new_e164s,json=newE164s,proto3" json:"new_e164s,omitempty"`
DiscardE164S []byte `protobuf:"bytes,4,opt,name=discard_e164s,json=discardE164s,proto3" json:"discard_e164s,omitempty"`
// If set, a token which allows rate limiting to discount the e164s in
// the request's prev_e164s, only counting new_e164s. If not set, then
// rate limiting considers both prev_e164s' and new_e164s' size.
Token []byte `protobuf:"bytes,6,opt,name=token,proto3" json:"token,omitempty"`
// After receiving a new token from the server, send back a message just
// containing a token_ack.
TokenAck bool `protobuf:"varint,7,opt,name=token_ack,json=tokenAck,proto3" json:"token_ack,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ClientRequest) Reset() {
*x = ClientRequest{}
mi := &file_cds2pb_cds2_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ClientRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClientRequest) ProtoMessage() {}
func (x *ClientRequest) ProtoReflect() protoreflect.Message {
mi := &file_cds2pb_cds2_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ClientRequest.ProtoReflect.Descriptor instead.
func (*ClientRequest) Descriptor() ([]byte, []int) {
return file_cds2pb_cds2_proto_rawDescGZIP(), []int{0}
}
func (x *ClientRequest) GetAciUakPairs() []byte {
if x != nil {
return x.AciUakPairs
}
return nil
}
func (x *ClientRequest) GetPrevE164S() []byte {
if x != nil {
return x.PrevE164S
}
return nil
}
func (x *ClientRequest) GetNewE164S() []byte {
if x != nil {
return x.NewE164S
}
return nil
}
func (x *ClientRequest) GetDiscardE164S() []byte {
if x != nil {
return x.DiscardE164S
}
return nil
}
func (x *ClientRequest) GetToken() []byte {
if x != nil {
return x.Token
}
return nil
}
func (x *ClientRequest) GetTokenAck() bool {
if x != nil {
return x.TokenAck
}
return false
}
type ClientResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Each triple is an 8-byte e164, a 16-byte PNI, and a 16-byte ACI.
// If the e164 was not found, PNI and ACI are all zeros. If the PNI
// was found but the ACI was not, the PNI will be non-zero and the ACI
// will be all zeros. ACI will be returned if one of the returned
// PNIs has an ACI/UAK pair that matches.
//
// Should the request be successful (IE: a successful status returned),
// |e164_pni_aci_triple| will always equal |e164| of the request,
// so the entire marshalled size of the response will be (2+32)*|e164|,
// where the additional 2 bytes are the id/type/length additions of the
// protobuf marshaling added to each byte array. This avoids any data
// leakage based on the size of the encrypted output.
E164PniAciTriples []byte `protobuf:"bytes,1,opt,name=e164_pni_aci_triples,json=e164PniAciTriples,proto3" json:"e164_pni_aci_triples,omitempty"`
// A token which allows subsequent calls' rate limiting to discount the
// e164s sent up in this request, only counting those in the next
// request's new_e164s.
Token []byte `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"`
// On a successful response to a token_ack request, the number of permits
// that were deducted from the user's rate-limit in order to process the
// request
DebugPermitsUsed int32 `protobuf:"varint,4,opt,name=debug_permits_used,json=debugPermitsUsed,proto3" json:"debug_permits_used,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ClientResponse) Reset() {
*x = ClientResponse{}
mi := &file_cds2pb_cds2_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ClientResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClientResponse) ProtoMessage() {}
func (x *ClientResponse) ProtoReflect() protoreflect.Message {
mi := &file_cds2pb_cds2_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ClientResponse.ProtoReflect.Descriptor instead.
func (*ClientResponse) Descriptor() ([]byte, []int) {
return file_cds2pb_cds2_proto_rawDescGZIP(), []int{1}
}
func (x *ClientResponse) GetE164PniAciTriples() []byte {
if x != nil {
return x.E164PniAciTriples
}
return nil
}
func (x *ClientResponse) GetToken() []byte {
if x != nil {
return x.Token
}
return nil
}
func (x *ClientResponse) GetDebugPermitsUsed() int32 {
if x != nil {
return x.DebugPermitsUsed
}
return 0
}
var File_cds2pb_cds2_proto protoreflect.FileDescriptor
const file_cds2pb_cds2_proto_rawDesc = "" +
"\n" +
"\x11cds2pb/cds2.proto\x12\x0forg.signal.cdsi\"\xd3\x01\n" +
"\rClientRequest\x12\"\n" +
"\raci_uak_pairs\x18\x01 \x01(\fR\vaciUakPairs\x12\x1d\n" +
"\n" +
"prev_e164s\x18\x02 \x01(\fR\tprevE164s\x12\x1b\n" +
"\tnew_e164s\x18\x03 \x01(\fR\bnewE164s\x12#\n" +
"\rdiscard_e164s\x18\x04 \x01(\fR\fdiscardE164s\x12\x14\n" +
"\x05token\x18\x06 \x01(\fR\x05token\x12\x1b\n" +
"\ttoken_ack\x18\a \x01(\bR\btokenAckJ\x04\b\x05\x10\x06J\x04\b\b\x10\t\"\x8b\x01\n" +
"\x0eClientResponse\x12/\n" +
"\x14e164_pni_aci_triples\x18\x01 \x01(\fR\x11e164PniAciTriples\x12\x14\n" +
"\x05token\x18\x03 \x01(\fR\x05token\x12,\n" +
"\x12debug_permits_used\x18\x04 \x01(\x05R\x10debugPermitsUsedJ\x04\b\x02\x10\x03b\x06proto3"
var (
file_cds2pb_cds2_proto_rawDescOnce sync.Once
file_cds2pb_cds2_proto_rawDescData []byte
)
func file_cds2pb_cds2_proto_rawDescGZIP() []byte {
file_cds2pb_cds2_proto_rawDescOnce.Do(func() {
file_cds2pb_cds2_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_cds2pb_cds2_proto_rawDesc), len(file_cds2pb_cds2_proto_rawDesc)))
})
return file_cds2pb_cds2_proto_rawDescData
}
var file_cds2pb_cds2_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_cds2pb_cds2_proto_goTypes = []any{
(*ClientRequest)(nil), // 0: org.signal.cdsi.ClientRequest
(*ClientResponse)(nil), // 1: org.signal.cdsi.ClientResponse
}
var file_cds2pb_cds2_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_cds2pb_cds2_proto_init() }
func file_cds2pb_cds2_proto_init() {
if File_cds2pb_cds2_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_cds2pb_cds2_proto_rawDesc), len(file_cds2pb_cds2_proto_rawDesc)),
NumEnums: 0,
NumMessages: 2,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_cds2pb_cds2_proto_goTypes,
DependencyIndexes: file_cds2pb_cds2_proto_depIdxs,
MessageInfos: file_cds2pb_cds2_proto_msgTypes,
}.Build()
File_cds2pb_cds2_proto = out.File
file_cds2pb_cds2_proto_goTypes = nil
file_cds2pb_cds2_proto_depIdxs = nil
}

View file

@ -1,9 +1,8 @@
#!/bin/bash #!/bin/bash
set -euo pipefail set -euo pipefail
ANDROID_GIT_REVISION=${1:-aa9591211ba0c77376318bdd5f014e064b8e8de4} ANDROID_GIT_REVISION=${1:-439760e7732585bfd078d92d93732c04cc31e29e}
DESKTOP_GIT_REVISION=${2:-a0af83d7488930c213a7b6dd554490ebe9e65628} DESKTOP_GIT_REVISION=${1:-1b2a3e7b283c32c5654a39da12fc04139fd26dbd}
LIBSIGNAL_GIT_REVISION=${3:-46d867c986f66201e34e7ae20ce423eec742bf3f}
update_proto() { update_proto() {
case "$1" in case "$1" in
@ -17,21 +16,11 @@ update_proto() {
prefix="lib/archive/src/main/protowire/" prefix="lib/archive/src/main/protowire/"
GIT_REVISION=$ANDROID_GIT_REVISION GIT_REVISION=$ANDROID_GIT_REVISION
;; ;;
Signal-Android-Network)
REPO="Signal-Android"
prefix="core/network/src/main/protowire/"
GIT_REVISION=$ANDROID_GIT_REVISION
;;
Signal-Desktop) Signal-Desktop)
REPO="Signal-Desktop" REPO="Signal-Desktop"
prefix="protos/" prefix="protos/"
GIT_REVISION=$DESKTOP_GIT_REVISION GIT_REVISION=$DESKTOP_GIT_REVISION
;; ;;
libsignal)
REPO="libsignal"
prefix="rust/net/src/proto/"
GIT_REVISION=$LIBSIGNAL_GIT_REVISION
;;
esac esac
echo https://raw.githubusercontent.com/signalapp/${REPO}/${GIT_REVISION}/${prefix}${2} echo https://raw.githubusercontent.com/signalapp/${REPO}/${GIT_REVISION}/${prefix}${2}
curl -LOf https://raw.githubusercontent.com/signalapp/${REPO}/${GIT_REVISION}/${prefix}${2} curl -LOf https://raw.githubusercontent.com/signalapp/${REPO}/${GIT_REVISION}/${prefix}${2}
@ -42,14 +31,13 @@ update_proto Signal-Android Groups.proto
update_proto Signal-Android Provisioning.proto update_proto Signal-Android Provisioning.proto
update_proto Signal-Android SignalService.proto update_proto Signal-Android SignalService.proto
update_proto Signal-Android StickerResources.proto update_proto Signal-Android StickerResources.proto
update_proto Signal-Android-Network WebSocketResources.proto update_proto Signal-Android WebSocketResources.proto
update_proto Signal-Android StorageService.proto update_proto Signal-Android StorageService.proto
update_proto Signal-Android-Archive Backup.proto update_proto Signal-Android-Archive Backup.proto
mv Backup.proto backuppb/Backup.proto mv Backup.proto backuppb/Backup.proto
update_proto Signal-Desktop DeviceName.proto update_proto Signal-Desktop DeviceName.proto
update_proto libsignal cds2.proto
mv cds2.proto cds2pb/cds2.proto
# TODO these were moved to libsignal only # TODO these were moved to libsignal only
#update_proto Signal-Desktop UnidentifiedDelivery.proto #update_proto Signal-Desktop UnidentifiedDelivery.proto
#update_proto Signal-Desktop ContactDiscovery.proto

View file

@ -268,7 +268,7 @@ func startProvisioning(ctx context.Context, ws *websocket.Conn, provisioningCiph
return "", fmt.Errorf("failed to unmarshal provisioning UUID: %w", err) return "", fmt.Errorf("failed to unmarshal provisioning UUID: %w", err)
} }
linkCapabilities := []string{"backup5"} linkCapabilities := []string{"backup4,backup5"}
if !allowBackup { if !allowBackup {
linkCapabilities = []string{} linkCapabilities = []string{}
} }
@ -330,7 +330,6 @@ func continueProvisioning(ctx context.Context, ws *websocket.Conn, provisioningC
var signalCapabilities = map[string]any{ var signalCapabilities = map[string]any{
"attachmentBackfill": true, "attachmentBackfill": true,
"spqr": true, "spqr": true,
"usernameChangeSyncMessage": true,
} }
var signalCapabilitiesBody = exerrors.Must(json.Marshal(signalCapabilities)) var signalCapabilitiesBody = exerrors.Must(json.Marshal(signalCapabilities))

View file

@ -414,12 +414,8 @@ func (cli *Client) handleDecryptedResult(
return ctx.Err() return ctx.Err()
} }
log := zerolog.Ctx(ctx) log := zerolog.Ctx(ctx)
handlerSuccess := true if result.CiphertextHash != nil {
defer func() { defer func() {
if retErr == nil && !handlerSuccess {
retErr = ErrHandlerFailed
}
if result.CiphertextHash != nil && handlerSuccess {
err := cli.Store.EventBuffer.ClearBufferedEventPlaintext(ctx, *result.CiphertextHash) err := cli.Store.EventBuffer.ClearBufferedEventPlaintext(ctx, *result.CiphertextHash)
if err != nil { if err != nil {
log.Err(err). log.Err(err).
@ -430,10 +426,8 @@ func (cli *Client) handleDecryptedResult(
Hex("ciphertext_hash", result.CiphertextHash[:]). Hex("ciphertext_hash", result.CiphertextHash[:]).
Msg("Deleted event plaintext from buffer") Msg("Deleted event plaintext from buffer")
} }
} else if result.CiphertextHash != nil {
log.Warn().Msg("Not clearing buffered event plaintext due to handler failure")
}
}() }()
}
var theirServiceID libsignalgo.ServiceID var theirServiceID libsignalgo.ServiceID
var err error var err error
@ -461,6 +455,12 @@ func (cli *Client) handleDecryptedResult(
} }
cli.Store.RecipientStore.MarkUnregistered(ctx, theirServiceID, false) cli.Store.RecipientStore.MarkUnregistered(ctx, theirServiceID, false)
handlerSuccess := true
defer func() {
if retErr == nil && !handlerSuccess {
retErr = ErrHandlerFailed
}
}()
// result.Err is set if there was an error during decryption and we // result.Err is set if there was an error during decryption and we
// should notifiy the user that the message could not be decrypted // should notifiy the user that the message could not be decrypted
if result.Err != nil { if result.Err != nil {

View file

@ -180,13 +180,6 @@ func (cli *Client) sendToGroupWithSenderKey(
} }
ssCiphertext, err := cli.encryptWithSenderKey(ctx, groupID, ski.DistributionID, myAddress, senderKeyRecipients, content) ssCiphertext, err := cli.encryptWithSenderKey(ctx, groupID, ski.DistributionID, myAddress, senderKeyRecipients, content)
if err != nil { if err != nil {
if errors.Is(err, libsignalgo.ErrorCodeSessionNotFound) {
log.Warn().Err(err).Msg("Got session not found error for group send from libsignal, resetting session and retrying")
if err = cli.Store.SenderKeyStore.DeleteSenderKeyInfo(ctx, groupIDStr); err != nil {
return nil, fmt.Errorf("failed to delete sender key info: %w", err)
}
return cli.sendToGroupWithSenderKey(ctx, groupID, allRecipients, sec, content, messageTimestamp, retries+1)
}
return nil, err return nil, err
} }
for recipientID := range ski.SharedWith { for recipientID := range ski.SharedWith {

View file

@ -960,6 +960,7 @@ func (cli *Client) sendContent(
Uint64("response_id", *response.Id). Uint64("response_id", *response.Id).
Uint32("response_status", *response.Status). Uint32("response_status", *response.Status).
Logger() Logger()
ctx = log.WithContext(ctx)
if json.Valid(response.GetBody()) { if json.Valid(response.GetBody()) {
log.Debug().RawJSON("response_body", response.GetBody()).Msg("DEBUG: message send response data") log.Debug().RawJSON("response_body", response.GetBody()).Msg("DEBUG: message send response data")
} else { } else {